Dnsmasq 实现网络 PXE 装机
文章目录
把 dnsmasq 配置成 pxe 服务器
- 安装 dnsmasq
1 2 3 4
# rhel yum install dnsmasq # archlinux pacman -S dnsmasq
- 修改配置 /etc/dnsmasq.conf
1 2 3 4 5 6 7
port=0 # 用不着 dns 功能,可以关闭 #interface=ens8u2u4u1 # 指定网卡 dhcp-range=10.0.86.1,10.0.86.9,255.255.255.0,1h #dhcp-boot=pxelinux.0 # bios 引导 dhcp-boot=grubx64.efi # efi 引导 enable-tftp tftp-root=/var/ftpd
- 启动 dnsmasq
1
systemctl start dnsmasq
安装 CentOS7/8
- 本次测试使用 CentOS7.7 和 CentOS8.0 镜像
挂载系统镜像,提供软件源服务
- 下载 centos7/8 镜像到 dnsmasq 服务器
- 挂载镜像到 /mnt 目录
1
mount -o loop xxxx.iso /mnt
- 直接在系统镜像的挂载目录(/mnt)启动 http 服务
1 2 3 4
cd /mnt python2 -m SimpleHTTPServer 10086 # 或者使用 python3 python3 -m http.server 10086
网络 BIOS 引导
- 复制 centos7/8 镜像里的启动文件到 dnsmasq 服务器的 /var/ftpd/ 下
1 2 3 4
cd /var/ftpd cp /mnt/isolinux/* . mkidr pxelinux.cfg mv isolinux.cfg pxelinux.cfg/default
- 打开 /var/ftpd/pxelinux.cfg/default,修改第一个启动项
1 2 3 4 5
label linux menu label ^Install CentOS 7/8 kernel vmlinuz append initrd=initrd.img inst.repo=http://10.0.86.1:10086/ quiet # ks 参数: inst.ks=<ks.cfg url>
- 在 centos7/8 上安装 syslinux
1 2
yum install syslinux # centos7 dnf install syslinux # centos 8
- 把 /user/share/syslinux/pxelinux.0 复制到 dnsmasq 服务器的 /var/ftpd/ 下
- 修改文件权限,确保 dnsmasq 用户可读
1
chown -R dnsmasq.dnsmasq /var/ftpd/
网络 EFI 引导
- 不支持 secure boot
- 复制 centos7/8 镜像里的启动文件到 dnsmasq 服务器的 /var/ftpd/ 下
1
cp -a /mnt/EFI/BOOT/* /var/ftpd/
- 打开 /var/ftpd/grub.cfg,修改第一个启动项
1 2 3 4 5
menuentry 'Install CentOS 7/8' --class fedora --class gnu-linux --class gnu --class os { linuxefi vmlinuz inst.repo=http://10.0.86.1:10086/ quiet initrdefi initrd.img } # ks 参数: inst.ks=<ks.cfg url>
- 修改文件权限,确保 dnsmasq 用户可读
1
chown -R dnsmasq.dnsmasq /var/ftpd/
装机
- 把待安装机器和 dnsmasq 服务器接入同一个交换机(无其他 dhcp 广播)
- 启动待安装机器,选择 pxe 引导,从第一个启动项启动
文章作者 Colben
上次更新 2019-11-08