PXE
预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE服务优点:
规模化:同时装配多台服务器,无需每一台单独安装操作系统;
自动化:实现服务器的自动安装及自动配置各种服务;
远程实现:不需要光盘、U盘等安装介质,方便快捷的同时又可以保障服务器安全。
配置基础需求
服务器要求:
-
服务器需要连接到一个本地网络(局域网)上,以便客户机能够通过网络访问到PXE服务器。
-
DHCP服务器:需要在服务器上安装和配置DHCP服务器,以便为PXE客户机分配IP地址和引导服务器的地址。
-
TFTP服务器:安装和配置TFTP服务器,以便从服务器向客户机传输引导文件和操作系统镜像。常用的TFTP服务器软件包括tftpd-hpa、tftp-hpa等。需要为每个操作系统和引导选项配置相应的引导文件和镜像文件。
客户机要求:
-
硬件要求:客户机需要支持PXE引导。大多数现代计算机都支持PXE引导,但某些较老的计算机可能不支持。
-
网络接口:客户机需要通过以太网接口与PXE服务器进行通信。确保每个客户机都连接到PXE服务器所在的相同网络上,并且可以通过网络接收DHCP分配的IP地址和PXE引导文件。
PXE 所需四大文件:
-
pxelinux.0:引导程序。(来自syslinux程序)
-
default:引导程序的配置文件。(需要手写,可参考光盘 isolinux 目录下的 isolinux.cfg 文件)
-
vmlinuz:内核文件。(从光盘中获取,位于 isolinux 目录下)
-
initrd.img: 系统启动镜像文件。(从光盘中获取,位于 isolinux 目录下)
PXE 原理
1.网卡需要查找相关的dhcp服务器(获取地址时间)
2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
3.网卡使用tftp客户端吧引导程序加载到内存中来
4.bios执行引导程序
5.引导程序会去TFTP去查找配置文件
6.根据配置文件去引导安装系统
7.系统安装过程
搭建过程
安装相关软件
yum install tftp-server vsftpd syslinux dhcp -y
拷贝DHCP配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
编辑DHCP配置文件
vim /etc/dhcp/dhcpd.conf
subnet 服务端IP网段 netmask 255.255.255.0 {
range 192.168.84.20 192.168.84.50; 分配的的地址池
option routers 服务端IP网关;
next-server 服务端IP地址;
filename "pxelinux.0";
}
编辑FTP配置文件
vim /etc/xinetd.d/tftp
disable = no
拷贝相关配置文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
挂载
cd /var/ftp/
mkdir centos7
mount /dev/sr0 /var/ftp/centos7/
拷贝相关配置文件
cd ./centos7/images/pxeboot/
cp initrd.img vmlinuz /var/lib/tftpboot/
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg/
编辑配置文件
vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://服务端IP地址/centos7
label text
kernel vmlinuz
append text initrd =initrd.img method=ftp://服务端IP地址/centos7
label rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://服务端IP地址/centos7
启动相关服务
setenforce 0
systemctl stop firewalld.service
systemctl start dhcpd
systemctl start tftp
systemctl start vsftpd