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

Sean Young sean at mess.org
Tue Jul 15 12:27:55 PDT 2008


On Tue, Jul 15, 2008 at 11:53:23AM -0700, H. Peter Anvin wrote:
> 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.

Ah, ok. Assumptions. :/

> > 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?

This is what it looks like in minicom now:

+------------------------------------------------------------------------------+
|                 System Bios Setup - Basic CMOS Configuration                 |
|            (C) 2000 General Software, Inc. All rights reserved               |
+---------------------------+--------------------+-----------------------------+
| DRIVE ASSIGNMENT ORDER:   | Date:>Jul 15, 2008 | Typematic Delay  : 250 ms   |
| Drive A: 5x00 Flash A:    | Time: 19 : 22 : 35 | Typematic Rate   : 30 cps   |
| Drive B: 5x00 Flash B:    | NumLock:  Disabled | Seek at Boot     : None     |
| Drive C: Ide 0/Pri Master +--------------------+ Show "Hit Del"   : Enabled  |
| Drive D: (None)           | BOOT ORDER:        | Config Box       : Enabled  |
| Drive E: (None)           | Boot 1st: Drive C: | F1 Error Wait    : Enabled  |
| Drive F: (None)           | Boot 2nd: Drive A: | Parity Checking  : (Unused) |
| Drive G: (None)           | Boot 3rd: Debugger | Memory Test Tick : Enabled  |
| Drive H: (None)           | Boot 4th: (None)   | Test Above 1 MB  : Disabled |
| Drive I: (None)           | Boot 5th: (None)   | Debug Breakpoints: Disabled |
| Drive J: (None)           | Boot 6th: (None)   | Splash Screen    : (Unused) |
| Drive K: (None)           +--------------------+-----------------+-----------+
| Boot Method: Boot Sector  | IDE DRIVE GEOMETRY:  Sect  Hds  Cyls | Memory    |
+---------------------------+ Ide 0: 3 = AUTOCONFIG, LBA           |  Base:    |
| FLOPPY DRIVE TYPES:       | Ide 1: Not installed                 |   640KB   |
| Floppy 0: Not installed   | Ide 2: Not installed                 |  Ext:     |
| Floppy 1: Not installed   | Ide 3: Not installed                 |   31MB    |
+---------------------------+--------------------------------------+-----------+
|                    ^E/^X/<Tab> to select or +/- to modify                    |
|                         <Esc> to return to main menu                         |

The "Ide 0: 3 = AUTOCONFIG, LBA" option is the relevant one.

> 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.

-snip-

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

Ok, I will.

Thanks,
Sean




More information about the Syslinux mailing list