学习了一下 PXE,有时间搭建一个 PXE 服务器玩玩,以下仅为我的理解

关于 PXE

PXE 是一种系统引导方式,由 Intel 提出(文末有 PDF 文档下载)。PXE 的客户端已经内置在网卡中,服务端需要搭建(需要保证搭建网络环境安全,PXE 服务是不安全的),一般用于企业大量机器的系统安装

BIOS 启动选项中经常见到的 通过网络 (IPv4、IPv6) 启动就是 PXE 服务

PXE 服务端的搭建需要 DHCP(或 proxyDHCP,详见后文) 和 TFTP 服务,其中

  • DHCP 服务用来分配 IP 地址并发放 PXE 的 TFTP 地址等信息
  • TFTP 服务向客户端传输文件(引导文件、安装文件等)

也就是说在 PXE 中,一般启动方式中的从存储介质(U盘、硬盘)读取文件改为从远程服务器下载——省去了装系统时一个个拔插U盘的动作,在给大量机器装系统的场景下更高效

PXE 的启动过程

  1. 客户端(PC 网卡)向网络广播包含了 PXE 标签(表示要从网络启动,区分于一般的DHCP请求)的扩展 DHCP 包
  2. DHCP服务捕获到这些包,向客户端发送 IP 地址信息
  3. 客户端再向 DHCP 服务器请求 TFTP 服务器地址
  4. DHCP 服务器返回 TFTP 服务器地址
  5. 客户端再向 DHCP 服务器请求 TFTP 服务器中启动镜像的路径(包含文件名称)
  6. DHCP 服务器返回启动镜像的路径
  7. 客户端连接 TFTP 服务器,请求启动镜像
  8. TFTP 服务器发送启动镜像,客户端将启动镜像下载到内存中

之后的启动过程与 PXE 无关,可见 PXE 只负责系统引导部分

关于 proxyDHCP

proxyDHCP 是为非 PXE 的 DHCP 环境提供 PXE 服务的软件

非八股文版本:上文提到的 DHCP 服务默认包含了 PXE,而在家庭网络中,DHCP服务一般内置在路由器(或网络运营商送的带路由功能的光猫)中,这些设备的 DHCP 服务一般是不支持 PXE 的,这时就可以在网络中专门用一个电脑搭建 PXE 服务,来接管网络中的 PXE 请求

proxyDHCP 的启动过程:

与上文相同,只是拆分了 IP 分配和 TFTP 信息获取——DHCP 负责 IP 分配,proxyDHCP 负责返回 TFTP 信息

文档下载

Intel 的 PXE PDF 文档:pxe spec