[syslinux] Broken file reading for fat16 with 3.35+?

Ram Yalamanchili ramyinc at gmail.com
Tue Feb 6 02:16:44 PST 2007


Hello,

I noticed after upgrading from 3.20, I haven't been able to get syslinux to
boot properly with menu.c32 or mboot.c32 from a USB key. I get an error
saying invalid kernel when its trying to load menu.c32 or mboot.c32 (or any
other kernel for that matter). I tried 3.35 and 3.36-pre5. Same exact
behaviour.

I'm using the following to compile:
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-34)
NASM version 0.98.39 compiled on Jan 15 2005

Steps to reproduce:
/dev/sdc is my usb key

mkdiskimage -4 /dev/sdc4 0 64 32
syslinux -s /dev/sdc4
mount /mnt/sdc4
cp menu.c32 mboot.c32 syslinux.cfg mykernel /mnt/sdc4
umount /mnt/sdc4

reboot with key in.

syslinux.cfg has the following:
default menu.c32
menu title Boot Menu
timeout 30

label RBoot
    menu label ^RBoot
    kernel mboot.c32
    append mykernel

Errors:

It shows SYSLINUX 3.36 Pre 5, etc.. and then goes to

boot:
Loading
Invalid or corrupt kernel image
<repeat last 3 lines for like 5 mins or so>

Then all of a sudden the error message changes to:
boot:
Could not find kernel image: menu.c32
This I assume is happening because the USB key device went away for whatever
reason after many minutes.

Before the USB key 'went off', entering mboot.c32 or menu.c32 in the prompt
also produces the same error. If I enter the name of a non-existant file it
says file not found as expected.

I used the same above process with syslinux 3.20's syslinux/mkdiskimage, and
copied the 3.36-pre5 menu.c32 and mboot.c32 into the partition, and this
worked.

Anyone know what might be causing this? Looks like ldlinux.sys is broken. I
need to upgrade to 3.35 because I need the 0x19 read partition call for my
use. On a similar note, Peter, are you ok with me implementing a comboot api
call which would take in the bios drive and sector number to get data from
(a 0x20 if you will)? Or 0x19 can be modified to take in an argument which
says if the partition offset shoudl be added to eax or not before you issue
the int 0x13h. I like a newer call which is a "Read raw disk" instead of
"read active partition". I want to extend it to read from (drive number,
partition number). Further extension could lead to Grub like addressing
where you can have files on various other partitions and be able to get
them.

thanks,
Ram



More information about the Syslinux mailing list