and Booting Windows from an Extended Partition
by Dan Goodell
A personal computer normally has one operating system (OS) installed, such
as MS-DOS, Windows 95, Windows XP, etc. "Multibooting" is the process of
installing more than one OS on a computer and selecting at startup which OS
to use. Selection of the OS is made through a boot loader or boot manager
when the computer first starts up, and then the selected OS boots up normally.
The purpose of this document is to help you understand the inner workings
of the multiboot process.
It is not a "HOW-TO" guide with step-by-step instructions you can blindly
follow without understanding what you are doing.
It is certainly possible to install a multibooting setup without understanding
all this (and many people have successfully done so), but the information
provided here is intended for the user who likes to understand how things work.
To find step-by-step instructions elsewhere on the web, search
with search terms like "dual-boot" or "multibooting", or
see the links section for some selected
There are many ways of installing a multiboot configuration. Some--notably,
the boot loader Microsoft includes with Windows NT/2000/XP systems--make
multiple operating systems boot through a common boot partition.
Third-party boot managers, in contrast, typically keep OS partitions
completely separate and boot each OS completely from its own partition.
A few sophisticated third-party solutions may make use of proprietary
disk partition tables. This abnormal approach may permit you to create
lots of partitions and install lots of concurrent OS's, but it comes at
the expense of compatibility with other common disk utilities such as fdisk,
PartitionMagic, Norton Utilities, Ghost, DriveImage, TrueImage, et al.
Proprietary partition handling effectively "puts all your eggs in one
basket"--if the boot manager fails, you're in trouble because no other
disk utilities will work. To understand the ramifications of these various
approaches, we first need a little background.
Background - Sectors, Partitions, and LBA
A background in how hard disks are organized into partitions is important.
Detailed information is available in numerous books and elsewhere on the
internet, but this section covers the key elements we need to understand.
Background - The Boot Process
A background in the boot process is helpful, especially to understand how
the boot loader that comes with Windows 2000/XP is different.
Background - Multibooting Principles
Techniques for booting more than one OS generally fall into one of two
broad categories: the Microsoft way and everyone else's way. The two methods
use incompatible concepts and cannot simply be substituted for each other.
This section explains what we need to know about the differences.
Project: Multibooting Windows from an Extended Partition
This exercise illustrates one method of installing multiple operating
systems on a single hard disk, each of which can be booted independently
from the others.
It is not my intent to give you step-by-step details
of exactly how to install specific OS's, but rather to provide the broader
view of how everything fits together. I'm not here to say "do it this way,"
but rather to help you understand the concepts underlying multibooting.
It's the concept that is the point here, the actual tools and OS's shown
here are secondary to the purpose of this exercise.
I'm assuming a certain level of technical background here, but if you're at
least semi-techie you should be able to follow what's going on.
(See the links section for some links to
specific step-by-step installation examples elsewhere.)
The subject for this exercise will be a single 40 GB hard drive on which
we will install five operating systems and two supplemental partitions for
data. We will subdivide our drive with the following partitions:
When we boot any one of the operating systems we want all other OS partitions
to be hidden, but want the two data partitions to remain visible. Our data
files can then be accessed regardless of which OS we boot into.
Hiding a partition means it is ignored while another OS is booted--it will
not be assigned a drive letter, and files on it will not be accessible.
Partitions can be marked hidden via the hard disk's partition table(s),
but a boot manager can alter those according to our preferences--we'll use
our boot manager to control which partitions are hidden.
By configuring the boot manager to selectively hide partitions, we can
make our bootup options look like this:
0.1 GB Pri-1 FAT16 (DOS)
3 GB Pri-2 FAT32 (Win98)
6 GB Pri-3 NTFS (WinXP)
28 GB Pri-4 Extended partition containing:
6 GB Logical-1 NTFS (Win2000)
3 GB Logical-2 FAT32 (another Win98)
3 GB Logical-3 FAT32 (My Data)
16 GB Logical-4 FAT32 (Backups)
Limiting the number of OS's would make for a less complex multiboot setup,
but part of the purpose here is to explore how to install OS's in an
extended partition and how to hide logical volumes that are in the extended
partition. If you can follow how all of this works with a complex example,
you'll be better prepared to make adjustments and choices for your computer
and the tools you have available.
This project includes only Microsoft OS's. It may not be hard to include
Linux in the plan, but I haven't tried it so can't comment further.
We'll use a mix of FAT32 and NTFS partitions just to prove we can.
Boot option-> DOS Win98 Win2000 WinXP Alt98
Pri-1: C: hidden hidden hidden hidden
Pri-2: hidden C: hidden hidden hidden
Pri-3: hidden hidden hidden C: hidden
Log-1: hidden hidden C: hidden hidden
Log-2: hidden hidden hidden hidden C:
Log-3: D: D: D: D: D:
Log-4: E: E: E: E: E:
Our objective is to keep all OS's completely independent from one another.
No fair installing two OS's in separate directories of the same partition
(they'll share some files and won't keep one OS from touching the other's files),
and no fair using the native boot loader (ntldr) in Windows 2000 or XP to control
multibooting (they're not independent because they rely on the same boot partition).
Ideally, we want to be able to backup and restore each partition independently,
and with neither reliance on, nor interference with, any other partition or OS.
In addition, if we avoid resorting to the proprietary partition tables
employed by some boot managers, we can still get at things with common
disk management tools when we need to.
Overview of the Project Plan
An easy way of installing multiple OS's is to install the first one, hide its
partition, install the second, hide it, and so forth. The partitions will be
selectively unhidden for booting by the boot manager. This works fine for
simple dual-boot or triple-boot systems where all OS's can be installed in
primary partitions, but another method must be used if we want to install any
Microsoft OS in a logical partition. For that, we need to install the OS in
a primary partition and then relocate it intact to the logical partition.
The general plan I'll use here will be to install each operating system as
a solitary OS, make an image of it, wipe it out, and repeat until we have
images of each OS as a standalone system. Once the images are created we will
put them all together, modular fashion, by creating the finished partitions
of the desired sizes and then restoring the OS's where we want them.
Lastly, we'll plug in the boot manager to tie them all together.
This isn't the only way (or even a very efficient way) to install a multiboot
system, but it does guarantee each OS can stand on its own independently of
all others, and makes it easy to focus our attention on how the pieces fit
together without getting distracted by differences in installation routines.
Whether or not you plan to make backup images or erase a pre-installed OS is
not important--stay with me here: it's the theory we're after.
Useful Tools and Utilities
We will use a number of utilities in the course of this project, but I do
not mean to suggest you need to use the same tools. I'll use these tools
because they simplify the tasks at hand and leave us to focus on the
underlying concept of what we're doing rather than how we're doing it.
Creating an Image of Each OS Installation
Let's get to work. Install each OS alone and save a backup image of it.
Clear the working partition between installations. We'll put them all together
in the next step, but for now we're just making sure each installation gets
properly configured with its system partition as drive C: and is not interfered
with by other existing OS's.
The order we create the OS images is not relevant (they're supposed to be
independent, remember?), but if we leave DOS for last we can save a step and
just leave it installed when we're done.
DOS will also be the partition into which we will install the boot manager
Putting Everything In Its Place
Once we have all the OS images we restore them, modular fashion, so they are
all in place at the same time. Before some OS's may boot, though, we may need
to make a few tweaks.
Fixing Boot Records in Logical Partitions
A logical volume in the extended primary partition does not usually contain
an operating system, and there is not normally a boot record there.
(Okay, maybe there's technically a "boot sector", but it's normally blank
unless we put an OS there.)
If we put an OS and boot record there we need to check the boot record to
make sure it knows where to find itself.
Petr Soucek has documented that a key
parameter in the partition boot sector may prevent an OS from booting from
an extended logical partition. This parameter, "Hidden Sectors",
should be the total number of sectors on the disk preceding the partition,
but for a logical partition the value may be incorrectly initialized by the
tool used to create or manipulate the partition.
Sometimes it is the number of sectors from the start of the extended
partition (e.g., 63) instead of from the beginning of the disk.
If this number is incorrect the OS cannot determine where the other sectors
of its own partition are and the boot process hangs.
Powerquest's Partition Table Editor may be used to fix the "Hidden Sectors"
parameter in the partition boot record of any OS's installed in logical
partitions. Partition boot records in primary partitions are normally okay.
Windows 95/98/ME and the 8-GB Boundary
As shipped from Microsoft, the Windows 95/98/ME family was not designed to
boot from a partition that starts above the cylinder-1023 mark, (which
corresponds to about 8 GB). Although not widely known, it is possible to
patch the partition boot sector and eliminate this limitation. If we plan
to move any Windows 95/98/ME OS to a partition above the 8-GB boundary,
we may need to apply this patch to enable it to boot.
Fixing Windows 2000/XP BOOT.INI Files
Windows 2000/XP "knows" about other partitions, even if they're hidden.
If we've rearranged partitions since the OS image was made, we may need to
correct a value in boot.ini that specifies which partition it's
supposed to boot up.
Fixing Windows 2000/XP Drive Letters
Windows NT, 2000, and XP remember drive letters previously assigned to partitions.
This can create problems when cloning, duplicating, or moving these OS's.
Here is what we need to know to successfully handle these systems.
Installing the Boot Manager
Once all the operating systems are in place we need a way to control which
OS gets to start at boot time. That's the job of a boot manager.
The computer normally boots by passing control through the MBR on the first
sector of the hard disk. The MBR searches the master partition table for
the active boot partition, then passes control to that partition's boot
Boot managers work by inserting their own code in place of the MBR so that
at boot time control is diverted to the boot manager. The boot manager
presents a menu, and when the user selects an OS the boot manager
passes control to the corresponding partition boot sector.
It is not important whether or not you follow this exact procedure to
configure multibooting. In fact, most people probably will have a machine
that already has another OS installed and may prefer to setup multibooting
via a different method that doesn't involve deleting that partition.
The method documented here was intended to give you the big picture without
getting bogged down in OS-specific installation issues. Notice that by
modularizing the OS's like this it's easy to see that there does not need
to be anything in the master boot sector or partition tables that is
unique to a particular OS. Even the boot manager doesn't have to do anything
special for particular OS's, it just needs to adjust the partition tables to
hide or unhide partitions per our preferences and pass boot control off to
the selected partition boot record.
Most boot managers include some sort of manual with step-by-step instructions
on how to add multiple operating systems (either before or after the boot
manager is installed), but they don't provide much information about the
effect of the changes being made to the MBR, partition table and boot records.
Often they leave you with the impression that OS's make specific changes to
the MBR and partition tables that must be preserved or else that OS will crash.
This makes it difficult to evaluate what may happen if you wish to deviate
from the step-by-step instructions or if you have to revise or redo something.
I hope this exercise has provided insight into just what changes to the
partitions and boot records are made when you install multiple operating
systems and use a boot manager.
The purpose here has not been to tell you how you should create
your own multiboot setup, but to give you the background knowledge to tailor
your own plan.
Use some of these tools to study your own machine, then see the
links section for step-by-step instructions
from various other sources, and see if you can read between the lines to
understand what is going on in each step of the step-by-step instructions.
Perhaps the knowledge gained will help you make better use of the tools and
boot manager you choose to use.
Links to More Information
Appendix: Miscellaneous Notes
Appendix: An Introduction to Virtual PC®
Microsoft Virtual PC® is not just another way to multiboot, in the commonly understood sense.
It is an application that permits the user to simultaneously run multiple operating systems
in separate virtual machines on your Windows desktop.