I have a fairly complex storage setup. For the purposes of this question, the important part is that I have a SSD with GRUB in MBR, three partitions (the first of which is marked bootable), and a bunch of LUKS full-disk encrypted storage devices (both SSD and HDD) on a mixture of controllers (on-board and off-board).
The motherboard is an Asus M5A97 Pro, running UEFI BIOS revision 1604. OS is Debian Wheezy.
When I have all devices listed in the BIOS boot order and boot normally, the system loads GRUB just fine after a short delay and presents me with the GRUB menu. Perfect, except for potentially scanning a large number of drives and being potentially confusing in the BIOS setup. And that I generally like clean configurations.
If I remove from the boot order all devices except for the SSD that holds GRUB's first-stage loader in the MBR (the one I want to boot from, and which is hooked up to the on-board SATA controller), and reboot, I am presented with the following message:
Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key_
_ represents the blinking cursor. If at this point I simply press a key (spacebar, say), the message is repeated after a blank line with identical behavior:
Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key_
If I force the system to try to boot from the SSD, I get the same error behavior.
If I add all devices back into the boot device order, then the system boots normally.
I have confirmed that out of all devices, only the SSD I want to use as boot device has the string
GRUB within the first 512 bytes stored. I have confirmed the partition table layout on that one using
All other devices are used as full-disk LUKS containers and don't even contain a valid MBR, much less any valid boot code. None of the storage devices have
boot device (case insensitive) within the first 16 KiB, so it's not a LUKS thing. Google also indicates that the message is fairly common, and judging by the hits, it's from the BIOS, not anything related to Linux.
I have run
grub-mkdevicemap, the output of which says
(hd0) is the SSD I want to boot from, and reinstalled GRUB (I think I did this using
dpkg-reconfigure grub-pc, but I'm not positive about that).
What's going on here? Why won't the BIOS, when I explicitly tell it to, boot from the one device it's pretty clearly booting from in the end? How can I convince it to boot from only this one SSD without having to list everything in the boot order?