OpenNetworkBoot 配置指南
目录
简介
OpenNetworkBoot 是一个 OpenCore 引导入口协议驱动程序,它提供 PXE 和 HTTP 引导条目(如果底层固件支持),或者如果所需的网络启动驱动程序已使用 OpenCore 加载。使用 OpenCore 提供的其他网络启动驱动程序,如果需要,HTTP Boot 应该在大多数固件上可用,即使本身不支持。
请参阅 OpenCore 文档,了解有关此驱动程序可用的可选配置参数的信息。
注意:在本文件中,“HTTP boot”是指使用 OR URI 进行引导。配置证书的其他步骤(并仅在需要时锁定)将在下面介绍。
PXE 引导
在几乎所有固件上,PXE 引导的驱动程序都已经存在;添加到 OpenCore 驱动程序应该会产生 PXE 引导条目。OpenNetworkBoot.efi
注意:在某些固件(例如 HP)上,本机网络引导驱动程序未加载,如果系统直接引导到 OpenCore,并且有必要启动 OpenCore 以查看 PXE 和 HTTP 引导条目。(或者,应该可以加载 OpenCore,请参阅本文档末尾。
HTTP 引导
在最新的固件上,不需要或只需要一些额外的驱动程序用于 HTTP 引导,因为大多数必需的驱动程序已经存在于固件中。
添加后,如果未看到 HTTP 引导条目,则尝试仅添加驱动程序。如果这不会产生 network boot 条目,请尝试添加 HttpDxe
和 HttpUtilitiesDxe
。如果 URI 可以引导但不能引导,请尝试添加 TlsDxe.efi
。
如果上述步骤不起作用,请继续执行下一部分以确定需要哪些驱动程序。
注意事项
- 当使用 HTTPS 而不是 HTTP 时,一个或验证连接所需的更多证书必须在网络引导客户端上配置。
- 在某些固件中,现有驱动程序可能会产生无法正常工作的选项(例如,选中时出现空白屏幕,因为它们旨在与不存在的固件 UI 一起使用当 OpenCore 运行时)。如果是这样,为了获得有效的 HTTP Boot 选项,可能需要使用用于卸载现有驱动程序的 config 设置在加载 OpenCore 随附的驱动程序之前。
- 在某些固件中,现有的 HttpDxe 和 HttpBootDxe 驱动程序可能会锁定到 URI(即使机器没有用于 HTTP 引导的 BIOS UI;例如 Dell OptiPlex 3070)。这意味着,虽然 from OpenCore 可以使用本机,它只会从 URI 启动,从而提供 failure 消息。如果需要 URI,则此限制可以通过使用 config 设置在加载 OpenCore 提供的驱动程序之前卸载现有驱动程序来解决此问题。
- 在 HTTP 启动期间,“错误:无法从 HTTP 服务器检索 NBP 文件大小”是 'something went wrong' 的非常通用的错误消息。
- 在 HTTP 引导期间,出现初始错误,例如“找不到 IP 地址”或“服务器响应超时”,即使前面有上述消息,也可能意味着 DHCP 没有发布 IP 地址,或者未找到通过 DHCP 请求的其他 NBP(即引导文件)信息。
识别缺失的网络启动驱动程序
UEFI Shell 中的命令(例如随 OpenCore)可用于确定网络缺少哪些驱动程序靴子。dh -p LoadFile
显示可用的网络引导条目。使用设备的句柄以 IPv4 或 IPv6 地址结尾的路径应指示可用的 PXE 引导选项。设备路径结尾的句柄应指示可用的 HTTP 引导选项 Uri(...)。
配置网络引导服务器
在标准 PXE 和 HTTP 引导中,网络的正常 DHCP 服务器响应客户端设备请求 IP 地址,但请求单独的 DHCP 帮助程序服务(通常在与 DHCP 服务器不同的计算机上运行)响应设备 的 DHCP 扩展请求,以了解要执行哪个网络启动程序(NBP)负荷。
PXE 引导配置
基本的 PXE 引导配置如下:
# Disable DNS Server
port=0
# Run as network boot DHCP proxy
dhcp-range=192.168.10.0,proxy
# Identify requested arch
dhcp-match=set:arch_x64,option:client-arch,7
dhcp-match=set:arch_x64,option:client-arch,9
dhcp-match=set:arch_ia32,option:client-arch,6
# Specify one or more boot options per architecture
pxe-service=tag:arch_x64,x86-64_EFI,"Open Shell",OpenShell.efi
pxe-service=tag:arch_x64,x86-64_EFI,"Boot Helper",BootHelper.efi
# Enable TFTP support
enable-tftp
tftp-root=/home/mjsbeaton/tftp
HTTP 引导配置
基本的 HTTP 引导配置如下:
# Disable DNS Server
port=0
# Run as PXE Boot DHCP proxy for specified network (use default /24 network size)
dhcp-range=192.168.2.0,proxy
# Trigger PXE Boot support on HTTP Boot client request
dhcp-pxe-vendor=HTTPClient
# Set triggering tag if correct arch is present in option 60
dhcp-match=set:arch_x64,option:client-arch,16
# Make PXE Boot support believe it has something to send...
pxe-service=tag:arch_x64,x86-64_EFI,"Network Boot"
# Specify bootfile-name via PXE Boot setting
dhcp-boot=tag:arch_x64,https://michaels-air.lan:8443/images/OpenShell.efi
# Force required vendor class in response, even if not requested
dhcp-option-force=tag:arch_x64,option:vendor-class,HTTPClient
OVMF 网络引导支持
OVMF 可以使用以下标志进行编译,以获得完整的网络引导支持:
-D NETWORK_HTTP_BOOT_ENABLE -D NETWORK_TLS_ENABLE -D NETWORK_IP6_ENABLE
自 2024 年 5 月对网络启动堆栈进行安全更新以来,Random Number Generator (RNG) 协议支持是必需的。如果运行 OVMF 使用 Ivy Bridge 或更高版本的 CPU,则包含在 OVMF 将提供所需的支持。对于 Ivy Bridge 以下的 CPU 必须提供 qemu 选项,以便 OVMF 中也存在的驱动程序可以提供所需的 RNG 支持。
网络启动堆栈
OpenCore 提供的以下驱动程序构成了网络引导堆栈。请按照开始时给出的程序进行操作用于决定要添加的驱动程序的文档。
内部驱动结构图
先决条件
各种网络启动驱动程序都依赖于 HiiDatabase 的存在。
EDK 2 网络堆栈的最新(2024 年 5 月)安全更新意味着各种驱动程序也依赖于 RNG 和 Hash2 协议。
可以在 UEFI Shell 中使用以下方法检查这些协议:
dh -p HIIDatabase
dh -p Rng
dh -p Hash2
如果不存在,则应在之前加载相应的驱动程序网络引导堆栈。
RAM 磁盘
如果固件中尚不存在,则为 required,并且用户希望以加载 .iso
或 .img
文件。
可以在 UEFI Shell 中使用 dh -p RamDisk
进行检查。