使用PXE安装CentOS
什么是PXE?
PXE(Preboot Execution Environment,预启动执行环境)是由Intel公司开发的一种技术,允许计算机通过网络启动,它主要用于在没有本地存储设备的情况下,通过网络从服务器加载操作系统进行安装或运行,PXE广泛应用于大规模部署和系统恢复等场景。

PXE的工作原理
1、初始化阶段:客户端计算机通过其网络接口发送广播请求,寻找可以提供PXE服务的DHCP服务器。
2、获取IP地址和引导文件位置:DHCP服务器响应请求,分配一个IP地址给客户端,并告知PXE引导文件的位置。
3、下载引导文件:客户端根据DHCP提供的地址信息,向TFTP服务器请求下载pxelinux.0文件。
4、执行引导程序:pxelinux.0文件被下载到内存中并执行,它负责加载Linux内核和初始的RAM盘映像(initrd.img)。
5、安装过程:一旦内核和initrd.img被加载,系统进入实际的安装或运行阶段,此时可以通过HTTP、FTP等方式获取所需的操作系统镜像和软件包。
配置步骤
1. 准备环境

两台虚拟机,一台作为服务端,一台作为客户端。
CentOS 7.6的ISO镜像文件。
2. 服务端配置
2.1 设置静态IP地址
编辑/etc/sysconfig/networkscripts/ifcfgens33
文件,设置静态IP地址。
- BOOTPROTO=static
- ONBOOT=yes
- IPADDR=192.168.1.10
- NETMASK=255.255.255.0
- GATEWAY=192.168.1.1
- DNS1=192.168.1.1
- DNS2=114.114.114.114
2.2 关闭防火墙和SELinux

- systemctl stop firewalld.service
- systemctl disable firewalld.service
- sed i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- setenforce 0
2.3 安装必要的软件包
- yum install y dhcp xinetd tftpserver httpd syslinux
2.4 配置DHCP服务
创建/etc/dhcp/dhcpd.conf
文件,添加以下内容:
- subnet 192.168.1.0 netmask 255.255.255.0 {
- range 192.168.1.10 192.168.1.100;
- option routers 192.168.1.1;
- option broadcastaddress 192.168.1.255;
- nextserver 192.168.1.10;
- filename "pxelinux.0";
- }
启动DHCP服务:
- systemctl start dhcpd.service
- systemctl enable dhcpd.service
2.5 配置TFTP服务
编辑/etc/xinetd.d/tftp
文件,取消注释并修改为:
- disable = no
- per_source = 11
- server_args = s /var/lib/tftpboot
创建目录并复制文件:
- mkdir p /var/lib/tftpboot
- cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
启动TFTP服务:
- systemctl restart xinetd.service
- systemctl enable xinetd.service
2.6 配置HTTP服务
将CentOS ISO镜像挂载到/mnt
目录下,并将ISO中的文件复制到/var/www/html
下:
- mount o loop /root/CentOS7x86_64DVD1511.iso /mnt
- cp r /mnt/* /var/www/html/
编辑/var/www/html/isolinux/isolinux.cfg
文件,添加以下内容到label centos
部分:
- kernel vmlinuz initrd=initrd.img repo=http://192.168.1.10/centos7.repo
启动HTTP服务:
- systemctl start httpd.service
- systemctl enable httpd.service
2.7 配置PXE引导菜单
编辑/var/lib/tftpboot/pxelinux.cfg/default
文件,添加以下内容:
- DEFAULT centos
- LABEL centos
- MENU LABEL ^Install CentOS 7^
- KERNEL vmlinuz
- APPEND /initrd.img
常见问题解答(FAQs)
Q1: 为什么客户端无法获取IP地址?
A1: 确保DHCP服务器已启动,并且配置文件中的范围与客户端的MAC地址匹配,同时检查网络连接是否正常。
Q2: TFTP服务器无法提供文件怎么办?
A2: 确保TFTP服务已启动,并且/var/lib/tftpboot
目录下包含正确的pxelinux.0文件,如果问题仍然存在,请检查TFTP服务的日志文件以获取更多错误信息。