Though many of us prefer using only one operating system on our personal computers for our daily tasks, there may be times when we would like to install two or more operating systems on the same computer. Let us suppose, you are required to use MATLAB 6.0 for your engineering applications; design, program and implement a web site using PHP and the back-end database using MySQL (as a part of an enterprise-application development project) and also learn how to configure a packet-filtering Firewall using IPFW. As it so happens, the MATLAB software runs on Microsoft Windows platform, the MySQL database you want to implement on the Linux operating system and last but not the least, your professor at the university is teaching "how to configure a packet-filtering Firewall using IPFW" using the FreeBSD operating system software. In such situations, you can safely fall back on the "multiple-booting" mechanism and of course refer to this guide from time to time.
This document represented in the form of a Guide, is intended to help those Windows, Linux and FreeBSD/OpenBSD users who believe in the method of "learning by doing". Multiple-booting systems is not an exact science. You come across a document, you read it, find it interesting, do it yourself, make mistakes and then finally you achieve the desired aim. That is how you are supposed to learn. That is how I learnt. That is how the Unix experts learnt a long time back. By the time a reader finishes reading this guide, he would have a clear understanding of the basic topics required for successfully installing and configuring three different operating systems on the same hard disk of a computer. I have tried my level best to describe each and every topic in a clear and easily understandable simple language.
Most installation HOWTOs and guides (for Linux, FreeBSD and OpenBSD operating systems) which are available on the Internet are incomplete because they assume too much leaving the reader to do most of the difficult stuff themselves. In this guide, I illustrate every step thereby making the entire process a simple walk through.
The Webster's New World Computer Dictionary (9th edition) by Bryan Pfaffenberger, defines the term "dual-booting" as: A computer that enables the user to choose between two operating systems at boot time". Rightly so. Considering this definition as our boilerplate, we may frame our own definition of a "multiple-booting" or (in short) a multi-boot system i.e., a computer that enables the user to choose between more than 2 operating systems at boot time.
This document explains how three varying operating systems can be successfully installed and configured on the same hard disk of a computer thus enabling it to become a "multi-boot" system. The operating systems chosen for this illustration include: either Microsoft Windows 95/98(Second Edition)/Millennium Edition(ME)/NT/2K/XP, FreeBSD 4.7-RELEASE/OpenBSD 3.2-RELEASE and Red Hat Linux 7.3. I would install a Microsoft Windows operating system first, then either FreeBSD 4.7-RELEASE or OpenBSD 3.2-RELEASE and finally round-off by installing Red Hat Linux 7.3 (Valhalla). GNU GRUB is the boot-loader used for booting these three operating systems.
An idea or thought as: "Hey! Dual and multi-booting computer systems only has advantages and absolutely no disadvantages" is wrong. Often an important question which readers do ask is: Where does it make sense to multi-boot a PC? The answer to this question is simple: Multi-booting systems only makes sense where you would like to experiment with a number of configurations (or operating systems in general) than you have computers for and more significantly where no data is at risk.
Let us consider a situation like this: Peter has a single PC at home which runs Slackware Linux. All his significant documents and downloaded files from the Internet are stored on it. He now decides to learn and practice hacking the FreeBSD Kernel. Thus, he decides to make his PC a dual-boot system. Converting one's only or in other words, the primary PC at home or at work into a dual or multi-booting system is a bad choice. If a primary home PC must be used as a dual or multi-booting system, it will be much safer to add a second hard disk and leave the first relatively untouched. A powerful boot-loader like GRUB will allow booting from the other hard disk.
The Computer Science Department at my university has 15 laboratories for varying purposes that runs hardware ranging from i386s to Sun SPARCs. Where data and security is of absolute concern, computers run only one operating system whether Windows 2000 Professional, Red Hat Linux, Slackware, FreeBSD or Sun Solaris. However, we do have "test labs" of about 10-12 PCs each, where we have dual and multi-booting systems running ASP Linux, Red Hat Linux, Slackware, Windows 2000 Professional, FreeBSD and others. This can be considered as an ideal situation.
Though each and every step required has been explained from the very ground-up, yet a few significant assumptions have been taken into consideration while writing this guide, a few of which are as follows:
- The reader possesses some theoretical and practical experience of partitioning hard disk drives utilizing Microsoft fdisk, BSD style partition table editor, Linux fdisk and so on.
- Understands hard disk drive geometries, concept of a primary partition, an extended partition, logical disk drives within an extended partition; Linux disk naming and partitioning schemes, BSD style disk labeling and partitioning schemes.
- Possesses theoretical and practical experience of compiling and configuring custom Linux and BSD Kernels.
- Knowledge of basic Unix commands common to both Linux and FreeBSD/OpenBSD operating systems. For example, mounting filesystems, editing configuration files like the /boot/grub/grub.conf on Linux and other such trivial tasks.
- The reader is using an Intel x86 computer system. I would be installing Windows, FreeBSD/OpenBSD and Linux operating systems on IA32 platform.
- The reader is using a hard disk whose BIOS supports the Logical Block Addressing (LBA) mode of representing data on the disk. By using LBA mode, the 1024 Cylinder Limit on old hard disks is dealt with.
Do not worry if you do not know some of these yet, simply read on because the most important steps would be explained in detail in the forthcoming sections as when required. Anyway, before proceeding any further, make sure you browse through the Frequently Asked Questions (FAQ) section of the guide.
I would like to thank all the following people and projects without the help and active participation of which, this document would never have been possible. Some of them include:
- Guylhem Aznar <guylhem at metalab dot unc dot edu>, Chief coordinator, main contact of “TLDP” for making this guide possible.
- Tabatha Persad <tabatha at merlinmonroe dot com>, Linux Documentation Project Review Coordinator, for technical reviews and for answering my million queries.
- Michael K. Johnson <johnsonm at redhat dot com>, for the excerpt from his "Linux Information Sheet" at the TLDP site, mentioned in Chapter 1 of this guide on Linux.
- Microsoft Corporation for using important information on Microsoft tools and technologies mentioned in Chapter 2 of the guide.
- To each and every Open-Source community contributor and to all my friends all around the world.
Additionally, while writing this guide, I consulted the following printed books, online journals, magazines and official papers:
- Modern Operating Systems, by Andrew S. Tanenbaum
- Understanding the Linux Kernel, by Daniel P. Bovet, Marco Cesati
- Red Hat Linux 8 Bible, by Christopher Negus
- Red Hat Linux Official x86 Installation Guides at http://www.redhat.com
- Linux Gazette and Linux Focus online magazines at http://www.linuxgazette.com and http://www.linuxfocus.org respectively.
- The FreeBSD Handbook at http://www.freebsd.org
- The FreeBSD FAQ at http://www.freebsd.org
- The OpenBSD FAQ at http://www.openbsd.org
- The Official Microsoft Windows Installations Guides and FAQs at http://www.microsoft.com
Trademarks are owned by their owners.
Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk.
Copyright (c) 2003, Subhasish Ghosh
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is located at www.gnu.org/copyleft/fdl.html, in the section entitled "GNU Free Documentation License".
Subhasish "savvy" Ghosh has been working with GNU/Linux and FreeBSD (and more recently OpenBSD and Sun Solaris) operating systems for the past 7 years or so since schooldays. During this time, Ghosh worked for a number of Linux and Linux-related projects, which included Linux Kernel source code hacking; analysis, design and implementation of Inter-Process Communication (IPC) mechanisms in Linux and FreeBSD, Red Hat Linux desktop, workstation and server installations, configurations, troubleshooting and others. Additionally during the past few years, Ghosh has written a number of articles on Linux Kernel compilation, GNOME programming and a host of others for Linux.com, Linuxgazette.com and Linuxfocus.org Online magazines.
Currently, aged 22, Ghosh is an engineering student at the Moscow Power Engineering Institute (Technical University) at Moscow, Russian Federation; specializing in the field of "Informatics and Computer-Science engineering". He is a Microsoft Certified Professional (MCP), MCSD, MCP Certified on NT 4.0; additionally has a host of other GNU/Linux and computer-industry related certifications. His web page can be accessed at http://groups.msn.com/Linuxdump.