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
as i remember plex86 allowed one to run freebsd or linux as a base w/windows/linux/freebsd running on top... can it still do this?
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?
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
Woohoo! I've been looking for a faster alternative to bochs, and this may be it! The last incarnation of Plex86 didn't work correctly for me; I couldn't get it to completely boot from any media :-/
:)
Hopefully it's better now
I seem to recall reading something about the current release over at http://kt.zork.net; IIRC, it lacks some features that the older version had that allowed easier use with "any" OS; OTOH, it also seemed to be a -much- simpler codebase with vastly less "code for exception" stuff. I'll be interested to see how it works performance-wise, as it's always fun to have machines under machines under machines... especially if it means I can finally stop VNC'ing to Windows boxen to run my Oracle client. ;-)
so what the hell is plex86, because that site doesn't say anything about what it is
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.
VMware doesn't need a device driver, if I'm not mistaken. Wasn't plex86 originally supposed to be a clone of VMware?
NO CARRIER
Well, _anything_ is faster than BOCHS (BeBochs, specifically). Plex86 certainly sounds interesting, I'll have to look into it.
I just have one question:
Couldn't they have called it Flex69?
I remember reading that a windows build would be availible eventaully.... Any news?
Business News and Resources: www.usasource.net
Having trouble wrapping my brain around this one. Could someone explain it a bit? Yes I read the article, didn't help at all.
What does Plex86 run on top of? If it's a VM would it run on top of say Windows or something, allowing you to run your OS of choice within that? Or is it a way of allowing programs compiled for this quasi-x86 architecture to run on other different architectures (ie it vituralizes the hardware directly)? Or something else entirely?
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.
Compare and contrast to User Mode Linux?
Someone?
Someone?
Bueller?
Bueller?
Wasn't Kevin Lawton employed for several years by MandrakeSoft to work on Plex86? Didn't MandrakeSoft bought the Bochs proprietary sources to release it in GPL?
What did happen? It seems that all mentions of this MandrakeSoft support has been dropped from the Plex86 pages !?!
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
I am confused, can somebody explain to me.
Is this a super-bochs should I feel like running windoze on linux?
Or is this an excellent way to test out a linux kernel someone hacked, but didn't want to risk their system?
There is a detailed discussion of this in the Linux Kernel Traffic from the Jan 22-27 issue.
Help fight continental drift.
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
A reference on Slashdot:
4 7&mode=nested
MandrakeSoft Buys Bochs, LGPLs It
Linux MandrakePosted by Hemos on Thursday March 23, @00:50
from the good-things-are-happening dept.
Direct from the mouth of Gael Duval, we've gotten word that MandrakeSoft (Yes, the folks who make Mandrake-Linux. No, it has nothing to do with Mandrake of Enlightenment fame. ) have purchased Bochs and hired Kevin Lawton. Now that Bochs is LGPLed, the Plex86 development can be speed up as well.
http://slashdot.org/article.pl?sid=00/03/22/18512
The author of Plex86 and Bochs is the same guy who declared that VMWare had "ripped off" his idea and gone commercial after looking at his technology. The failure of Plex86 (and that's what this announcement is, an admission of failure) just goes to show that Kevin is and always was full of shit. He's been claiming that Bochs would have a binary translation system (much like VMWare and VirtualPC use) to speed it up ever since back when he was trying to flog it as shareware. So, in response to your question, there is very little fear that Kevin is going to come up with a product that can compete with VMWare (or VirutalPC for that matter) because he's no good.
How we know is more important than what we know.
It does good business selling windows host versions...
And dont forget ESX server...
---- Booth was a patriot ----
nt
If you wanna get rich, you know that payback is a bitch
Bochs, though admirable, isn't complete.
Plan9 won't run inside bochs for instance, as documented here.
which is a shame. Plan 9 runs in VMWare btw
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
it's cheaper to build another PC !
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
I'd speculate that once enough quality Open Source Software exists, paying software development jobs will shrink considerably. Year 2010 is likely.
That means that there will be much less college students studying computer science which means much much less demand for college computer science courses which means much less demand for college computer science professors.
Does this mean that the anti-MS, pro-GNU college professors are eventually going to reduce the number of paying customers (college students)?
It really is a different concept than VMWare anyway. VMWare is hosted in one of the OSs (I know they have at least Linux and some versions of Windows, probably more), where this VM runs on top of the hardware (if I understand correctly). One thing I do wonder about, though. By putting it between a hardware abstraction layer and the hardware, a huge part of the job is to support the variety of available hardware.
One of the crowning achievements of Linux is the variety of hardware that is supported. That's always been the biggest problem for any PC OS that isn't from MS, lack of driver support, and this goes for the commercial PC UNIX vendors from the beginning (no doubt, OS/2 as well). Linux has pretty much solved this problem, and it has been a very hard problem (i.e. it takes lots of resources in the Linux community). So, aren't they taking on this problem with Plex86, or do they somehow piggyback on Linux drivers? That's certainly what I would try for if I were designing it.
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));
Is this the project formerly known as FreeMWare? Formerly part under Mandrakes broken wing?
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.
How well does it work for BSD kernels? I hack on BSD kernels for fun, so this is the most important thing for me.
I'm running Windows 2000, and (given EULA issues, DRM issues, etc.) I want to start using a linux distribution.
But I've somewhat invested in Windows, and it still probably beats linux as far as ease of use.
I've been thinking that running a virtual linux might be a good way to transition.
I'm currently running cygwin, but I'd like to be able to use a GUI.
Will the new Plex86 be able to help me? (I.e., is there or is it likely there will be an MS Windows port?)
What about User Mode Linux? MS Windows port?
Once I do transition, of course I'd want to run MS Windows virtually: I guess for that my only choice is VMWare. Or buying a another PC, and VPn'ing. Or do you have a better idea?
Opinions on the Twiddler2 hand-held keyboard?
... when the official Debian package will show these changes?
Copyright Violation:"theft, piracy"::Anti-Trust Violation:"thermonuclear price terrorism"<-Overly dramatic language.
Plex86 Virtual Machine
I was just reading about this one today before this article was posted. Which one is the real plex86?
Hey, Daengbo, you fucking asiaphile. Do you "love" your girlfriend, or are you just using her? Do you really think Goy would be happy to know you're posting details of your sordid sexual escapades for all the world to see? If you DO love her and are planning a long-term relationship with her, what are your future children going to think when they read archives of your postings in 20 years time?
Fucking loser. Go back to the USA, you fucking scumbag. Just like an AmeriKKKan.
Admittedlty, I haven't tried VMWare since the 2.something-or-other days, but even simple VGA emulation was far from perfect then.
:)
I'm a loyal, huge fan of several old DOS based engineering programs that don't have "modern" windowed or OSS equivalents that are nearly as efficient, and just don't work and play well in a Win2k DOS box (if you can call it that). But even so, I need to use Win2k for the rest of the CAD/CAM/EDA work I do day to day.
So, basically I just needed something to run these old DOS programs. I looked at Bochs, which was pretty young at the time, and wouldn't cut it at all then. I decide to try out VMWare, thinking that just simple non-VESA basic VGA emulation would pretty much be a slam-dunk and work out of the box. Wrong. Nothing but trouble, corrupted video, all sorts of "issues".
Now, I understand that these programs may manipulate the VGA hardware in, um, "non-standard" ways, but even so, I didn't expect the bulk of my old software running in simple 640x480x4bpp mode to exhibit such horrible artifacts. IIRC, even 320x240x4bpp mode exhibited the same problems.
After some fooling around, as an experiment, I installed Linux inside VMWare - with the proprietary X server, and then eventually succeeded in getting my DOS programs to run inside Linux inside Xdosemu. Even though it worked, it was a bit too much of a kludge - even for me. Research and emails to VMWare basically confirmed that video support for anything other than Windows or Linux just wasn't going to be "complete". Bummer.
So, I tried VirtualPC. Even though it was slower than VMWare, when running software in a DOS environment that was cutting edge in the 486-66 days, running in a VM on a 800MHz host seemed unnaturally fast in many ways
Many people have run VirtualPC down in that it emulates "outdated" hardware like the DEC Tulip ethernet controller (Intel now I believe) and the lowly S3 Trio video card, but from what I've seen, the hardware emulation is true to the real deal - and the bonus is that just about anything can support those two hardware components. So, VPC gave me what I needed, at a price and speed that were reasonable, even if it doesn't run on everyone's favorite free OS.
I'm sure VMWare has improved in many of these areas, but for what I needed at that time, it didn't fit at all, and was a basic disappointment. I'm sure if I needed a virtualized server farm, which is the main focus of VMWare currently, I'd be much happier. But it's strength at that time was in processor virtualization and not hardware emulation.
I'm intrigued with the "new" Bochs/Plex86 combination, and maybe someday it will be able to do what I need it to do, under any host OS it's available on. For now, I'll use VPC and watch intently from a distance.
Just my two cents worth.
Brad
Cygwin has had an X server for a while. It is part of the official distribution now, though, so you can select it in the graphical installer, rather than having to download and install it separately after you've installed Cygwin.
LINE can run Linux binaries on Windows, much like WINE executes Windows binaries on Linux, though it's probably not as useful as Cygwin or a full Linux system.
There is also a port of User-Mode Linux to Win32 underway, but it is not very far along yet and would probably not be useful to you. (Also, it depends on the aforementioned LINE. Which I think is kind of funny.)
Cygwin has had an X server for a while.
Yeah, I can run xclock and xeyes and xterm, and that's about it.
Re you telling me I could riun, for example, Gnome or KDE? If so, how?
And yes, it's ironic UML on Win32 requires LINE to run.
My visiion is running linux with emulated Windiws runnng Plex86 linux running Windows... Lather rinse, and repeat!
Opinions on the Twiddler2 hand-held keyboard?
If I'm emulating small operating systems, or at least ones with true microkernels, then this solution would be ok. If I'm running something like Win 2K, I would have to be very patient because a lot is happening in kernel space.
See my journal, I write things there
Reverse-engineer the programmable microcode in an Intel or AMD cpu so that the exposed assembly language sucks less, and is fully virtualisable. Sure, Windows won't run, but we'll have mainframe-style hardware-supported virtualisation for Linux, BSD, EROS, etc.
I must say that I appreciate VMWare for both its hack value and usefulness. (It's also one of the too few commercial applications that's as easy to deploy as should be with it's download-configure-pay -model.) Nice to hear a human^Wnerdish voice from someone inside as well.
I think, therefore thoughts exist. Ego is just an impression.
KDE for cygwin:
http://kde-cygwin.sourceforge.net/
GNOME for cygwin:
http://cygnome.sourceforge.net/
Have not tried either but both have screenshots.
And if you have not used the -rootless option to the cygwin Xserver check that out too.
-c
Is it possible to use this program to run Win98 inside WinXP? I need that to test my software, but WMWare seems to mess up my system when installed. I can't seem to find much information about this program...
Did you look at Win4Lin? Despite the fact that I used to work for NeTraverse, I don't really know if what you're talking about is in the Win4Lin focus area. The stuff that they try to do, they do well, they just don't try to do everything, being a small shop.
Liberty uber alles.
The (new) plex86 website presents this as a great leap forward for the project. I suppose that almost anything would be better than its previous moribund state, but it's a bit nauseating to see the amount of spin Kevin is applying on this announcement.
For people who are more familiar with "Web programming" than kernel code, suppose the Mozilla (or Konqueror) team made the following announcement: rather than implement a full and heavyweight web browser which can view any web page, they would take a new approach: only view web pages which conform to the HTML/1.0 specification and do not use images, tables, or forms. This would lead to a much lighter-weight browser, and faster performance -- a great improvement, right? This is just about what Plex86 is doing with this announcement.
Now, there's nothing wrong with deciding that the hard stuff is too hard, so you'll focus on the easy stuff and do it really well. You should at least be honest and admit that's what you're doing, though. Trying to sell this as a bold step forward is rather..well..Microsoftian. Or if you object to that term, the old standby of "dishonest" will fit as well.
Daniel
(PS: I do not work for vmware, nor do I particularly like them)
Hurry up and jump on the individualist bandwagon!
It's great to see that this project is making such wonderful progress. It will be fantastic to have a fully functional Windows 95 running under Linux 4.0 in ten years from now.
My karma ran over your dogma
AvantBrowser (www.avantbrowser.com). Has all the features of CrazyBrowser, and a couple more: first of all, scroll mice work properly all throughout (the scroll doesn't work in CB's history list). It also allows you to selectively deleted auto-complete entries, for example, mine deletes all the URLS except those I specifically type. It also works at Mazda. :)
Which is more painful? Going to work or gouging your eye out with a spoon? Find out!
http://www.workorspoon.com
virtualization isn't exactly a big market
Do you have any idea how much money gets poured into 390 systems running VM?
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
IIRC, the three instructions (PUSHF, POPF, and IRET) don't cause a kernal trap, which is the problem. There's no way to trap the instructions, but they behave differently in ring 0 than they do in ring 3 (e.g. setting the flags differently or something like that).
Life's a lot like money-- you spend it, then it's gone. Spend wisely.