[syslinux] [BUG] boot failure since syslinux-3.00

H. Peter Anvin hpa at zytor.com
Tue Jul 15 11:53:23 PDT 2008


Sean Young wrote:
> 
> I've found the issue:
> 
> When the syslinux bootsector calls extended read (int 13, ah=42), the sector
> number is given in absolute mode. According to Ralph Brown's list this is
> not correct for non-LBA devices.
> 

Where do you get *that* reading from RBIL?

  08h    QWORD   starting absolute block number
                 (for non-LBA devices, compute as
                   (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
                   SelectedSector - 1

The formula used is nothing other than the standard CHS to LBA 
conversion algorithm.

EDD block numbers are *always* absolute (LBA); CHS conversion is thus 
internal to the BIOS.

> In the BIOS settings I found a option for turning LBA on, which apparently
> is not the default for this BIOS. After this everything works fine!

I looked for such an option but didn't find one.  Which specific option 
did you use?

Either which way, it sounds like their EDD implementation is broken when 
talking to a non-LBA device, and then they default to non-LBA mode even 
on LBA-capable devices.

There is, of course, no benefit to running anything but very old devices 
in non-LBA mode; even devices like CompactFlash which often don't 
implement DMA correctly support LBA, so switching to using LBA mode on 
the device is definitely the right thing to do.

> Thanks for helping out.

Glad you were able to find a workaround.  I would still report this as a 
bug to the manufacturer.

	-hpa




More information about the Syslinux mailing list