dual boot windows nt and unix


how can I create a dual boot system with UNIX and windows nt on a PC?
Any good resources where I can look for or advice?


Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

There are 2 steps: Partitioning the disk and then setting up multiboot.

Try Partition/System Commander http://www.v-com.com/products/pc.html
or Partition Magic http://www.powerquest.com/partitionmagic/index.html PLUS PowerBoot http://www.boot-manager.com/

If you bought Unix on a CD, there may be utilities there, e.g. with RedHat Linux, fips.exe in the dosutils directory.

If you have 2 hard disks, you could install one O/S on each and specify in the BIOS which to boot from without using any utilities.
What flavour of Unix do you want to install?
Install NT on C drive.....
Use Partition Magic 5 and create a Linux Native Partition (??MB you want)
Create a Linux Swap Partition (max 128MB)

Then install Linux....
During installation it will ask where to mount root file system
Put a / next to the Linux Native Partition
then it will ask which partition for the swap file
choose your linux swap partition.

Later on in the installation it will ask you if you want to put boot info on the hard drive or floppy.  I have mine on a floppy and when I want to use Linux I just pop in the floppy and reboot.

Hope this helps

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial


(8.1) Can I install Solaris x86 on a system that already has Win 9x or NT or both (among other systems)?

When you run the 2.6 install program, it will ask you which partition you wish to use. On disk1, all you need to do is to create another partition on your existing disk. You can use Solaris boot manager to boot Solaris x86, NT, and Win 9x (among other systems).

To shrink an existing MS-DOS/MS Windows partition, if you need to make room, use something like Partition Magic.

Problems have been reported inter-working with OS/2, however. Reportedly, the order in which you install things is very important. Solaris doesn't "share" computers and partitions really well. You need to install Solaris first, on a partition towards the end, reinstall the boot manager and add the partition.

Other options for booting is to use System Commander (see question below), IBM's Boot Manager (bundled with Partition Magic or OS/2), FreeBSD's OS-BS (see question below) or OS-BootSelect (open source), instead of the Solaris' Boot Manager.

FreeBSD has a good page on booting multiple operating systems that apply quite well to any Intel-based operating system at http://www.freebsd.org/tutorials/multios/multios.html 

[Thanks to Barry Katz, Brandon Hume, Joseph A. Faracchio, Joelle Nebbe, Eugeny Kuzakov, and Sean M. Kelley]


(8.2) How can I use MS Windows' NT Loader to boot Solaris/x86?

The general idea is that you copy the first sector of your native root Solaris/x86 partition into a file in the DOS/NT partition. Assuming you name that file something like c:\bootsect.sun (inspired by c:\bootsect.dos) you can edit file c:\boot.ini (after saving boot.ini to boot.old): to come up with something like this (partitions starting with 1):

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT"
C:\BOOTSECT.SUN="Solaris Intel"

This procedure assumes that DOS and NT have been installed onto the first ATAPI disk and Solaris/x86 or whatever have been onto the second disk (use "scsi" instead of "multi" for SCSI drives). Note that in order to use the Windows NT boot loader, the NT partition must be the active boot partition. Solaris/x86 must also be the active boot partition, so must reside on another disk (This may be another reason to use a commercial product, System Commander--see question below).

Mount a DOS-formatted floppy (if you've converted C: to NTFS, which isn't readable from Solaris/x86) or a HD FAT partition (see question below), under, say, /mnt. Type:

dd if=/dev/rdsk/c0d0p0 of=/mnt/bootsect.sun bs=512 count=1
# (Note: The above is for ATAPI; use /dev/rdsk/c0t0d0p0 for SCSI.)

If the Solaris partition is on a separate drive (as in this example), you need to modify file bootsect.sun to tell it the boot drive. The bootsect.sun code assumes the drive ID is preloaded into the x86 DL register before the bootsect.sun is executed. This is done by the BIOS, but not the NT loader. The easiest way to fix this is to modify the bootsect.sun code with a binary file editor. The first instruction is a jump over the next 4 bytes (ASCII version ID "1.0 "). Use a binary editor to overwrite this with a "MOV DL,0x81" instruction and some NOPs. I.e., change the first six bytes from "eb 04 31 2e 30 20" to "b2 81 90 90 90 90" (in hex) and save it in file bootsect.sun. Some useful drive IDs are: 0x00 for the floppy drive, 0x80 for the 1st hard drive, and 0x81 for the 2nd hard drive.

Reboot into NT. Copy the bootsect.sun file from the floppy to C:\, if you haven't done so yet. Modify the DOS/NT attributes (permissions) on boot.ini with:

attrib -s -r c:\boot.ini

Edit to add the appropriate entries from the example boot.ini above, and restore the system and read-only file attributes:
attrib +s +r c:\boot.ini

An alternative to the Solaris "dd" command above is to use the "postcard-ware" program BootPart 2.2 from http://www.winimage.com/bootpart.htm. E.g., the following displays the partitions, then creates a boot sector file bootsect.sun and adds "Solaris" to the NT loader menu. Edit bootsect.sun as above.

C:> bootpart.exe
C:> bootpart.exe 1 bootsect.sun Solaris

[Thanks to Krejcarek Brian Grant, Louis Lam, and Matt Gillen]


(8.3) How can I use the Solaris boot manager to boot Windows NT?

Create 3 PRIMARY partitions on the disk in the following order
DOS FAT (to become NTFS)
empty (to become Solaris)

install DOS (or Win 9x) on Partition 1
Then install NT on partition 2, converting to NTFS while installing
Finally, install Solaris 2.6 on partition 3 using Solaris interactive.
Solaris boot manager will be the master boot controler, but then choose partition 1 to boot NT (yes that is right, not 2). Then the NT boot manager will come to life, allowing you to select either DOS (partition 1) or NT (partition 2). Note that Solaris is the active partition.

[Thanks to Claude Dumas]


(8.4) How can I use System Commander to boot Solaris/x86 and other systems?

To use System Commander to dual boot both Win NT and Solaris, make these two configuration changes to System Commander:

1. Use System Commander's local setup (Alt-s, Local config) to hide all other partitions from NT and Solaris (so they can't see each other's partitions).

2. Perform a step mentioned in the V-COM FAQ (www.v-com.com).

From main System Commander menu pick ALT-S.
select "Global Settings" but *DO NOT* press enter.
press "ALT-F9" which brings up an internal configuration menu.
Change the "Clear Items" menu choice from "MEMORY" to "NO" or "NONE".
press ESC to return to main menu.


(8.5) Can I install Linux and Solaris on the same drive?

Yes, with certain precautions. Be especially careful with RedHat Linux 6.1 (see below) Unfortunately, both Solaris/x86 and Linux swap partitions use the same ID, 0x83. So if you install Solaris on a drive with a Linux swap partition already on it, it will install on the Linux swap partition. You have two choices:

1. You can put the Linux swap partition on another drive (or not use a swap partition if you have enough memory).

2. You can install Linux after (not before Solaris). If you try the latter, the install program will probably ask if you want to format what it thinks is your Linux swap partition (and is actually your Solaris partition) as a swap file. Be sure to not do this!

Red Hat Linux 6.1 (October 1999)

Red Hat Linux 6.1's installer automatically uses all Linux swap partitions on all drives. Since Solaris/x86 uses the same ID, the installer overwrites it too! This is not a problem with older versions of RedHat Linux (as long as Linux and Solaris were on separate drives).

Personally I don't use the installer to upgrade (I just install individual RPMs).

Here's the summary from Red Hat Gotchas, http://www.redhat.com/corp/support/docs/gotchas/6.1/gotchas-6.1-4.html#ss4.7 

Problem: Installation of Red Hat Linux 6.1 can overwrite Solaris. If you have Solaris Intel on your machine, you will have problems with Red Hat Linux 6.1

Fix: Solaris partitions use the same type as Linux swap partitions. The installer will use all found swap partitions.

Currently, there are several possible work-arounds to this problem. If Solaris is on a seperate drive from the drive you wish to install Red Hat Linux 6.1 on, please disconnect this drive.

The other workaround is to change the "Partition type" of the Solaris partition before you install Red Hat Linux to another type, install Red Hat Linux, and then change the type back to another type.

This can be accomplished by going using expert mode and choosing fdisk over disk druid.

# fdisk /dev/hda

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 784 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1       345   2771181   83  Linux
/dev/hda2           346       784   3526267+   5  Extended
/dev/hda5           346       751   3261163+  83  Linux
/dev/hda6           752       784    265041   82  Linux swap

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 08
Command (m for help): w

After the install you can change the partition type to back 0x82 so that Solaris will boot.


(8.6) How can I use Linux LILO boot loader to boot Solaris/x86?

Add something like this to your /etc/lilo.conf file under linux and rerun /sbin/lilo. Note that Solaris *MUST* be the active partition, on either the primary or another another hard drive. To use LILO with Solaris on the primary partition, install LILO in the MBR and mark the solaris partition as active.

In this example Solaris is on your second hard drive (hence the "loader" line):

other = /dev/hdb1
        loader = /boot/chain.b
        label = solaris

For more information, see the Linux HOWTOs and LILO User Guide. For information on installing Solaris/x86 on your second hard drive, see below.


(8.7) How can I use LILO to boot Solaris/x86 on the primary slave ATAPI?

Basically, the Linux LILO boot loader is used to fool solaris into thinking the slave is the master and vice versa (with the chain.b line) Add this in your Linux /etc/lilo.conf:


(use /dev/hdc instead of /dev/hdb if your second drive is the secondary ATAPI master instead of the primary ATAPI slave drive)

Solaris had a bit of trouble because for some reason it had the default boot device as the primary HD and couldn't mount the root filesystem off of it (because it wasn't there). BUT, this was fixable since the device configuration assistant (blue screens) allowed me to change the default boot device to the second HD. Once I did that, I was off to the races.

[Thanks to Zoran Marjanski]


(8.8) How can I use LILO to boot Solaris/x86 on the secondary master ATAPI?

Follow the instructions for the previous question substituting /dev/hdc as directed. An alternate, much-more-difficult method follows that doesn't involve the "switch drives with /boot/chain.b" trick.

Lim Chee Siang writes:

These are basically the steps I 'discovered' through countless failed attempts to get Solaris to boot from the secondary master.

I got LILO to boot Solaris/x86 2.5.1 from the master disk of the secondary ATAPI. Solaris was initially installed in the primary-master disk, i.e. the only disk in the system; whereas Win9x and Linux was in the other disk, which I temporarily removed during Solaris installation.

Solaris boots according to the boot-path variable in /etc/bootrc. During boot, fsck will check the disk entries in /etc/vfstab. Similarly, mount will scan /etc/vfstab when mounting mounting filesystems.

In order to boot Solaris from secondary-master disk, these two files MUST be modified, and the /dev/rdsk/ and /dev/dsk/ directories MUST have the correct links to /devices/isa/ata@1f0,0/ and /devices/isa/ata@170,0/.

The procedures go like these, assuming you can afford to lose the Solaris partition--because recovery from incorrect entries in the files to be modified in the following steps is tricky:

1. Type 'touch /reconfigure' before shutdown Solaris. Simply place a disk as secondary-master. Solaris will create the correct links from /dev/rdsk/ and /dev/dsk/ to /devices/isa/ata@1f0,0/ and /devices/isa/ata@170,0/. For example, if you only have one primary-master (Solaris) and one secondary-master (any disk), you should see entries like

   /dev/rdsk/c0d0sXX -> ../../devices/isa/ata@1f0,0/cmdk@XXXX
   /dev/rdsk/c1d0sXX -> ../../devices/isa/ata@170,0/cmdk@XXXX

   /dev/dsk/c0d0sXX -> ../../devices/isa/ata@1f0,0/cmdk@XXXX
   /dev/dsk/c1d0sXX -> ../../devices/isa/ata@170,0/cmdk@XXXX

2. If you don't see the entries in step 1, stop moving on. Otherwise, we're going to make changes to /etc/bootrc and /etc/vfstab.
a. change boot-path /isa/ata@1f0,0/cmdk@0,0:a in /etc/bootrc to /isa/ata@170,0/cmdk@0,0:a
b. change all instances of c0d0sXX in /etc/vfstab to c1d0sXX.

Step a informs the secondary Solaris boot loader that we're booting from the secondary-master disk while step b is for fsck to check the correct Solaris partitions and mount to find the filesystems for mounting.

3. Do a 'touch /reconfigure' again, just in case. Shutdown Solaris. Transfer the disk with Solaris from primary-master to Secondary master.

4. Put in the disk with Linux/LILO back to primary-master. Boot Linux and add the following entries to /etc/lilo.conf.

   # Solaris at secondary master
   other = /dev/hdc1
   loader = /boot/chain.b
   label = solaris

Proceed with lilo installation as you would normally do.

(8.9) How can I use OS-BS or System Selector to boot Solaris/x86?
Grab OS-BS [a free boot manager distributed with FreeBSD] from: ftp://ftp.freebsd.org/pub/FreeBSD/tools/osbs135.exe Or (newer) from: http://www.prz.tu-berlin.de/~wolf/os-bs.html 

Assuming you've already got Linux installed and enough free space for Solaris, go ahead and install the latter. Solaris then becomes the Active partition. Follow that installation with OS-BS and configure to "set startup id", which changes the Active partition on-the-fly.

OS-BS comes in a newer, commercial version, that I use, called System Selector in the US, De'marreur in France, and Boot Manager elsewhere. See http://www.BootManager.com/ 

System Selector needs a small FAT or FAT32 partition to install on. You also need to either boot a version of DOS or Windows to read the install files on the CD-ROM drive. Note that this partition doesn't need to be bootable or active--it is only used to hold files used by System Selector. System Selector replaces the previous boot block in the MFT and boots directly from the drive's MFT.

When System Selector's installation menu comes up, you won't see Solaris listed among the selections under the "System" tab, as you most other systems that may be on your system, such as Windows or Linux. Instead, go to the "Partitions" tab and select the partition marked "Linux Swap." This is actually the Solaris Partition (both Solaris and Linux Swap partitions share the same code, 83 hex). Select it and under the "Properties" tab make sure you check "Assign active ID to this system [partition] before booting."


(8.10) How can I boot both Solaris/x86 and Win NT on the same disk?

Here's one way of doing it. Solaris/x86 requires it's partition to be active and uses it's own boot manager with it hard-coded to boot to Solaris on timeouts. If you want to use NT's boot manager or default to another operating system, it usually requires installing both operating systems on separate disks or using a third-party product, such as System Commander, that makes the partition "Active" on the fly This solution, described here by Andrew Mickish, is to make a boot floppy:

Although the Solaris x86 installation manual makes it sound like all you have to do is partition your disks to get multiple operating systems to work, I found that this was not the case. To get a dual boot of Solaris and NT on the same hard drive, without using the Solaris default boot manager, you have to use a floppy boot disk to help start one of the OSes. Here is how I got NT and Solaris working on the same disk.

The following fdisk partitioning causes Solaris to boot from the hard drive, yet allows you to boot to NT if you insert a floppy disk with the NT boot loader:

 | Solaris          [Active, for Solaris]           |
 | C: PRI-DOS (FAT) [Active, for NT]                |
 | D: EXT-DOS (FAT)                                 |

Partitioning: The Solaris partition should be created during the Solaris installation, using Solaris's FDISK. The remaining partitions should be created during installation of NT.

Active partition: You must set the Solaris partition to be ACTIVE in order to make it boot to Solaris. NT does not have to be active to boot. Use a DOS boot disk with FDISK to quickly change which partition is active.

Boot disk: After setting the NT partition to be active, you still need the NT boot loader on a floppy disk in order to direct the PC to the second partition. (Usually the boot loader is on the primary partition of the hard drive, but that partition is Solaris and unreadable to NT.) Your floppy directs the boot process to the right partition by using a BOOT.INI file that says where the NT kernel can be found:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos

Note: The numbering of partitions is one-based, so the C: partition in the diagram above is in partition #2.

Please send comments and suggestions to mickish@cmu.edu

[Thanks to Andrew Mickish]

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Unix OS

From novice to tech pro — start learning today.