Multi Distribution Boot Howto
How do I boot several Linux distributions?
Other titles for this same problem.
- I want to boot other Linux distributions but without any mess.
Introduction
Usually a user tries Linux and then decides to explore more Linux flavours. One problem is partioning because he had not thought about reserving some disk space for a second Linux distribution. After that problem there's the Distro Boot problem? How do I set up every Grub so that every Linux distribution is represented? Will I use one /boot partition? Will the different distro's kernel updates make other distro's grub menues not to boot the other distribution?
We will try to show right here some methods that can make your Multi Linux distribution experience easier.
I personally like the chainload method because each grub menu has associated its splashimage or its gfxboot menu.
Everyone of these methods suppose that you know how to make a menu.lst file and that you choose to save that menu.lst file in a given partition.
Let's suppose that your Linux distributions layout is:
sda1 (hd0,0) Windows sda2 (hd0,1) Fedora 11 sda3 (hd0,2) Debian 5 sda5 (hd0,3) Sabayon 14
Chainload method
Distribution preparation
First of all we need to run the root and setup commands in every distribution (I mean in every distribution's partition). If you run root and setup in non-ext3 partition please check that these partitions support a partition boot record. If you do not check that you can loose all your partition data.
You will have to open a Grub terminal:
grub
And run:
grub> device (hd0) /dev/sda grub> root (hd0,1) grub> setup (hd0,1)
grub> root (hd0,2) grub> setup (hd0,2)
and so on.
grub> quit sync
Just edit your favourite /boot/grub/menu.lst file and write something like:
title Windows rootnoverify (hd0,0) chainloader +1 boot
title Fedora 11 rootnoverify (hd0,1) chainloader +1 boot
title Debian 5 rootnoverify (hd0,2) chainloader +1 boot
and so on.
Now that /boot/grub/menu.lst you will be able to boot your distributions.
Configfile method
Just edit your favourite /boot/grub/menu.lst file and write something like:
title Windows rootnoverify (hd0,0) chainloader +1 boot
title Fedora 11 root (hd0,1) configfile /boot/grub/menu.lst boot
title Debian 5 root (hd0,2) configfile /boot/grub/menu.lst boot
and so on.
Now that /boot/grub/menu.lst you will be able to boot your distributions.
Classic method
Classic method means doing nothing. Once you install the last distribution it adds to its own menu all the kernels from other distributions. (Well, that's in theory and sometimes it does not work as expected... just check the other methods in this same webpage. ;) )
One example about classic method not working is when Kernel between different versions expect different root arguments.
For example old version expects something as: root=/dev/hda3 and new version expects something as: root=UUID:349589348LAFSNMLVMALDFASDLÑF34859. For example opensuse 10.2 and opensuse 10.3 had a similar problem in the SGD forum.
Supergrub method
SuperGrubDisk's Grub installation
For this method to work you need to install SuperGrubDisk's Grub into your hard disk and the best place is a separated /boot partition. Get your Super Grub Disk's Cdrom, mount it, and copy: stage* files to your mounted /boot partition.
Something as:
mkdir /mnt/boot mount -t ext3 /dev/sda2 /mnt/boot mount /cdrom mkdir /mnt/boot/grub cp /cdrom/boot/grub/stage2 /mnt/boot/grub/stage2 cp /cdrom/boot/grub/stage1 /mnt/boot/grub/stage1 cp /cdrom/boot/grub/*stage1_5 /mnt/boot/grub/
default 0 timeout 0
title default selectfile /boot/grub/menu.lst /grub/menu.lst /boot/grub/grub.conf /grub/grub.conf root $(out_device) configfile $(out_device)$(out_file)
Inconvenients
- Selectfile command does not admit timeouts.
- There is no splashimage support in SuperGrubDisk's grub.
One thing you should know
Sometimes BIOS do not allow you to install grub on its own partition because it is very far and you need a dedicated /boot partition near its beginning. Please check: Linux installation does not boot.