Installing Windows NT 3.1 on Qemu
Installing Windows NT 3.1 on Qemu
- For the older and somewhat relevant information see Installing Windows NT 3.1 on Qemu-legacy.
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.exe -L pc-bios -cpu 486 -m 64 -hda nt31.disk -net nic,model=pcnet -net user -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.exe -L pc-bios -cpu 486 -m 64 -hda nt31.disk -net nic,model=pcnet -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.