bad BIOS confuses boot0
Dan Strick
strick at covad.net
Fri Sep 26 23:24:09 PDT 2003
The AWARD BIOS on my Gigabyte 8KNXP motherboard has been giving me
a hard time for several weeks. Tonight I got around to instrumenting
a copy of /usr/src/sys/boot/i386/boot0/boot0.s and verified my
suspicion.
The AWARD BIOS loads the MBR from the first drive in the BIOS drive
list, drive code 0x80, but passes the value 0x81 to the bootstrap
program through the %dl register.
This has a couple of consequences:
1) The boot0 program lists the partition on the first drive but
boots the selected partition from the second drive, and
2) The boot0 program may overwrite the MBR on the second drive
with a copy of the MBR from the first drive.
My workaround was to do:
boot0cfg -Bv -d 0x80 -o setdrv,noupdate ad0
The noupdate option is intended to prevent a major disaster if
this drive should ever be assigned a different number by the BIOS.
I don't like this workaround. It is clumsy and restrictive.
The drive configuration on my PC is in a state of flux.
Has anyone noticed such antisocial BIOS behavior in the past?
Is there actually a standard for passing the BIOS drive number through
the %dl register? Do I have grounds for *demanding* that the motherboard
manufacturer get the BIOS fixed?
Dan Strick
strick at covad.net
More information about the freebsd-hardware
mailing list