Bug#776317: Jessie RC1 amd64 mini image missing efi bootloader
Hi,
Summary:
There are two EFI System Partitions in mini.iso.
The one for booting from USB stick or qemu -hdb is indeed empty.
One could try whether it helps to copy the files from the FAT
image /boot/grub/efi.img in the ISO to MBR partition 2:
- Put mini.iso onto a USB stick /dev/sdb or other hard disk device
dd if=mini.iso of=/dev/sdb
- Mount the ISO image
mount -o loop mini.iso /mnt/iso
- Mount the FAT filesystem inside /mnt/iso/boot/grub/efi.img
mount -o loop /mnt/iso/boot/grub/efi.img /mnt/fat_iso
- Mount the FAT filesystem in MBR partition 2 of the USB stick
mount /dev/sdb2 /mnt/fat
- Copy from efi.img into partition 2 of the USB stick:
cp -a /mnt/fat_iso/* /mnt/fat
- Check for sucessful copy:
find /mnt/fat
should yield
/mnt/fat
/mnt/fat/efi
/mnt/fat/efi/boot
/mnt/fat/efi/boot/bootx64.efi
- Unmount what you mounted:
umount /mnt/fat_iso /mnt/fat /mnt/iso
- Try whether the stick boots via EFI.
---------------------------------------------------------------
Details:
Cyril Brulebois wrote:
> I don't know much about EFI Partition etc. therefore I'm not
> sure how they're related to an ISO9660 image. :/
mini.iso and debian-7*-amd64-netinst.iso differ in this aspect.
In Debian amd64 netinst, the EFI System Partition is a data file
inside the ISO filesystem which contains a FAT filesystem image.
In this FAT image there are the files which EFI will use for booting.
Debian has GRUB2 boot loader equipment in there.
The block address and size of the EFI partition is published by
an entry in the El Torito boot catalog, by a partition table entry
in the MBR, by a partition table entry in GPT, and by a (probably
useless) entry in Apple Partition Map.
Inspecting mini.iso
http://ftp.fr.debian.org/debian/dists/testing/main/installer-amd64/20150107/images/netboot/mini.iso
by xorriso-1.3.8 yields:
Volume id : 'ISOIMAGE'
El Torito catalog : 59 1
El Torito cat path : /boot.cat
El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA
El Torito boot img : 1 BIOS y none 0x0000 0x00 4 8959
El Torito boot img : 2 UEFI y none 0x0000 0x00 832 9205
El Torito img path : 1 /isolinux.bin
El Torito img opts : 1 boot-info-table isohybrid-suitable
El Torito img path : 2 /boot/grub/efi.img
System area options: 0x00000302
System area summary: MBR isohybrid cyl-align-all
ISO image size/512 : 44332
Partition offset : 0
MBR heads per cyl : 64
MBR secs per head : 32
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x80 0x17 0 45056
MBR partition : 2 0x00 0x01 45056 12288
So we have no GPT and no (probably useless) APM here.
There are two EFI partitions exposed.
One is the data file /boot/grub/efi.img of the ISO filesystem
pointed to by the El Torito boot catalog.
The other is an appended blob, marked by MBR partition 2.
(The partition type 0x01 is questionable.)
One can extract them by:
mount -o loop mini.iso /mnt/iso
cp /mnt/iso/boot/grub/efi.img eltorito_efi.img
dd if=mini.iso bs=512 skip=45056 count=12288 of=mbr_efi.img
Both files differ heavily in size
-r--r--r-- 1 thomas thomas 425984 2015-01-27 09:59 eltorito_efi.img
-rw-r--r-- 1 thomas thomas 6291456 2015-01-27 10:00 mbr_efi.img
Inspecting both:
$ mount -o loop eltorito_efi.img /mnt/fat
$ find /mnt/fat
/mnt/fat
/mnt/fat/efi
/mnt/fat/efi/boot
/mnt/fat/efi/boot/bootx64.efi
$ umount /mnt/fat
$ mount -o loop mbr_efi.img /mnt/fat
$ find /mnt/fat
/mnt/fat
$
So the El Torito advertised partition contains files,
whereas the MBR advertised partition has an empty filesystem.
Probably mini.iso will boot via EFI from CD/DVD/BD resp. qemu -cdrom,
but not from USB stick resp. qemu -hdb.
The presence of an isohybrid MBR will allow booting via BIOS emulation.
---------------------------------------------------------------
For comparison the boot anatomy of a amd64 netinst ISO:
$ xorriso-1.3.8 -indev debian-7.7.0-amd64-netinst.iso \
-report_el_torito plain -report_system_area plain
...
Volume id : 'Debian 7.7.0 amd64 1'
El Torito catalog : 847 1
El Torito cat path : /isolinux/boot.cat
El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA
El Torito boot img : 1 BIOS y none 0x0000 0x00 4 848
El Torito boot img : 2 UEFI y none 0x0000 0x00 896 860
El Torito img path : 1 /isolinux/isolinux.bin
El Torito img opts : 1 boot-info-table isohybrid-suitable
El Torito img path : 2 /boot/grub/efi.img
System area options: 0x00000102
System area summary: MBR isohybrid cyl-align-on GPT APM
ISO image size/512 : 454656
Partition offset : 0
MBR heads per cyl : 64
MBR secs per head : 32
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x80 0x00 0 454656
MBR partition : 2 0x00 0xef 3440 896
MBR partition path : 2 /boot/grub/efi.img
GPT : N Info
GPT disk GUID : a0093564c5a7464b90530645ae2a43b6
GPT entry array : 12 208 overlapping
GPT lba range : 64 454602 454655
GPT partition name : 1 490053004f00480079006200720069006400
GPT partname local : 1 ISOHybrid
GPT partition GUID : 1 a0093564c5a7464b90510645ae2a43b6
GPT type GUID : 1 a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags: 1 0x1000000000000001
GPT start and size : 1 0 454600
GPT partition name : 2 490053004f004800790062007200690064003100
GPT partname local : 2 ISOHybrid1
GPT partition GUID : 2 a0093564c5a7464b90500645ae2a43b6
GPT type GUID : 2 a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags: 2 0x1000000000000001
GPT start and size : 2 3440 896
GPT partition path : 2 /boot/grub/efi.img
APM : N Info
APM block size : 2048
APM gap fillers : 0
APM partition name : 1 EFI
APM partition type : 1 Apple_HFS
APM start and size : 1 860 224
APM partition path : 1 /boot/grub/efi.img
The file /boot/grub/efi.img contains similar stuff as
the El Torito EFI partition of mini.iso :
$ mount -o loop debian-7.7.0-amd64-netinst.iso /mnt/iso
$ mount -o loop /mnt/iso/boot/grub/efi.img /mnt/fat
$ find /mnt/fat
/mnt/fat
/mnt/fat/efi
/mnt/fat/efi/boot
/mnt/fat/efi/boot/bootx64.efi
Note that all boot entrys for EFI point to the same file
/boot/grub/efi.img inside the ISO filesystem.
Partition editors hate this structure, though, because it
represents overlapping (nested) partitions.
An alternative is the product of GRUB2 script grub-mkrescue.
Its partitions do not overlap (at the price that none of
them represents a mountable ISO filesystem).
Have a nice day :)
Thomas
Reply to: