ПРАКТИЧЕСКОЕ РУКОВОДСТВО создает загрузочный ISO UEFI/BIOS

Я отметил, что файл ISO Ubuntu загружаем в системах с BIOS и с UEFI. Я обновил Ubuntu с нуля, и я хотел бы, чтобы мой файл ISO был загрузочным в обоих случаях.

Мое обновление Ubuntu сделано первой установкой debootstrap в chroot тюрьму и затем постепенно добавление файлов, пока я все не требовал программ. Однако получающийся файл ISO только загружаем в системе с BIOS.

Я полагаю, что мне нужно некоторое другое волшебство с mkisofs, но что относительно файлов в EFI/BOOT? Каков источник тех файлов? Есть ли что-либо еще, в чем я нуждаюсь?

Спасибо!

AndyS

1
задан 11 November 2017 в 21:40

1 ответ

Можно генерировать ESP (Системный Раздел EFI) изображение, подходящее для начальной загрузки на UEFI с:

#! /bin/sh

BOOT_IMG_DATA=$(mktemp -d)
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 ::

Это генерирует отформатированный FAT файл (измените местоположение файла путем изменения $BOOT_IMG переменная), который является, в свою очередь, изображением ESP.

Можно использовать сгенерированное изображение путем добавления флага -append_partition 2 0xef efi.img к xorriso команда.

Получающееся xorriso команда может быть чем-то вроде этого:

xorriso -as mkisofs \
    -r -V <ISO_LABEL> \
    -o <OUTPUT_ISO_IMAGE> \
    -J -J -joliet-long -cache-inodes \
    -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -boot-load-size 4 -boot-info-table -no-emul-boot \
    -eltorito-alt-boot \
    -e --interval:appended_partition_2:all:: \
    -append_partition 2 0xef efi.img \
    -no-emul-boot -isohybrid-gpt-basdat \
    <ISO_DIRECTORY>

Примите во внимание, что также необходимо использовать ISOLINUX, если Вы хотите, чтобы Ваше изображение загрузилось в системах BIOS. GRUB2 для UEFI.

Кроме того, необходимо использовать последнюю версию xorriso (флаг --interval:appended_partition_2:all:: была добавленная пара несколько лет назад, таким образом, старые версии не поддерживают ее).

Для дальнейшего руководства также смотрите к этому вопросу.

0
ответ дан 8 December 2019 в 03:26

Другие вопросы по тегам:

Похожие вопросы: