步骤4: 设置PXE服务器配置文件
7. 通常,PXE服务器从位于pxelinux.cfg文件夹中一组指定的文件中读取配置(首先是GUID文件,接下来是MAC文件,最后是Default文件),该文件夹必须位于DNSMASQ主配置文件中tftp-root声明指定的目录中。
创建需要的目录pxelinux.cfg,然后添加default文件到该目录中,命令如下。
# mkdir /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default
8. 现在,该来编辑PXE服务器配置文件了,为它添加合理的Linux发行版安装选项。请注意,该文件中使用的所有路径必须是相对于/var/lib/tftpboot目录的。
下面,你可以看到配置文件的样例,你可以使用该模板,但请修改安装镜像(kernel和initrd文件)、协议(FTP、HTTP、HTTPS、NFS)以及映射你网络安装源仓库和路径的IP地址等参数。
# nano /var/lib/tftpboot/pxelinux.cfg/default
添加以下整个节录到文件中。
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1)InstallCentOS7 x64 withLocalRepo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount
label 2
menu label ^2)InstallCentOS7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp
label 3
menu label ^3)InstallCentOS7 x64 withLocalRepousing VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4)Bootfromlocal drive
配置PXE服务器
正如你所见,CentOS 7启动镜像(kernel和initrd)位于名为centos7的目录,该目录是/var/lib/tftpboot目录的相对路径(其系统绝对路径为/var/lib/tftpboot/centos7),而安装器仓库位于可通过FTP协议访问的192.168.1.20/pub网络位置中——在本例中,这些仓库位于本地,因为IP地址和PXE服务器地址相同。
同时,菜单label 3指定客户端安装应该通过VNC从一个远程位置实现(这里替换VNC密码为一个健壮的密码),如果你在一台没有输入输出的客户端上安装,菜单label 2指定了作为安装源的一个CentOS 7官方互联网镜像(这种情况要求客户端通过DHCP和NAT连接到互联网)。
重要:正如你在上述配置中所看到的,我们使用了CentOS 7进行演示,但是你也可以定义一个 RHEL 7镜像。而下面的整个的说明和配置都只是基于CentOS 7的,所以在选发行版时要注意一下。
步骤5: 添加CentOS 7启动镜像到PXE服务器9. 对于此步骤,需要用到CentOS的kernel和initrd文件。要获取这些文件,你需要CentOS 7 DVD ISO镜像。所以,去下载CentOS DVD镜像吧,然后把它(刻录成光盘)放入你的DVD驱动器并挂载镜像到/mnt路径,命令见下面。
使用DVD,而不是最小化CD镜像的原因在于,在后面我们将使用该DVD的内容为FTP源创建本地安装器仓库。
# mount -o loop /dev/cdrom /mnt
# ls /mnt
挂载CentOS DVD
如果你的机器没有DVD驱动器,你也可以使用wget或curl工具从CentOS镜像站下载CentOS 7 DVD ISO到本地并挂载。
# wget
# mount -o loop /path/to/centos-dvd.iso /mnt
10. 在DVD内容可供使用后,创建centos7目录并将CentOS 7 的可启动的 kernel和initrd映像文件从DVD挂载位置拷贝到centos7文件夹。
# mkdir /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
拷贝CentOS可启动文件
使用该方法的原因在于,今后你可能会在/var/lib/tftpboot路径中创建新的独立的目录,并添加其它Linux发行版到PXE菜单中,你就不会将整个目录结构弄得一团糟了。
步骤6: 创建CentOS 7本地镜像安装源11. 虽然你可以通过多种协议设置安装源镜像,如HTTP、HTTPS或NFS,但对于本指南,我选择了使用FTP协议。因为通过vsftpd,你可以很便捷地配置,而且它也很稳定。
接下里,安装vsftpd进程,然后复制所有DVD挂载目录中的内容到vsftpd默认服务器路径下(/var/ftp/pub)——这会花费一些时间,这取决于你的系统资源。然后为该路径设置可读权限,命令如下。
# yum install vsftpd
# cp -r /mnt/* /var/ftp/pub/
# chmod -R 755 /var/ftp/pub
安装Vsftpd服务器
拷贝Files到FTP路径
设置FTP路径的权限
步骤7: 在系统范围内启动并启用进程12. 既然PXE服务器配置已经完成,那么就来启动DNSMASQ和VSFTPD服务器吧。验证它们的状况并在系统上启用,以便让这些服务在每次系统重启后都能随系统启动,命令如下。
# systemctl start dnsmasq # systemctl status dnsmasq # systemctl start vsftpd # systemctl status vsftpd # systemctl enable dnsmasq # systemctl enable vsftpd启动Dnsmasq服务
启动Vsftpd服务
步骤8: 打开防火墙并测试FTP安装源13. 要获取需要在防火墙打开的端口列表,以便让客户机可访问并从PXE服务器启动,请运行netstat命令并根据dnsmasq和vsftpd监听列表添加CentOS 7防火墙规则。
# netstat -tulpn
# firewall-cmd --add-service=ftp --permanent ## Port 21
# firewall-cmd --add-service=dns --permanent ## Port 53
# firewall-cmd --add-service=dhcp --permanent ## Port 67
# firewall-cmd --add-port=69/udp --permanent ## Port for TFTP
# firewall-cmd --add-port=4011/udp --permanent ## Port for ProxyDHCP
# firewall-cmd --reload ## Apply rules
检查监听端口
在防火墙上开启端口
14. 要测试FTP安装源网络路径,请在本地或另外一台计算机上打开浏览器(lynx就可以做此事),然后输入你架设有FTP服务的PXE服务器的IP地址,并在填入的URL后面加上/pub网络位置,结果应该和截图中看到的一样。
ftp://192.168.1.20/pub
通过浏览器访问FTP文件
15. 要解决PXE服务器最终的配置或其它信息产生的问题,请在live模式下诊断,命令如下:
# tailf /var/log/messages
检查PXE日志错误
16. 最后,最终所需的步骤就是卸载CentOS 7 DVD,并移除物理介质。
# umount /mnt