一、前言
PXE(Preboot Execution Environment)即预启动执行环境,是一种基于Client/Server模式的网络引导技术。它允许计算机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统,而无需依赖本地存储设备,如光盘、U盘等。PXE在大规模装机场景中优势明显,比如同时装配多台服务器时,可实现规模化、自动化安装,大大节省人力和时间成本。
要实现PXE网络装机,需要满足几个条件:客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导;网络中有一台DHCP服务器为客户机自动分配地址、指定引导文件位置;服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。
二、部署PXE远程安装服务
2.1 搭建PXE远程安装服务器
1. 准备安装源:假设我们以CentOS 7系统为例进行PXE装机,首先需要准备好CentOS 7的安装源。可以将系统光盘挂载到服务器上,例如执行命令 mount /dev/cdrom /mnt ,将光盘挂载到 /mnt 目录。
挂载镜像
复制所需的安装包,更改配置文件,启动服务
2. 安装并启用TFTP服务:TFTP服务用于提供引导镜像文件的下载 ,通过简单文件传输协议在客户机和服务器之间传输小文件。安装命令为 yum -y install tftp-server 。安装完成后,编辑配置文件 /etc/xinetd.d/tftp ,将 disable = yes 修改为 disable = no ,然后启动TFTP服务 systemctl start tftp 并设置开机自启 systemctl enable tftp 。
3. 准备Linux内核、PXE引导程序等:从挂载的安装源中找到用于PXE网络安装的Linux内核文件 vmlinuz 和初始化镜像文件 initrd.img ,它们位于 images/pxeboot 目录下 ,将这两个文件复制到TFTP服务的根目录 /var/lib/tftpboot/ ,即执行 cp /mnt/images/pxeboot/initrd.img /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ 。另外,PXE引导程序 pxelinux.0 由 syslinux 软件包提供,安装 syslinux 后,将 pxelinux.0 也复制到TFTP服务的根目录: yum -y install syslinux , cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 。
4. 安装并启用DHCP服务:由于PXE客户机通常是未安装系统的裸机,需要DHCP服务为其分配IP地址并告知引导文件位置。安装DHCP服务: yum -y install dhcp 。编辑DHCP配置文件 /etc/dhcp/dhcpd.conf ,配置示例如下:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # 定义IP地址池
option routers 192.168.1.1; # 默认网关
option domain - name - servers 8.8.8.8, 114.114.114.114; # DNS服务器
option subnet - mask 255.255.255.0;
next - server 192.168.1.2; # 指定TFTP服务器IP
filename "pxelinux.0"; # 引导文件名
}
启动服务
配置完成后,启动DHCP服务 systemctl start dhcpd 并设置开机自启 systemctl enable dhcpd 。
5. 配置启动菜单:在TFTP服务根目录下创建 pxelinux.cfg 目录,用于存放启动菜单配置文件, mkdir /var/lib/tftpboot/pxelinux.cfg 。编辑启动菜单文件 default :
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.1.2/centos7 # 假设FTP服务器地址为192.168.1.2,安装源目录为centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.1.2/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.1.2/centos7
2.2 验证PXE网络安装
完成上述配置后,在客户机上设置BIOS从网络启动(通常在BIOS的启动选项中选择Network或LAN)。客户机启动时会通过PXE协议向DHCP服务器请求IP地址,获取到地址后,从TFTP服务器下载引导程序和内核等文件,然后进入系统安装界面。如果一切正常,就能看到系统安装的选项,如图形安装、文本安装、救援模式等,这表明PXE远程安装服务搭建成功。
三、实现Kickstart无人值守安装
Kickstart是一种无人职守安装方式,它通过记录安装过程中所需人工干预填写的各种参数,生成一个名为 ks.cfg 的应答文件。在后续安装过程中,安装程序会自动查找该文件并采用其中的参数,无需人工频繁干预。
3.1 准备安装应答文件
1. 安装 system-config-kickstart 工具,它提供了图形化界面来生成 ks.cfg 文件 ,执行 yum install -y system-config-kickstart 。
2. 执行 system-config-kickstart 命令打开图形化配置界面。
3. 基本配置:设置默认语言为“中文(简体)”,时区为“Asia/Shanghai”,并设置root密码,在高级配置中勾选“安装后重启” 。
4. 安装方法:选择FTP,填写FTP服务器地址和目录,例如 ftp://192.168.1.2/centos7 。
5. 引导装载程序选项:“安装类型”选择安装新引导装载程序,“安装选项”选择在主引导记录(MBR)中安装引导装载程序。
6. 分区信息:通常需要清除主引导记录、删除所有现存分区、初始化磁盘标签,并添加分区,如 /boot 分区(文件系统类型 xfs ,固定大小500M )、 swap 分区(固定大小4096M )、 /home 分区(文件系统类型 xfs ,固定大小4096M )和根分区“/”(文件系统类型 xfs ,使用磁盘上全部未使用空间 )。
7. 网络配置:添加网络设备,设置网络类型为DHCP。
8. 防火墙配置:禁用SELinux和防火墙。
9. 安装后脚本:可根据需求编写,例如设置本地YUM源:勾选“使用解释程序”为 /bin/bash ,内容如下:
rm -rf /etc/yum.repos.d/*
echo '(local)
name=local
baseurl=ftp://192.168.1.2/centos7
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
3.2 保存和配置应答文件
1. 配置完成后,保存生成的 ks.cfg 文件,默认保存在 /root/ 目录下。
2. 如果需要最小化安装,可以将 /root/anaconda-ks.cfg 中的软件包安装脚本复制到 ks.cfg 文件中,只复制 %packages 到 %end 部分 ,例如:
vim ks.cfg
%packages
@^minimal
%end
1. 将 ks.cfg 文件复制到FTP服务器可供下载的目录,如 cp /root/ks.cfg /var/ftp/ks.cfg 。
3.3 编辑引导菜单添加ks引导参数
编辑PXE启动菜单文件 /var/lib/tftpboot/pxelinux.cfg/default ,添加 ks 引导参数以指定 ks.cfg 应答文件的URL路径:
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.1.2/centos7 ks=ftp://192.168.1.2/ks.cfg