Sun, 27 Jun 2004

Linux 2.6 and XP dual booting

I installed a new machine this week. A nice little Shuttle box which should be fairly quiet, except the heatsink on my graphics card need replacing. I did the usual method of installing XP and then installed Debian using a sid D-I business card CD. I must say D-I on i386 is fantastic. I set it all up using a 2.6 kernel and configured LVM, which while long winded, worked perfectly. Rebooted into Debian and had a working machine. The installer detected my XP installation and configured Grub accordingly. So far so good.

Then I rebooted into XP.

GRUB showed the commands it had executed but then it just hung. The XP startup screen didn't appear. Nothing. I could reboot into Debian fine and could mount my NTFS partition and see all my data. Reboot. same problem. Loaded the XP rescue tools from the CD and fixed the mbr. As I'd over written grub, the machine just hung at boot.

I put this down to XP having issues with LVM and reinstalled both XP and Debian on the machine, this time without LVM and putting grub on /dev/hda2 rather than /dev/hda. It did the same thing. Argh.

After a bit of research, I discovered that problem was down to disk geometry. A forum led me to a support article from SuSE about the exact same problem. Fortunately, setting my bios to LBA rather than Auto fixed it. Further searching produced a few more articles and reports of Mandrake suffering for the same problem. It turns out that the problem only occurs iff you install using a 2.6 kernel and your XP partition is not completely in the first 8.6GB of the drive. In 2.6, the kernel developers decided that discovering the correct disk geometry was a userspace task. When the drive is partitioned the kernel reports the untranslated geometry, so an incorrect partition table is written. When XP boots it uses BIOS calls to find the geometry, which reports a translated geometry, which no longer matches what is in the partition table, so it hangs. Changing the BIOS is a workaround, but fixing the partition table is the correct fix.

I'll file a bug as soon as I work out where the correct place to file it is. I'm currently thinking partman. Below is some further reading on the problem.

[, , , ] | # Read Comments (0) |

Comments

Peer Pressure

It is amazing what peer pressure will make people do.
[] | # Read Comments (5) |

Comments