Grub PXE 启动 - 不寻找基于 MAC/IP 的配置

Grub PXE 启动 - 不寻找基于 MAC/IP 的配置

我正在通过 PXE 启动 Ubuntu 22.04 安装。对于 grub 映像,我使用的是这里

根据文档

GRUB will search for its configuration files in order using the following rules where the appended value corresponds to a value on the client machine.

‘(FWPATH)’/grub.cfg-‘(UUID OF MACHINE)’
‘(FWPATH)’/grub.cfg-‘(MAC ADDRESS OF NIC)’
‘(FWPATH)’/grub.cfg-‘(IPv4 OR IPv6 ADDRESS)’
‘(FWPATH)’/grub.cfg

但是,除了以下内容之外,没有其他任何 TFTP 请求grub.cfg

in.tftpd[7037]: RRQ from 10.128.128.13 filename boot/tree/EFI/boot/bootx64.efi
in.tftpd[7038]: RRQ from 10.128.128.13 filename boot/tree/EFI/boot/grubx64.efi
in.tftpd[7040]: RRQ from 10.128.128.13 filename /grub/x86_64-efi/command.lst
in.tftpd[7041]: RRQ from 10.128.128.13 filename /grub/x86_64-efi/fs.lst
in.tftpd[7042]: RRQ from 10.128.128.13 filename /grub/x86_64-efi/crypto.lst
in.tftpd[7043]: RRQ from 10.128.128.13 filename /grub/x86_64-efi/terminal.lst
in.tftpd[7044]: RRQ from 10.128.128.13 filename /grub/grub.cfg
in.tftpd[7045]: RRQ from 10.128.128.13 filename /grub/fonts/unicode.pf2

我的问题是:如何让 grub 根据(例如)MAC 地址加载不同的配置文件?

[编辑并添加一些细节:

  • 是的,我确实创建了一个名为的文件grub.cfg-00-0a-11-22-33-44,但它从未被下载/访问过
  • 我确实阅读了文档中有关的部分feature_net_search_cfg,但我不知道如何确定我的 grub 映像的设置值]

答案1

我相信grubnetx64.efi嵌入图像的配置正在改变行为。

if [ -e $prefix/x86_64-efi/grub.cfg ]; then
        source $prefix/x86_64-efi/grub.cfg
elif [ -e $prefix/grub.cfg-amd64 ]; then
        source $prefix/grub.cfg-default-amd64
else
        source $prefix/grub.cfg
fi

此配置似乎是在构建脚本。如果您启动此映像并打开 grub 命令行,则配置可见cat (memdisk)/grub.cfg

选项1

你可以使用不同的 grub 映像。我使用了Debian grub 映像和一个Fedora grub 映像在启动 Ubuntu 安装程序之前。它们似乎都使用默认行为feature_net_search_cfg。如果启用了安全启动,则只能使用 Ubuntu 映像。

选项 2

您可以使用命令制作自己的 grub 映像grub-mknetdir

选项 3

您可以按原样使用 Ubuntu 映像,并使用 grub 配置复制所需的功能。如果您想根据 MA​​C 地址加载 grub 配置,则grub.cfg内容可以只包含

source ${prefix}/grub.cfg-${net_default_mac}

相关内容