How to Build a Dual-Booting Linux System on a Single Hard Drive
Having multiple Linux installations to work with allows you to easily test different libraries with the same program, watch how your program interacts with others, or just tweak a parameter here or there to see what happens. This comes in handy for development and testing — as well as for customer support. You say that you don’t have oodles of boxes to work with? No worries — installing multiple instances of Linux on a single box is a cinch, as you’ll soon discover in this tip from IBM interns Chuks Onwuneme and Farhan Khawaja.
As co-ops with IBM Developer Relations, our duties involve helping out the technical support staff to answer customer questions (in other words, we help the Help Desk). We work primarily with IBM WebSphere products — and one situation we have encountered often is the need to tweak machines to re-create actual customer problems.
Re-creating each problem literally means having the exact same system as the customer, and it is of course much more efficient to do this by partitioning and running multiple systems on each drive, than to have a separate box for each system. And so, some many months ago, we converted from the one-box-per-system method to multiple systems on each box.
Now we can (for instance) run two different versions of IBM WebSphere Application Server on the same OS. All that is needed is to partition a large drive (ours are generally 19G in the lab) into two halves, install the operating system on each partition, then install a version of Websphere Application Server on each partition. Thus, we have have multiple copies of similar environments running on one machine.
We work with various operating systems in the IBM lab, including several Microsoft Windows and NT flavors (Windows 2000 Server and Professional versions, NT Server and NT Professional), as well as AIX and Linux (Red Hat 6.2).
The Microsoft systems include a utility for multiple OS installations, and the conversions were accomplished with little difficulty. However, as we were new to Linux, the Red Hat systems gave us some trouble, especially as we had difficulty finding easy, clear documentation to guide us. This tip, then, is offered in the hopes that others who may be new to Linux and who are facing the same challenge will find it easily, and will find it to be clear, concise and easy to use. Please do let us know if we succeeded (you’ll find our email addresses at the top and the bottom of this article).
Our tip covers the installation of multiple instances of the same Linux distribution on a single drive (we use Red Hat in the lab). But with a few tweaks (or with help from some of the documents listed in the Resources section) you should have no problems creating a machine which dual-boots different Linuxes, or combinations of Linux and non-Linux operating systems.
In this tip, we used an older version of Red Hat because we were trying to build exactly the same system as the customer. Hence, the Red Hat version used here is a few years old, and uses the older 2.2 kernel. Newer Linux kernels handle multi-booting differently. It is advisable to upgrade to the newer version of the Linux 2.4(.x) kernel in any case, if you can, for security reasons. Moreover, most Linux installations today now offer GRUB instead of or in addition to LILO. This feature offers more advanced ways to handle the Linux multi-booting facility. Thus, the following tip might not be exactly useful if you are using a newer version that does not use LILO — but it should be indespensible if you are!
Red Hat Dual Boot: Installation Instructions
When you are ready to begin the process, first shut down your sytem and restart it. Then place the Red Hat Linux CD in the drive.
The Red Hat Linux installation routine will take you through a very simple install process. You will have to do some basic system configuration such as choosing the default language, the type of keyboard, and so on. Enter the proper information until the “Partitions” screen comes up.
When it does, click on the “add” button and select “Linux Native” as the type of operating system. For “size” type in 16 (megabytes), and choose /boot as the type of partition. The rest of the configuration is given below and can be achieved by repeating the instructions above for the particular partition:
/boot sda1 16M Linux native
/ sda5 1024M Linux native
swap sda6 256M Linux swap
/var sda7 200M Linux native
/tmp sda8 200M Linux native
Note that these directory locations are for SCSI drives. For IDE drives, simply replace the s in sda1 with an h (to give you hda1 for the /boot drive, hda5 for the root drive, etc).
Also note that the sizes used above were suitable for our hardware — they are not mandatory. You have the flexibility to choose any size that suits yours, especially as these days newer hardware can support various configurations. However, you don’t want to have too much space allocated to your “/boot” partition, as most of the space will end up being wasted — on the newest hardware, you’ll probably want an even smaller boot partition than we have. Other sizes could be used with the other partitions as well.
Installation Mark Two
Now you are ready to install your second instance of the Linux kernel. Follow these simple guidelines:
• Install lilo on the Master Boot Record (MBR) again
• Use linear mode (strictly needed for SCSI drives)
• Leave the kernel parameters blank
The initial install partitions should remain labled as ‘Not Set.’ Leave them as Not Set and add the five new partitions by clicking on “add” and installing just as specified above. All you need to do is keep adding the new partitions without deleting or editing partitions from the previous install.
The rest of the install remains the same. You can use any name you like (we used linux2). But if your label is more than one word, make sure to enclose it in quotation marks (i.e., “Linux 2” if you prefer to leave a space in). And of course, make sure to label the second install with a different name than the first.
After installation, the system reboots and brings up a prompt. Press the Tab key: this should display the label of the second Linux install. Type in “linux2” (or whatever name you gave to the second image) and press Enter, this will bring up the second Linux system which you just installed.
Next, we will edit the LILO (Linux Loader) configuration file, lilo.conf, to add a record telling Linux about the first install that we did.
To do this, go to the /etc directory and open the lilo.conf file in your favorite editor (you probably want to make a backup copy first, just in case). The lilo.conf code looks like this:
boot=/dev/sda #this points to the boot device
timeout=300 #if no activity in the specified time, load default image
Default="Linux2" #Linux1 will be displayed at the prompt
Vga=normal #video mode
image=/boot/vmlinuz=2.2.14-5.0 #location of boot image
Root=/dev/sda10 #location of root partition
Note that the comments (which are preceded by a #, or hash symbol), are ignored by the computer. They are included here so that you can see exactly what each line is used for — it isn’t necessary to include them in the lilo.conf file on your system unless you would like to have them there for your reference.
And again, remember to replace sda with hda if you are using an IDE drive.
Another way of configuring LILO
Here is an alternative to editing the lilo.conf file.
1. Open up a terminal window, and go to the “/root” directory and type linuxconf. This should bring you to the Linux command window where you can configure your system.
2. Scroll down until you get toBoot mode Under “boot mode,” you should see the options for configuring LILO. Select the second on the menu, “Configure LILO Linux configurations,” then click on the “LILO Linux configurations” tab.
3. Click on “Add.” You can then add the locations of the other Linux boot partitions and kernel files. If you’re not sure about what to add in each field, look at those already listed before typing anything.
Taking a look at the above lilo.conf file, you will notice that it belongs to the Linux install labeled linux2, the one we installed second during the install process. Now, to make LILO dual boot the first Linux instance installed on a the /sda5 (/hda5 for IDE drives) partition, add the following right after the last line:
So after editing the code above, the final file should look like this:
Make sure to specify the root path just as it is done on the last line, above — this is very important. Also make sure to list the label you used during installation.
Now save the file and type the command lilo at the prompt. This will recompile the file, and save the updated configuration.
Notice that the image/kernel remains the same for both installations (/boot/vmlinuz=2.2.14-5.0). Since we’re doing a dual boot of the exact same system, we’re installing from the same CD, therefore we have the same image file. If you are installing different distributions, these files will differ.
Now we are nearly done. Next you’ll want to issue the reboot command from the terminal: shutdown -r now. When the computer restarts, the LILO prompt appears. Press the Tab key and you should see:
At the boot prompt, type Linux1 to boot into the first Linux install that we did. When it comes up, you will need to go into its lilo.conf file — it will be very similar to the one we just edited for the second image, the only difference being that the default image is /sda5 (or /hda5 if you have an IDE drive), with a label of “linux1.” We will edit this file just as we did the other, adding these lines to the end:
Thus, the code for the entire file will look like this:
Save the file and recompile it by typing lilo at the command prompt. Issue the reboot command once more; when the system comes up, you’ll also be prompted to select the LINUX boot. When you hit the Tab key this time, you’ll be presented with the following list:
And that’s it! You have just built a dual-boot Red Hat Linux system. It should now prove trivial for you to install as many images as you’d like, or to install different versions of application software (as we did with WebSphere Application server and DB2) on the different partitions.
•Partitioning a drive for the first time can be nerve-racking. PowerQuest offers a product called Partition Magic to make the process easier.
•VCOM offers a rival product called System Commander 2000, which does more or less the same thing.
•The examples in this tip use LILO. You might also want to try the GNU GRUB Multiboot boot loader, a newer utility that does much the same thing but with more functionality.
•If you’ve never installed Linux before, you’ll find the The Linux Installation HOWTO by Eric Raymond to be an invaluable aid. For troubleshooting or a quick look at installation help, see Part 6 of the HOWTO, Installation In Detail.
•Installing Linux and Windows together is what LILO was made for. The LInux LOader (hence, LILO) has excellent documentation. But for a preview (or a quick version) of how to do this, see item 3 (The Simple Configuration) of theLILO mini-HOWTO .
•For advice on setting up a multi-boot machine with Linux and other operating system, read Operating system flexibility ( developerWorks , December 2000).
•The article Dual booting Win2K and Linux outlines one strategy for showing Linux how to recognize NTFS partitions as bootable.
•You say it isn’t multiple Linuxes that are giving you problems, but multiple disks (with or without multiple Linuxes on them)? Then you probably want to take a look at the Multi Disk System Tuning HOWTO.
•Don’t want to have to reboot all of the time to switch from one Linux image to another? No worries! The Development for Multiple Linux Distributions mini-HOWTO outlines a neat chroot trick that may save you the trouble.
•A high-end product that lets you run multiple operating systems simultaneously — so that you can, say, run Windows applications under Linux (!) — is VMware.
•Finally, why stop at two or three or ten measly installations of Linux on one box? Read how IBM programmers in Germany got 41,400 copies of Linux running on a mainframe from Earthweb’s developer.com.