bad BIOS confuses boot0
John Baldwin
jhb at FreeBSD.org
Mon Sep 29 13:04:22 PDT 2003
On 27-Sep-2003 Dan Strick wrote:
> 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?
I don't think there is an actual standard for BIOS booting off a hard
disk. The defacto standard is to indeed pass in the BIOS device number
in %dl, so you likely can complain to your BIOS vendor. It's amazing
Windows boots off the thing. Windows may hardcode 0x80 though as a
workaround. The boot0cfg -d option exists to workaround this type of
bug, so you are using the best workaround available.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the freebsd-hardware
mailing list