跳到主要内容

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。

如果上述步骤不起作用,请继续执行下一部分以确定需要哪些驱动程序。

注意事项​

  1. 当使用 HTTPS 而不是 HTTP 时,一个或验证连接所需的更多证书必须在网络引导客户端上配置。
  2. 在某些固件中,现有驱动程序可能会产生无法正常工作的选项(例如,选中时出现空白屏幕,因为它们旨在与不存在的固件 UI 一起使用当 OpenCore 运行时)。如果是这样,为了获得有效的 HTTP Boot 选项,可能需要使用用于卸载现有驱动程序的 config 设置在加载 OpenCore 随附的驱动程序之前。
  3. 在某些固件中,现有的 HttpDxe 和 HttpBootDxe 驱动程序可能会锁定到 URI(即使机器没有用于 HTTP 引导的 BIOS UI;例如 Dell OptiPlex 3070)。这意味着,虽然 from OpenCore 可以使用本机,它只会从 URI 启动,从而提供 failure 消息。如果需要 URI,则此限制可以通过使用 config 设置在加载 OpenCore 提供的驱动程序之前卸载现有驱动程序来解决此问题。
  4. 在 HTTP 启动期间,“错误:无法从 HTTP 服务器检索 NBP 文件大小”是 'something went wrong' 的非常通用的错误消息。
  5. 在 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 进行检查。

网络启动基础​

  • DpcDxe
  • SnpDxe
  • MnpDxe
  • TcpDxe
  • IPv4 协议
    • ArpDxe
    • Dhcp4Dxe
    • Ip4Dxe
    • Udp4Dxe
  • IPv6 协议
    • Dhcp6Dxe
    • Ip6Dxe
    • Udp6Dxe

HTTP 引导​

  • DnsDxe
  • HttpDxe
  • HttpUtilitiesDxe
  • HttpBootDxe

HTTP Boot 的 HTTPS (TLS) 支持​

  • TlsDxe

PXE 引导​

  • UefiPxeBcDxe
  • Mtftp4Dxe (IPv4 only)
  • Mtftp6Dxe (IPv6 only)

固件和选项 ROM​

在许多情况下,网卡固件已经存在,但本节介绍可能不存在的情况。

默认情况下,OVMF 的 EDK II 和 AUDK 版本都包含,即使使用 NETWORK_ENABLE=0。这大致相当于说 OVMF 存在网卡固件,即使 EDK II 网络堆栈也是如此不包括在内。因此,请注意,当使用 OVMF 的缩减或自定义版本时,此驱动程序必须存在于 order 才能使网络堆栈的其余部分正常工作。

大多数 (U)EFI 计算机都包含 PXE 启动,它依赖于计算机的网卡固件(例如选项 ROM)存在。但是,如果使用非常旧的(例如 EFI 之前)的机器,或者缩减固件,则可能需要手动加载网卡的(U)EFI 固件才能进行其余操作才能工作。这可以使用 OpenCore 的部分加载。驱动程序应为从制造商的网站或在线其他地方找到的;例如: