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."
Plex86 is taking so very long to materialize, I wonder if it is even worth the effort being put into it. Bochs works fine, even if slow, and virtualization isn't exactly a big market. Where does Plex86 fit into all this?
Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
User mode Linux has been invented and merged to the kernel already, no need for any additional software.
A topic brought up on Slashdot some time ago had some interesting discussion that if Free solutions like Plex86 took off, it would destroy VMWare's business model, and show other businesses that you can't make money developing software for Linux because someone will undercut you with a Free solution. How do you respond to these fears?
Kevin Lawton is the article submitter, the author of the program and bochs, and is really well known and highly regarded for his skill at this. Virtualizing a bios and all the devices is about as low level as you can get.
Put identity in the browser.
There are two things I would like to do with plex86:
0) multiple virtual Linux servers, each in its own chroot jail.
1) run Win98 under Linux, to be able to run Win32 apps for testing purposes or backwards compatability.
Sounds like it will do multiple Linux servers very well, soon. But do they still have any hopes for plex86 running non-Linux OSes as guests?
P.S. According to reviews I have read, Win4Lin does a decent job of letting you run Win98 under Linux. It's not free software, of course.
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
With the changes he's made in the goals of Plex86, it sure seems as if he's targetting the same approach currently in use by User-Mode Linux. I understand it may be quite different under the hood, but will that matter to users? It doesn't matter much to me if the task is accomplished using a ptrace thread under kernel system calls or actually virtualizes hardware -- if I can run several virtual GNU/Linux systems on top of one physical system, at a reasonable speed for the load, using free software as much as possible, I'm happy. The technical details of how it's done are irrelevant to me -- what matters is the result.
If the Bochs/Plex86 combination is actually faster than Bochs by itself on X86 hardware, and can approach the speed of VMWare, well, that sounds interesting to me. Virtualization technology is a large and growing market, funding a lot of IBM's recent growth in the mid-range server market with quad and 8-processor systems running VMWare to aggregate systems, improve manageability, and reduce personnel management costs. There's no denying the need is there; VMWare posted their first profit ever last quarter because of these strong sales, with more big money coming down the pipe.
Competition among free software projects is a good thing. I'm glad to see Plex86 come out with something new that may work better than the old. But what most people wanted was to run multiple copies of Microsoft Windows on top of Linux, or to run MS Windows in VMs alongside GNU/Linux, and if that doesn't work easily & quickly, it may be a potent obstacle to widespread adoption.
Matthew P. Barnson
I learn what I think when I read what I write
Plex86 is a VM that requires that it be run on an actual x86 chip, it virtualizes the code that is running inside the VM so that the code thinks it's got access to it's own machine when in fact it does not, but is running as a user process in linux.
So you can run Windows inside linux, or linux inside linux. They all have to be for the x86 though. But I don't know how well it works.
Bochs is the emulator that runs code for the x86 on ANY processor, PPC, Sparc, whatever it will compile on. So that you could run Windows on a Sparc or a Mac. Though I don't know if it works THAT well.
You should check that again.
VMware under Windows, loads up several device drivers to bridge/route network traffic between the virtual machines and your local NICs.
And when I installed a demo VMware on my Linux box, it needed a kernel headers to build the vmware kernel modules(don't know what for). So, Vmware also needs modules/device drivers for operation.
Kashif
User mode linux is a linux kernel that runs in userspace
plex86 is an x86 virtualizer that lest you create multiple virtual x86 machines to run whatever you want on them.
Dude, chill out. I'd like to see your resume before you knock one of the sharpest VM programmers in the business. Not only is Kevin smart, but he knows the x86 ISA better than most people know how to read. Add on the fact that he pumps out code at an insane rate, and you get a programmer I'm grateful is working in the OSS world. Kevin's given us a lot and I'm more willing to forgive him for being a triffle distractable in exchange. People have called Kevin a lot of things (erratic, drasticable, incapable of proper commenting), but to call him shit is unbelievable. Unless you're Linus or RMS, get off the man's back.
Feel free to flame and correct:
User Mode Linux is a port of Linux that allows the host Linux operating system to run the Linux kernel as a process (this could be seen more or less, as an exokernel). This is done by changing the Linux kernel code to use malloc() to allocate memory instead accessing hardware.
UML uses ptrace to intercept its childrens system calls and then forwards them to user-functions in the kernel.
Plex86 on the other hands makes no modifications to the kernel. Instead, it takes a stock(1) kernel and virtualizes the few instructions that aren't allowed to run in user mode (an exception is thrown when these instructions are attempted to run and Plex86 catches this, performs the virtualization, and returns as if the instruction actually executed).
Plex86 is literally virtual machine whereas UML is really just removing and hardware specific stuff in the kernel and making it a regular C program.
(1) I lied a little here. There is an inherent design flaw in three instructions on x86 such that they do not allow for the above. Kevin submitted a small patch (that I assume got accepted) to make these instructions only be accessed through inlines with additional code such that they behave as they should. By correcting this, it makes implementing a VM more or less trivial.
Note: unless someone finds a _really_ innovative way to allow these instructions to be easily handled for other operating systems, it's not likely you'll see Plex86 run other properitary operating systems.
Note2: Plex86 is more likely to make it to Windows first because UML requires ptrace and Windows has no concept of ptrace(). Not to mention the fact that mmap behaves quite differently on Windows.
Note3: Yes, the above problems have been addressed in the UML Win32 port but they are non-trivial. From what I can gather, a Plex86 port will be pretty trivial to Windows...
int func(int a);
func((b += 3, b));
Arrggh, it's too hard.
I work for VMware. if you want to believe we've corrupted Kevin's precious bodily fluids, feel free. I don't speak for the company, and I know nothing beyond what slashdot has posted about plex86. Consider yourself disclaimed.
If I understand the story correctly, plex86 has basically surrendered. They've given up on running arbitrary supervisor level code; the Linux guests that Kevin refers to above require a patch to "fix" something the new "lean, mean" plex86 gets wrong.
If Linus is feeling even vaguely himself, he will not accept this patch. Ordinarily, people trying to put stuff into the kernel that a) hurts performance, and b) fixes no real problem, but c) is critical to some contrived project that seems really important to the contributor get entertainingly flamed, and then shown the door. In fact, Kevin's most likely motivation for submitting this as a Slashdot story is to marshall support for his Linux patch.
Even if Linus does accept this patch, I can guarantee you that Microsoft, the FreeBSD team, the now non-existent Be, etc., won't all be taking helpful hints from Kevin about which x86 features they may and may not use. Ergo, there is nothing interesting (either commercially or geekily) you can do with plex86; the most it can hope for is to run recent-ish Linux guests on recent-ish Linux hosts. Bestill my heart.
On the upside, maybe Kevin will stop implying that VMware stole Bochs, now that he's spent four years trying to clone our software and has finally admitted defeat.