I started my journey with Linux (ubuntu to be precise) with the 7.10 Gutsy Gibbon and from there on have been slowly learning things by trial and error (one learns more when one gets into troubles!) After Gutsy i also installed Intrepid (I am not crazy of everything just coz its new , but there were reasons in the technicalities why the new versions were better) Meanwhile i got to collecting movies and eventually needed more space. So i got another 500 GB HDD and installed 9.04 Jaunty Jackalope on it. I ended up with Two HDD – one having WIN XP, Gutsy and Intrepid and the other having Jaunty. I decided to do away with Gutsy and reinstall WIN XP with an updated XP3 version. Thats when the problems came up!
The MBR was messed up and i could not boot to any of the Linux distros. I changed the master and slave config of the HDD and reinstalled Jaunty on the secondary HDD again remapping the data partition for the movies but it still booted to Windows without detecting Linux at all. I booted with the Live CD and tried to redo the MBR with the grub command but it gave me an error so i decided i had had enough of this MBR and a fix is necessary once and for all. hence the necessith of making a dedicated Grub partition, so that no matter what i did to all my distros i still had my Grub intact!!
Heres how i did it (ofcourse i had to haggle a lot, but its easy once you know it)
Boot in with a live CD
1) make a small partition (newer distros have a partition manager,so its simply easy)
a 7 MB is just enough.
2) Label your file system.
$ sudo fdisk -lu
$ e2label /dev/sda10 GRUB
$ ls /media
Reboot your computer, and mount the new GRUB partition. for example (hd0,10)
3) Make a directory “boot” in your new GRUB partition (in /media/GRUB)
$ sudo mkdir /media/GRUB/boot
4) Copy your /boot/grub directory(that is inside this working linux already) to the new GRUB partition,
$ sudo cp -r /boot/grub /media/GRUB/boot/
(again in newer distros you can manually copy paste using CTRL+C and CRTL+V)
5) Edit the new GRUB partition’s menu.lst file by …
$ sudo gedit /media/GRUB/boot/grub/menu.lst
6) Delete all the old operating system boot entries, and the entire Debian Automagic Kernels List too.
Example of Multi Boot menu.lst (GRUB partition’s menu.lst)
title Ubuntu 8.04 (/dev/sda6)
title ArtistX 0.6 Ubuntu 8.10 (/dev/sda7)
title Microsoft Windows XP Professional
Note: Don’t get confused! The above menu.lst [the main GRUB menu.lst] is the first menu you will see, so you can choose which distro you want to boot, then you will see each linux distro’s menu.lst, which is just the normal menu.lst listing different kernel versions under that distro.
7) Re-install Grub from your new GRUB partition to MBR.
(Notice the order FROM abc TO xyz)
$ sudo grub
grub> find /boot/grub/stage1
grub> root (hd0,9)
grub> setup (hd0)
Note, sometimes GRUB gets the device label wrong…
for example, when using “sudo grub” inside a workig linux os, “find” command returns (hd0,9)
but at grub command line before booting into that linux os, “find” command returns (hd1,5)
so just manually edit the main GRUB menu.lst
Finally give all your operating systems a test boot-up to make sure everything’s working fine.
later, when installing a new linux distro into a partition, for example, partition LinuxY,
just make sure to install bootloader Grub or Lilo into that partition LinuxY
in Ubuntu, at the last HD installation step, there is a small button “Advanced Options”, click on it, then choose to install bootloader Grub into LinuxY
(Not to install it into MBR, which is hd0 or hd1 )
(by the way, in the earlier steps, you only need to select one / partition[root partition], and one swap partition [… so edit all other swap partitions for “NOT TO BE USED”] )
After linux HD installation, add lines like below into the main GRUB menu.lst that is inside the dedicated Grub partition
title Ubuntu 9.04 (/dev/sda9)
if that linux has to install its /boot as a separate partition, (hd0,9), then just edit the main GRUB menu.lst according to where that /boot partition is
title Fedora 11 (/dev/sda10)
Fun thing to do… add lines below into each linux distro’s menu.lst, that will get you back to the main menu!
title Main Menu (/dev/sda8)