grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Does grub-mkrescue support UEFI hybrid USB/DVD images?


From: Thomas Schmitt
Subject: Re: Does grub-mkrescue support UEFI hybrid USB/DVD images?
Date: Fri, 23 Jan 2015 17:18:21 +0100

Hi,

i inspect the image by

  xorriso-1.3.8 -indev test-efigrub.iso \
                -report_el_torito plain \
                -report_system_area plain

and get

  Boot record  : El Torito , MBR protective-msdos-label cyl-align-off GPT APM
  ...
  Volume id    : 'PCBSD_INSTALL'
  El Torito catalog  : 1763  1
  El Torito cat path : /boot.catalog
  El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
  El Torito boot img :   1  UEFI  y   none  0x0000  0x00   5760         140
  El Torito img path :   1  /efi.img
  System area options: 0x00000201
  System area summary: MBR protective-msdos-label cyl-align-off GPT APM
  ISO image size/512 : 81552
  Partition offset   : 0
  MBR heads per cyl  : 64
  MBR secs per head  : 32
  MBR partition table:   N Status  Type        Start       Blocks
  MBR partition      :   1   0x00  0xee            1        81551
  GPT                :   N  Info
  GPT disk GUID      :      70e9427b66c1b744b42113c17b268b07
  GPT entry array    :      20  176  separated
  GPT lba range      :      64  81506  81551
  GPT partition name :   1  4700610070003000
  GPT partname local :   1  Gap0
  GPT partition GUID :   1  70e9427b66c1b744b42213c17b268b07
  GPT type GUID      :   1  a2a0d0ebe5b9334487c068b6b72699c7
  GPT partition flags:   1  0x1000000000000001
  GPT start and size :   1  64  496
  GPT partition name :   2  
450046004900200062006f006f007400200070006100720074006900740069006f006e00
  GPT partname local :   2  EFI boot partition
  GPT partition GUID :   2  70e9427b66c1b744b42313c17b268b07
  GPT type GUID      :   2  28732ac11ff8d211ba4b00a0c93ec93b
  GPT partition flags:   2  0x1000000000000001
  GPT start and size :   2  560  5760
  GPT partition path :   2  /efi.img
  GPT partition name :   3  4700610070003100
  GPT partname local :   3  Gap1
  GPT partition GUID :   3  70e9427b66c1b744b42013c17b268b07
  GPT type GUID      :   3  a2a0d0ebe5b9334487c068b6b72699c7
  GPT partition flags:   3  0x1000000000000001
  GPT start and size :   3  6320  75184
  APM                :   N  Info
  APM block size     :      2048
  APM gap fillers    :      2
  APM partition name :   1  Gap0
  APM partition type :   1  ISO9660_data
  APM start and size :   1  16  1564
  APM partition name :   2  HFSPLUS_Hybrid
  APM partition type :   2  Apple_HFS
  APM start and size :   2  1580  18646
  APM partition name :   3  Gap1
  APM partition type :   3  ISO9660_data
  APM start and size :   3  20226  162

So we have no entry points for BIOS but only for EFI.
Those, nevertheless, are plenty. :))

--------------------------------------------------------------------
Experiment 1: Remove MBR, GPT, APM, and backup GPT.
(by zeroizing the whole ISO System Area and the last 512-block)

  cp test-efigrub.iso test.iso
  dd if=/dev/zero conv=notrunc bs=512 count=64 of=test.iso
  dd if=/dev/zero conv=notrunc bs=512 seek=81551 count=1 of=test.iso

Inspection shows:

  El Torito catalog  : 1763  1
  El Torito cat path : /boot.catalog
  El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
  El Torito boot img :   1  UEFI  y   none  0x0000  0x00   5760         140
  El Torito img path :   1  /efi.img
  xorriso : NOTE : No System Area was loaded

So if this boots, the firmware either really used El Torito,
or it recognizes /efi.img as boot image by some naming rule.

--------------------------------------------------------------------
Experiment 2: Remove El Torito too.
(by moving the Volume Descriptor Set Terminator to the position of
 the Boot Record)

  # using test.iso as emerged from experiment 1
  dd if=test-efigrub.iso bs=2048 count=1 skip=18 | \
    dd conv=notrunc bs=2048 count=1 seek=17 of=test.iso

Inspection shows:

  Volume id    : 'PCBSD_INSTALL'
  xorriso : NOTE : No El Torito information was loaded
  xorriso : NOTE : No System Area was loaded

If this still boots, then EFI finds /efi.img by miracle.

--------------------------------------------------------------------
Experiment 3: Remove El Torito but keep MBR, GPT, APM.
(by moving the Volume Descriptor Set Terminator to the position of
 the Boot Record)

  cp test-efigrub.iso test.iso
  dd if=test-efigrub.iso bs=2048 count=1 skip=18 | \
    dd conv=notrunc bs=2048 count=1 seek=17 of=test.iso

Inspection:

  Boot record  : (system area only) , MBR protective-msdos-label cyl-align-off 
GPT APM
  ...
  Volume id    : 'PCBSD_INSTALL'
  xorriso : NOTE : No El Torito information was loaded
  System area options: 0x00000201
  System area summary: MBR protective-msdos-label cyl-align-off GPT APM
  ISO image size/512 : 81552
  Partition offset   : 0
  MBR heads per cyl  : 64
  MBR secs per head  : 32
  MBR partition table:   N Status  Type        Start       Blocks
  MBR partition      :   1   0x00  0xee            1        81551
  GPT                :   N  Info
  GPT disk GUID      :      70e9427b66c1b744b42113c17b268b07
  GPT entry array    :      20  176  separated
  GPT lba range      :      64  81506  81551
  GPT partition name :   1  4700610070003000
  GPT partname local :   1  Gap0
  GPT partition GUID :   1  70e9427b66c1b744b42213c17b268b07
  GPT type GUID      :   1  a2a0d0ebe5b9334487c068b6b72699c7
  GPT partition flags:   1  0x1000000000000001
  GPT start and size :   1  64  496
  GPT partition name :   2  
450046004900200062006f006f007400200070006100720074006900740069006f006e00
  GPT partname local :   2  EFI boot partition
  GPT partition GUID :   2  70e9427b66c1b744b42313c17b268b07
  GPT type GUID      :   2  28732ac11ff8d211ba4b00a0c93ec93b
  GPT partition flags:   2  0x1000000000000001
  GPT start and size :   2  560  5760
  GPT partition path :   2  /efi.img
  GPT partition name :   3  4700610070003100
  GPT partname local :   3  Gap1
  GPT partition GUID :   3  70e9427b66c1b744b42013c17b268b07
  GPT type GUID      :   3  a2a0d0ebe5b9334487c068b6b72699c7
  GPT partition flags:   3  0x1000000000000001
  GPT start and size :   3  6320  75184
  APM                :   N  Info
  APM block size     :      2048
  APM gap fillers    :      2
  APM partition name :   1  Gap0
  APM partition type :   1  ISO9660_data
  APM start and size :   1  16  1564
  APM partition name :   2  HFSPLUS_Hybrid
  APM partition type :   2  Apple_HFS
  APM start and size :   2  1580  18646
  APM partition name :   3  Gap1
  APM partition type :   3  ISO9660_data
  APM start and size :   3  20226  162
  
So if this does not boot, then El Torito is indeed needed
even on USB stick.

--------------------------------------------------------------------

One could also remove APM and/or GPT to lure EFI into GPT or MBR.
All in all 16 combinations of El Torito, MBR, GPT, and APM are
possible. We'd need to zeroize the System Area more selectively
to zapp particular table types.


Have a nice day :)

Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]