如果禁用“USB Legacy Emulation”,基于 Ubuntu 的自定义 iso 将无法启动

如果禁用“USB Legacy Emulation”,基于 Ubuntu 的自定义 iso 将无法启动

我有一个基于 Ubuntu 的自定义 iso,它可以在 Bios 模式下正常启动。如果启用“USB Legacy Emulation”,它也将以 UEFI 模式启动。当机器处于 UEFI 模式并且禁用“USB Legacy Emulation”时,无法识别 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 之后缺少“\”。纠正该错误就解决了问题。

相关内容