Linuxdoc Linux Questions
Click here to ask our community of linux experts!
Custom Search
Next Previous Contents

6. The installation:

There are three distinct parts to the installation, first building the primary O/S on its own dedicated drive. Second, building a second disk with whatever alternative O/S you selected. Finally, reconfiguring the BIOS and LILO to support both disks.

6.1 Installing the primary operating system

Installation of the primary/operational O/S is fairly straight forward. Treat the system as if it were a single drive system dedicated to Linux. Refer to the documentation that came with your distribution or see http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html for details on installing Linux.

Because this is ultimately a multiple disk installation, there a few steps that need to be taken to trick the install routines into thinking that it is, during the installation process, a single disk system.

First, Remove the removable Hard Drive and make sure the remaining drive is identified in the BIOS as the secondary boot device (after the floppy). The operating system install program should only see one disk, the one you are going to install to. That way, there is no question as to where it will be installed. Also, it will install everything appropriate to a single disk system.

When asked, tell the install program to use the entire disk for your operating system. I accepted the default RedHat partitioning and installed the generic LILO on the MBR.

Once the installation is complete, shutdown and reboot to confirm that your system works properly. At this point you should have a fully functional machine that boots directly into Linux.

6.2 Installing alternative operating systems

Now that you have a fully functional system, you can move on to building a second disk with your alternative operating systems.

Select an operating system or two for installation on the second disk. I decided on, for no good reason, Windows 98 and BeOS for my initial test case. I partitioned an 8GB drive into two 4GB primary partitions and installed Windows 98 in the first partition and BeOS in the second.

Do the same things with this install that you did with the first. Disable the first disk in the BIOS so that this installer will not even see it. This is very important. If you can physically remove or disconnect the first disk, do it! This will protect your primary system from any errors on your part or overly greedy operating systems that want to take over all the disks they see during the second installation. If at some time in the future you decide to create another removable disk make sure and repeat this step.

Once this is done install your chosen operating systems as if you were installing them on a single drive system.

If you are only installing one operating system on the second disk, just plug in the installation disk and let it do its thing. Windows 95 or 98 or just about any other operating system, including a second Linux should install just fine this way. Allow Windows 9x to write to the MBR. If installing Linux, select MBR as the location to install LILO.

I decided to install two operating systems on the second disk so that I could confirm the functionality of cascading boot loaders.

I first installed Windows 98 because it automatically overwrites the MBR and would have overwritten any boot loader code I eventually placed there. Next, I installed BeOS in the second partition and ran bootman, the BeOS boot loader. With it I built a boot menu for the second disk and intentionally overwrote the Windows 98 MBR.

Bootman was not essential, I could have used any MBR based boot loader but it was available and it works quite will.

Reboot frequently to make sure that everything works properly as a single disk system. I rebooted after each O/S installation to make sure it worked properly and also to make sure that the boot loader menu worked properly.

6.3 Final BIOS and LILO configuration:

Next, reconfigure the BIOS so that it again recognizes the first disk (physically reconnect it if you disconnected it earlier) as the boot disk and so that it also recognizes the second disk. How to do this is very system specific and dependent on your BIOS and whether you have a SCSI/IDE or IDE/IDE setup. I haven't tried a SCSI/SCSI setup because SCSI disks and removable frames are significantly more expensive than IDE disks and frames. I wanted performance for my primary O/S but could accept cheap on the other ones.

Make sure and set the second disk type to "Auto" or "Automatic". This will force the BIOS to dynamically determine the disk type at boot time. I have been able to successfully use an ancient 512MB disk, a 4GB, an 8GB, and even a 100MB IDE Zip disk as the second disk. All recognized automatically by the BIOS.

Reboot the system and get back to Linux. At this point, even though there are at least two operating systems installed, this LILO only knows about the original Linux and should boot to it automatically. Watch the boot process and you should see a message about automatically identifying a disk. Once booted, check dmesg to make sure Linux recognized the second disk.

Once this is done, you need to reconfigure LILO on the first disk to make it aware of the second disk. Here are two different lilo.conf files, one for a SCSI/IDE and another for an IDE/IDE system. Each has some strengths and weaknesses...

# lilo.conf file for an internal SCSI disk and a removable disk
# configured as a master on the primary IDE connection

disk = /dev/sda         #  These four lines are necessary
   bios = 0x80          #  to get the SCSI disk re-mapped as
disk = /dev/hda         #  the primary drive even though it
   bios = 0x81          #  is selected in the BIOS as the
                        #  boot device.  This might be a BIOS
                        #  specific problem.
   
# Without them you get the following errors from LILO:
#  
#  LILO version 21, Copyright 1992-1998 Werner Almesberger
#
# ading boot sector from /dev/sda
# Warning: /dev/sda is not on the first disk
# And LILO either hangs at LI or repeats endless "01 "'s across the screen

boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.12-20smp
   label=Linux
   root=/dev/sda1
   initrd=/boot/initrd-2.2.12-20smp.img
   read-only
other = /dev/hda
# other = /dev/hda is the key element.  Instead of redirecting lilo to
# a specific partition, it redirects it to the MBR on the second disk.
# that way, LILO doesn't have to know anything about the second disk and
# we can replace it with another because LILO always goes to the same place
# regardless of which specific disk is installed.  LILO was the only boot
# loader I found that would do this.
   label = Disk2
   map-drive = 0x80
      to = 0x81
   map-drive = 0x81
      to = 0x80
# The map-drive lines are necessary to make the second disk think it is
# actually the boot disk.



# lilo.conf file for a system with two IDE drives.  Both are masters,
# /dev/hda on the primary connector and /dev/hdc on the secondary.
# /dev/hdb is a CDROM slave on the primary IDE connector.
# disk = /dev/hda       # These lines are not necessary for the
#    bios = 0x80        # IDE/IDE installation because the BIOS
# disk = /dev/hdc       # already knows what order they are in
#    bios = 0x81
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.5-15
        label=linux
        root=/dev/hda4
        read-only
other = /dev/hdc
# other = /dev/hdc is again the key.  This just redirects LILO to the
# MBR of the second disk.  Whatever is there gets control.
   label = Disk2
   map-drive = 0x80
      to = 0x81
   map-drive = 0x81
      to = 0x80

The /dev, boot, map and image entries are system specific and yours will probably be different that mine. The entries in your initial /etc/lilo.conf file should give you an accurate guide for your system. I copied the "Linux" entry from the original install generated lilo.conf file directly into the new lilo.conf. This should allow you to boot into "Linux" and modify your lilo.conf even if the "Disk2" entry fails totally.

Finally, run lilo -vvv to make sure it agrees with everything you are trying to do.


Next Previous Contents