Linux/PC Virtual Computing


Shannon Dealy,

Outline for presentation to Portland Linux Users Group (PLUG) 03/07/02


Virtual Computing - what is it?

A program which behaves as though it is a computer system, and can therefore load and run at least some programs written for the computer it is emulating.


Some possible approaches to implementing Virtual Computers (VC):

  • Native execution w/priviledged instruction exceptions
  • Native execution w/debug trace trapping
  • Complete software emulation
  • Hardware emulation coprocessor

One additional option - not really virtual computing is to provide a library compatibility interface and program loader which allows software written for the same processor architecture to run under a different operating system.


  • Real - map device access calls from emulator directly to device calls on host system (possibly with some translation between emulator and host).  Example: A hard disk which is dedicated to the virtual computer.
  • Virtual - create a software model of a "device" which handles calls from the emulator, and in turn uses system resources to perform the desired function.  Example: Virtual machine video display inside of a window on the host computer's X Window display.

Uses for Virtual Computers

  • Running software for obsolete machines
  • Preserving development environments
  • Quick setup of new environments - preconfigured virt. machines
  • Testing dangerous code - viruses/worms/kernel code
  • Constructing secure environments/networks.  Great for DMZ networks in firewall systems!
  • Portable working environments which need to be moved from one computer to another (such as your laptop while on the road)
  • Save complete state of environment
  • Getting the most out of your hardware dollars
  • Standardized execution environment for consistent behavior regardless of actual hardware environment

Problems with virtual computers

  • Sluggish user interface on slower computers
  • Poor sound quality
  • Performance hit from 5 to 99 percent reduction (worst case is for complete software emulation)
  • Unable to handle high speed and/or high overhead devices due to VC overhead

Related items of interest:

  • IBCS - binary emulation/compatibility layer, allows execution of binaries from other UNIX type platforms (which use the same processor architecture) to run on your platform (such as running a program for SCO UNIX under Linux).
  • Bochs and plex86 are closely related, both were started by Kevin Lawton, plex86 was an offshot of Bochs intended to gain the performance of native execution on x86 platforms.  There is talk about trying to create more of a common code base between them.
  • Virtual computers aren't just virtual PC's, some of the many other VC environments for Linux available on the net include: hp48 calculator (x48), apple II, atari, Macintosh, gameboy and several other game machines, many others.
  • Most virtualization systems which are hosted on the same architecture they emulate fail a simple test of complete virtualization: they cannot run inside one of their own virtual machines.


Based on personal experience and/or reviews of others, your mileage may vary significantly.  In particular, while general use may have compatibility/stability issues on some platforms, a given application might be completely reliable.

  • Stab = Stability: 1 (developers only) - 5 (production quality)
  • Comp = Compatibility: 1 (might run some programs) - 5 (virtually anything should run)

If two prices are given, first is for electronic download, second for commercially packaged

Product Host Target Cost Stab Comp Good Bad
VMWare Linux / WinNT / Win2000 / WinXP Any x86 PC OS $300 5 5 Full virtual environment, works with many PC based OS's though not all are supported Expensive for typical "home" user
Win4Lin Linux Win95/98 $80 / $90 + Win95 / 98 4 4 Integrates w/Linux, no separation.  Runs actual copy of Windows integrated w/Linux environment, so most software should work. If you get a Win Virus, you'll wish there was separation. No Direct X or TCP/IP networking (supports WinSock instead)
DosEmu Linux MS-DOS (Windows 3.1?) Free 5 5 Supports running MS-DOS compatible OS and application programs, reportedly runs Windows 3.1. None
Wine Linux / FreeBSD MS-Windows Applications Free 3 3 Integrates Window's apps w/Linux, directly runs MS-Windows binaries as Linux programs. Unlikely to ever run the latest Windows applications, due to constantly changing target (MS-Windows)
User-Mode-Linux Linux Linux Free 3 4 Runs patched Linux kernel as a Linux program. Less overhead than most VC systems, the most stable free approach to creating virtual Linux boxes. Only runs Linux, only runs on Linux
Bochs Linux / Win32 / Mac / BeOS / others? Any x86 PC OS Free 2/3 3 Runs on many platforms (host processor independent) S l o o o w !
Plex86 Linux(Some work done for Windows host as well) Any x86 PC OS Free 1 2 Essentially a free version of VMWare Still has a long way to go.