PXE(Preboot Execution Environment,预启动执行环境)是由 Intel 公司开发的一种网络引导技术,采用 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载操作系统或安装文件。它在大规模服务器部署中极为有效,特别是在自动化和远程安装方面,具有以下几个优点:
若要搭建 PXE 网络体系,必须满足以下几个前提条件:
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,并提供安装文件。
YUM 仓库是 CentOS 的软件包管理系统,用于存储和安装软件包。在 PXE 安装过程中,CentOS 7 的安装源需要通过 FTP 或 HTTP 提供给客户机。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个基于 UDP 协议的轻量级文件传输协议,主要用于传输小文件。PXE 使用 TFTP 来传输引导程序和 Linux 内核。
TFTP服务默认由xinetd服务进行管理,使用UDP 端口69。
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。
# 安装 TFTP 服务器和 xinetd 服务管理程序
yum -y install tftp-server xinetd
# 修改 TFTP 服务的配置文件
vim /etc/xinetd.d/tftp
# 配置文件内容如下:
protocol = udp
# 指定使用 UDP 协议
wait = no
# 设置为 no,允许多台客户机同时连接
server_args = -s /var/lib/tftpboot
# 指定 TFTP 根目录(存放文件的路径)
disable = no
# 设置为 no,开启 TFTP 服务
# 启动并设置 TFTP 和 xinetd 服务开机自启动
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用于为客户机分配 IP 地址,并指定 PXE 引导文件的位置。
# 安装 DHCP 服务
yum -y install dhcp
# 复制示例配置文件并命名到 /etc/dhcp/dhcpd.conf
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# 修改 DHCP 配置文件
vim /etc/dhcp/dhcpd.conf
# 配置文件内容如下:
ddns-update-style none;
# 修改:禁用 DNS 动态更新
next-server 192.168.80.10;
# 添加:指定 TFTP 服务器的地址
filename "pxelinux.0";
# 添加:指定 PXE 引导程序文件名
subnet 192.168.80.0 netmask 255.255.255.0 {
# 声明要分配的网段地址
range 192.168.80.100 192.168.80.200;
# 设置地址池
option routers 192.168.80.10;
# 设置默认网关为 TFTP 服务器的 IP 地址
}
# 启动并设置 DHCP 服务开机自启动
systemctl start dhcpd
systemctl enable dhcpd
将 Linux 内核文件和初始化镜像文件复制到 TFTP 根目录下。
cd /mnt/images/pxeboot
# 假设光盘已挂载到 /mnt 目录
cp vmlinuz /var/lib/tftpboot/
# 复制 Linux 内核文件到 TFTP 根目录
cp initrd.img /var/lib/tftpboot/
# 复制初始化镜像文件(Linux 引导加载模块)到TFTP根目录
PXE 引导程序由 syslinux
软件包提供。
yum -y install syslinux # 安装 syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制 PXE 引导程序到 TFTP 根目录
FTP 服务用于提供 CentOS 7 安装源给客户机。
yum -y install vsftpd # 安装 FTP 服务
mkdir /var/ftp/centos7 # 创建安装源目录
cp -rf /mnt/* /var/ftp/centos7/ # 将光盘内容复制到安装源目录
# 启动并设置 FTP 服务开机自启动
systemctl start vsftpd
systemctl enable vsftpd
启动菜单文件位于 TFTP 根目录的 pxelinux.cfg
子目录中,文件名为 default
。
mkdir /var/lib/tftpboot/pxelinux.cfg
# 创建启动菜单文件夹
vim /var/lib/tftpboot/pxelinux.cfg/default
# 编辑启动菜单文件
# 启动菜单文件内容如下:
default auto # 设置默认入口名称
prompt 1 # 是否等待用户选择,“1”表示等待用户操作
label auto # 图形安装(默认)引导入口
# label 用来定义启动项
kernel vmlinuz # 指定内核文件
append initrd=initrd.img method=ftp://192.168.80.10/centos7 # 指定初始化镜像和安装源路径
label linux text # 文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.10/centos7
label linux rescue # 救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.10/centos7
为了避免防火墙阻碍 PXE 网络安装过程,可以临时关闭防火墙和 SELinux。
systemctl stop firewalld.service # 关闭防火墙
setenforce 0 # 临时禁用 SELinux
使用 VMware 创建的虚拟机进行测试时,确保虚拟机内存至少 2GB,否则可能在启动安装时出现错误。
启动虚拟机后,在提示字符串 boot:
后按 Enter 键(或执行 auto
命令),将会自动通过网络下载安装文件,并进入默认的图形安装入口;
若执行 linux text
命令,则进入文本安装入口;若执行 linux rescue
命令,则进入救援模式。