我正在通过 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 配置复制所需的功能。如果您想根据 MAC 地址加载 grub 配置,则grub.cfg
内容可以只包含
source ${prefix}/grub.cfg-${net_default_mac}