To many multi-booting seems like killing a fly with a hand-grenade, but it is actually a very common set-up. In fact, this kind of set-up is so common that there are a number of different programs to do just that, both freeware and commercial products.

One of the first steps is to create enough space on your hard disk that you have room to install Linux. Alternatively, you could add a second harddisk to your system and still be able to boot Linux. During the installation process of all of the distributions I have used, if the disk you want to install onto is unpartitioned, the installation program will allow you to partition it. Some provide an extra program do the partitioning, but they all provide you with the standard Linux fdisk.

How you boot your new system depends on a couple of things. The first is what other operating systems you will be running. If you are going to share your disk between Linux and Windows 95/98, they cannot be used to boot Linux, instead you need to run the loadlin.exe program from a DOS prompt. (You can also create a batch script or a boot startup menu entry.) If you are running Windows NT, the NT bootloader can be used to boot Linux. In either case, you can use the Linux loads (lilo) to boot either Windows 9x or NT.

Another consideration is where you are going to store your data. As of this writing, some Linux distributions do not include a driver to read the Windows NT Filesystem (NTFS). Although a drivers is available with some distributions it is still very much in the alpha stage so I wouldn’t recommend it for any real work. Since Windows NT cannot (yet) read the default Linux filesystem (ext2), the only real common filesystem is the File Allocation Table (FAT). If you need to share your data with other operating system as well, then the FAT is probably the only one that is common to all of them. (My server is running SuSE Linux and makes all of the data available to all of the operating systems I need via SMB).

If you are planning to have a number of different operating systems, then it might be worth the investment to get one of the commercial boot managers. Some scan your partitions looking for systems to boot. The operating systems they find are then presented to you in a menu when the system boots. The nice thing is that it doesn’t matter where Linux resides, these boot managers can find them. In addition, they typically support all of the more common PC operating systems (as well as few less common ones).

Getting Linux to boot Windows is a fairly straight forward processes. Typically, the installation process will recognize that you have Windows on your system (or at least a DOS partition) . When you reach the point where you are configuring the boot options, you can configure the system to boot DOS as well. Otherwise, you will need to configure lilo to boot Windows (assuming you are using lilo as your boot loader). How you make these changes after the system is installed depends on the distribution of Linux you have. For example, SuSE uses the YAST administration tool.

You can also edit lilo’s configuration file yourself (etc/lilo.conf). This is not as tricky as it sounds. Each system you want to boot, whether it is a specific Linux kernel or Windows, is defined by a specific section within lilo.conf. Linux kernels are defined by the kernel image to be booted (using the image=) option and other operating systems are defined using the other= option and the device name to boot. A very simple entry might look like this:

other = /dev/hda1 label = DOS table = /dev/hda

This says to boot the device /dev/hda1. The label option is the name used to access this particular configuration. The table option says to pass the partition information to the respective operating system. Once you have added this this entry to lilo.conf. Simply run “lilo” to activate the changes.

If you don’t want to invest the money to buy a commercial program to repartition the drive, you can use the fips.exe program which is available from all the major Linux FTP sites as well as provided on most distributions. One thing to keep in mind is the location of the Linux partition. If your drive is configured with more than 1024 cylinders and the Linux partition starts above this, many BIOSes will not be able to boot your Linux system. This is not a limitation in Linux, but in the BIOS, as you will encounter this same problem with other operating systems, as well.

Note also that some references refer to a limit of approximately 520 MB. However, how much space you get before you reach the 1024 cylinder limit, differs from drive to drive. Although you typically get to 520 MB on IDE drives, EIDE and SCSI give you much more space.