Bug#123099: boot-floppies: i386 bootsector fails first attempt to read floppy
Version: N/A; reported 2001-12-09
I get "Boot failed" when attempting to boot the rescue disk on a particular
machine. It boots fine on many other machines. OpenBSD boot disk exhibits
the same behaviour, but lilo, FreeBSD, MS-DOS, and bzImage all boot up
without any problem. I tried the safe version of syslinux and it didn't
Using bootsector code provided by someone else (i.e., not ldlinux.asm), I
installed trace code and discovered that the BIOS is loading DL with 0x2f
before passing control to the bootsector. If this is left as-is for the
int 0x13 (0x02) ISR call, the error code 0x01 (invalid command) is returned.
On the test code, if we zero DL it boots fine.
I've looked at the bootsector code for the linux kernel and it zeros DL.
Though zeroing DL is not the best solution from a purist perspective, it
should not cause problems in the case of syslinux. By definition, syslinux
only needs to boot from a floppy, and there are few, if any, occassions to
boot from any but the first floppy.
I haven't looked at the ldlinux.asm code in depth and don't have a patch.
I apologize for that.
-- System Information
Debian Release: 3.0
Locale: LANG=C, LC_CTYPE=C