由于我有传统启动背景,我曾经能够通过创建文件来根据 MAC 地址提供特定于服务器的启动/启动配置/pxelinux.cfg/01-MAC-Address
。我正在尝试使用 UEFI 启动做类似的事情,但无法弄清楚如何让服务器使用它的特定配置(即 中指定的特定 ISO 或用户数据文件grub.cfg
)。
我已经设置了一个 PXE/TFTP/Apache 服务器,基本遵循这篇优秀文章中的说明:https://askubuntu.com/a/1235724/1094816。
一切运行正常,系统grub.cfg
按预期获取文件。但是,当我使用系统特定的 grub 文件(例如/tfpt/grub/grub.cfg-01-ec-eb-b8-92-44-70
)时,它会被忽略。虽然这是Grub 文档,查看了许多我见过此内容的文档,我想知道这是否是基于随附的 grubx64.efi 的 Fedora 和衍生产品专用选项?如果是,那么使用 Ubuntu+UEFI 实现此目的的方法是什么?
我当前的设置:
我在 Ubuntu 20.04 上运行 dnsmasq、tftp 和 apache2。我正在尝试自动安装 Ubuntu 20.04 服务器。
目录结构:
/tftp/
/tftp/grub/grubx64.efi
/tftp/grub/grub.cfg-01-ec-eb-b8-92-44-70
/tftp/grub/grub.cfg
/tftp/initrd
/tftp/pxelinux.0
/tftp/vmlinuz
内容/etc/dnsmasq.conf
:
interface=enp1s0,lo
bind-interfaces
domain=poseidon.lab
dhcp-range=10.50.129.100,10.50.129.200,255.255.255.0,2h
dhcp-option=3,10.50.129.1
dhcp-option=6,10.50.128.20
server=10.50.128.20
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/tftp
dhcp-mac=set:efi-x86_64,ec:eb:b8:92:44:70
dhcp-boot=tag:efi-x86_64,grub/grubx64.efi
grub.cfg-01-MAC-ADDRESS 的内容:
set default=auto
set timeout=10
menuentry 'Ubuntu 20.04' --id=auto {
linux /vmlinuz ip=dhcp url=http://${pxe_default_server}/tftp/ubuntu-20.04-live-server-amd64.iso quiet autoinstall ds=nocloud-net\;s=http://${pxe_default_server}/tftp/01-mac-address/ root=/dev/ram0 cloud-config-url=/dev/null
initrd /initrd
}
答案1
可能不是最好的答案,但我设法通过默认执行以下操作来解决这个问题grub.cfg
(感谢 Andrew 的回答:https://askubuntu.com/a/1272415/1094816):
set default=auto
set timeout=10
menuentry 'Ubuntu 20.04 - autoinstall' --id=auto {
linux /vmlinuz ip=dhcp url=http://${pxe_default_server}/tftp/ubuntu-20.04-live-server-amd64.iso quiet autoinstall ds=nocloud-net\;s=http://${pxe_default_server}/tftp/01-${net_default_mac}/ root=/dev/ram0 cloud-config-url=/dev/null
initrd /initrd
}
并在每个主机的单独目录中为每个服务器维护一个文件meta-data
:user-data
/tftp/
/tftp/01-aa:bb:cc:dd:ee:00/meta-data
/tftp/01-aa:bb:cc:dd:ee:00/user-data
因此,当 MAC 服务器aa:bb:cc:dd:ee:00
启动时,它会下载这些文件来配置服务器。到目前为止似乎有效。