如何从 bios 可启动 iso 制作 UEFI 可启动 usb 磁盘

如何从 bios 可启动 iso 制作 UEFI 可启动 usb 磁盘

假设您有一个包含 BIOS 可启动分区的 iso 映像。您可以将此映像写入 U 盘

在Linux中你可以这样做,例如

dd if=pmagic_2013_02_28.iso of/dev/sdc1

您的 USB 磁盘现在可以在带有 BIOS 的计算机上启动。但是在我的 UEFI 系统上,U 盘无法启动。如何使其可 EFI 启动?

答案1

创建 iso 映像时需要 El Torito 的一些魔力。看

答案2

为了使映像能够 (U)EFI 启动,它需要有一个主 VFAT32 分区,其中包含要在路径 下启动的 initramfs 映像文件/efi/boot/bootx64.efi

答案3

我想您唯一的机会是重建 ISO 映像并添加它所需的 UEFI 文件。有了xorriso你就可以做到这一点。

首先,提取原始 ISO 文件的内容:

xorriso -osirrox on -indev IMAGE.ISO -extract / ISO_DIR

然后你需要创建ESP(EFI系统分区),它必须是FAT分区。我们将创建一个包含此类分区的文件:

BOOT_IMG=efi.img

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

mkfs.vfat -C $BOOT_IMG \
    $(( ($(stat -c %s bootx64.efi) / 1024 + 511) / 32 * 32 ))

mmd -i $BOOT_IMG ::/efi
mmd -i $BOOT_IMG ::/efi/boot
mmd -i $BOOT_IMG ::/boot
mmd -i $BOOT_IMG ::/boot/grub

mcopy -Q -i $BOOT_IMG bootx64.efi ::/efi/boot

# You may create a grub.cfg file if you want.
[ -f grub.cfg ] &&
    mcopy -Q -i $BOOT_IMG grub.cfg ::/boot/grub

生成 ESP 后,您可以使用以下命令构建 UEFI 可启动 ISO 映像:

xorriso -as mkisofs \
    -r -J -l \
    -iso-level 3 \
    -joliet-long \
    -append_partition 2 0xef $BOOT_IMG \
    -partition_cyl_align all \
    -o uefi-bootable.iso \
    ISO_DIR

uefi-bootable.iso您的 ISO 映像将在当前目录中创建。


您可以阅读以下有关可启动 ISO 映像的资源:

相关内容