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