PXE介绍
预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE过程
- 开机 :计算机开机后,BIOS(基本输入输出系统)开始运行
- BIOS 会检查计算机的硬件设备,包括网络接口卡(NIC)
- 网络请求 :NIC 被初始化后,会发送一个 DHCP(动态主机配置协议)发现请求
- 这个请求的目的是获取一个 IP 地址以及其他网络配置信息,例如子网掩码、网关和 DNS 服务器的地址
- DHCP 响应 :网络中的 DHCP 服务器接收到请求后,会为计算机分配一个可用的 IP 地址,并提供其他相关的网络配置信息
- 此外,DHCP 服务器还会向计算机提供有关 PXE 服务器的位置信息,例如 PXE 服务器的 IP 地址和引导文件名
- TFTP 连接 :计算机使用从 DHCP 服务器获取到的 PXE 服务器信息,通过 TFTP(简单文件传输协议)与 PXE 服务器建立连接
- 请求下载引导文件,这个文件可能包含启动操作系统所需的内核、初始化脚本等
- 引导文件下载:PXE 服务器响应请求,将引导文件传输给计算机
- 启动操作系统:计算机接收到引导文件后,开始加载并执行其中的指令,从而启动操作系统
- 后续配置:在操作系统启动过程中,可能会根据预定义的配置脚本进行进一步的设置和配置,例如安装特定的应用程序、配置网络设置等
PXE服务器
配置环境
虚拟机版本
bash
hostnamectl
Operating System: Red Hat Enterprise Linux Server 7.9
启用图形界面
bash
yum group install "Server with GUI" -y
systemctl set-default graphical.target
reboot
关闭SELinux
bash
grubby --update-kernel ALL--args selinux=0
关闭防火墙
bash
systemctl stop firewalld
systemctl mask firewalld
挂载系统镜像,配置好本地源仓库
bash
mkdir /rhel7
mount /dev/cdrom /rhel7
保证网络通畅
配置DHCP分配IP给客户机
bash
# 安装DHCP服务
yum install dhcp -y
# 复制配置文件
\cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# 修改配置文件
vim /etc/dhcp/dhcpd.conf
# 将第27,28行进行注释
# 将第36行后的全部删掉
7 option domain-name "pxeauto.org"; # 客户端获取的域名
8 option domain-name-servers 114.114.114.114; # 客户端获取的DNS
32 subnet 172.25.254.0 netmask 255.255.255.0 { # 网络位 掩码
33 range 172.25.254.30 172.25.254.40; # 地址池
34 option routers 172.25.254.2; # 网关
35 next-server 172.25.254.100; # TFTP服务器的IP
36 filename "pxelinux.0"; # 获取的文件
# 重启服务
systemctl enable --now dhcpd
TFTP主机
bash
# 安装TFTP(共享文件)
yum install tftp-server.x86_64 -y
# 启动TFTP服务
systemctl enable --now tftp
# 创建目录
mkdir -p /var/lib/tftpboot/pxelinux.cfg
# 复制、创建文件
cp /rhel7/isolinux/* /var/lib/tftpboot
cp /rhel7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 编写/var/lib/tftpboot/pxelinux.cfg/default文件
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.9
# 启动时默认选择
63 menu default
64 kernel vmlinuz
# 从HTTP主机上获取系统安装源和设置配置文件
65 append initrd=initrd.img repo=http://172.25.254.100/rhel7 ks=http://172.25.254.100/ks.cfg quiet
66
67 label check
68 menu label Test this ^media & install Red Hat Enterprise Linux 7.9
69 kernel vmlinuz
70 append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.9\x20Server.x86_64 rd.live.check quiet
# 启动TFTP服务
systemctl enable --now tftp
利用kickstart生成ks.cfg文件
bash
# 安装KickStart
yum install system-config-kickstart -y
# 图形化启动KickStart
system-config-kickstart
给root密码加密:是否在创建出的文件(ks.cfg)中加密ROOT密码
HTTP服务器:/var/lib/tftpboot/pxelinux.cfg/default中65行的服务器
HTTP目录:/var/lib/tftpboot/pxelinux.cfg/default中65行的repo
根分区选择 使用磁盘全部未用空间
根据不同系统对网卡的命名,填写对应的网卡名
根据个人需求选择是否安装图形界面
由于软件包选择不能从kick start中进行选择,需要从生成的ks.cfg文件中去添加
设置安装后脚本,观察是否遵循脚本安装,用于验证
快捷键:CTRL + S
bash
# 查看是否保存成功,有内容则成功
tail /root/ks.cfg
# 修改ks.cfg
vim /root/ks.cfg
# 第40行后插入
%packages
@base
httpd
%end
# 检测语法是否有误
ksvalidator ks.cfg
搭建apache共享镜像
bash
# 安装apache
yum install httpd-2.4.6-95.el7.x86_64 -y
# 创建镜像链接
ln -s /rhel7/ /var/www/html/
# 移动文件
cp /root/ks.cfg /var/www/html/
# 启动服务
systemctl enable --now httpd
# 检查是否能访问到ks.cfg和镜像资源
安装PxeLinux
bash
# 安装PxeLinux
yum install syslinux.x86_64 -y
# 移动文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# 通过/usr/share/doc/syslinux-4.05/pxelinux.txt帮助文档
# 可知PxeLinux将引导客户机访问var/lib/tftpboot/pxelinux.cfg/default文件
客户机
实现无盘安装RHEL7.9
CTRL + N 新建虚拟机,以下设置需要注意,其他设置随意
关闭加速 3D 图形
移除光盘,模拟无盘
点击编辑,点击虚拟网络编辑器,点击更改设置
选中VMnet8,取消勾选 本地 DHCP 服务,然后点击确定
点击绿色旁的倒三角,选择打开电源时进入固件通过左右键移动到Boot,通过Shift + = 键 选择 网络启动
通过左右键,选中Exit 两次回车,进行安装系统,其中各个服务器不能关机
选中第一个,回车开始进行安装
进入此界面,即认为开始自动安装
期间,会在这里卡很久
等到虚拟机再次进入页面,即可将虚拟机关机
点击绿色旁的倒三角,选择 打开电源时进入固件
通过左右键移动到Boot,通过Shift + = 键 选择 硬盘启动
通过左右键,选中Exit 两次回车,进行 安装系统
等待一段时间,即可安装成功
安装后脚本同样执行成功
bash
mkdir -p /rhel7
echo mount /dev/cdrom /rhel7 >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local