Different Operating Systems hosted by
Microsoft Virtual PC and Simh


Microsoft Virtual PC is a software virtualization solution that allows you to run multiple PC-based operating systems simultaneously on one workstation by emulating a full-featured x86 compatible computer in a single window. Simh can emulate many different old-school hardware architectures from PDP-1 to VAX. I've tried many Operating Systems running under Microsoft Virtual PC and Simh emulating a VAX. Here I'll show some results.
Windows XP Embedded

I've built a minimal but usable Windows XP Embedded OS which consumes as low memory and hard disk space as possible. Microsoft provides a tool called Target Designer which can be employed to build up the whole system from components and deploy to several medias like hard disk, CD-ROM flash drive or make the system capable to boot from network. If you are an university student or Ph.D. student you may have MSDNAA licence and can freely download tools needed to build XP Embedded. The maximum number of eligible dependent components are around 10000 (1000 software and 9000 hardware component).

Picture of Microsoft Target Designer:

View bigger image

Target Designer needs about 256 MB of memory and an MSDE database server which can run on a Windows XP Professional hosted in Virtual PC also. The resulting Windows XP Embedded installation has the following features:
  • Win32 Subsystem and API
  • Graphical User Interface
  • Network connectivity (using DHCP Client service)
  • cmd shell (not explorer)
This needs about 10 MB of memory for executive (something like kernel space) and 12 MB of memory for user space. Task Manager consumes another 3 MB of memory.

The following picture shows running the generated system:

xpe1

To achieve the low memory usage the following script has to be run after first boot and then reboot again:
rem disable unneeded system services for XPE
sc config audiosrv start= disabled
sc config W32Time start= disabled
sc config themes start= disabled
sc config protectedstorage start= disabled
sc config lanmanserver start= disabled
sc config spooler start= disabled
sc config dnscache start= disabled
sc config browser start= disabled
sc config shellhwdetection start= disabled
sc config lmhosts start= disabled
sc config lanmanworkstation start= disabled
sc config plugplay start= disabled
sc config samss start= disabled
sc config rpcss start= disabled

rem disable unneeded system drivers for XPE
sc config netbios start= disabled
This script disables all unneeded services and kernel drivers to achieve the low memory usage. There are no open ports and only DHCP Client service is running.

The system uses about 70 MB of hard disk space:

xpe2
FreeBSD 5.2.1

BSDs are very secure and robust server Operating Systems and can be hosted in Virtual PC. I've installed a FreeBSD system and compiled a new kernel to make it able to use every and only necessary hardware components. X and networking were also set up. BSDs are built up of a base system and the ports system. The base system is the core operating system with the minimal needed services to run an internet server. Ports are a big collection of user applications. This is a very logic and clean design methodology. You can read about this OS on its official site.

Picture of FreeBSD running the "top" command:

freebsd1

Another picture (list of the root folder and the output of "uname -a" command):

freebsd2
OpenVMS 7.2

OpenVMS is a very old Operating System which is much more secure than Solaris or any BSD distribution. Unfortunatelly it is not widely used today. OpenVMS is not able to run on any x86 platform except for some Intel Itanium processors so I had to use Simh (targeting a VAX) emulator (of course the Windows version) instead of Virtual PC. The installation procedure of OpenVMS can be studied from Wherry's site. Licenses can be acquired from Encompass US. To enable networking WinPCap has to be used. Networking sometimes works sometimes doesn't.
The core of Windows NT and its descendants are based on VMS developed by almost the same team. The security model, ACLs, privleges, kernel space, configuration are very similar and well designed.

A following can be seen while booting:

vms1

Displaying some status info, network info and a telnet login:

vms2
Solaris 10

Solaris is a Unix variant developed by Sun Microsystems. There were some issues installing network and GUI support under Virtual PC.

Single picture of Solaris 10:

solaris
Linux

$ su
Password:
# rm -rf /