The Linux "Linux-DOS-Win95-OS2" mini-HOWTO

By Mike Harlan (11 NOV 1997)

Introduction
After many days of struggle and frustration, I finally figured out how to accomplish what I wanted. I have a 1.2GB HD and 16MB RAM PC. I wanted to have 4 operating systems on my system: MSDOS v6.22, Windows 95, OS/2, and Linux. Until now, I have found no Linux HOWTO to perform the task of getting each and every one of these operating systems on one machine and still have the ability to boot each (it is possible to write the OSs to different partitions, but getting them to boot and not hang at the ``Starting MSDOS'' message, for example, is something that I had to figure out. Well, after much trial and error, I have come up with the following recipe to perform this feat:

Before I begin going through the procedure step-by-step, let me first clue you in on what I eventually wish to accomplish:

                           -   MSDOS v6.22                   11MB   P1       Primary Partition 1 -   Windows '95                  350MB   P2       Primary Partition 2 -   OS/2 Boot Manager              2MB   P3       Primary Partition 3 -   DOS/Win Data                 511MB   E1       Primary Partition 4 OS/2 Warp 3.0               127MB   E2       Extended into 4 logical Linux Slakware 3.2 Swap       XMB   E3       drives (sub-partitions) Linux Slakware 3.2 Native 219-XMB   E4       labeled E1-E4 -

What does all of this mean? Well, let me talk you through it. First, we need to use up all 4 partitions on our 1 harddrive. Partitions 1 through 3 are PRIMARY partitions. We will store MSDOS, Win95 and the OS/2 Boot Manager (which inefficiently requires its OWN partition) on these partitions, respectively. We then have 1 partition left. But, we want to have a drive just for DOS/Win95 data (this gives us a large place to dump all of those ZIP files we so often download from the Internet as well as a place to store Win95 programs and data that we don't have enough room for on the Win95 partition), OS/2, and Linux (both a Linux native as well as Linux swap partition).

Now, I've been getting a lot of grief through e-mail lately about why I have a separate partition for Win95 and one for DOS and one for Win95/DOS data. Here's my answer: having separate Win95 and DOS partitions isn't for everyone. Perhaps you don't even use DOS anymore. Perhaps Windows '95 is your answer for any software written for a Microsoft platform. Well, there are some people out there who still use DOS and can't live without it. Whether it's because DOS can run 16-bit applications faster and more efficient, or because the certain DOS program that you may use won't run under a Windows environment (the Gravis Ultrasound soundcard setup program comes to mind), you simply MUST be able to boot into DOS from time to time. This HOWTO was written with those people in mind. If you still have difficulty swallowing the fact that the word ``MSDOS'' is included in this HOWTO, then feel free to sit down and write a Linux-Win95-OS/2-only HOWTO. :)

Now, back to the diagram above. Like I said, we have 1 partition to cram 4 things onto: DOS/Win data, OS/2, and Linux native & swap. This can be done by creating what are called logical drives (or logical partitions, depending on which book you read) within the 1 primary partition. When we create these logical drives within a primary partition, we refer to this primary partition as an EXTENDED PARTITION (because it is extended beyond the scope of a single, primary partition and instead contains up to 3 subpartitions (logical drives)). Confused? If so, you might want to read the OS/2 manual about this topic. It will explain it better than I have here.

Now, you might be scratching your head saying ``he wants to cram 4 things onto that extended partition, but he just got done saying we can only have 3 subpartitions to put them on!'' This is true, at least in MS-DOS's and OS/2's reasoning. But, here one of the many powerful advantages to Linux comes to save the day. Linux can create more than 3 subpartitions on an extended drive. Just how many, I don't know. But, I know it can create at LEAST 4 (what we need). So, when we go through the steps of the installation procedure below, keep in mind that when we create partitions using an MSDOS or OS/2 program, we will only create 3 logical drives. Then, when we go to Linux, we will split one of them into two. Essentially, you can think of it as ``tricking'' MSDOS and OS/2 into seeing only 3 logical drives, but in reality (and to Linux), there will be 4.

The Procedure

 * NOTE:
 * Numbers in parentheses were the number of megabytes that I used on my 1.2GB harddrive.

Now, let's move on to the step-by-step procedure:


 * 1) Run   on the Linux Slakware CD and create the Linux Boot and Linux Root floppies. For some reason, the Linux bootstrap program calls the Root disk the Ramdisk floppy. I'll refer to this disk from now on as the Ramdisk (Root) floppy.
 * 2) Backup any information that you wish to keep to tape (or whatever media you have available to you).
 * 3) Boot your original MSDOS installation floppy, disk 1.
 * 4) When `` '' appears, press F5 to bypass  and.
 * 5) Run.
 * 6) Delete all partitions (you have been warned: DELETING / MODIFYING OF ANY PARTITION WILL RESULT IN THE LOSS OF ALL DATA ON THE DISK!).
 * 7) Add an MSDOS primary partition. (11MB)
 * 8)   this partition.
 * 9) Run   to install MSDOS on this partition.
 * 10) Boot OS/2.
 * 11) Select Advanced installation.
 * 12) Run  . (this will eventually popup for you if you run through the OS/2 installation)
 * 13) Add 1 primary partition after the MSDOS one. This will become our Windows 95 partition. (349MB)
 * 14) Add the Boot Manager to the next primary partition. (2MB)
 * 15) Add an extended partition.
 * 16) Add a logical drive to the extended partition. This will become the data portion of our MSDOS system. (511MB)
 * 17) Add another logical drive to the extended partition. This will become our OS/2 HPFS (``High Performance File System'') partition. (127MB)
 * 18) Add 1 last logical drive to the extended partition using the remaining space on the drive. This will later become 2 partitions under Linux â€” our swap partition and our native Linux partition. But, since OS/2 (and DOS as well) can only write up to 6 partitions per drive (3 primary and 3 logical drives housed within 1 extended partition), we have to create only one at this time. And we DO have to create this partition. Don't leave this as free space and expect Linux to be able to create the two partitions. Due to the way that OS/2's FDISK works, where you add your last logical drive to the extended partition marks the END of the extended partition. You cannot add partitions beyond this point. So, in other words, creating this one last logical drive serves as a space-filler for Linux. Later we will delete this partition and add 2 new ones in the space that it once took up.
 * 19) Add partitions 1, 2, and 5 to the Boot Manager.
 * 20) Make partition 5 installable. Your   screen should now look like this (or something like this):

 FDISK Disk 1 ___________________________________________________________________________ Partition Information Name           Status          Access          FS Type         MBytes ___________________________________________________________________________ MSDOS          Bootable        C: Primary      FAT              11 WIN 95         Bootable         : Primary      FAT             350 Startable       : Primary      BOOT MANAGER      2 None           D: Logical      Unformatted     511 OS/2           Installable     E: Logical      FAT             127 None           F: Logical      Unformatted     219 
 * 1) Continue on with the OS/2 installation process.
 * 2) Reboot and select partition 2 (Windows 95) from the Boot Manager.
 * 3) When the missing operating system error pops up, boot your MSDOS installation disk. We selected this partition in order to ``hide the MSDOS partition. OS/2's Boot Manager is a bit strange. For every bootable partition you have (in our case, MSDOS and OS/2), you can have only one of them visible at a time. What this means is that if you boot into one partition, MSDOS for example, the other partition (Win95) is invisible. The MSDOS partition and Win95 essentially SHARE a drive letter. That's why under ``Access above, MSDOS has drive letter C and Win95 has no drive letter. Under the current circumstances, MSDOS is visible with drive letter C and Win95 is invisible with no drive letter. If we were to boot Win95, the opposite would be true: MSDOS would be invisible with no drive letter and Win95 would be visible with drive letter C. An invisible drive cannot be accessed AT ALL. If you wish to copy files between two drives in which only one can be visible at one time, you must use a common (non-bootable) drive to swap files. In our case, the DOS/Win95 Data drive (drive D 511MB above) will serve as this common drive. You might be asking ``Won't we eventually be booting Linux also?''. The answer is yes, we will. But let's not get into that just yet.
 * 4) Install MSDOS to Partition 2 (we'll need this in order to install Windows 95).
 * 5) Boot Partition 2.
 * 6) Install Windows 95 to this partition (if you are running the upgrade version of Win95, you may need to have your Win3.1 installation disk 1 ready to insert).
 * 7) Boot Partition 1.
 * 8) Format Partition 4.
 * 9) Restore DOS data from tape (if any) to partitions 1 and 4.
 * 10) Boot the Linux Boot Floppy.
 * 11) Follow up with the Linux Ramdisk (Root) floppy.
 * 12) When you log in as root and get to the   prompt, type `` '' and press enter.
 * 13) Delete the last partition (the one we created in step 18).
 * 14) Add 1 16MB partition and tag it as filesystem type Linux Swap. (17MB)
 * 15) Add 1 last partition with the remaining cylinders on the disk and tag this as filesystem type Linux native. (198MB)
 * 16) Write the changes to the boot sector and reboot.
 * 17) When you get to the   prompt again, run.
 * 18) Install Linux to the last partition.
 * 19) When you install LILO, be sure to install it to the root of the last partition (NOT to the MBR, as you will destroy all of your previous work in this HOWTO if you do so). Add only the last partition to LILO and set the timer to zero. By doing this, when you select Linux from the OS/2 Boot Manager, LILO will activate and will then boot Linux from the logical drive on the extended partition. Since Linux is the only partition that we wish to activate from LILO, we don't need a timer on it (unless you have more than one Kernel that you wish to load. In this case, you may want to set the timer to something more than 0 seconds).
 * 20) Activate the Linux swap partition (refer to the Linux Installation and Getting Started Manual by Matt Welsh for this).
 * 21) Boot OS/2.
 * 22) Run FDISK.
 * 23) Add Linux to the Boot Manager using the Linux NATIVE partition (type   not  !).

Your  screen should now look like this (or something like this):

 FDISK Disk 1 ___________________________________________________________________________ Partition Information Name           Status          Access          FS Type         MBytes ___________________________________________________________________________ MSDOS          Bootable        C: Primary      FAT              11 WIN 95         Bootable         : Primary      FAT             350 Startable       : Primary      BOOT MANAGER      2 None           D: Logical      FAT             511 OS/2           Bootable        E: Logical      HPFS            127 None            : Logical      Type 82          17 Linux          Bootable         : Logical      Type 83         198

 ...And you're done!