Plex86 Lives, As Lightweight VM Technology
Kevin P. Lawton writes "Plex86 has been completely overhauled, and simplified to be a user (application) code only Virtual Machine technology. For running user code, many of the heavy weight x86-VM techniques are unnecessary. But the bonus is, Linux can easily be made to run inside the plex86 VM, so that the kernel is actually 'pushed down' to user privilege level. This has been demonstrated on both Linux 2.4 and 2.5 kernels. Thus, Linux can run in a plex86 VM without the need for any heavy virtualization. My goal is to keep the code base trim, tight, auditable and get to usable releases quickly. And to favor those goals over adding unnecessary complexities. The first milestones have just been reached, so it's still early in development. There are email lists available on the main plex86 site."
Welcome to the new plex86 web site. I have rehashed/revitalized the previous plex86 architecture to offer a very lightweight Virtual Machine (VM) for x86. Rather than implement a full and heavyweight VM which can run all guest Operating Systems (OSes) as-is, the new approach only runs guest OSes and application code at user privilege in the VM.
This new strategy yields two interesting uses of plex86:
Plex86 can be used on its own for running Linux as a guest. It has recently been demonstrated(1) that the Linux kernel can be executed inside the plex86 VM at user-privilege, with only minimal changes to the kernel source Makefiles. The aim is to allow multiple guest Linux VMs to run concurrently on the host machine, even of different kernel and distribution versions. Check out the boot verbage from my maiden voyage or the other successes like an X Windows application running on a Linux 2.4 guest displaying its window on my Linux host machine if you're so inclined.
Or plex86 can be used to accelerate bochs, by executing user code inside the plex86 VM, while letting bochs execute kernel code and IO functionality inside the emulator. This is useful for executing binary-only OSes, and ones without the simple mods noted above. This was also demonstrated recently(2).
This new incarnation of plex86 is just getting kicked off. But for now, here's some points of interest and related goals:
Plex86 is Open Source (LGPL).
Because of the new lightweight VM strategy, plex86 is quite small in size, and thus there is big potential for auditability of the VM technology. This is important as the VM monitor runs as a device driver in the host kernel.
Plex86 uses the existing x86 port of the Linux kernel. It does not use a separate port. Thus, Linux as a guest enjoys all the global testing/development that Linux on x86 hosts receives.
The guest Linux will communicate to hardware such as the disk and network via a Hardware Abstraction Layer (HAL). Vanilla guest drivers for Linux will be created to effect these guest to host communications. Thus, plex86 will offer a very clean Linux VM implementation, without all the heavy overhead and baggage necessary to virtualize/emulate IO hardware. The end-goal is a true completely virtualized Linux resource, with completely OSS componentry.
With the exception of a few necessary kernel Makefile mods noted below, the goal is to run Linux distributions as-is. Plex86 needs a kernel compiled to run in the VM. This is just as well, as it's beneficial to configure out all the unnecessary IO devices which are irrelevant inside a guest Linux VM. A goal of mine, is to have the main Linux distributions offer a configured Linux kernel for plex86, on the distribution CDs.
Performance potential is quite good. Because of the new strategy of "pushing" Linux kernel code down to user privilege, it along with user code can run at native speeds inside the VM (at least in between "virtualization events" such as IO). There are some logical phases for the development path to follow, with the current phase favoring rapid prototyping and bug finding, and later moving components of the virtualization into the VM monitor after they are flushed out.
I will fight very hard against requests for unnecessary complexities and features. There should be a series of usable and stable releases, rather than a never-ending flow of "almost usable" code. As well, plex86 should remain auditable.
-Kevin
Is it just me, or are they saying that they've tailored Plex86 more towards Linux, so you can't use any other OS as a guest anymore? If so, then this sounds really useful. I can now run Linux on top of Linux! Oh, wait, I could do that already with KML. The advantage of a VM would have been to allow me to run Linux/*BSD on Windows or vice versa. Being able to run Linux on Linux just seems like rather a pointless duplication of effort.
I am TheRaven on Soylent News