<!doctype linuxdoc system>
<article>

<title> Managing Multiple Operating Systems HOWTO
</title>

<author> Robert W. Schultz
</author>

<date> v0.4, 17 Feb 2000
</date> 

<abstract>This HOWTO covers the procedures for using  removable hard disks
to install and manage multiple alternative operating systems while leaving
a single fixed disk to permanently house and protect the primary operating
system. It is very scalable and offers a good degree of protection to
and a stable disk environment for the primary operating system.
</abstract>

<toc>
<sect>Introduction
<sect1> Copyright
<p>
Copyright (c) 2000 by Robert W. Schultz.
<!-- license.H begin -->

Please freely copy and distribute (sell or give away) this document in
any format. It's requested that corrections and/or comments be forwarded to
the document maintainer. You may create a derivative work and distribute
it provided that you:


1.Send your derivative work (in the most suitable format such as sgml)
to the LDP (Linux Documentation Project) or the like for posting on the
Internet. If not the LDP, then let the LDP know where it is available.

2.License the derivative work with this same license or use GPL. Include
a copyright notice and at least a pointer to the license used.

3.Give due credit to previous authors and major contributors.

If you're considering making a derived work other than a translation,
it's requested that you discuss your plans with the current maintainer.

<!-- copyright.H end -->


<sect1> New Versions of this HOWTO
<p> New versions of the Managing Multiple Operating Systems HOWTO will
be available to browse and/or download at LDP mirror sites.  For a list
of mirror sites see:

<url url="http://metalab.unc.edu/LDP/mirrors.html">.

Various formats are available.  If you only want to quickly check the
date of the latest version look at

<url url="http://www.linuxdoc.org/HOWTO/MultiOS-HOWTO.html">

and compare it to this version: v0.4, 17 February 2000

<sect1>Feedback
<p> Please send any questions, comments, or suggestions to  <tt><htmlurl
url="mailto:rwschul@smart.net"> (Robert W. Schultz)</tt>.  I am very
willing to help others with problems directly relating to this HOWTO
and will entertain any suggestions for changes/modifications and/or
improvements.  However, having set up my system to my satisfaction,
this HOWTO won't be significantly improved without reader input.

<sect> Purpose and goals:

<p>The purpose of this HOWTO is to describe a methodology for managing
multiple operating systems on a single computer system.  It is intended
for Linux users who have a basic familiarity with both Linux and LILO
installations.  Nothing here is terribly complex however, considering
the amount of time it takes to install some operating systems it can be
relatively time consuming.

<p>It is different from other methods in that it doesn't require multiple
operating systems on the boot disk.  Instead it uses a fixed internal disk
containing a single primary operating system and a selection of removable
disks with one or more operating systems installed on each of them.
If you absolutely have to have two, three, or four different operating
systems on a single disk and are trying to get them to behave with each
other, this HOWTO is not for you.

<p>Its specific goals are:

<p>* - A primary/operational disk that once configured and installed
is rarely changed.  This includes not having to repartition or
otherwise modify the disk it resides on.

<p>* - Easy selection of multiple alternative operating systems at boot
time without having to go through more than one or two menu selections.

<p>* - No need to modify the BIOS, LILO, or any other configuration to
access an O/S once it is installed.

<p>* - Easy addition/removal of operating systems depending on
requirements at the moment.

<p>* - Inexpensive and scalable to allow for an increasing number of
operating systems and versions as time goes on.

<p>I think I succeeded admirably in the first three of these requirements.
You can form your own opinions on the last two.

<sect> Background: <p>Even though Linux is becoming much more user
friendly and widely accepted, most of us still need access to other
operating systems.  I use Linux about 75% of the time but I still
need access to Win 9x for those few applications that I haven't found
acceptable alternatives for in Linux.  My wife uses MS Office at work and
wants to have access to it at home. Other people want to have access to
alternative O/S just for fun, training, or to keep current in their job.

<p>I tend to treat new O/S's as you would a game; I actually don't do
anything productive with them but installing and learning how to control
them is just as challenging and interesting to me as Quake or SimCity.
Further, being a Computer Scientist, it keeps me current on evolving
technology and has helped me solve a multitude of problems at work.
At any rate, for new Linux users, computer professionals, and those just
trying to migrate from one operating system to another, I believe using
multiple operating systems is the norm rather than the exception.

<sect> System requirements:

<p>BIOS - Any bios that allows automatic identification of disk drive
geometry and allows you to select the sequence of devices to boot from
should work.  I successfully built systems based on both PhoenixBIOS
4.0 and AMI Plug and Play Flash BIOS.

<p>DISKS - One fixed internal disk dedicated to Linux. (first disk)
One Removable drive enclosure, with any number of drives. (second disk)

<p>Since a lot of this HOWTO has to do with disks, from now on I will
generally use the terms "first disk" and "second disk".  The first disk is the
one initially accessed when the machine is turned on, commonly known as the
boot disk.  It has LILO installed in the MBR and is dedicated to a single
operating system, specifically Linux.  The second disk is a removable disk
that contains one or more alternative operating systems which may or may not
have a boot loader in the MBR or elsewhere.

<p>There are no other hardware/firmware requirements.  Any other
requirements would be dictated by the specific O/S.  For instance, even
though you could install it, Solaris 7 is not going to run well on an
old 90MHz machine!  The configuration and methodology described here
should however work equally well regardless of the CPU speed or other
installed peripherals.

<p>Operating Systems - I have tested this process with Linux (Redhat
and Suse), Solaris 7, BeOS, Win 98 and even MSDOS 6.22. I see no reason
why it wouldn't work with Win 95, O/S 2, or FreeBSD.  I am not familiar
with Windows NT or 2000 so I don't know how they would react to this
kind of setup.

<p>Boot loader - I used LILO on the first disk and BeOS bootman on the
second disks.  I used LILO on the first disk because it was the only
boot loader that allowed me to select the MBR on the second disk as an
acceptable boot partition.  Any relatively robust boot loader should
work on the second disk.

<sect> How it works (a scenario):

<p>Prior to ignition, I insert a disk, preloaded with an operating system
in the removable drive.  When I turn on the machine, I am presented at the
LILO prompt (by pressing &lt;tab&gt;) with "Linux" and "Disk2" as options.
Linux is the default and would automatically boot if I did nothing.
When selected, Disk2 either boots directly into the single O/S stored on
the second disk or presents me with a second boot menu if there is more
than one O/S on that disk.  If I power down, replace the second disk with
another and power back up, I still get the initial Linux/Disk 2 menu and,
if I select Disk2, a new menu appropriate to the newly inserted disk.
Once installed, I never have to modify the LILO configuration on the
first disk, I never have to change BIOS setting to boot from the second
disk and I never have to go through more than two menu selections to
get my selected O/S up and running.

<sect> The installation:

<p>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.

<sect1> Installing the primary operating system

<p>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
<url url="http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html">
for details on installing Linux.

<p> 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.

<p> 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.

<p>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. 

<p> 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.
<sect1> Installing alternative operating systems

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

<p>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.

<p>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.

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

<p> 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.

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

<p>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.


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

<p>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.

<sect1> Final BIOS and LILO configuration:

<p>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.

<p>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.

<p>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.

<p>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...

<verb>
# 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
</verb>

<p>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.

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

<sect> Cost and  gotcha's:

<sect1> Cost:

<p>I found a Frame and 1 drawer removable drive mount for $20.00.
It is the  "SNT MOBILE RACK".  Disks didn't cost me anything because I
had several old or small IDE drives around from upgrades etc.  Even if
you have to buy them, 2GB IDE drives are cheap.

<sect1> Gotcha's

<p>1.  Once you decide whether your removable drive is going to be a
master or slave, make sure and jumper it properly before securing it
in its case.  If you forget this step it can take quit a while to trace
booting problems back to an improper jumper setting.

<p>2.  Make sure that O/S installation routines can ONLY see the drive
they are installing to.  RedHat refused to let me install LILO to the
SCSI MBR if it could see the IDE drive.  So, to install to an internal
SCSI drive, I had to physically remove the IDE.  To install to the IDE,
I had to disable SCSI support in the BIOS.

<p>3. If an O/S installation routine tells you it is going to repartition
ALL your drives and overwrite EVERYTHING believe it.

<p>4.  It is very easy to install an IDE cable backwards.

<p>5.  I only tested an IDE master/master set up.  I am not sure how a
master/slave would work.

<p>6.  Installing the removable disk frame does require opening up the
computer case.  If you are uncomfortable with this get a friend to help.

<p>7.  If you set the removable disk to a specific disk type in the BIOS
it will work fine until you replace it with another disk of a different
type.  Then you will get errors or warnings and the system might not boot.

<p>8.  Plan everything in advance.

<p>9. With a quick change to the BIOS, the second disk becomes your
boot disk.  This means that you can have a fully functional O/S available
as your emergency/recovery disk.

</article>


