UEFI HTTP 链式加载¶
UEFI 规范 2.5 版引入了 UEFI HTTP Boot 特性。你可以使用基本的 UEFI HTTP Boot 客户端从 HTTP 服务器链式加载 iPXE,从而无需在你的启动基础设施中使用单独的 TFTP 服务器。
简单的 UEFI HTTP Boot 客户端会下载并启动 iPXE。然后你可以使用 iPXE 的任何更高级的特性,例如 HTTPS、Digest 身份验证、POST 请求、脚本、菜单、可定制的代码签名等,来下载并启动你的操作系统。
UEFI HTTP 链式加载提供了一种在未把 iPXE 作为 UEFI 固件一部分提供的系统上加载 iPXE 的方法。如果你的系统已经把 iPXE 作为 UEFI 固件的一部分提供,那么你不需要使用 UEFI HTTP 链式加载。
配置 DHCP 服务器¶

你必须配置你的 DHCP 服务器,使其检查 UEFI HTTP Boot 客户端,提供字符串 HTTPClient 作为厂商类标识符,并提供 HTTP URI 作为启动文件名。如果你使用 ISC dhcpd,则需要编辑 /etc/dhcpd.conf,使其包含:
if option client-architecture = encode-int ( 16, 16 ) {
option vendor-class-identifier "HTTPClient";
filename "http://my.web.server/ipxe.efi";
} else {
filename "http://my.web.server/script.ipxe";
}
其中 my.web.server 是你的 Web 服务器的 DNS 名称(或 IP 地址)。
配置 Web 服务器¶
把你的 iPXE 二进制文件(例如 ipxe.efi)放在你的 Web 服务器上,并附上一个包含启动操作系统所需命令的 iPXE 脚本。例如,要启动由 Linux 内核和初始内存盘组成的系统,你的脚本可以包含:
#!ipxe
kernel http://my.web.server/boot/vmlinuz initrd=initrd.img
initrd http://my.web.server/boot/initrd.img
boot
启动¶
启动你的 UEFI 系统并选择 UEFI HTTP Boot。你应该会看到它通过 HTTP 下载 ipxe.efi 并开始运行 iPXE:
Booting from EFI Network
Station IP address is 192.168.0.10
URI: http://squirrel/images/ipxe.efi
iPXE initialising devices...ok
iPXE 1.0.0+ (33d4b) -- Open Source Network Boot Firmware -- http://ipxe.org
Features: DNS HTTP TFTP EFI Menu
net0: 52:54:00:12:34:56 using 82540em on PCI00:03.0 (Ethernet) [open]
[Link:up, TX:0 TXE:0 RX:0 RXE:0]
Configuring (net0 52:54:00:12:34:56)... ok
恭喜你成功使用 UEFI HTTP 链式加载!

高级主题¶
构建 OVMF¶
你可以构建一个支持 UEFI HTTP Boot 的 OVMF 镜像(用于 qemu 和 kvm 等虚拟机)。你需要编辑构建描述文件 OvmfPkg/OvmfPkgX64.dsc 以启用该选项:
DEFINE HTTP_BOOT_ENABLE = TRUE
对于 OVMF(或任何其他从上游 EDK2 构建的固件),UEFI HTTP Boot 选项将在启动选择菜单中显示为 EFI Network 1。