UbuntuベースのカスタムISOがあり、Biosモードで正しく起動します。 「USBレガシーエミュレーション」が有効になっていると、UEFIモードでも起動します。マシンがUEFIモードにあり、「USBレガシーエミュレーション」が無効になっていると、USBは認識されません。これは、isoでfatパーティションを作成するために使用したコードです。
#! /bin/sh
############################
# Make UEFI partition #
############################
BOOT_IMG_DATA="$PWD"
BOOT_IMG=efi.img
mkdir -p $(dirname $BOOT_IMG)
truncate -s 4M $BOOT_IMG
mkfs.vfat $BOOT_IMG
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 fat iso9660 loopback \
test keystatus gfxmenu regexp probe \
efi_gop efi_uga all_video gfxterm font \
echo read ls cat png jpeg halt reboot
mcopy -i $BOOT_IMG -s $BOOT_IMG_DATA/EFI ::
これはisoを構築するために使用するコードです。
############################
# Create the new ISO image #
############################
# The example names get mapped to their roles here
orig_iso="$HOME"/foxclone/foxclone025-01.iso
new_iso="$HOME"/foxclone/foxclone025-02.iso
new_files="$PWD"
mbr_template=/usr/lib/ISOLINUX/isohdpfx.bin
# Extract MBR template file to disk
dd if="$orig_iso" bs=1 count=432 of="$mbr_template"
xorriso -as mkisofs "$new_files" \
-o "$HOME"/foxclone/foxclone025-02.iso \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
-m grub.cfg
"$new_files"
これは fdisk -lu の結果です。
larry@larry-Satellite-C55-A:~/foxclone$ fdisk -lu foxclone025-02.iso
Disk foxclone025-02.iso: 549 MiB, 575668224 bytes, 1124352 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1e64812c
Device Boot Start End Sectors Size Id Type
foxclone025-02.iso1 * 0 1124351 1124352 549M 0 Empty
foxclone025-02.iso2 288 5215 4928 2.4M ef EFI (FAT-12/16/32)
助けてくれてありがとう。
ベストアンサー1
ビルドスクリプトで-m grub.cfgの後に「\」がありません。そのエラーを修正することで問題が解決しました。