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