Posted 14 May 2013 - 14:44
I give up, it looks like Windows is hard coded to assume the Boot Code needs to be stored on Disk 0. I just set the spindle drive to be first in the boot order, it now starts up fine. It does mean that my spindle drive needs to spin up for the computer to boot, which probably adds 2-3 seconds to my boot time. It also means that if I ever format or remove that drive I will need to run the Bootrec.exe or Bootsect.exe command to write the Boot Code again, but I am not too concerned about that. The Boot Loader and my OS are still on the SSD, and that is what really matters.
For anyone else having a similar problem and trying to figure out how Windows booting works, here is a simple explanation of the 4 parts needed to boot.
BIOS Settings - The BIOS settings tell the computer which boot device to use, it then reads that device's MBR for the Boot Code.
Boot Code - Tells the BIOS startup sequence where on the hard drive to start running code. Stored in the Master Boot Record (MBR) of the boot drive. This is the thing I can't seem to get Windows to create on any disk other than Disk 0
Boot Loader (BCD) - Called by the Boot Code, typically stored in the System Reserved partition. This contains the settings needed to boot Windows (including decrypting the drive if needed), also contains the code to select which OS to start in a dual boot environment.
Operating System - Called by the Boot Loader, the OS has has many layers of code called during startup, but not relevant to this discussion.
So for me this is what I have:
Boot Code: Spindle
Boot Loader: SSD
I wish it was all on the SSD, but this works fine, I will not get overly picky