[syslinux] Problem booting from CF/SD cards and USB Flashdrives using syslinux
H. Peter Anvin
hpa at zytor.com
Fri Aug 24 13:42:15 PDT 2007
c.lee111 at gmail.com wrote:
> So you're basically saying that SYSLINUX is in fact pretty much affected
> by a 1024 cylinder bug. Basically if SYSLINUX encounters more than
> 1024 cylinders on USB media on a machine that has a BIOS that's not
> "self-consistent", SYSLINUX becomes confused and doesn't know what
> to do next and therefore the USB boot process either aborts or crashes.
No, I'm not saying that at all.
ANY bootloader needs LBA/EBIOS support to access more than 1024
cylinders. Period. Anyone who tells you anything else is lying. If
you're using EBIOS, then there is no geometry involved in any way, so
there is no possibility of anything in the system getting confused.
SYSLINUX 3.00+ will use EBIOS if it is available at boot time.
If EBIOS is *not* available, SYSLINUX will query the BIOS at boot time
for what the BIOS thinks the geometry should be, and will internally
convert linear block addresses to CHS addresses, and pass them to CBIOS.
It is the CBIOS interface which has the 1024-cylinder limitation.
Remember, at this point we've already tried talking EBIOS, and gotten
rejected, so we don't have any alternative.
What appears to have happened with some BIOS vendors when it comes to
the USB booting code is that they have internally gotten confused, and
reports one geometry to the CBIOS geometry query call (INT 13h AH=08h)
but somehow translate the geometry differently. I don't have to explain
to you the sheer degree of incompetence and lack of testing that that
implies, but nevertheless appears to be a reality[*]. Part of the
problem appears to be misguided attempts at compatibility which involves
BIOS reading the MBR and partition table and trying to adjust itself to
match; this is my best guess why formatting with a zipdrive geometry
(H:S = 64:32) appears to work on some systems.
[*] To be fair, I am limited largely by reports, since I don't have a
specimen. My local systems either all boot from USB just fine, or fail
More information about the Syslinux