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