通过PXE安装Linux¶
本文描述的操作在Gentoo x86_64上,利用KVM虚拟机完成。
所需软件包有: * 虚拟机管理软件:app-emulation/libvirt
- DHCP服务器:net-dns/dnsmasq(此工具是libvirt默认的DNS和DHCP工具,在其它环境中应该安装DHCP服务器)
- tftp服务器:net-ftp/atftp
- FTP服务器:net-ftp/vsftpd
- sys-boot/syslinux
- CentOS安装DVD
其中DHCP, tftp, ftp服务器是必须的。
配置DHCP服务器¶
由于使用的是livirt的默认配置,所以此外关于DHCP的配置与标准DHCP服务器的配置有所 不同。[1]
libvirtd虚拟机¶
运行命令virsh net-edit default,上面的命令会用vim打开defautl网络的配置文件,请在<dhcp></dhcp>中增加:<bootp file='pxelinux.0' server='192.168.122.1'/>,以指明tftp服务器地址 为:192.168.122.1。关于bootp的意义请查看libvirt的网络配置文件 说明。[2]
然后(重新)启动libvirtd服务器:systemctl restart libvirtd
单独的dhcpd服务¶
如果使用的是独立的DHCP服务器,请参考鸟哥及其它说明。[3][4] 。其中关键是在DHCP服务器上指明tftp服务器的地址和读取的文件名。
# cat /etc/dhcp/dhcpd.conf
subnet 192.168.122.0 netmask 255.255.255.0 {
range 192.168.122.2 192.168.122.254;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.122.1; # PXE Server地址
filename "pxelinux.0"; # 引导文件名
}
windows DHCP服务器¶
如果使用的是windows DHCP服务器,请按以下步骤设定next-server(启动服务器主机名,启动文件名)值:[5][6]
- 打开DHCP管理界面
- 右键单击运行中的DHCP服务器,选择“设置预定义的选项...,将会弹出一个窗口
- 第一个下拉栏(选项类别)选择“DHCP标准选项”,第二个下拉栏(选项名)选择066 启动服务器主机名在值中填入tftp服务器IP,确定。
- 重复上一步,第二个下拉栏(选项名)选择“067 启动文件名”,填上pxelinux.0(与后面设定的文件名有关),确定。
- 右键单击右侧树形栏中“作用域-作用域选项”,选择“配置选项“,勾选’066, 067‘两个选项,然后确定
- 此时可以看到”作用域选项“的右侧栏中有”066 启动服务器主机名, 067启动文件名两个选项
- 配置完成。
配置tftp服务器及安装相关文件¶
确认已安装net-ftp/atftp, net-ftp/vsftpd, sys-boot/syslinux。
设置并确认tftp, ftp服务器的根目录。tftp服务器的根目录通过文件/etc/conf.d/atftp或/etc/systemd/system/atftp.service.d/00gentoo.conf来配置。在这里将tftp 的根目录设定为/tmp/tftproot,ftp的根目录为:/home/ftp
将CentOS的光盘镜像文件挂载至ftp下:mount -o loop xxx.iso /home/ftp
准备需tftp提供的文件:
cd /usr/share/syslinux # 其中menu.c32, vesamenu.c32提供菜单介面;pxelinux.0是开机管理程序 cp pxelinux.0 menu.c32 vesamenu.c32 /tmp/tftpboot # 目录pxelinux.cfg用于存放开机菜单 mkdir -p /tmp/tftproot/pxelinux.cfg touch /tmp/tftproot/pxelinux.cfg/default # 将CentOS DVD中的引导文件复制 mkdir -p /tmp/tftproot/kernel/centos64 # 已将CentOS DVD挂载至/home/ftp cd /home/ftp/isolinux/ cp initrd.img isolinux.cfg vmlinuz /tmp/tftproot/kernel/centos64
定制开机菜单
- 文件/tmp/tftproot/pxelinux.cfg/default
# cat /tmp/tftproot/pxelinux.cfg/default UI vesamenu.c32 # 使用vesamenu.c32界面模式 TIMEOUT 300 # 等待时间,单位0.1s DISPLAY ./boot.msg # 提示欢迎介面 MENU TITLE Welcome to PXE Server System LABEL local MENU LABEL Boot from local drive MENU DEFAULT localboot 0 LABEL CentOS 6.4 MENU LABEL Boot from PXE Server for Install CentOS 6.4 kernel ./kernel/centos64/vmlinuz append initrd=./kernel/centos64/initrd.img
- 欢迎提示内容
# cat /tmp/tftproot/boot.msg Welcome to PXE Server System
启动tftp, ftp服务并确认:
systemctl start atftp systemctl start vsftpd # 检查相应端口已打开:tftp服务器侦听UDP 69端口,FTP侦听TCP 21 netstat -ltunp
安装系统¶
打开virt-manager创建一个新虚拟机,并选择从PXE安装系统,正常情况下很快 会进入default提供的菜单介面。如果没有,请确认DHCP服务正常,tftp文件可以正常访 问。另外,请确认虚拟网卡接到了正常的位置(我因为虚拟了好几个,结果接错了接口, 折腾了半天)。
顺利进行安装介面后选择通过网络安装,将地址指向FTP服务器即可。