Installing Windows NT 3.1 on Qemu
Installing Windows NT 3.1 on Qemu
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.
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. 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
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 i486 cpu so I won't have to worry about the inf files.
qemu -L . -cpu 486 -hda windowsnt31.disk -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 . -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 -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://75.127.119.16/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.