使用CentOS 7 搭建PXE_Server

具体部署过程参考redhat官方文档准备网络安装章节

新的项目需要部署大量的系统,所以需要做一个PXE_Server,之前有做过PXE_Server,但是过程没有记录下来。这次不光需要使用PXE安装操作系统,还需要进行设置和采集信息,所以后面还需要部署kickstart服务器。

首先需要一个可以正常使用的linux系统,我全新安装了一个CentOS 7 虚拟机,为了方便测试并且不影响公司其他人使用网络,我选择了使用NAT网络,并且需要关闭VMware的虚拟网络的DHCP,以免和后面PXE_Server的DHCP发生冲突。

因为关闭了DHCP,为了能使用yum安装软件,完成系统安装后需要配置网络,我是用nmtui工具进行配置。

配置的时候留意子网前缀和网关地址。

使用yum install tftp-server -y 安装tftp,安装成功后修改/etc/xinet.d/tftp 文件,将 disabled 参数从 yes 改为 no。如果使用防火墙需要允许tftp服务通过防火墙,测试环境下可以关闭防火墙。使用firewall-cmd –add-service=tftp –permanent永久允许tftp通过防火墙,success之后使用firewall-cmd –reload重载配置。

随后安装DHCP服务,我使用的是红帽条件的dhcpd服务,红帽官网有专门的教程。使用yum install dhcp -y安装dhcpd,如果你不需要进一步了解如何配置dhcp,按照网络安装章节的教程进行就可以了。配置/etc/dhcp/dhcpd.conf如下:

修改地址段为适合自己的配置。

接下来安装pxelinux.0,它的作用相当于传统启动中的grub。打开完整的DVD ISO镜像,我安装系统的时候使用的是minimal镜像,所以需要把VMware虚拟CD-ROM中的镜像换成完整的镜像,并将CD-ROM连接到虚拟机,后面也会用这个镜像做安装文件。将镜像挂载到/media目录,拷贝syslinux 的rpm包到合适的目录,教程中卸载了CD-ROM,因为我们后面还要继续用这个文件,所以就不卸载了。

然后使用rpm2cpio 提取rpm包,指令类似 rpm2cpio syslinux-4.05-13.el7.x86_64.rpm | cpio -dimv。使用mkdir /var/lib/tftpboot/pxelinux 创建pxelinux目录,并将提取出的pxelinux.0文件拷贝到pxelinux中,执行cp ~/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux。

在pxelinux/创建pxelinux.cfg/目录,并在pxelinux.cfg目录中创建default配置文件。参照红帽教程配置default文件,其中inst.repo=项目需要配置安装源,我们准备使用http安装源,所以先搭建引导要用的http服务器。

其他配置选项参考红帽文档引导选项的章节。配置http安装源教程参考准备安装源章节

首先使用yum install httpd -y安装httpd服务器,然后将DVD ISO 映像挂载到http服务器root目录中。教程中将文件全部拷贝到了http服务器root目录,我这里图省事就直接将影响挂载到了服务器目录,毕竟我们用的本来就是虚拟机。在/var/www/html下创建centos7目录,将/dev/cdrom挂载到/var/www/html/centos7目录下。随后使用systemctl start httpd.service 启动httpd,使用浏览器访问确认是否生效,注意需要使用firewalld-cmd –add-service=http –permanent && firewalld-cmd –reload配置firewalld允许http服务。可以访问之后别忘了打开httpd的开机启动,使用systemctl enable httpd.service。

继续编辑/var/lib/tftpboot/pxelinux/pxelinux.cfg/default文件,修改inst.repo=http://192.168.100.3/centos7。

复制引导映像到tftpboot/pxelinux/目录,使用命令cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/。

下面运行tftpd和dhcp服务PXE_Server就算搭建完成了,因为tftp现在已经不依赖xinetd了可以不用按照教程上的systemctl start xinetd.service 启动tftpd,而是直接执行systemctl start tftp。

下面进行PXE启动测试。

安装一台全新的虚拟机,设置硬盘但不设置cdrom。启动后PXE启动获得了正确的ip地址和配置文件,出现boot:提示符后回车启动默认选项,这是提示Could not find kernel image: vesamenu.c32之前配置的时候也出现过这个错误,我还不清楚是我理解不够还是红帽官方的文档有问题。解决的办法是看到boot:提示符后输入linux回车。或者修改default配置文件中的default为linux,就可以直接使用回车启动了。