学习了一下 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 的启动过程
- 客户端(PC 网卡)向网络广播包含了 PXE 标签(表示要从网络启动,区分于一般的DHCP请求)的扩展 DHCP 包
- DHCP服务捕获到这些包,向客户端发送 IP 地址信息
- 客户端再向 DHCP 服务器请求 TFTP 服务器地址
- DHCP 服务器返回 TFTP 服务器地址
- 客户端再向 DHCP 服务器请求 TFTP 服务器中启动镜像的路径(包含文件名称)
- DHCP 服务器返回启动镜像的路径
- 客户端连接 TFTP 服务器,请求启动镜像
- 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