The "standard" Microsoft setup for dual-booting NT and DOS requires that the bootable partition (C:) be formatted as FAT16. The option to boot into DOS is automatically added if the NT installation program finds a DOS boot sector in place on C:. If C: is formatted as NTFS, it won't find one (since DOS cannot be installed on an NTFS partition), so you have to set up the dual-boot manually.
The basic steps required to make a dual-boot configuration where C: is NTFS are:
However, there are some restrictions that must be observed for the procedure to work. All of the following must be true:
If you violate any of these restrictions, DOS may install but will not boot.
Except as noted, this procedure will also work identically with Win95, and all references in this procedure to "DOS" may be replaced with "Windows 95." You may choose to store the Win95 boot sector in BOOTSECT.DOS (NT doesn't care what the file is called), or you may choose to use a more descriptive name, such as BOOTSECT.W95 (if you do, you must specify the boot sector filename explicitly in BOOT.INI in STEP 3 below).
If you plan on installing DOS and Windows 95 on an NT installation, you may find the following additional articles of use:
The FAT partition on which you want to install DOS must be a primary partition, not a logical partition (logical partitions reside within an extended partition). This is because the standard DOS boot sector code cannot understand the "partition within a partition" layout of extended and logical partitions. Also, this primary partition must reside on the same hard drive as the NTFS boot partition (the BIOS sees this drive as Drive 0).
Note specifically that this procedure will not work if you temporarily reset the drive configuration to make a second hard drive Drive 0 in order to install DOS. The DOS partition must be on Drive 0 at boot time, not configuration time, in order for DOS to boot.
While the boot sector code does appear to have support for booting from other drives, I have never seen this work, and indeed in some versions of DOS, the FORMAT command writes a boot sector that is hard-coded for drive 0. Microsoft KnowledgeBase article Q100525, titled Definition of System and Boot Partition, says this about bootable partitions:
The system partition refers to the disk volume containing hardware specific files needed to boot Windows NT (NTLDR, BOOT.INI, and so on). On Intel x86-based machines, it must be a primary partition that has been marked active. On x86 machines, this is always drive 0, the drive the system BIOS searches during system boot for the operating system.
If your target DOS partition is currently a logical partition, you must remove the partition and recreate it as a primary partition (be sure to backup anything you need before deleting). As your current bootable NTFS partition is also a primary partition (it must be for the BIOS to boot it), your DOS partition will become at least the second primary on the drive. The DOS version of FDISK will not create more than one primary partition on a drive (DOS does, however, internally support multiple primary partitions). The NT Disk Administrator program WINDISK can be used to create the second primary partition as it does support the creation of multiple primary partitions.
Once you have a second primary partition for DOS, format your target DOS primary partition as FAT16 (using the DOS FORMAT command). You should then be able to install DOS to that partition from diskette.
Note that DOS will not see NTFS partitions, so the drive letters of the partitions will not necessarily be the same ones as seen from NT. You can alter your drive letters as seen from NT using the NT Disk Administrator; the drive letters under DOS are not alterable. If you are interested in the method by which DOS assigns drive letters to partitions, see Microsoft KnowledgeBase article Q93373, titled Default Drive Letters and Partitions in Windows NT, for details.
I strongly recommend labelling your partitions using the DOS and NT LABEL commands so that you can positively identify them, even if the drive letters change. By verifying the partition label before reformatting, you can be sure you're formatting the correct partition.
After installing DOS, test the new installation by marking the DOS partition "active" (using FDISK) and rebooting. Your system should boot directly into DOS (bypassing the NT boot loader menu). If DOS does not start, then troubleshoot the DOS installation first before proceeding.
After successfully testing your DOS installation, mark your original NT primary partition (NTFS) as "active" so it will be used to boot.
You must now make a BOOTSECT.DOS file from the boot sector of the DOS partition and store it on C:\ (i.e., in the root directory of the NTFS partition).
Note that you cannot simply copy a BOOTSECT.DOS file from another installation, because the boot sector contains an internal table (used to locate the root directory) that describes the physical layout of the drive and partition on which it was created, e.g., the number of heads, the number of sectors per track, the location of the partition in sectors from the start of the drive, the size of the File Allocation Table, etc. This physical information will not, in general, be correct unless you're copying it from a system with an identical partitioning layout on an identical hard drive (not just the same capacity, but the same number of cylinders, heads, and sectors per track).
To capture the DOS partition's boot sector, log on to your NT system as Administrator. Copy the following text into a new file called READ.SCR:
L 100 * 0 1 N C:\BOOTSECT.DOS R BX 0 R CX 200 W Q
...where the "*" in the first command is replaced by the number corresponding to the drive letter of the DOS partition. Use 2 = C, 3 = D, 4 = E, and so on (the letters are those assigned to the partitions when running under NT). As an example, if the DOS partition is drive letter E:, the command would be "L 100 4 0 1". Note that the partition number is entered in hexadecimal, so that drive letter J: is 9, K: is 0A, L: is 0B, etc.
Once you have made this text file, start an NT command prompt, change directories to the location of this text file, and run the DEBUG program as follows:
debug <read.scr
This will create the file C:\BOOTSECT.DOS from the boot sector on the DOS partition. If the DEBUG command reports any errors, check your text file carefully to see if you made an error in entering the commands.
You can verify that the boot sector was correctly written to the BOOTSECT.DOS file by examining the file with a hex dump program (or by using DEBUG). Look at the first few bytes and also at the last few bytes for the following strings:
First bytes Last bytes Boots Which Operating System -------------------- -------------------- ---------------------------- MSDOS5 IO SYSMSDOS SYS DOS MSDOS5 NTLDR Windows NT MSWIN4 WINBOOT SYS Windows 95
In the file C:\BOOT.INI, add the line:
c:\bootsect.dos="MS-DOS"
or
c:\="MS-DOS"
to the "[operating systems]" section (either line will work; use the former if you're booting multiple operating systems using separate BOOTSECT files). The BOOT.INI file has hidden, read-only, and system attributes. You must remove these attributes before editing, and replace them when you are finished.
You should now be able to boot to DOS from the NT boot loader menu!
I have never used OS/2 or Linux, so I regret that I cannot offer advice or assurances that this process will work for those operating systems, though I know of no reason why it would not.
Good luck!
Copyright © 1998 Palomar Corporation. All rights reserved.
While links to this article are welcome, reproduction of this article, either in
print or on the World Wide Web, is expressly prohibited without prior approval
from the author.
Page last updated August 26, 2000.