知识导引 PXE的工作过程:
- PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
- DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
- PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
- PXE Client 取得pxelinux.0 文件后之执行该文件;
- 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统;
- 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装

DHCPserver和boot server在同一台服务器上
安装轻量级的文件传输协议服务器
1、安装简单文件传输服务器
[root@server10 ~]# dnf -y install tftp-server 安装简单文件传输服务器
2、启动ftp服务器及防火墙
[root@server10 ~]# systemctl enable --now tftp 启动ftp服务器并设置开机启动
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.
[root@server10 ~]# systemctl enable --now firewalld 启动防火墙并设置开机启动
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
[root@server10 ~]#
[root@server10 ~]# firewall-cmd --add-service=tftp 在防火墙里添加tftp服务
success
[root@server10 ~]# firewall-cmd --runtime-to-permanent 在防火墙里永久添加运行时
success
3、安装及编辑dhcp服务器
[root@server10 ~]# vim /etc/dhcp/dhcpd.conf 编辑dhcp服务器的配置文件

option domain-name "benet.com"; 定义域名:benet.com
option domain-name-servers 114.114.114.114; 定义dns地址:114.114.114.114
default-lease-time 600; 默认老化(过期)时间600秒
max-lease-time 7200; 最大过期时间7200秒
log-facility local7; 日志级别为7级;7级为信息(7最小)日志级别分为1-7,1是最高,7是最低
authoritative; 声明dhcp服务器为该子网的权威服务器
option space pxelinux; 自定义的dhcp选项空间为pxelinux;用于传递pxe启动所需的参数
option pxelinux.magic code 208 = string; 用于指定客户端的魔术字,用于识别pxe的启动请求
option pxelinux.configfile code 209 = text; 定义pxe引导配置文件的名称,客户端启动时会根据此文件加载内核和初始化参数
option pxelinux.pathprefix code 210 = text; 用于指定pxe配置文件的相对路径
option pxelinux.reboottime code 211 = unsigned integer 32; 设置tftp传输失败后等待重启的时间 0表示无线等待
option architecture-type code 93 = unsigned integer 16; 用于在dhcp协议中标识客户端的系统架构类型(传统是biso 现在的是uefi)
subnet 192.168.7.0 netmask 255.255.255.0 { 定义的网段 192.168.7.0 子网掩码: 255.255.255.0
range 192.168.7.100 192.168.7.200; dhcp分配地址的范围:192.168.7.100 192.168.7.200
option routers 192.168.7.2; 定义网关地址192.168.7.2
option broadcast-address 192.168.7.255; 定义广播地址192.168.7.255
class "pxeclients" { 定义dhcp客户端的类别,用于识别pxe启动的设备
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; 该条件通过检查dhcp选项的前九个字符是否为PXEClinet,网卡启动识别这个;精确识别pxe的客户端
next-server 192.168.7.10; tftp的服务器的IP为192.168.7.10
if option architecture-type = 00:07 { PXE客户端将通过此服务器下载引导文件(root 内核 影像)如果系统架构类型为00:07 对应的是UEFI 64架构,否则是BISO
filename "BOOTX64.EFI";
}
else {
filename "pxelinux.0";
}
}
}
4、重启dhcp
[root@server10 ~]# systemctl restart dhcpd 重启dhcp
5、安装syslinux(引导加载程序)
[root@server10 ~]# dnf -y install syslinux 安装syslinux(引导加载程序)
6、重启dhcp
[root@server10 ~]# systemctl restart dhcpd 重启dhcp
7、将pxelinux0复制到tftpboot目录下,pxelinux0引导文件引导vimlinux和intrd两个启动文件
[root@server10 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 将pxelinux0复制到tftpboot目录下,pxelinux0引导文件引导vimlinux和intrd两个启动文件
8、创建rocky-st9目录
[root@server10 ~]# mkdir -p /var/pxe/rocky-st9 创建rocky-st9目录
[root@server10 ~]#
[root@server10 ~]# [root@server10 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 将pxelinux0复制到tftpboot目录下,pxelinux0引导文件引导vimlinux和intrd两个启动文件
[root@server10 ~]#
[root@server10 ~]# mkdir -p /var/pxe/rocky-st9 创建rocky-st9目录
[root@server10 ~]#
[root@server10 ~]# mkdir /var/lib/tftpboot/rocky-st9 创建rocky-st9目录
9、系统光盘镜像挂载及开机挂载配置文件添加执行权限

[root@server10 ~]# mount -t iso9660 -o loop,ro /home/Rocky-9.5-x86_64-dvd.iso /var/pxe/rocky-st9/ 将系统光盘镜像挂载到Rocky-9的目录下
[root@server10 ~]#
[root@server10 ~]# chmod +x /etc/rc.d/rc.local 将开机挂载配置文件添加执行权限
10、将系统光盘的挂载命令,追加到开机启动的挂载文件中
[root@server10 ~]# echo "mount -t iso9660 -o loop,ro /home/Rocky-9.5-x86_64-dvd.iso /var/pxe/rocky-st9/" >> /etc/rc.d/rc.local 将系统光盘的挂载命令,追加到开机启动的挂载文件中
11、文件复制到rocky-st9目录下
[root@server10 ~]# cp /var/pxe/rocky-st9/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/rocky-st9/ 将vmlinuz,initrd.img文件复制到rocky-st9目录下,vmlinuz系统内核、initrd.img影像文件
12、切换至syslinux目录下
[root@server10 ~]# cd /usr/share/syslinux/
13、备份文件
[root@server10 syslinux]# cp {menu.c32,vesamenu.c32,ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/ menu.c32,vesamenu.c32实现图形化启动菜单文件,支持交互式操作; libutil.c32 pxe的引导加载程序,负责解析配置文件 libcom32.c32,libutil.c32提供底层系统调用文件
14、创建启动菜单的配置文件
[root@server10 syslinux]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@server10 syslinux]#
[root@server10 syslinux]# vim /var/lib/tftpboot/pxelinux.cfg/default 创建启动菜单的配置文件
default vesamenu.c32 默认菜单
prompt 1 第一个菜单下
timeout 60 超时时间60秒
display boot.msg 显示启动信息
label linux
menu label ^Install Rocky 9
menu default
kernel rocky-st9/vmlinuz
append initrd=rocky-st9/initrd.img ip=dhcp inst.repo=http://192.168.7.10/rocky-st9 标准安装模式;初始化指定镜像自动安装IP=dhcp
initrd=rocky-st9/initrd.img 指定镜像 ip=dhcpIP是dhcp获得 inst.repo=http://192.168.7.10/rocky-st9 指定安装源
label vesa
menu label install Rocky 9 ^basic video driver
kernel rocky-st9/vmlinuz rocky-st9/vmlinuz指定内核文件
append initrd=rocky-st9/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.7.10/rocky-st9 initrd=rocky-st9/initrd.img初始化镜像
label rescue
menu label ^Rescue installed system
kernel rocky-st9/vmlinuz
append initrd=rocky-st9/initrd.img rescue 系统救援模式
label local
menu label Boot from ^local drive
localboot 0xffff 从本地硬盘启动(0xffff直接跳转到本地引导)
15、安装阿帕奇
[root@server10 ~]# dnf -y install httpd 安装阿帕奇
16、编辑httpd下的pxe启动的配置文件
[root@server10 ~]# vim /etc/httpd/conf.d/pxeboot.conf 编辑httpd下的pxe启动的配置文件
Alias /rocky-st9 /var/pxe/rocky-st9 定义别名:/rocky-st9 全路径:/var/pxe/rocky-st9
<Directory /var/pxe/rocky-st9> 定义网站目录的位置
Options Indexes FollowSymLinks 显示目录的索引结构
Require ip 127.0.0.1 192.168.7.0/24 请求的IP为127.0.0.1 192.168.7.0网段
</Directory>
17、启动阿帕奇并设置开机启动
[root@server10 ~]# systemctl enable --now httpd 启动阿帕奇并设置开机启动
18、在防火墙里添加服务
[root@server10 ~]# firewall-cmd --add-service=http 在防火墙里添加http服务
success
[root@server10 ~]# firewall-cmd --runtime-to-permanent 在防火墙里永久添加运行时
success
[root@server10 ~]# firewall-cmd --list-all 查看防火墙里的所有规则
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client http ssh tftp
19、创建ks目录及创建应答文件
[root@server10 ~]# mkdir /var/www/html/ks 创建ks目录
[root@server10 ~]#
[root@server10 ~]# ls
anaconda-ks.cfg
[root@server10 ~]# cp anaconda-ks.cfg /var/www/html/ks/ 将系统的应答文件服务到ks目录下
[root@server10 ~]#
[root@server10 ~]# cd /var/www/html/ks/ 进入到ks目录下
[root@server10 ks]# ls
anaconda-ks.cfg
[root@server10 ks]# mv anaconda-ks.cfg rocky-st9-ks.cfg 将应答文件重命名
[root@server10 ks]# vim rocky-st9-ks.cfg 编辑应答文件
graphical 图形界面
repo --name="AppStream" --baseurl=http://192.168.7.10/rocky0-st9/AppStream 指向阿帕奇的系统软件包路径
url --url="http://192.168.7.10/rocky-st9" 指向阿帕奇的网址路径(把光驱去掉)
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8
# Network information
network --hostname=localhost.localdomain
%packages
@^server-product-environment
@development
@legacy-unix
@rpm-development-tools
@system-tools
%end
# Run the Setup Agent on first boot
firstboot --enable
# Generated using Blivet version 3.6.0
ignoredisk --only-use=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part biosboot --fstype="biosboot" --ondisk=sda --size=2
part /boot --fstype="xfs" --ondisk=sda --size=500
part pv.209 --fstype="lvmpv" --ondisk=sda --size=101897
volgroup rl --pesize=4096 pv.209
logvol / --fstype="xfs" --size=97797 --name=root --vgname=rl
logvol swap --fstype="swap" --size=4096 --name=swap --vgname=rl
timesource --ntp-disable
# System timezone
timezone Asia/Shanghai --utc
# Root password
rootpw --iscrypted --allow-ssh $6$QJze7NrwEwOqhP7d$zuzrz4tdFR.Yqm2wOilEhW3aa7LJpJpE0O.5BdDG2A8qo2Iyh6nxRlX33wVNEMXm0SHAJRmDul.cULVECz.Ev/
20、将开机应答文件添加644权限
[root@server10 ~]# chmod 644 /var/www/html/ks/rocky-st9-ks.cfg 将开机应答文件添加644权限 (易错点)6用户具有读和写的权限 组和其他用户具有读的权限)
21、编辑启动菜单配置文件
[root@server10 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 编辑启动菜单配置文件
default vesamenu.c32
prompt 1
timeout 60
display boot.msg
label linux
menu label ^Install Rocky 9
menu default
kernel rocky-st9/vmlinuz
append initrd=rocky-st9/initrd.img ip=dhcp inst.ks=http://192.168.7.10/ks/rocky-st9-ks.cfg 修改应答文件的全路径
22、重启阿帕奇
[root@server10 ~]# systemctl restart httpd 重启阿帕奇
23、创建新的linux虚拟机
新建虚拟机
23.1 虚拟机名称:Rocky9F
23.2 内存4G 100G硬盘
23.3 设置8网卡,DVD光盘不用挂载,一会儿联网自动挂载


24、网卡启动












