PXE (Preboot Execution Environment) 是一种允许计算机通过网络接口(网卡)启动的行业标准协议。它绕过了本地存储介质(如硬盘、USB 或光驱),使系统能够通过网络加载操作系统或引导程序。
核心组件:
- 客户端(PXE Client):主板 BIOS/UEFI 固件必须支持 PXE,且网卡需具备引导功能。
- DHCP 服务器:负责分配 IP 及告知客户端去哪里找引导程序(
next-server和filename)。 - TFTP/HTTP 服务器:负责存储引导程序、内核镜像和配置文件。虽然传统 PXE 依赖 TFTP(传输速度慢,无重传机制),但现代部署多倾向于使用 iPXE,它支持 HTTP/HTTPS/iSCSI,速度更快且具备脚本编程能力。
- 引导加载程序 (NBP):如 syslinux 或 ipxe.efi,它是整个链路的桥梁。
PXE工作流程

- DHCP握手
- 客户端的网卡(支持PXE的BIOS/UEFI固件)发出DHCP Discover广播包。
- DHCP服务器响应该请求,并在返回的IP信息中包含PXE特有的Option 66(TFTP Server地址)和Option 67(引导文件名,如
pxelinux.0或ipxe.efi)
- 引导程序下载
- 客户端根据DHCP提供的信息,通过TFTP或HTTP协议连接到服务器,下载引导程序(NBP - Network Boot Program)。
- 配置文件加载
- 引导程序启动后,会向服务器请求配置文件(例如
pxelinux.cfg/default),该文件定义了操作系统内核(Kernel)和初始文件系统(Initrd)的位置。
- 引导程序启动后,会向服务器请求配置文件(例如
- 内核与安装程序加载
- 客户端通过TFTP/HTTP下载内核镜像和根文件系统,加载到内存中并执行。
- 操作系统安装/引导
- 系统进入安装界面或加载远程挂载的根文件系统。
UEFI与Legacy BIOS的差异
PXE 引导文件名在 UEFI 和 Legacy 环境下完全不同。你需要在 DHCP 服务器上根据客户端架构(Option 93)进行判断,并返回对应的引导文件(如
ipxe.efivspxelinux.0)。 现代服务器环境几乎全部迁移到了 UEFI 引导。
Kickstart
Kickstart 是红帽(Red Hat)系列发行版(如 RHEL, CentOS, Rocky Linux, Fedora)引入的一种自动化安装方式。
它本质上是一个名为 ks.cfg 的文本文件。在这个文件中,你可以预先定义好原本需要在安装界面手动点击的所有选项,例如:
- 语言和键盘布局
- 时区设置
- 磁盘分区(LVM、RAID 或普通分区)
- 根密码(Root Password)
- 要安装的软件包组(@Core, @Development Tools)
- Post-install 脚本:安装完成后自动执行的 Shell 脚本(比如配置静态 IP、修改 SSH 端口、安装监控 Agent 等)。
PXE + Kickstart 的协作流程
- 引导阶段 (PXE):网卡通过 DHCP 获取 IP,并从 TFTP 下载引导程序(如
pxelinux.0)。 - 获取指令 (Config):引导程序读取配置文件。在配置文件的内核参数行(
append行),我们会手动添加一个指向 Kickstart 文件的参数,例如:inst.ks=http://192.168.1.10/ks.cfg - 获取脚本 (Kickstart):安装程序(Anaconda)启动后,会根据上述 URL 通过 HTTP/HTTPS 下载
ks.cfg文件。 - 自动执行:安装程序不再弹出任何图形界面,而是直接按照
ks.cfg里的指令划分布局、安装系统。 - 收尾阶段:执行 Kickstart 中的
%post部分,完成最后的系统加固或环境初始化。
自动化趋势
- iPXE:它是目前 PXE 的最佳替代方案。支持脚本化操作,可以将复杂的部署逻辑集成在脚本中,而不必受限于传统的静态菜单。
- Netboot.xyz:一个基于 iPXE 的开源项目,允许你通过网络引导并安装各种 Linux 发行版及工具,是学习和构建 PXE 环境的优秀参考。
- MaaS (Metal as a Service):如果需要管理大规模裸机,Canonical 的 MaaS 是处理 PXE 自动化生命周期的工业级工具。