This one took me weeks. My laptop runs a dual boot mac/windows system, which is nifty and all… but managing partitions, and especially fixing partition problems, brings in a world where every step can require an hour with dd to fix. But anyway.
Making a long story short… I mistakenly booted up my laptop with an eSATA drive attached that contained an old exact mirror of my Windows install. Something seemed wrong about the files on the desktop, so I shut down and rebooted without the drive… to discover that the Windows boot now hung at the blue ‘Welcome to Windows XP’ screen. (The MacOS boot was fine.)
During a rescue install, I noticed that Windows now seemed to think that the MacOS partition was the C drive, and the Windows partition was the D drive.
I eventually fixed this by adapting instructions from http://winhlp.com/node/66 to modify the registry on the Windows partition. I booted into Puppy Linux to access the windows files, then copied the registry ‘hive’ to another windows machine to edit it. I tried deleting the entries for \DosDevices\C: and \DosDevices\D: as suggested, but what finally worked was to *swap* the values associated with these entries.
The first thing I did on seeing the problem was to use Puppy Linux and dd to make an image of the problem partition. So I was able to backtrack from the various failed rescue installs I tried, by restoring the image, but each step took hours.
Tags: boot hang, dd, mirror, partition, puppy linux, registry, windows xp