New
#1
UEFI hard drive boot order and boot menu are completely ignored
I have a bit of a puzzle, and I don't know whether to blame the motherboard maker, Microsoft, or -- this is a really distant third choice, obviously -- myself. (That being said, UEFIs and GPT drives are new to me, so that distant third choice might not be as distant as I'd hoped.)
I recently set up a new computer for a friend. It has an ASRock z97 Extreme4 motherboard. I managed to install Windows 7 Pro x64 in UEFI mode on a "single-partition" 4TB GPT-format drive. So far, so good.
Minimal downtime and minimal data loss are my friend's top priorities. Because we've had bad experiences with both hardware and software RAID 1 (mirroring) in the past, RAID was out and cloning was in. (Over ten years, we had close to zero downtime and data loss with the cloning system on his previous XP system.)
I installed three mobile racks in the chassis. The top one is for the 4TB "original system" drive. The middle one is for a 4TB "resident clone" of the original system drive. The bottom one is for two additional 4TB "swapped clones" that will be cloned to on alternate days and stored in a waterproof, fireproof data safe when not in use. The "resident clone" will stay in the computer and, in addition to periodically being recloned to, will have data files mirrored to it from the original system drive in close to real time. So far, so good.
The top mobile rack is connected to SATA port 0, the middle mobile rack is connected to SATA port 1, and the bottom mobile rack is connected to SATA port 2, so:
- SATA port 0 = top mobile rack = original system drive
- SATA port 1 = middle mobile rack = resident clone drive
- SATA port 2 = bottom mobile rack = swapped clone drives
In the UEFI I set the hard drive boot order to:
- AHCI port 0 = SATA port 0 = top mobile rack = original system drive
- AHCI port 1 = SATA port 1 = middle mobile rack = resident clone drive
- AHCI port 2 = SATA port 2 = bottom mobile rack = swapped clone drives
(Am I right in assuming that AHCI ports are statically assigned to physical SATA ports? Or are they dynamically assigned at startup according to some scheme that I haven't been able to determine? But apart from that lingering doubt, so far, so good.)
The thing is, you want to test a clone's bootability from time to time, and that's where the puzzle comes in.
If we always boot to the original system drive, in the top rack (SATA port 0), no problem. We can start the system with all of the drives powered on, and the system will continue to boot from the correct drive time after time.
If we try to test a clone's bootability by shutting down, leaving the clone in its original mobile rack, powering off the other drives, and restarting, still no problem (for the moment). The system will boot to the clone.
The problem is, once we've booted from a different drive connected to a different port, the system wants to continue booting from that drive and that port. It doesn't matter what the UEFI hard drive boot order is or (if you manually trigger the boot menu at startup) what AHCI port we choose, the system will try to boot from the same drive and port it booted from the previous time.
For example, if the resident clone (port 1) is left powered on after its bootability is tested, and the original system drive (port 0) is powered back on, and the system is started, the system will boot to the clone. And if only the original system drive (port 0) is powered on at startup, the system won't find a bootable drive anywhere. (To reset the system after it fixates on booting from the wrong drive and port, you apparently have to cut mains power to the chassis.)
This is my first experience with a UEFI system, but this behavior strikes me as fishy and I suspect that ASRock's UEFI is at fault. Shouldn't the hard drive boot order and manual boot menu actually do something? Is the UEFI immediately handing over boot control to Windows and allowing Windows to decide what drive and port to boot from? And if so, why bother having a hard drive boot order or offering a boot menu? For Linux? Do the hard drive boot order and manual boot menu only work with MBR drives, not GPT drives? And was I supposed to know that?
For the time being, there is a relatively easy workaround (for us, only because we have mobile racks):
- When we want to test a clone's bootability, we have to physically swap it to the top mobile rack (port 0) and start the computer with only that drive powered on.
- When we want to go back to booting to the original system drive after the test, we have to physically swap it back to the top mobile rack (port 0) and start the computer with only that drive powered on.
- Otherwise, so long as we want to continue to boot to the original system drive, it's fine to start the computer with the other drives powered on -- the system will continue to boot from the original system drive each time.
(People without mobile racks would not be so lucky. To test their clones' bootability, they would have to open the chassis and start changing SATA cable connections...)
So, what's the verdict? Does ASRock's UEFI have a major bug? Or is this inability to choose a boot drive through the UEFI the result of a Windows or GPT or UEFI design choice? Or have I done something wrong? Let 'er rip, guys and gals. After the hair-pulling hassle and humongous time-suck I went through nailing down what was going on, I can take just about anything.
Oh, and I almost forgot: of course I've been in touch with ASRock tech support. They told me to connect the mobile racks to SATA ports 0, 1, and 2 instead of the original 2, 3, and 4. It made no difference whatsoever.
Anyway, if anyone has any insights into this problem, I'd be very grateful to hear them. Thanks!