华三服务器的 ipmi 的 web 提供了 nfs 挂载 iso 去安装,也是我之前使用的,发现研发给的镜像在4g以上(镜像基于centos7.3改的,我之前测试都是用的minimal镜像890M左右)。安装的时候报错,然后当面测试得出结论 nfs 的网速原因,其次也是我们这边办公网是百兆。。。
办公网被 it 接管了,交换机密码不给,自己找了台 5130 交换机,下面接服务器和我自己电脑搭建测了下定制iso的pxe流程
这是组网情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 10.96.4.1/24 +------------+ | switch | | | +-+--------+-+ | | | | +------+ +--------+ | | | | v v +----+------+ +------+------+ | h3c server| | my pc | +-----------+ +-------------+ 10.96.4.2
|
叫同事帮忙配置下交换机的 dhcp,我虚机桥接的,虚机 ip 配置为4.2。起初?
看到有nextserver
还有个tftp-server
两命令,以为nextserver
是dhcp中继的命令,而tftp-server
是指定pxe下载pxelinux.0
的tftp ip,也就是一开始下面的配置
1 2 3
| [H3C-S5130-dhcp-pool-1] bootfile-name pxelinux.0 [H3C-S5130-dhcp-pool-1] next-server 10.96.4.2 [H3C-S5130-dhcp-pool-1] tftp-server ip-address 10.96.4.2
|
pxe的 dhcp 直接用交换机的,tftp 和 web 我用 docker 起的,网上的做法基本都不能识别进到菜单界面,最后在 http://blog.chinaunix.net/uid-22621471-id-4980582.html 找到启发,复制 EFI/BOOT
下文件到 tftp 的根目录,并且 bootfile-name
设置为BOOTX64.EFI
。http/cvk
下是 iso 解压的,vmlinuz 和 initrd 是镜像/EFI/BOOT/
里复制到tftp根目录的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| . ├── docker-compose.yml ├── http │ └── cvk | ..... ├── nginx-conf.d │ └── default.conf └── tftp ├── BOOTX64.EFI ├── fonts │ ├── TRANS.TBL │ └── unicode.pf2 ├── grub.cfg ├── grubx64.efi ├── HDM-1.11.29_signed.bin //华三的HDM固件,忽略 ├── initrd.img ├── MokManager.efi ├── TRANS.TBL └── vmlinuz
|
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| version: '3.4' services: nginx: image: nginx:alpine hostname: nginx volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro - ./http:/usr/share/nginx/html - ./nginx-conf.d/:/etc/nginx/conf.d/ network_mode: "host" logging: driver: json-file options: max-file: '3' max-size: 100m
tftp: image: zhangguanzhang/tftp hostname: tftp volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro - ./tftp:/var/tftpboot command: ["--verbose", "--foreground", "--secure", "/var/tftpboot"] network_mode: "host" logging: driver: json-file options: max-file: '3' max-size: 100m
|
default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13
| server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; autoindex on; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
|
在交换机的dhcp里设置bootfile-name BOOTX64.EFI
后pxe进入的菜单是grub.cfg
的内容,而一般的官方的启动选项为
1 2
| linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet initrdefi /images/pxeboot/initrd.img
|
里面的inst.stage2=hd:LABEL=CentOS\x207\x20x86_64
是指向带label的hard disk,这里需要修改为url,并且里面的vmlinuz和initrd要修改为根,需要把这俩文件从镜像文件拷贝到tftp的根目录里,这里我改为
1 2
| linuxefi vmlinuz inst.repo=http://10.96.4.2/cvk ks=http://10.96.4.2:81/ks.cfg inst.ks.sendmac inst.ks.sendsn quiet initrdefi initrd.img
|
url 是从我自己go写的一个 web 占用的 81 端口,ks会在访问web渲染后返回获取的,详情上一篇,ks 文件里得加一行指定安装源
1
| url --url="http://10.96.4.2/cvk"
|
一般网上的老资料都说在 append 后加启动选项ksdevice=eth0
的指定获取ks的默认网卡,现在的centos里的anaconda已经改了逻辑会从每张网卡去retry获取,根本不需要指定,指定也可以,但是不是说不指定下会弹出选择需要人为去选择网卡
最后给个日志给懂的人
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| tftp daemon.notice in.tftpd[66]: RRQ from 10.0.23.31 filename /grub.cfg-01-9c-e8-95-d8-3c-cd tftp daemon.notice in.tftpd[67]: RRQ from 10.0.23.31 filename /grub.cfg-01-9c-e8-95-d8-3c-cd tftp daemon.notice in.tftpd[68]: RRQ from 10.0.23.31 filename /grub.cfg-0A00171F tftp daemon.notice in.tftpd[69]: RRQ from 10.0.23.31 filename /grub.cfg-0A00171F tftp daemon.notice in.tftpd[70]: RRQ from 10.0.23.31 filename /grub.cfg-0A00171 tftp daemon.notice in.tftpd[71]: RRQ from 10.0.23.31 filename /grub.cfg-0A00171 tftp daemon.notice in.tftpd[72]: RRQ from 10.0.23.31 filename /grub.cfg-0A0017 tftp daemon.notice in.tftpd[73]: RRQ from 10.0.23.31 filename /grub.cfg-0A0017 tftp daemon.notice in.tftpd[74]: RRQ from 10.0.23.31 filename /grub.cfg-0A001 tftp daemon.notice in.tftpd[75]: RRQ from 10.0.23.31 filename /grub.cfg-0A001 tftp daemon.notice in.tftpd[76]: RRQ from 10.0.23.31 filename /grub.cfg-0A00 tftp daemon.notice in.tftpd[77]: RRQ from 10.0.23.31 filename /grub.cfg-0A00 tftp daemon.notice in.tftpd[78]: RRQ from 10.0.23.31 filename /grub.cfg-0A0 tftp daemon.notice in.tftpd[79]: RRQ from 10.0.23.31 filename /grub.cfg-0A0 tftp daemon.notice in.tftpd[80]: RRQ from 10.0.23.31 filename /grub.cfg-0A tftp daemon.notice in.tftpd[81]: RRQ from 10.0.23.31 filename /grub.cfg-0A tftp daemon.notice in.tftpd[82]: RRQ from 10.0.23.31 filename /grub.cfg-0 tftp daemon.notice in.tftpd[83]: RRQ from 10.0.23.31 filename /grub.cfg-0
|