假设您有一个包含 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 映像的资源: