The new Plex86 x86 Virtual Machine Project
Welcome to the new plex86 project. Plex86 has been
rehashed/revitalized to offer a very lightweight Virtual Machine
(VM) for running Linux/x86. Rather than implement a full and heavyweight
VM which can run all guest Operating Systems (OSes), the new approach
is designed to run only Linux VMs, making the new plex86 architecture
on the order of 10x or 100x more simplistic.
As Linux does not make use of "corner cases" which necessitate complex software techniques (e.g. dynamic translation and other execution monitoring methods), plex86 now implements no such techniques. Rather, guest Linux code is executed as-is in a safe VM environment managed by a VM monitor. Guest kernel code is executed at a less priviliged level, causing privileged operations to generate exceptions which are managed by the VM monitor.
Virtualized IO model: because the Linux kernel can easily be configured before compiling to remove support for most all IO hardware, the model for handling IO in the guest Linux VM is greatly simplified and improved in plex86. Excepting for some very lightweight emulation of a few core components (e.g. interupt controller, system timer), plex86 does not model(emulate) IO hardware. All IO interactions occur through a Hardware Abstraction Layer (HAL) which passes packets of information between the guest Linux and the host OS. This not only removes the complexity/overhead of modeling IO hardware, but allows for more flexibility in dealing with guest-host interactions and creates a truly virtualized Linux resource which is unrooted from the actual hardware. Guest Linux drivers interact with the HAL to manage IO related interactions (networking/disk/etc) with the host OS.
2003-Dec-19: Help startup plex86 again, please donate!
2003-Jul-07: Plex86 v0.1 released.
2003-Feb-17: Initial source code upload to CVS