Как создать ISO FreeBSD с mkisofs, которые будут загружаться в VirtualBox под UEFI?

Решение, доказанное по следующему адресу, работает хорошо http://www.penguinproducer.com/Blog/2011/11 / jack-alsa-bridge-kit

3
14.12.2018, 03:18
2 ответа

Проблема не в содержимом файловой системы, а в загрузочных записях и перегородки:


$ xorriso -indev FreeBSD-12.0-RELEASE-amd64-bootonly.iso -report_el_torito plain -report_system_area plain
...
libisofs: WARNING : Found hidden El-Torito image. Its size could not be figured out, so image modify or boot image patching may lead to bad results.
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 20 * 2048, 1600 * 512
...
Boot record  : El Torito, MBR protective-msdos-label cyl-align-off GPT
...
El Torito catalog  : 19  1
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4         420
El Torito boot img :   2  UEFI  y   none  0x0000  0x00   1600          20
El Torito img blks :   1  1204
El Torito img blks :   2  400
System area options: 0x00000201
System area summary: MBR protective-msdos-label cyl-align-off GPT
ISO image size/512 : 675508
Partition offset   : 0
MBR heads per cyl  : 0
MBR secs per head  : 0
MBR partition table:   N Status  Type        Start       Blocks
MBR partition      :   1   0x00  0xee            1       676107
GPT                :   N  Info
GPT backup problems:      Not a GPT 1.0 header of 92 bytes for 128 bytes per entry
GPT disk GUID      :      7ce0bf52def9e8118c360cc47ad8b808
GPT entry array    :      2  2  separated
GPT lba range      :      3  676105  676107
GPT partition name :   1  
GPT partition GUID :   1  6de0bf52def9e8118c360cc47ad8b808
GPT type GUID      :   1  28732ac11ff8d211ba4b00a0c93ec93b
GPT partition flags:   1  0x0000000000000000
GPT start and size :   1  80  1600
GPT partition name :   2  
GPT partition GUID :   2  73e0bf52def9e8118c360cc47ad8b808
GPT type GUID      :   2  9d6bbd83417fdc11be0b001560b84f0f
GPT partition flags:   2  0x0000000000000000
GPT start and size :   2  3  29

И загрузочный образ BIOS, и системный раздел EFI не являются файлами в ISO, а скорее безымянные области блоков.

Если вы не пойдете по пути добавления сеанса с помощью фиксированных GrowIsofs или


cp FreeBSD-12.0-RELEASE-amd64-bootonly.iso new.iso
xorriso -boot_image any keep \
        -dev new.iso \
        -map /path/to/your_installerconfig /etc/installerconfig
        [other -map commands for files or directory trees...]

затем вам нужно извлечь эти области


dd if=FreeBSD-12.0-RELEASE-amd64-bootonly.iso bs=512 skip=80 count=1600 \
   of=efi_part.img
dd if=FreeBSD-12.0-RELEASE-amd64-bootonly.iso bs=512 skip=1680 count=4816 \
   of=bios_boot.img

(El Torito дает LBA в блоках по 2048, но размеры в блоках по 512. 4 *420 = 1680. Размер образа BIOS 1204 блока по 2048 байт составляет оценивается по наименьшему объекту файловой системы LBA выше 420. Возможно, он меньше, но любое превышение не должно навредить.)

Затем следует код MBR для загрузки BIOS с USB-накопителя:


dd if=FreeBSD-12.0-RELEASE-amd64-bootonly.iso bs=1 count=446 \
   of=mbr_code.img

Если не планируете загружаться через биос, то биос _boot.img и mbr _code.img не нужны.

Создание нового ISO из распакованного и загруженного дерева $HOME/files _для _iso и извлеченные файлы изображений


xorriso -as mkisofs \
        -o new.iso \
        -d -l -r \
        -V "12_0_RELEASE_AMD64_BO" \
        -G mbr_code.img \
        -b /bios_boot.img \
           -no-emul-boot -boot-load-size 4 \
        -eltorito-alt-boot \
        -append_partition 2 0xef efi_part.img \
        -e '--interval:appended_partition_2:all::' \
           -no-emul-boot \
        bios_boot.img $HOME/files_for_iso

Это даст не GPT, а таблицу разделов MBR с двумя разделами. типа 0x83 для файловой системы ISO и 0xef для системного раздела EFI.

(Необходимо проверить, загружается ли BIOS с USB-накопителя. Многие MBR нужна информация, пропатченная, чтобы найти следующий этап загрузки программ.)

4
27.01.2020, 21:15

Проблема со многими документами по созданию загрузочных ISO-образов заключается в том, что они, как правило, предполагают загрузку без -UEFI по умолчанию.

Вот хороший справочник с информацией о загрузке UEFI с CD/DVD-носителя:https://dev.lovelyhq.com/libburnia/libisofs/raw/master/doc/boot_sectors.txt

Получается, что если вы хотите использовать отдельный загрузочный образ El Torito с UEFI (, как вы делали это с BIOS ), вам нужно убедиться, что загрузочный образ встроен с правильным идентификатор платформы байт для UEFI. Для x86 BIOS идентификатор платформы был равен 0. PowerPCs использовали 1; значение 2 предназначалось для компьютеров Mac; а UEFI указывает значение 0xef или 239 в десятичном формате.

Поэтому мне кажется, что вам потребуется некоторый способ указать значение идентификатора платформы :либо напрямую, либо с помощью какой-либо опции, указывающей, что загрузочный образ должен быть Загрузочный образ UEFI . Я предполагаю, что этот документ Fedora, на который ссылается mosvy , делает это, используя опцию -eдля указания местоположения efiboot.imgвместо использования -b, как с традиционными загрузочными образами BIOS.

Итак, убедитесь, что ваш boot/cdbootявляется допустимым загрузочным образом UEFI , и попробуйте использовать -e boot/cdbootв командной строке mkisofsвместо -b boot/cdboot.

А вот описание того, как может выглядеть содержимое загрузочного образа UEFI:

У меня под рукой оказался ISO-образ RHEL 8.0 beta 1, и я только что подтвердил, что он действительно загружается с помощью VirtualBox в режиме UEFI. Используемый загрузочный образ UEFI доступен в основной файловой системе iso9660 образов как images/efiboot.imgи, по-видимому, содержит только образ файловой системы FAT без какой-либо таблицы разделов.

В файловой системе efiboot.img,есть только каталог \EFI\BOOTс соответствующими загрузчиками UEFI :, в данном случае как BOOTX64.EFI, так и BOOTIA32.EFI, которые выглядят как оболочки безопасной загрузки, и соответствующие версии GRUB как grubx64.efiи grubia32.efiсоответственно, и любые вспомогательные файлы, требуемые этими :файл конфигурации GRUB, файл шрифта GRUB и MOKManager для оболочки безопасной загрузки.

0
27.01.2020, 21:15

Теги

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