[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Ubuntu

Beartooth wrote:

I take that to mean what you really have is neither a straight Fedora problem, nor a straight Ubuntu problem, but a multi-boot problem involving both. Right?

After much effort and with lots of help online, I have just managed to make my testbed machine triple-boot, reliably, with Fedora 8, Ubuntu 7.10, and CentOS 5.1; I'm not quite sure what I did, nor how, but I can outline it.

First, back up your data; the next step will wipe *everything* -- leaving you with not even an OS.

Now download and burn a CD with DBAN, boot to it, and tell it autonuke. It will take several hours.

Somewhat overkill for what you are after. If you want to wipe the drive, but do not need a secure erase, then you can use something like "dd if=/dev/zero of=/dev/sda". You really should do it from after booting from a live CD. It is not normally needed it any case.

Then partition the hard drive; use knoppix, or gparted or qtparted on a live CD. I made a separate /boot partition first, then one for each OS, and a swap partition. Boot from the install medium for the first OS; do the manual install, making sure you install only into the partition you want; let it build you a grubbery in /boot. I did CentOS first. Make a note of what in in any grub.conf a/o menu.lst you can find.

Install gparted or qtparted or both in each OS as you go -- not to partition with, but to look with. Keeping track of what's on which partition is going to grow into a major pain.

Now do the like with the second OS -- I used Fedora. It will probably wreck your ability to boot to the first one.

So boot to what you can, and command mkdir /TEST. Then start running "mount -t ext3 /dev/sdax /TEST" for x = 1 to whatever your last partition is. (In CentOS and Ubuntu, use hda, not sda.)

Whenever a partition does mount, do "cd /TEST," then ls, and drill down to find any grub.conf a/o menu.lst in any OS but the one you're running.

In another terminal or terminal tab, su to root, and do the same inside the one you're running.

Copy and paste, adding each OS's boot data to the boot record for the other. It should now boot to both.

If you add a third, as I did, expect it to wreck your ability to boot to at least one of the others. Apply a similar remedy.

As I said, I'm not sure; I *think* the above is what I did. But I notice that what's in /boot is *not* all the boot data, but that for one OS (the last, iirc), and some directions to chainload.

You may have to do something similar to all the above *again* whenever one OS updates its kernel. Or the chainloading from the dedicated /boot partition may spare you that. Be sure at least that you do save the boot data for the new kernel, where you can get to ti even if not to its OS.

It's not pretty; but if you put the testbed -- *after* all the installing -- behind a KVM switch along with your main machine, it's very convenient once it's running.

I love it. It is way too complicated for most uses, but it will work. I tend to prefer giving each OS its own /boot partition - it tends to keep things simple. Only one needs to be on a primary partition. It is possible to share a /home partition between distributions, but it is usually more work then it is worth unless you use a different window manager or user for each one. (different versions of KDE or Gnome do not always use compatible configuration files.)

One setup that I have always enjoyed is to make a small "master" partition a primary partition, and make it fairly small. (You could get by with 1Mb.) This is for the Grub setup you boot from. You install Grub here from a live CD with the Grub fist stage on the MBR. You also mark this partition as active. You will have to create the menu yourself, and all it will consist of is a list of the different distributions you want to be able to boot. You will chainload to each distribution's boot loader.

You then create a /boot partition for each distribution - they should be logical partitions in an extended partition. These partitions will be where you will chainload to from the main version of Grub. You can create the /root or LVM partitions and the swap partition at the same time, or leave it to the installer.

When you install each distribution, you tell it to use the /boot partition you created for it, and to install the boot loader to the partition boot record.

A couple of minor details. If you share the swap partition between distributions, you can only resume to the distribution you last hibernated from. If you try to resume to a different distribution, I am not sure what the results will be. I have not tested it, so I do not know what will happen if you hibernate from one distribution, and then boot another one.

You may be able to skip the separate /boot partition for each distribution, and make it part of the root partition. It depends on the drive size and your BIOS limits. You will also need a /boot partition if you your root partition is on a LVM partition.

If you label your /boot partitions, You should probably use something like master for the main Grub partition, and boot1 through boot# for the different distributions.

Your boot options would look something like this:

Master -----Distribution 1 +---Kernel 1
        |                  |
        |                  +---Kernel 2
        +---distribution 2 +---Kernel 1
        |                  |
        |                  +---Kernel 2
        +---distribution 3 +---Kernel 1
                           +---Kernel 2

Your main grub.conf would look something like:

title Fedora
    root (hd0,4)
    chainload +1
title CentOS
    root (hd0,5)
    chainload +1
title Ubuntu
    root (hd0,6)
    chainload +1

The rest would be the standard Grub configurations except that you would have "boot=/dev/sda5" through "boot=/dev/sda7" for the different distributions. If you want, you can also include a splash screen for the master Grub install.


  Do not meddle in the affairs of dragons,
for thou art crunchy and taste good with Ketchup!

Attachment: signature.asc
Description: OpenPGP digital signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]