[syslinux] Question of syslinux chainloading

Ady Ady ady-sf at hotmail.com
Thu Apr 11 11:48:06 PDT 2019

> On 2019-4-11 13:29, Lu Wei wrote:
> > On 2019-4-10 1:20, Ady Ady via Syslinux wrote:
> >>>>> #This item fails
> >>>>> label dos
> >>>>> menu label MS-^DOS 7.1
> >>>>> com32 chain.c32 msdos7=io.sys
> >>>
> >>> IO.SYS and COMMAND.COM are copied from a Windows98 system on another
> >>> computer, which is MSDOS7.1; and BOOTSECT.W98 is from Bootpart tool (I
> >>> compared it with the one from my Windows98 system, and I think they are
> >>> basically the same except label name, so I use this one), but I think if
> >>> io.sys is loaded, boot sector should be of no use. I have tried "boot
> >>> BOOTSECT.W98" and "bss BOOTSECT.W98" without success, so I'd like to
> >>> jump over it and get to IO.SYS directly.
> >>  
> >>  
> >> Would you please try using the equivalent files for FreeDOS in the USB? You
> can 
> >> see the options for chain.c32 in the Syslinux wiki. There are at least 2
> wiki 
> >> pages relevant for chain.c32, so I would suggest taking a look at both of
> them.
> >>
> > FreeDOS equivalent file of io.sys is kernel.sys, (both use command.com
> > as CLI shell), and can successfully boot by:
> > com32 chain.c32 freedos=kernel.sys
> > 
> >> BTW, which exact version of SYSLINUX are you using? Is your chain.c32 from
> the 
> >> same exact package / version? FYI, different versions should not be mixed,
> and 
> >> the options that chain.c32 actually supports depend on the exact version
> (with 
> >> some backward incompatibilities too).
> >>
> > I downloaded syslinux-6.03.zip from official site,  and extracted all
> > files in \bios to H:\syslinux (sub-directory structure not retained to
> > reduce path command in syslinux.cfg), except later I found memdisk do
> > not honor path command and moved it to root. So they must be same version.
> > 
> I forgot to say, the error message of "com32 chain.c32 msdos7=io.sys" is:
> ----------------------------------------
> BPB detection (sect): unknown
> Booting...
> (16 non-text strange characters)
> ----------------------------------------
> Then press Esc can return to syslinux boot menu.
I was tempted to reply to several side-topics you have mentioned. I'll skip 
them, except for one: the PATH directive is for c32 files only. I am mentioning 
this because some readers might interpret the phrase "memdisk do not honor path 
command" as if it was some kind of bug; it is not.

Regarding the MSDOS 7.1 boot files... Do you still have access to that Win98 
system? If you do, I would suggest searching for "io.dos" and "msdos.dos". 
These might be set as "hidden" and/or "system" (use attrib if needed), and 
there might be some additional "*.dos" file(s) too. These are the "MSDOS 7.1" 
boot files. The ones you got before _might_ be the "Win98" variants instead.

Once copied to your USB device, you can change the filename extension from 
"*.dos" to "*.sys" (and "*.com" for the DOS shell). Yet, these might not be 
enough for a successful chainload. The MSDOS boot files require some conditions 
for them to be able to boot. The easiest way to achieve the adequate conditions 
is to create an MS-DOS 7.1 boot disk, test it, and then install SYSLINUX on it.

Additional potential problems might be the C/H/S values (FreeDOS is more 
tolerant in this regard), and using FAT32 instead of FAT16. Yes, Win98 already 
supports FAT32, but I admit that I don't exactly recall which filesystem (and 
max size) its MS-DOS counterpart supports.

Another test you could perform: build a boot floppy image with these io.sys / 
msdos.sys / command.com files and boot it by means of memdisk (not with 
chain.c32). Repeat the same with a bigger, FAT16 image.

These tests could narrow down the problem, according to their results.

OTOH, if FreeDOS boots correctly, perhaps it is enough for your DOS needs and 
you might not need "MS-DOS 7.1" anymore.


More information about the Syslinux mailing list