Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Sep 2003 23:24:11 -0700 (PDT)
From:      Dan Strick <strick@covad.net>
To:        freebsd-hardware@freebsd.org
Cc:        dan@ice.nodomain
Subject:   bad BIOS confuses boot0
Message-ID:  <200309270624.h8R6OBjS000841@ice.nodomain>

next in thread | raw e-mail | index | archive | help
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@covad.net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309270624.h8R6OBjS000841>