如何生成仅在 UEFI 上启动的 ISO 映像?

如何生成仅在 UEFI 上启动的 ISO 映像?

我想创建一个可以启动的 ISO 映像仅有的在 UEFI 环境中。我已成功创建了可在 BIOS 系统上启动的映像,但我不知道如何创建仅在 UEFI 上工作的映像。

我读了xorriso 的手册,并对其选项进行了大量摆弄,但没有成功。

我需要当此类图像闪存到 USB 记忆棒时,它仅在 UEFI 上启动,而不是在基于 MBR 的 BIOS 上启动。

答案1

一个好的指南是Debian 网页。

可以使用xorriso以下命令创建仅在 UEFI 上启动的映像:

xorriso -as mkisofs \
    -iso-level 3 \
    -r -V <ISO_LABEL> \
    -J -joliet-long \
    -append_partition 2 0xef <BOOT_IMG> \
    -partition_cyl_align all \
    -o <OUTPUT_IMAGE> \
    <ISO_DIRECTORY>

UEFI_BOOT_IMAGE是一个 ESP([U]EFI 系统分区)映像文件。这意味着它应该被格式化为FAT32分区。您可以使用以下命令生成它:

BOOT_IMG_DATA=$(mktemp -d)
BOOT_IMG=$(mktemp -d)/efi.img

mkdir -p $(dirname $BOOT_IMG)

truncate -s 8M $BOOT_IMG
mkfs.vfat $BOOT_IMG
mount $BOOT_IMG $BOOT_IMG_DATA
mkdir -p $BOOT_IMG_DATA/efi/boot

grub-mkimage \
    -C xz \
    -O x86_64-efi \
    -p /boot/grub \
    -o $BOOT_IMG_DATA/efi/boot/bootx64.efi \
    boot linux search normal configfile \
    part_gpt btrfs ext2 fat iso9660 loopback \
    test keystatus gfxmenu regexp probe \
    efi_gop efi_uga all_video gfxterm font \
    echo read ls cat png jpeg halt reboot

umount $BOOT_IMG_DATA
rm -rf $BOOT_IMG_DATA

这将在中创建 ESP 图像$(mktemp -d)/efi.img,因此您必须用实际文件路径替换占位符。


该答案基于@ThomasSchmitt 的评论。

相关内容