我使用 Foreman 和 Grub2 为 UEFI HTTP Boot 提供 Grub2 模板。此配置在我的服务器上运行良好,并且我使用自动安装和用户数据构建了无人值守的 Ubuntu 22.04 服务器。在我尝试将 VLAN ID 引入内核参数之前,一切都运行良好。关于如何使用 Casper 执行此操作的文档很少。我卡在了 Subiquity(用户数据)步骤发生之前。这是我的 grub2 模板:
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/light-blue
set menu_color_highlight=light-blue/light-gray
set timeout=10
set default=0
menuentry "Ubuntu 22.04" {
set gfxpayload=keep
echo "Loading Kernel..."
linuxefi boot/ubuntu-22-04-smartproxy-iHSnrxJrt5ql-vmlinuz BOOT=casper vlan=846:enp69s0f0np0 ip=<ip>::<gw>:<mask>:<hostname>:enp69s0f0np0.846:none:<DNSip1>:<DNSIP2> cloud-config-url=/dev/null url=http://<foremanproxy>/media/ubuntu/ubuntu-22.04.3-live-server-amd64.iso autoinstall ds="nocloud-net;s=http://<foremanproxy>/userdata/"
echo "Loading initial ramdisk..."
initrdefi boot/ubuntu-22-04-smartproxy-iHSnrxJrt5ql-initrd
}
答案1
虽然花了很长时间才弄清楚,但答案却非常简单。内核对接口名称有字符限制。当附加 vlan 信息时,我们的可预测接口名称(最新标准)对于内核来说太长了。
这是一个带有 vlan 和 ip 参数的正常运行的 grub2 linuxefi:
linuxefi boot/ubuntu-22-04-smartproxy-iHSnrxJrt5ql-vmlinuz vlan=vlan.846:enp69s0f0np0 ip=<hostip>::<gw>:<mask>:<hostname>:vlan.846:none:<dns1>:<dns2> cloud-config-url=/dev/null url=http://<foreman>/media/ubuntu/ubuntu-22.04.3-live-server-amd64.iso autoinstall ds="nocloud-net;s=http://<foreman>/userdata/"