配置指导:PXE无人值守自动化安装系统平台
PXE无人值守自动化安装系统平台
1 PXE使用场景
PXE,全名Pre-boot Execution Environment,预启动执行环境,通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统
- 批量服务器的部署
- 信息安全要求高,需要使用无盘系统(系统在特定的服务器上,而不在本地电脑)
- 远程安装,通过BMC启动远程服务器,然后通过PXE启动本地系统
2 PXE工作流程
- 客户机从自己的PXE网卡启动,向网络中的DHCP服务器索取IP,并搜寻引导文件的位置
- DHCP服务器返回给客户机IP以及引导文件的位置
- 客户机向网络中的TFTP服务器索取引导文件并执行该文件
- 客户机根据引导文件的执行结果,通过TFTP服务器加载内核和文件系统
- 进入安装画面,客户机根据自动应答配置文件完成操作系统的自动化部署
3 PXE必要组件
- DCHP:动态主机配置协议,用于自动分配IP地址,定位引导文件
- TFTP:简单文件传输协议,用于PXE预引导加载环境,提供pxelinux.0文件
- FTP:文件传输协议,用于加载pxelinux.0文件执行的结果
- kickstart:kickstart生成自动应答文件,无需人工干涉自动化装机
4 PXE服务器配置
主机 | 系统 | IP地址 | 软件 |
---|---|---|---|
PXE | Centos7.6 | 192.168.5.222 | PXE+TFTP+VSFTP+kickstart |
服务器具体配置要求如下:
- 至少2G内存
- 至少2核CPU
5 环境准备
5.1 关闭SELinux
SELinux不关闭的情况下无法实现,会限制客户机和PXE服务器的通信。
[root@PXE ~]# setenforce 0
[root@PXE ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
5.2 关闭防火墙
防止安装时出现各个组件的端口不能访问的问题。
[root@PXE ~]# systemctl stop firewalld && systemctl disable firewalld
6 部署PXE
部署PXE的必要服务,并且修改相关服务的配置文件。
6.1 部署DHCP服务
[root@pxe ~]# yum -y install dhcp
[root@pxe ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.180 192.168.5.199; #地址池
option routers 192.168.5.1; #网关
option domain-name-servers 114.114.114.114; #DNS地址
next-server 192.168.5.222; #TFTP地址
filename "pxelinux.0"; #引导文件
}
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
6.2 部署TFTP服务
[root@pxe ~]# yum -y install tftp-server syslinux
[root@pxe ~]# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@pxe ~]# systemctl start tftp
[root@pxe ~]# systemctl enable tftp
6.3 部署VSFTP服务
[root@pxe ~]# yum -y install vsftpd
[root@pxe ~]# mkdir /var/ftp/centos7
[root@pxe ~]# mount /dev/cdrom /var/ftp/centos7/
[root@pxe ~]# cd /var/ftp/centos7/images/pxeboot/
[root@pxe pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@pxe ~]# systemctl start vsftpd
[root@pxe ~]# systemctl enable vsftpd
6.4 编辑启动菜单
[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# vi pexlinux.cfg/default
default auto
timeout 60
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.5.222/centos7 ks=ftp://192.168.5.222/ks.cfg
6.5 装机测试
创建未安装系统的裸机:

裸机成功获取IP并且加载文件系统:

PXE批量部署成功:

7 kickstart无人值守
7.1 安装kickstart
安装kickstart并创建ks.cfg文件,这里我们直接给出了完整的ks.cfg配置文件。安装完成之后,可以跳过部署操作系统中的手动配置过程。配置文件中的root密码:tera123。
[root@pxe ~]# yum -y install system-config-kickstart
[root@pxe ~]# vi /var/ftp/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$7PKyC0GQ$lcdaVO2JUK8wOCnSiMr7S0
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=ens160
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.5.222/centos7"
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all
# Disk partitioning information
autopart
ignoredisk --only-use=sda
%packages
@^minimal
@core
chrony
kexec-tools
%end
8 PXE自动化部署注意事项
8.1 安装虚拟机失败
安装虚拟机的时候要注意,非最小化安装,需要给虚拟机分配2G以上内存,否则会报错。
8.2 安装完成之后重启黑屏
虚拟机安装完成之后,重启卡在黑屏是因为通过图形化配置时ks.cfg文件没有生效,导致在安装的过程中引导装载程序失败。我们需要手动修改ks.cfg为文档里推荐的配置。
8.3 服务器无法进入PXE
如果要覆盖安装原有的操作系统,需要手动将启动顺序调整为网络启动,并且在安装完成之后改为本地硬盘启动。
8.4 硬盘分区
利用工具system-config-kickstart进行ks.cfg文件生成时,LVM无法支持。如果需要配置LVM,建议寻找一台通过LVM手动部署的主机,打开该主机root下的anaconda-ks.cfg文件,在此基础上修改并保存为我们需要的ks.cfg文件。
9 参考文献
PXE官网:https://pxe.org/
如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com