On Mon, 22 Apr 2019, 01:42 Thomas Schmitt, <scdbac...@gmx.net> wrote:

> Hi,
>
> this is about how exactly to solve a diagnosed and worked-around problem.
>
> Guix is one of the few distros which make their installation ISOs by
> help of grub-mkrescue. The EFI boot manager of an old Macbook got stuck
> when such an ISO was presented on USB stick. I.e. it not only did not
> boot the ISO but showed no other EFI partitions either.
>
> A Debian Live 9 ISO does not impose such a problem.
> The same Guix ISO on DVD rather than USB stick works well, too.
>
> The owner of the machine is Florian Pelz (Cc'ed). He characterizes it as:
>   MacBook Pro (13-inch, Mid 2010)
> MacOS Yosemite reports:
>   Model Name:            MacBook Pro
>   Model Identifier:      MacBookPro7,1
>   Boot ROM Version:      MBP71.003F.B00
>   SMC Version (system):  1.62f7
>
> During a longish bug hunt it turned out that the decisive difference
> is the first block of the FAT filesystem image which Debian creates by
> mkfs.fat whereas grub-mkrescue creates it by mformat.
>
> The mformat-made image has an MBR partition table entry which claims the
> whole image as partition 1:
>
>   Device            Boot Start   End Sectors  Size Id Type
>   /mnt/iso/efi.img1 *        0  2879    2880  1.4M  1 FAT12
>
> If this partition entry is zeroed, then the EFI boot manager works even
> when the USB stick with this modified ISO is plugged in.
>
> Actually it suffices to change the start LBA from 0 to 1, so that the
> partition does not start by the partition table. (I count this as proof
> of an endless loop in EFI while it is exploring something like
> extended partitions. Strange is that the main MBR partition 1 of the
> Debian ISO points to that main MBR, too. So it seems to harm only in
> sub partition tables. We repacked the Guix ISO to MBR rather than GPT.
> Still stuck.)
>
> The EFI FAT image in Debian Live 9 has no partition table entry in block 0.
>
> Production of the partition entry can be suppressed by mformat option -k.
> But then block 0 of the result is not marked as MBR and also causes
> program "file" to give out a very sparse characterization:
>
>   DOS floppy 2880k
>
> Here is the "file" report about an image made without -k:
>
>   DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MTOO4018",
>   sectors/cluster 2, root entries 240, sectors 5760 (volumes <=32 MB) ,
>   sectors/FAT 9, sectors/track 36,
>   serial number 0x6c528b1f, unlabeled, FAT (12 bit), followed by FAT
>
> An image made by a modified grub-mkrescue with mformat option -k
> worked well for Florian Pelz.
>
> ---------------------------------------------------------------------------
>
> Questions:
>
> 1: Is there any use for the partition entry in the EFI partition of a
>    grub-mkrescue ISO ?
>
Nope. An artefact of mformat that we don't really want. I just didn't know
about -k (or maybe it didn't exist back then)

>
> 2: Is there any use for the information which mformat does not insert
>    if option -k is set ?
>
Probably no

>
> If the partition entry is not needed but the other MBR-like bytes are
> needed:
>
> 3: Is there a good example in GRUB util sources about how to open a file,
>    seek to its byte 446, and write 16 zero bytes starting there ?
>    (I'd like to propose a patch for grub-mkrescue.c which zeros the
>     partition entry directly after the mformat run.)
>
I don't think so.

>
> ---------------------------------------------------------------------------
>
>
> Have a nice day :)
>
> Thomas
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to