Difference between revisions of "Installing Windows NT 3.1 on Qemu"

From Computer History Wiki
Jump to: navigation, search
Line 6: Line 6:
  
  
Windows NT 3.1 will install, however it does not have PCI support so you'll be restricted to the ISA machine.  Also NT 3.1 cannot drive IDE CD-ROM's.  So you would have to follow the network installation guide.
+
Windows NT 3.1 will install, however it is incompatible with IDE CD-ROM's.  This is simply because they did not exist at the time.  So you would have to follow the network installation guide.
  
 
== CPU TYPE ==
 
== CPU TYPE ==
When NT 3.1 was released pentium CPU's were still beta, and the cpuid thing had not been finalized enough in the install script.
+
When NT 3.1 was released pentium CPU's were still beta, and the cpuid thing had not been finalized enough in the install script. So as a precaution we will need to flag the 486 cpu type.
 
 
Newer versions of Qemu (0.12.3 tested) you can simply use the flag:
 
<pre>
 
-cpu pentium
 
</pre>
 
 
 
And you can install without having to do anything with the inf files.
 
 
 
Otherwise you will have to fix the setup.inf script to always install the 486 path.
 
 
 
You need to edit a string in the files INITIAL.IN_ and SETUP.IN_
 
 
 
Open each one in notepad and search for:
 
[ProcessorVar]
 
 
 
Then change the string below it from
 
 
 
STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor
 
 
 
to
 
 
 
STF_PROCESSOR = $(ProcessorID_I586)
 
  
 
== MS-DOS prepare ==
 
== MS-DOS prepare ==
Line 42: Line 20:
  
 
<pre>
 
<pre>
qemu -L . -cpu pentium -hda windowsnt31.disk -cdrom \\.\d: -fda nt31boot.vfd
+
qemu.exe -L pc-bios -cpu 486 -m 64 -hda nt31.disk -net nic,model=pcnet -net user -fda nt31.vfd -cdrom \\.\d: -fda nt31boot.vfd
 
</pre>
 
</pre>
  

Revision as of 19:07, 18 March 2011

Installing Windows NT 3.1 on Qemu

Windows NT 3.1 running on Qemu


Windows NT 3.1 will install, however it is incompatible with IDE CD-ROM's. This is simply because they did not exist at the time. So you would have to follow the network installation guide.

CPU TYPE

When NT 3.1 was released pentium CPU's were still beta, and the cpuid thing had not been finalized enough in the install script. So as a precaution we will need to flag the 486 cpu type.

MS-DOS prepare

You'll have no choice but to have a MS-DOS Qemu VM installed & operational to start a Windows NT 3.1 installation. Start with the Installing MS-DOS on Qemu tutorial, then come back here.

With MS-DOS installed and able to access a CD-ROM, you will need a blank floppy image, in addition to either an ISO image with NT 3.1 or a 3.1 CD-ROM.

I'll be using my physical NT 3.1 CD with WIN32 SDK, and Qemu 0.10.5 which will allow me to set my cpu to an Intel Pentium CPU so I won't have to worry about the inf files.

qemu.exe -L pc-bios -cpu 486 -m 64 -hda nt31.disk -net nic,model=pcnet -net user -fda nt31.vfd -cdrom \\.\d: -fda nt31boot.vfd

The first thing in MS-DOS I'm going to do is format the floppy to make sure it's blank to appease the installer.

format a:

Then change to the cdrom & run winnt.exe...

d:
cd i386
winnt /F /C

I'm going to skip the verifies for disk space & floppy writes.. When setup has completed it's job exit Qemu, and this would make a great time to boot back into MS-DOS, and alter the setup.inf & initial.inf files as mentioned above. You may have to expand them manually but it's really not that hard.

Install

Run it like this:

qemu -L . -cpu pentium -hda windowsnt31.disk -M isapc -fda nt31boot.vfd -boot a

Windows NT will boot from the floppy, and it will naturally detect NO SCSI drivers. I recommend changing the mouse to the "Microsoft Mouse Port Mouse (including BallPoint)" driver. It will then go thru the motion of copying files (yet again) and then it'll prompt to reboot. Quit Qemu as we won't need the floppy now.

qemu -L . -hda windowsnt31.disk -cpu pentium -M isapc -net nic -net user -soundhw sb16,adlib

And we'll be into the GUI phase of the install.

Remember the ne2000 nic is 0x300 IRQ 2/9. Also you'll want to load it for TCP/IP, drop the NetBEUI, and configure the TCP/IP as follows:

  • ADDRESS 10.0.2.15
  • MASK 255.255.255.0
  • GATEWAY 10.0.2.2
  • DNS 10.0.2.3

The soundblaster can be configured, the port is 220, and the IRQ is 5.

Where to go from here

Well Windows NT 3.1 is more of a landmark for Microsoft's first homegrown 32bit OS, and at the same point it's interesting how much it's changed, and how little in some other ways. I would however recommand getting service pack 3 for NT 3.1

You can download it from here. You'll have to get creative with either MS-DOS & CD-ROM images to copy it in there, or some other method..

16 bit versions of Netscape *WILL* run on NT 3.1! There is a nice little cache here: http://ftp.lanet.lv/ftp/windows/www/netscape3.0/?C=M;O=A

I recommend the n16e301p.exe. You can install Video for windows after 'fixing' the setup program to not abort on NT 3.1 but it won't run correctly, nor will cooltalk run correctly.

By default Windows NT 3.1 will only detect 64MB of ram. This is a 'fault' of ntdetect.com & ntldr. You can however download servicepack 5 for Windows NT 3.51, and copy it's ntdetect.com/ntldr to see up to 3GB of ram! You can download service pack 5 right here. I recommend using Netscape from within NT 3.1. Make sure you have installed service pack 3 for NT 3.1 before you do this!!

If you have access to Visual C++ 1.0 32bit you'll be in luck as you can rebuild a few things. In the transition from 3.1 to 3.5 the executable format changed.. You'll find that plenty of cli utilities will NOT run on 3.1.

You may also want to grab a copy of the Windows NT 3.1 resource kit: http://vpsland.superglobalmegacorp.com/install/WindowsNT3.1/Resource%20Kits/

And for anyone interested you'll want to read this MS article on how to configure the POSIX subsystem to run vi correctly.

Qemu 0.12.4

The latest version of Qemu (and I think all of the 12.x line) do *NOT* have a working ISAMACHINE mode for some reason. However for the sake of NT 3.1, I've been able to run it under the PCI machine, however by default there is something (I don't know what) conflicting on IRQ 9 with the 'first' NE2000 adapter.

Simply modify the file pc.c, and look for the following

static const int ne2000_io[NE2000_NB_MAX] = { 0x300, 0x320, 0x340, 0x360, 0x280, 0x380 }; static const int ne2000_irq[NE2000_NB_MAX] = { 9, 10, 11, 3, 4, 5 };

And change that to

static const int ne2000_io[NE2000_NB_MAX] = { 0x320, 0x340, 0x360, 0x280, 0x380 }; static const int ne2000_irq[NE2000_NB_MAX] = { 10, 11, 3, 4, 5 };

And you'll be good to go.