Christopher Key wrote:

I've a machine with 3 SATA drives.  The first (ad8) with a standard
FreeBSD install in a single slice with /boot/boot0 MBR.  The remaining
two drives (ad10, ad12) are in a RAID1 mirror with 3 slices, and used
for storing data.  They have the /boot/mbr MBR.

Ok. Let's call them the "first (ad8), second (ad10) and third (ad12) drive"

After booting off various USB flash drives to try and update the BIOS on
my machine, it got into a state where during startup, it would display
'Missing operating system' and hang.  What seems to have been happening
is that it was trying to boot from one of my data store drives, despite
the boot order of the disks set in the BIOS.

Flashing the BIOS often resets all settings, including boot order. Depending on your BIOS, controller and motherboard, you might need to first select the active controller, then the drive on the controller. In your case, you need to finally tell BIOS to boot of the first drive (ad8).

Another thing that might be happening (though judging from what you said elsewhere it's not probable) is that the changed BIOS code enumerates devices differently than it used to, so ad8 is no longer the drive with boot0. This case will not hurt your RAID if you used gmirror, it might for other systems.

The only solution that I found was to start booting from a USB flash
drive with a boot0 MBR, and to hit F5 to change to booting from my first
drive  After this, the machine then reboots quite happily until I hit F5
again, in which case I get the same 'Missing operating behavior'.  This
persists even while power cycling the machine.

Ok, so now you're booting from the first drive, and with F5 you're telling your boot loader to skip it and move on to the second drive, which has the standard mbr (this mbr is what's displaying the "Missing operating system" message).

I had imagined the boot process to be entirely stateless, certainly
across power cycles.  The BIOS executes the MBR on the first drive in
its boot boot.  The boot0 MBR then allowed you to either execute the
boot sector from any of the slices on the current drive, or to execute
the MBR from the next drive in the list.

boot0 will by default remember what's the last option you booted from and use it as the default for the next time. It may not be the best thing for you, but I found it to be extremely useful behaviour in several cases, since it allowed me to "script" a boot order when the BIOS and the disk controller didn't get along for booting.

However, this clearly isn't what's happening.  Is it boot0 remembering
my F5 key stroke, or is it more likely that the BIOS is remembering
something?  Does anyone have any recommendations to avoid this in the
future?  Is putting boot0 on all three drives a good idea perhaps?

It will not hurt in any case to put boot0 on any drives (as long as you do it with the appropriate utility, else you may destroy the partition table). In your case, it will only be useless.

Here's something to try (I didn't try it): Do you have active partitions on the second and the third drive? If so, you might want to unmark them, and hopefully the boot loader won't display the drives in the boot menu. Maybe.

Or, if you're seriously worried about hitting F5 during boot, you might try an alternative boot loader such as sysutils/extipl or sysutils/grub.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to