Sunday, June 29, 2008

Triple boot pain

Today I went at a friend's place to help him set up a triple boot system. The PC is brand new and bleeding edge (it will be used primarily as a gaming device), but the guy was still curious about Linux. So I told him about Linux in general and offered to install Ubuntu. He agreed and we went on with the partitioning scheme.

The HDD had 500 GB and we agreed to set up the partitions as follows:
* primary partition - 50 GB - Vista Business x64
* primary partition - 50 GB - XP Professional x64
* primary partition - 25 GB - Kubuntu 8.04
* extended partition - ~375 GB
- 4 GB - Linux swap
- the rest - big storage partition
OK, so when all this was settled, I started the Vista install. It went OK, no troubles whatsoever. Then came Kubuntu - all went fine. I used GRUB in order to be able to choose between the two operation systems.

After customizing the two operating systems, adding all the necessary applications etc. we thought we should finish the setup and have XP installed as well.

Surprise! Just after the reboot - after I chose the partition I was going to install XP unto and formatting it as NTFS and after the setup disk copied the necessary files and drivers on the HDD before the graphical installer could be launched - the PC came up with a gross error:
A disk read error has occurred. Press CTRL+ALT+DEL to restart.
"Whoa! And it didn't even get to the bootloader!" I said to myself with disdain.

So, what to do? I googled for the error and came up with an "explanatory" article on the Microsoft support website. In short, you are not supposed to dare to attempt to install another Microsoft Windows operating system after you installed any version of Vista. Hah! What do you think about that?

What to do? I thought about the alternatives. My first go was to try to boot again from the XP install disk and attempt a repair (a "fixmbr" or "fixboot" something). Fired up the XP recovery console, chose the right partition (the one that had the XP GUI installer ready to start if I managed to boot of that HDD) and came to face a horror like surprise... the administrator password, which I didn't set, because I didn't have the chance to, was not blank. Under normal circumstances, I should have been faced with the opportunity to pick (and set) an administrator password after the first boot off the HDD (off the XP partition), but since this didn't happen, I thought the password shouldn't exist. Well, apparently it did. I'm not so much into Windows internals so if anyone has an explanation for this, please let me know (yes, I tried some "admin" and "administrator" variations but they didn't work).

So the XP recovery console repair solution was off the list... moving on.

I was trying with all means necessary to follow Microsoft's indications and completely remove both operating systems and then only install XP (or the 'old' Windows version) and in the end Vista.

So it only seemed natural to load the Kubuntu Live CD and restore GRUB. For this, you need to boot off the Live CD, wait until it loads, start a konsole or a terminal and then

$ sudo grub
grub> find /boot/grub/stage1
grub> root (hd?,?)
grub> setup (hd?)
grub> quit

and then restart. (For more info on restoring GRUB after Windows overwrote the MBR using a Linux Live CD, check here.)

Using the Live CD, I mounted the partition with the Kubuntu install and manually edited /boot/grub/menu.lst in order to add the XP entry there, too.

Then rebooted. Vista was fine, Kubuntu was fine, XP yielded a "NTLDR not found" error. Grrr.

Next off, booted Ubuntu, manually mounted the XP partition, insterted the XP install disk, copied (disk)\i386\ntldr and (disk)\i386\ to the root of the XP filesystem, i.e. something like:
cp /media/cdrom0/i386/ntldr /media/xp
cp /media/cdrom0/i386/ /media/xp

and then rebooted. Now XP didn't complain anymore about the missing NTLDR, but apparently it had no
boot.ini file. So I booted in Ubuntu once more, mounted the XP partition once more and wrote a boot.ini file that contained:
[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

The "partition(2)" part there was OK, since XP was installed on the 2nd partition of the HDD.

This way, I finally managed to boot XP and the GUI installer started off the HDD. It all went fine from there on.

Still, this was a challenging experience. Overall, in the end (and in the end solely!) I enjoyed a good laugh on the gay-ness of the whole "Windows Vista no longer starts after you install an earlier version of the Windows operating system in a dual-boot configuration" thing. Mwhaha!

1 comment:

  1. Helpful rule of thumb: always install your operating systems in the order of oldest => newest and always do linux last. :)