配置 ESP 镜像

ESP 镜像是一个包含必要引导加载程序的镜像,用于在 UEFI 模式下引导 ISO 镜像。您需要一个 GRUB2 镜像文件,以及 ESPShim 用于安全启动。请参阅 UEFI PXE - Grub 设置 以了解如何获取它们。

然后可以使用以下脚本构建 ESP 镜像

DEST=/path/to/esp.img
GRUB2=/path/to/grub.efi
SHIM=/path/to/shim.efi

dd if=/dev/zero of=$DEST bs=4096 count=1024
mkfs.msdos -F 12 -n ESP_IMAGE $DEST

# The following commands require mtools to be installed
mmd -i $DEST EFI EFI/BOOT
mcopy -i $DEST -v $SHIM ::EFI/BOOT/BOOTX64.efi
mcopy -i $DEST -v $GRUB2 ::EFI/BOOT/GRUBX64.efi
mdir -i $DEST ::EFI/BOOT

注意

如果您使用的架构不是 x86-64,则需要调整目标路径。

警告

如果您正在使用安全启动,必须使用与您的发行版内核和 ramdisk 匹配的相同 SHIM 和 GRUB 二进制文件,否则安全启动的“信任链”将被破坏。此外,如果您在使用虚拟介质引导 UEFI 时遇到奇怪的问题,请验证是否使用了适当的匹配发行版二进制文件。

生成的镜像应通过 ironic 节点属性 driver_info/bootloader 以镜像 UUID 或 URL 的形式提供

baremetal node set --driver-info bootloader=<glance-uuid-or-url> node-0

或者,可以在配置文件中设置引导加载程序 UUID 或 URL

[conductor]
bootloader = <glance-uuid-or-url>

最后,您需要为您的镜像提供正确的 GRUB2 配置文件路径。在大多数情况下,此路径将取决于您的发行版,更准确地说,是您从中获取 GRUB2 镜像的发行版。例如

CentOS

[DEFAULT]
grub_config_path = EFI/centos/grub.cfg

Ubuntu

[DEFAULT]
grub_config_path = EFI/ubuntu/grub.cfg

注意

与上面的脚本不同,这些路径区分大小写!