一、PXE简介
1. PXE网络装机的概念
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。基于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
2. PXE装机流程
(1):PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
(2):DHCP服务器收到客户端的请求,验证是否来至自合法的PXE Client的请求,验证通过后它将给客户端一个响应,这个响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
(3):客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、vmlinuz、pxelinux.cfg/default、initrd.img等文件。
(4):当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
(5):客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
(6):客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。
3. Kickstart简介
kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置。
二、安装PXE服务端需要的各种服务。
本文档以Centos7为例,搭建PXE服务器。(服务器IP 10.10.121.30)
- 配置网络yum源或本地yum源,安装下列服务
- 包括FTP服务,DHCP服务,TFTP服务,XINETD守护进程,以及SYSLINUX
- 命令如下:
yum -y install vsftpd
yum -y install tftp-server
yum -y install xinetd
yum install dhcp
yum -y install syslinux
三、配置相关服务
1. 关闭系统的防火墙
systemctl stop firewalld
setenforce 0
systemctl disable firewalld
2. 挂载需要安装的镜像
mount -o loop BlackCube6.6.6_CentOS7.9_AMD_210326.iso /mnt/centos/
3. 创建ftp共享目录,并将文件拷贝到ftp共享目录
mkdir /var/ftp/black
cp -rf /mnt/centos/* /var/ftp/black
4. 启动ftp服务,网页验证访问
systemctl start vsftpd
访问路径:ftp://10.10.121.30/black/
5. 配置tftp服务守护进程
vi /etc/xinetd.d/tftp
修改disable为no
启动服务: systemctl start xinetd
查看69端口是否被xinetd启动: netstat -antlupe | grep 69
6. 拷贝系统引导文件至tftp共享目录
引导文件介绍:
- pxelinux.0:pxe引导程序,由syslinux包提供。
- pxelinux.cfg/default:系统启动配置文件,指定加载内核及inird镜像。
- vmlinuz:linux内核镜像。
- initrd.ing:初始化镜像文件,存放了引导时的一些驱动程序
操作步骤:
- \cp -rf /var/ftp/black/isolinux/* /var/lib/tftpboot/
- mkdir /var/lib/tftpboot/pxelinux.cfg
- cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
7. 配置dhcp服务
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
修改dhcpd.conf
启动DHCP服务:systemctl start dhcpd
四、PXE无人值守配置
1. 修改系统启动配置文件
/var/lib/tftpboot/pxelinux.cfg/default修改系统加载盘为ftp服务器,加入无人值守ks启动文件路径。
2. 无人值守配置文件ks.cfg
修改package加载的安装选项,定制安装的系统rpm包。
加入%post --nochroot 和 %post ,定制安装依赖unary。
五、PXE无人值守安装。
1. 无人值守安装条件
- 安装的客户端需要和服务器在同一网络内。
- 客户端启动项需要以网络方式启动
2. 以本地虚拟机为例
1. 修改虚拟机网络配置,自定义网卡,去除dhcp服务。
2. 配置PXE服务器的网络适配器,选择上面配置的自定义网卡
3. 新建虚拟机,不指定光盘位置。
4. 新建虚拟机,网络适配器的配置保持和PXE服务器一致
5. 启动虚拟机,自动从dhcp获取ip,通过ftp网络安装系统。
FAQ:
- dhcp client无法连接,可能是地址池容量满了。
清空服务端地址池: echo “” > /var/lib/dhcpd/dhcpd.leases
- dhcp client无法连接,可能是服务端与客户端网络不通。
- dhcp及ftp无法连接,服务端防火墙未关闭。