Installing Windows NT 3.x in VirtualBox

All Windows NT 3.x versions can be used in VirtualBox, although they are not officially supported (unlike all following NT versions) and no Guest Additions are provided. Furthermore, for Windows NT 3.1 and 3.5, an extra step needs to be taken before installation.

In all cases, it’s best to start with a guest configured for NT 4. It is advisable to add a floppy drive and, if audio is desired, use SoundBlaster 16 emulation. USB may be turned off completely since there are no drivers, and the emulated network adapter must be left at AMD PCnet. SMP is not supported.

Unlike NT 4, the Windows NT 3.x installation CDs are not bootable. It may be easiest to start by installing DOS with CD-ROM drivers and running the DOS based installer from the CD. For NT 3.1 that is the only option due to lack of ATAPI CD-ROM drivers. For NT 3.5x it’s possible to boot from floppy images and continue installing from CD. Continue reading

Posted in NT, VirtualBox, Virtualization | 22 Comments

Why OS/2 is Hard to Virtualize

For a number of reasons, OS/2 is surprisingly difficult to virtualize, much more so than DOS, Windows 3.x, Windows NT, Windows 95, or many variants of UNIX. Most of these reasons have to do with OS/2’s architecture and history.

To begin with, old OS/2 versions (especially the versions older than Warp 4) are difficult to run even on physical Pentium III class hardware. There are various software timing loops which simply do not work on fast processors and cause division overflows and similar errors. This problem especially badly affects almost all versions of OS/2 1.x. Support for large IDE disks tends to be problematic, although that is not something to blame on OS/2 directly; the IDE interface was a moving target. Here virtualization in fact helps, because virtualizing, say, a 120 MB IDE disk is much easier than finding a real functioning disk with such a tiny capacity.

Then there are numerous problems specific to virtualization. Let’s start with the oldest OS/2 versions. IBM OS/2 1.0 and 1.1 uses 286-style switching from protected to real mode. This method resets the CPU and relies on the BIOS POST code to resume execution at a specified point; the reset is usually accomplished by triple faulting the CPU. Neither VMware, Virtual PC, nor VirtualBox support this method and treat the triple fault as a fatal error. Interestingly, the corresponding Microsoft OS/2 versions detect a 386 CPU and use the much more efficient method of modifying the CR0 control register. Continue reading

Posted in OS/2, Virtualization | 6 Comments

The Importance of EMM386

It is fairly obvious that Compaq’s Deskpro 386 changed the PC hardware and was probably one of the major reasons why we aren’t using PS/2 compatibles today. It may be less obvious that CEMM, an offshoot of the Deskpro 386 better known in its later incarnation as EMM386, also significantly shaped the PC software landscape.

When the Deskpro 386 appeared, it faced an interesting problem: There was no popular operating system capable of utilizing the advanced features of the i386 processor. Compaq marketed the Deskpro 386 simply as a very fast (and quite expensive) PC compatible designed for running DOS applications. Even after the first UNIX ports appeared, DOS was so popular and ubiquitous that users did not feel sufficiently enticed to switch. That was compounded by the fact that RAM was very expensive and systems with more memory than DOS could handle were rare around 1987.

CEMM/EMM386 ensured that DOS could handle quite a lot of memory. CEMM, or Compaq Expanded Memory Manager, was a very innovative piece of software. By utilizing the virtual 8086 (V86) mode of the i386, CEMM could provide 8086-compatible expanded memory (EMS) to existing DOS applications without requiring special hardware (as an 8086 would). Continue reading

Posted in DOS | 4 Comments

NT and OS/2

OS/2 and Windows NT have an interesting and checkered common history. Until late 1990, the operating system eventually released as Windows NT was known as NT OS/2. Despite its name, NT had very little in common with OS/2 as it existed at the time (that is, OS/2 1.x) in terms of design or source code. The core NT design team led by Dave Cutler, mostly consisting of ex-Digital programmers, had very little experience with OS/2 or even PCs. At the same time, the plan was to provide compatibility with existing OS/2 applications and for OS/2 to be the dominant ‘personality’ of NT.

The NT kernel’s (or more correctly the NT Executive’s) design was radically different from the design of OS/2 1.x. While OS/2 1.x was a 16-bit OS designed exclusively for the segmented architecture of the Intel 286/386 CPUs, NT was a portable 32-bit OS with paged virtual memory, deliberately ported to the 386 PC platform relatively late in its development cycle. While OS/2 could not run on anything but a 286/386 without a complete rewrite, NT could not run on a 286 ever. Continue reading

Posted in NT, OS/2 | 8 Comments