我希望通过 RedHat Satellite Server 的 PXE 启动将配置与 Windows 部署服务器进行集成。
为此,我希望 WDS 的 (非 UEFI) syslinux 引导加载程序加载另一个 EFI 引导加载程序 (grub2/grubx64.efi),而不是 Linux 内核。这应该通过 TFTP 加载,因为要配置的系统尚未在硬盘上安装任何引导加载程序。
那可能吗?
背景:
在理想的 Satellite 专用设置中,Satellite Server 希望能够控制 DHCP 来设置自己的下一个服务器和文件选项。然后,它通过 TFTP 加载其中一个 PXE 引导加载程序,进而启动内核。Satellite Server 将操纵 DHCP 服务器来设置正确的引导加载程序(在我们的例子中,始终是相同的 grub2/grubx64.efi),并设置 grub 将使用的正确内核参数。
我们有一个混合环境,我们的 DHCP 将始终指向 syslinux 引导加载程序。我可以向 syslinux 菜单添加一些内容,但无法替换 syslinux。
最简单的解决方案是在 syslinux 中复制内核命令行,但这不起作用,因为每个主机的内核命令行都不同(它包括 MAC 地址)。
因此,我需要一种方法来让 syslinux 加载 grub2/grubx64.efi 加载器,然后启动其余过程。
答案1
non-UEFI XXX -> UEFI YYY
这不是有效的链式加载路径。
非 UEFI XXX 在传统模式下启动,那么它将永远无法链式加载到 UEFI YYY 组件,因为该组件需要 UEFI 环境,而由于您启动了传统模式,因此缺少该环境。
编辑1:
如今的 PC 可以启动 2 种不同的预启动环境:Legacy(经典的旧 BIOS 环境)或较新的 UEFI。您可以通过启动 BIOS/固件环境并选择所需的环境来配置 PC 启动的环境。
当 PC 也配置为从网络启动时,它将使用 DORA 序列的 DHCP 发现数据包来告知 PXE 服务器正在启动哪个预启动环境,然后 DHCP 服务器(启用 PXE)将回答提供正确的 NBP(网络启动程序),该 NBP 必须是 BIOS 或 UEFI,具体取决于先前声明的环境。PXE 链式加载过程多次涉及加载启动管理器,然后加载启动加载器,这两个组件必须是 Legacy 或 UEFI,但您不能将它们混淆。