1. 引言
1.1.简介
PXE 的全称是 preboot execute environment,也被称为预执行环境,提供了一种使用网络接口(NetworkInterface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
2. 服务端部署 PXE
2.1.部署 PXE 组件
安装 PXE 组件
yum install dhcp-server nfs-utils xinetd tftp-server syslinux-nonlinux syslinux
2.2.修改 dhcp 服务配置文件
编辑配置文件/etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
添加如下内容,注意根据实际情况修改配置文件里面的 IP 以及去掉#号后面内容。
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 172.25.0.0 netmask 255.255.255.0 {
option routers 172.25.0.130;
range 172.25.0.10 172.25.0.160;
filename "pxelinux.0";
next-server 172.25.0.130;
}
2.3.增加 tftp 服务配置文件
编辑配置文件/etc/xinetd.d/tftp
vim /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
}
2.4.编辑 nfs 服务配置文件
创建数据挂载点
mkdir /mnt/ks /mnt/install
修改配置文件 /etc/exports
添加如下内容
/mnt/ks *(rw)
/mnt/install/ *(rw)
挂载镜像
mount -o loop uniontechos-server-20-1050a-amd64.iso /mnt/install
复制 PXE 需要的内容到挂载点
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /mnt/install/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/install/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /mnt/install/isolinux/*.msg /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/install/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改 default 以及添加 label
vim /var/lib/tftpboot/pxelinux.cfg/default
修改 配 置 文 件 /mnt/ks/ks.cfg ( 注 : ks.cfg 是 从 客 户 端安装的操作系统下/root/anaconda-ks.cfg 复制的)
vim /mnt/ks-file/ks.cfg
修改内容如下,IP 地址按照实际情况修改。
(注:下面 ks.cfg 是模板,您的 ks.cfg 文件关于红色标注的地方为需要修改,repo 是您使用的仓库,nfs 是挂载的镜像地址,reboot 是系统重启。)
#version=RHEL8
#Use graphical install
graphical
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
repo --name="kernel419" --baseurl=file:///run/install/repo/kernel419
%packages
@^graphical-server-environment-dde
%end
#Keyboard layouts
keyboard --xlayouts='cn'
# System language
lang zh_CN.UTF-8
#Network information
network --hostname=localhost.localdomain
#Use CDROM installation media
#cdrom
nfs --server=172.25.0.130 --dir=/mnt/installrepo
#Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=nvme0n1
autopart
#Partition clearing information
clearpart --all --initlabel --drives=nvme0n1
#System timezone
timezone Asia/Beijing --isUtc
#Root password
rootpw --iscrypted$6$JVBENxQxzikvHUcs$Aw/O01vHsTBi/EWHJa.rr60X0K0ExBBI4oivEFU6iOcUlWnldsQV5aSfF0TAgrKODgmn0zAaofs/pQdTk6q/H1
user --groups=wheel --name=aa --password=$6$wQLg6moTK5U/t7Pq$3ChuYx3EJQ2mRJeKnGs5d5sOZxP9Zgm2GdV3r
GCCxtl2Fla9j49fKVmIR9KMR05bmT1CO6GNUFIb8zuhddqaW. --iscrypted --gecos="aa"
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=8 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy user --minlen=8 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
reboot
2.5.PXE 相关服务启动
关闭防火墙
systemctl disable firewalld --now
启动 PXE 相关服务
systemctl restart dhcpd
systemctl restart nfs-server.service
systemctl restart xinetd.service
systemctl restart tftp
查看 PXE 相关服务状态
systemctl status dhcpd
systemctl status nfs-server.service
systemctl status xinetd.service
systemctl status tftp
3. 客户端开始安装
客户端与服务端需要在同一局域网内,且局域网内无其他 dhcpd 服务影响PXE部署,或者客户端与服务端网口直连,然后客户端启动时 BIOS选择网络启动即可实现