In the past decade I lived without any Microsoft Windows flavor near me. However, for multiple reasons (e.g. being able to answer Windows questions to my parents in law) I thought it’d be a nice idea to leave the Windows 7 that came with the for occasional “let’s see how the menu item is named there” reboots.
While I initially had triple boot (via Chameleon, not GRUB, it just looks better) last autumn, it broken some time thereafter. As I said, I do not really “need” Windows for anything, less so abroad, so i left it in that un-bootable state for the time being. However, now that I injected an SSD I reinstalled anything, anyway. And just when I had everything installed and setup this stupid Windows 7 beast refused to boot, yet again (with the strange “hardware changed I can no longer boot” message I was already used to)! The Windows installer media repair function was no help, either.
The internet was silent on that matter as well (ok, guess not too many dual-booting their Hackintosh), so I invested some time to finally track this annoying thing down. After some intermitted hours of re-install and analysis it turned out the Mac OS X’s fdisk is the culprit! Zero’ing out the new and optional “disk signature” (4 bytes at offset 440 [0×1B8 in hex]) of the MBR:
— mbr.doesntwork.hex 2010-04-16 20:04:35.000000000
+++ mbr.works.hex 2010-04-16 20:04:26.000000000
@@ -25,7 +25,7 @@
0000180 bb 01 00 fc ac 3c 00 74 06 b4 0e cd 10 eb f5 c3
0000190 0a 0d 62 6f 6f 74 30 3a 20 00 65 72 72 6f 72 00
00001a0 47 50 54 00 74 65 73 74 69 6e 67 00 64 6f 6e 65
-00001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00
+00001b0 00 00 00 00 00 00 00 00 10 b8 29 01 00 00 80 00
00001c0 14 00 af fe ff ff 13 00 00 00 ad 60 49 06 00 fe
00001d0 ff ff 83 fe ff ff c0 60 49 06 c0 60 49 06 00 fe
00001e0 ff ff 07 fe ff ff 80 c1 92 0c 00 cd 0e 06 00 00
So Windows 7 (I assume since the new BOOTMGR was introduced in Vista) uses this disk ID to identify the boot device for startup, sigh!
Finally I know why Chameleon ships a custom fdisk, though their README could be clearer, e.g. using a “./” prefix in their sudo calls, and pointing out that preserving the disk UUID is vital for Windows versions since Vista.