[syslinux] Isohybrid wiki page and UEFI

Thomas Schmitt scdbackup at gmx.net
Fri Oct 23 15:56:49 PDT 2015


Hi,

Ady wrote:
> So, someone could assert the following reasoning steps:

> 1_ We can workaround the Sector Count limitation of 32MiB for 
> no-emulation methods.

If the EFI firmware programmers obey version 2.4, yes.

> 2_ The ESP is considered a no-emulation method.

>From the view of UEFI 2.4 it is a partition.

Partitions may be marked by MBR partition table or by GPT
on hard disk (rotating or not), and by EL Torito Boot
Catalog on CD, DVD, or BD. In the El Torito catalog, only
the entries with platform id 0xEF and with emulation 0
"no emulation" are candidates for EFI System Partition.

(For BIOS the platform id is 0x00 and emulations may range
 from 0 to 4. 3 sizes of floppy and one hard disk.
 I assume the hard disk is supposed to have a MBR partition
 table telling its size.)


> 3_ From the above assertions, we could conclude that the limitation of 
> 32MiB is not really relevant for the ESP.

It needs to be tested.


> To be clear, with "workaround" I don't mean the "size of 0 or 1"; I 
> mean similar workarounds as for no-emulation methods under BIOS.

Not like in BIOS, because the approach is totally different.
BIOS via  El Torito "no emulation" loads program code and executes it.
EFI via the same form finds the block range of a partition which
hosts a FAT filesystem.

Maybe the Sector Count is irrelevant for EFI implementations,
because FAT can tell its size without a 16 bit limitation.

But the small load size of isolinux.bin is not the way how to
negotiate with EFI.


> The assumed size limitations for each El Torito 
> "emulation" methods are not really there, as many real-life BIOSes will 
> be able to boot other sizes, even bigger than 32MiB. Even VMs can boot 
> such ISO images!

It is not about the size of the ISO filesystem. Debian has 25 GB
bootable ISOs.
It is about the size of the FAT image which serves as EFI System
Partition inside the ISO. And it is about an unsurpassable limit
of 16 bit numbers: If i add 1 to 65535 i get 0 as result.

We have two chances with real firmware:
- The Sector Count is ignored and FAT filesystem size is used
  insteadi as partition size.
- The official values 0 or 1 are interpreted correctly and
  the partition spans up to the end of the medium. No problem then.
  FAT knows what's its own range and will not read trailing data.

Of course the real firmware could bail out on Sector Count 0
or if FAT size is larger than perceived partition size.
We will have to test.
Needed is a EFI FAT image > 32 MiB and a new xorriso (available
on demand).


Have a nice day :)

Thomas



More information about the Syslinux mailing list