web-dev-qa-db-ja.com

UEFIでのみ起動するISOイメージを作成するにはどうすればよいですか?

UEFI環境でブートするISOイメージを作成したい[〜#〜] only [〜#〜]。 BIOSシステムで起動するイメージを作成できましたが、UEFIでのみ機能するイメージを作成する方法がわかりません。

私は xorriso's マニュアルを読み、そのオプションをたくさんいじったが、運がなかった。

そのようなイメージがUSBスティックにフラッシュされると、UEFIでのみ起動し、MBRベースのBIOSでは起動しないことが必要です。

1
Luis Lavaire

良いガイドは this Debianウェブページです。

UEFIでのみ起動するイメージは、次のようにxorrisoを使用して作成できます。

_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 System Partition)]イメージファイルです。つまり、_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 image in $(mktemp -d)/efi.img)が作成されるので、プレースホルダーを実際のファイルパスに置き換える必要があります。


この回答は、@ ThomasSchmittによるコメントに基づいています。

1
Luis Lavaire