[syslinux] Syslinux + integrated flash disk

Dag Sverre Seljebotn dss at fredtun.no
Mon Jun 21 06:21:08 PDT 2004

Quick summary: Syslinux stops at "Boot failed". Which, from a quick look at 
the raw disk image, seems to indicate that the boot sector loads but it fails 
to load the .sys loader.

The details: I've been trying to load Linux (or etherboot...or anything at all 
that is not NT embedded) into a set of Compaq Evo T20 48/64 for a while now. 
What I finally managed to do is using the firmware update mechanism in the 
boxes to upload my own flash images. This again I do by setting the factory 
firmware image files up against the loopback device at a certain offset (the 
firmware consists of some code in the beginning, then a custom package format 
wrapping the entire filesystem). Bottom line is that I have only file images 
to work with, no physical device access (which quickly made me switch from 
LILO to syslinux).

What I've done:
- Set up some loopback devices: Main image at /dev/loop0, then the offset 512 
bytes after at /dev/loop1, allowing me to use /dev/loop0 as the disk with MBR 
and all and use /dev/loop1 against filesystem tools (this was the way it was 
done from factory, with a NT bootsector first then the NTFS starting 512 
bytes after).
- Used cfdisk and/or sfdisk against /dev/loop0 to change FS type to FAT 16 
(latter one needs a --force, complains about having to assume CHS and about 
available size being 0).
- mkdosfs against /dev/loop1 to format as FAT 16
- syslinux, version 2.10 with the -s switch against /dev/loop1, to make the 
FAT bootable.
- The MBR was left as it was (NT embedded).

I interpret "Boot failed" as the MBR being ok (correctly loading the FAT boot 
sector), then the syslinux bootstrap loading ok but failing to access the FAT 
file system.

The onboard flash memory is 48 MB (as indicated by the 48/64 model name). It 
is soldered on, and the firmware update process says stuff like "Loading IDE 
drivers", "Erasing NAND device". This does perhaps mean that the flash is 
accessed through an IDE interface, it might also mean that the IDE driver is 
not in the BIOS, this might be a problem?

My theories about the failure:
- BIOS not supporting syslinux (ie no IDE drivers? It's a custom WYSE 
thin-client BIOS).
- I have to override a check in syslinux: "Total number of sectors not a 
multiple of sectors per track". This was the case no matter if I kept the 
original NTFS partition (just changing the type and reformatting to FAT16), 
or if I deleted it and created a new 5 MB partition (tried that in case it 
was the 1024 cylinder problem).
- In general, my method of setting up the disk images through loop devices 
might be a problem when it comes to CHS (as loopback devices don't have them? 
any advice of how to overcome this, and what they should be set to in the 
case of accessing flash roms?)

The NT bootloader never has a problem (if anyone knows a way to load Linux 
from NT then great, all I have seen involve just specifying alternative boot 
sectors in boot.ini and I don't see that helping as the boot sectors don't 
work in the first place).

All suggestions welcome! The 48 MB firmware that I'm editing can be found at 
(extractable with wine).

// Dag Sverre

More information about the Syslinux mailing list