PXE 启动中的启动文件是什么?

PXE 启动中的启动文件是什么?

因此,我正在学习通过网络进行 PXE 启动的基本原理(或确切的机制),我的理解是:

  1. 客户端通过广播带有 2 个关键选项(66 和 67 用于请求 TFTP 服务器 IP 地址和启动文件名)和其他选项的 DISCOVER 消息来联系 DHCP 服务器。

  2. DHCP 获取 DISCOVER 消息并向客户端发送 OFFER 消息,其中包含客户端所需的一些参数。

  3. 客户端从 TFTP 服务器请求引导文件(或启动文件?)。

那么,什么是引导文件(或启动文件?),以及客户端机器如何使用它?

答案1

引导文件是可执行代码。PXE 使用 TFTP 协议将引导文件下载到内存后,将执行下载的二进制文件,然后继续引导过程,因为它可以使用更复杂的协议下载更复杂的代码以供执行。

答案2

该格式依赖于平台,但通常与您在 MBR 或 EFI 系统分区中找到的常规引导加载程序非常相似。

  • 对于传统 PC BIOS,规格如下:

    预启动执行环境 (PXE) 规范 2.1(英特尔,1999 年)

    格式规定为第 4.5.4 节– 与本地 BIOS 模式引导加载程序类似,它们是以 16 位实模式运行的原始可执行文件:

    网络引导程序 (NBP) 是二进制映像,BC 运行时会将其下载到 0:7C00h。BC 运行时会在将指向 !PXE 结构的 32 位远指针推送到堆栈上之后,对 0:7C00h 进行远调用。

  • 对于运行 UEFI 固件的 PC,PXE 是主要 UEFI 规范的一部分:

    统一可扩展固件接口 (UEFI) 规范 2.8

    正如所提到的13.3.4.5节,UEFI 系统的启动映像是一个常规的.efi可执行文件,与本地引导加载程序相同。

    也可以看看这一页了解更多信息。

  • 对于其他设备和平台(例如支持网络启动的路由器),则由制造商提供。(例如,Mikrotik 有一个专用的网络安装用于为其自身设备托管 PXE 的工具。

也可以看看这一页有关为一些 Linux 发行版配置 PXE 启动(双 UEFI+BIOS)的示例,通常使用pxelinux作为加载器。

答案3

来自 PXE(预启动执行环境)维基百科页面,客户端 PC 从 DHCP 服务器获取 PXE 服务器 IP 后,下一步是:

客户端接下来使用 TFTP 将 NBP 传输到其自己的随机存取存储器 (RAM) 中,可能对其进行验证(即 UEFI 安全启动),最后从中启动。NBP 只是启动链过程中的第一个环节,它们通常通过 TFTP 请求一小组补充文件,以便运行极简的 OS 执行程序(即 WindowsPE 或基本的 Linux 内核 + initrd)。小型 OS 执行程序加载其自己的网络驱动程序和 TCP/IP 堆栈。此时,启动或安装完整 OS 所需的其余指令不是通过 TFTP 提供的,而是使用强大的传输协议(例如 HTTP、CIFS 或 NFS)。

相关内容