Ask Kevin Lawton About Plex86
Kevin Lawton, currently employed by MandrakeSoft, is the creator and driving force behind Plex86, the Open Source X86 virtualization software which runs under Linux and now boots several operating systems, including QNX and Windows 98. This is a tricky endeavor, because (among other things), as the plex86 site states: "The x86 processor is not 'naturally' virtualizable. That is to say, it was not designed to run multiple operating systems concurrently." But with enough feints and jabs, Kevin and company have cajoled it into doing so anyhow. He's agreed to answer your questions about virtualization (and / or emulation -- he is the guy behind the also-Open Source bochs project to emulate X86 processors), so please post your stumpers below. Make sure to check out the Plex86 website first, and perhaps read other things about Plex86 on Slashdot. (And "What's the point?" is not a stumper.)We'll forward the top questions on to Kevin, and hear back from him soon.
Do you see Plex86 as being a product that would allow users to make a more comfortable migration from other operating systems? Which would in turn make it easier to increase the Linux user base. Will it ever be easyeasy enough to setup that even Windows users' could set it up and get their old programs and OS running so they could run Linux too?
Will you try to optimize Plex86 on SMP systems? I believe some tricks could allow the virtual OS to operate more effectively and stable if, for example, one could dedicate one and only one CPU for its tasks.
what are your thoughts on making Plex86 into an para-OS that allows many OSes to be installed and run co-currently? do you see it as being plausible? or even possible?
---
I post links to stuff here
Why do some operating systems work under Plex86 while others do not? i.e., once you have a virtualized system why doesn't it run all operating systems right away? Do different systems use different processor instructions that haven't been handled yet?
----- "I'm still sane on three planets and two moons."
What is the likelyhood of being able to seal off a certain range of memory, ports, etc. that a certain piece of hardware uses and pass it directly to the Guest system? This would be great for hardware Linux does not yet support or which doesn't have all that great support. It could also be great for a second video-card reserved for that Guest (mainly for games) if it is at all possible. ;)
I can't see why it wouldn't be, but then I don't know how to make it reality either
This is one area where VMWare is rather limited at present.
Also, certain videocards emulated in the Guest modeled from existing ones (thereby having DirectX work from the get go, automatic support in most systems?) - That would be great. Matrox and/or Voodoo, perhaps?
Hmm, late time for this question. Wonder if anyone sees it?
Side remark: OS/2 support? How far away?
Regards,
I'm curious if you have any plans to include some set of virtual hardware that will be controlled with drivers running on the guest operating system, but will wrap APIs under the host operating system.
A good example of this is provided by UAE (the Ultimate Amiga Emulator) which has "hardware" build in that translates graphics access to a flexible frame buffer device based on the characteristics of your display window. The neat thing about that is that it works completely universally because there is a driver running under the emulator for this piece of "hardware", so all existing applications can take advantage of this more powerful graphics subsystem that didn't really ever exist on the amiga. It's very neat to have a 1280x1024 amiga desktop. (Before people flame me, there were lots of cool high-end video cards for the amiga, but i couldn't afford them)
So to make a short story long =:-), do you intend to do similar things in the future, so i could install the "plex86_fakecard OpenGL driver" for windows/qnx/whatever and run say 3D Studio and have that pass the 3D work to whatever native 3d hardware happened to be in my host system?
---
Play Six Pack Man. I
Here. Sigh.
Umm, the "true spirit of capitalism" ain't worth squat. If we held to the "true spirit of capitalism," about half the nifty things you could do with the stock market, but aren't allowed to, would be legal. The country had a huge fall because people before the Great Depression where following the "true spirit of capitalism" and investing all of their money (borrowed or real) in businesses. The outcome of that was that we got laws to limit "the true spirit of capitalism" in order to protect the economy. Economics is not about ideologies, or and cool catchphrases such as "the true spirit of capitalism," it is about creating a finely balanced machine that can handle whatever falls within its framework. OSS software is an unexamined phenomena. It was not planned for, and it has not been studied, and thus people must use extreme caution before going idealistic and spouting of the benifits of the model. It may turn out that it works and is healthy for the economy. Then again, it could turn out to be another dot-com disaster (or worse.)
A deep unwavering belief is a sure sign you're missing something...
Congratulations on the progress, and I wish you well with the project.
:-)
VMware have produced a very useful piece of commercial software for Linux. Plex86 does the same job, and since you are giving it away for free, you may well destroy the market for VMware's product on the Linux platform.
Is there a danger that you are sending a message to commercial software developers? In future, may VMware's experience mean that other software companies who may have thought about releasing software for Linux, will avoid the platform? I am opposed to OS monopolies, but I am happy to pay for Quake3 (commercial != evil).
I don't want to be too negative here, and I don't have a solution myself (apart from being good capitalists, and start charging for everything we write - not likely
cheers,
G
do you envision the Plex86 project as a useful platform for modeling and testing new Operating Systems? If so, what effort have you taken, or do you plan to take, to support this use of the software?
-
Just because it works, doesn't mean it isn't broken.
so, not only does "load page table base register" or "load gdt base" or "load ldt selector" have to trap, but so does "store page table base register" or "store gdt base" or "store ldt selector"..
In the 386 and up, Intel got 8086 virtual emulation right, but didn't get 386-mode emulation right. So the Plex86/VMware people have to stand on their head to make this work.
It's worth noting that the hard cases for Plex86/VMware, such as self-modifying code, are also the hard cases for things like the software part of Crusoe and for superscalar retirement units. Most newer designs, like the PowerPC, simply disallow self-modifying code. On the x86, it's fully supported; you can store into the next instruction, and it works. Assembly programmers used to do this for "performance". Today, you take a huge performance hit if you store into an upcoming instruction. Superscalar processors are brought to a screeching halt by such a store, which forces a flush of most of the pipelines and functional units. On Plex86/VMware/Crusoe systems, there's a trap and software emulation comes into play, which is even worse.
Fortunately, UNIX/Linux systems generally disallow storing into code. All this is a hack to make old DOS programs work.
Maybe I'm smoking crack but I'd think that's not a function of hardware (i.e. it is just an API that sits on top of the OS with the low-level shite being in kernel space). True, to get hw accel it has to talk to metal but then it does fall back to sw for a feature it can't find hw support for, just like OpenGL.
In other words I'd think that if windows ran then any windows program would too.
But then I haven't tried this (I keep a seperate machine for non-essential things like opening Office docs and playing Half-Life on. ;-) ), so I could be talkin' out my ass.
--
News for Geeks in Austin, TX
First, congrats for the fantastic work already done.
I would love to run OPENSTEP on plex86. Unfortunately, it doesn't even run under booch (but this was not such a problem, as an OPENSTEP running under boochs would be next to unusable).
* When would plex86 be up to the point where I can try to boot OPENSTEP ?
* How can you, or other plex developers, help me having OPENSTEP running on plex88, beside the fact that OPENSTEP is a proprietary OS with costly licenses not avalaible any more ?
* Do you want me to send you a couple of original OPENSTEP CDs ? Would it helps ? Is it legal ?
In a more general way, do you plan to run a few OSes with great support (by having special plex drivers for them etc, etc) or do you plan to have plex emulate standard hardware to run the most possible different OSes ?
Cheers,
--fred
1 reply beneath your current threshold.
As I understand it, a virtualized OS has any attempt it should make to access hardware intercepted and replaced with some appropriate emulated equivilent. I assume that Plex86 therefore simulates vga or vesa video (so that the simulated OS can think it is talking to a video card), and then represents what would have been the resulting image on a real screen, if it was talking to a real card, as a data structure that can be displayed, say, under X-windows.
:) ]. Can't we slackers ever get enough?!
What I would like to know is: what do you see in the somewhat immediate [that is, forseeable and not imaginary] horizon r.e. virtualization of other windows hardware access? A sound card certainly comes to mind, but of even more use would be, say, parallel port access [for printer drivers [or my nifty Dazzle DVC mpeg1 encoder]
Seriously, though, you've done an amazing job, and I can't help but proffer my enormous respect for the fact that you struggled on for so long on Bochs without -any- support. You are an ideal incarnation of the true hacker ethic; my kudos.
---
the pen is mightier then the sword. the sword is mightier then the court. the court is mightier then the pen.
First, a big thank you for making Plex86 possible.
Now the question...
One thing that I find cumbersome with VMWare and Win4Lin (and the plex86 screenshot that I saw) is that you have to display the entire Windows9x desktop to run even a single application.
Even back in the days of OS/2 2.1, they had a way of displaying Windows application along with OS/2 applications in the same (OS/2) desktop. They did this with a special Windows video-driver which would "burn a hole" in the OS/2 desktop to reveal applications running on the Windows desktop "running behind" the OS/2 desktop.
Here is an example of a Win32 application running inside the OS/2 desktop, and another example. It's sorta like running Exceed (or WinXfree86) and having an X application display over your Windows desktop.
What I'm talking about is (IMO) different than running a Windows application through WINE, because (with plex86) the Windows application is running inside a (logically separate) virtualized machine.
Would you consider offering such a feature, or at least an I/O hook in plex86 so that it could happen?
Thanks
This also fits in with certain features of the OSS world, for instance: Linus Torvalds is from Finland, which is near the North Pole. Coincidence? I don't think so. What does Linus look like with a red coat and beard anyway? I'm buggered if I know, but I suspect Linus and his "elves" (Cox, Stallman, etc) know only too well.
What's the betting on a December 25th release of Linux 2.4? More than odds-on I bet...
--
You are not alone. This is not normal. None of this is normal.
Hi Kevin,
I reading this article on Slashdot the other day and came across an interesting comment:
i still dont see the point of virtual machines...
sure they're usefull for emulating a completely different system (as long as it doesnt need as many system resources as the machine you're running it on) but whats the point of emulating x86 on x86...
the emulated system runs a lot slower than it would natively, as does the system doing the emulation, plus, you're not saving a whole lot of time... i mean, when you start the new system, the virtual bios has to start, then whatever os you're running has to boot before you can use it. so the only time you're saving is shutting down the currently running system... *snip*
He/she certainly has a point about the emulated OS really not saving that much time. I guess you could see this as a shameless feature request, but I was wondering if there were any plans to support suspended state in Plex.
Many newer laptops have this feature, which saves all the relevant state information to a particular space on the hard drive. The laptop runs on almost 0 power, until you press a key to wake it up. After a few moments of churning, it wakes up and *poof*, you're computer is in the same state it was when you suspended it, open applications and all.
This feature is also popular on (much simpler) console game emulators.
Do you think that someday, a project like plex86 and a project like Bochs might combine in kernel space to produce a lightweight virtual machine that could run x86 code?
What do you think about the idea of dynamically generating native code in places where emulation is necessary instead of repetitively doing a loop that follows the below sequence:
I think he's referring to the fact that plex86 requires a linux kernel module to be loaded before it will work.
FreeBSD on x86 cannot load this module, and so it will not work.
I tend to break software development into two areas, computer science and software engineering. Voice recognition, code morphing, cracking mathematical problems and so forth are computer science. Writing a word processor or a monolithic operating system or even a virtualizer is more software engineering. It's not like new ground is being broken in writing an x86 virtualizer, the art is documented already. As the previous post commented, MATLAB is based on well known algorithms.
.NET has a few interesting ideas and whatever good pieces are in it hopefully will be appropriated by Open Source people to be put into GNU/Linux.
Open source projects tend to be better at software engineering projects rather than computer science projects. The GNU project did very well creating the GNU tools because that was software engineering. Building a serious operating system based on a microkernel is closer to comptuter science and so got bogged down. Monolithic kernels are software engineering and so Linux took off. Even Ogg Vorbis is really just taking the well studied field of compression and the focus is on sidestepping patents than trying for something oh wow and state of the art.
To my mind, this is where the difference between commercial and open source software should lie. The commercial companies should be pushing the state of the art and working on all this gee wow stuff that people will be willing to make money on. The Open Source people should see this and then promptly reverse engineer it as the state of the art trickles down to the level that it becomes software engineering and the commercial people should be plowing on ahead and finding better things to focus their money on.
Apple is trying to do it with OS X and their rewriting of the BSD kernel. They've done some fascinating things there with Quartz and display PDF that I really hope the GNOME/KDE folks are looking at to implement in their own systems, not to mention the GNU/Linux crowd with the innovations on folder bundling and moving all system resources into XML files. Apple is steadily innovating in their products. Microsoft's
Personally, I want to have a personal computer based on GPL'd software that has all of the functionality of a mainframe down to the virtual machines and scalable multiprocessor support, with all of the newer innovations that have cropped up like XML resource files, Display PDF for graphics, CORBA for handling widgets and so on. All of that is really more software engineering (yes, expensive in time and expertise software engineering but still that). The media players on the system should all be dealing with well defined media formats that anyone can write a free encoder or decoder to in GPL'd software.
All the money I should be spending on the system should be for things like voice recognition and things that I know are cutting edge and state of the art and require money to finance. My biggest beef with Microsoft is that they gouge out huge amounts of money and frankly there are very few technical innovations that they have spearheaded themselves. At least Apple goes and raises the standard for what one should expect out of a personal computer.
In the ideal world, the universities develop new ideas, the commercial companies take these ideas and turn them into money-making projects and after the newness of the ideas has worn off and their genuine value has sunk in, the open source people move in and incorporate it into widely available open source software, forcing the commercial companies to move on to something new. This is rough on the commercial software companies but no one said that life was going to be or should be easy on them.
Trying to keep on topic with the discussion, even if I am not asking a question, virtualization is a solved problem and goes back decades. Now that personal computers have reached the right level of performance to handle such things (as with other features of mainframes that trickle down when PCs get fast enough) it is only natural to start writing Open Source projects to implement it. VMWare folks need to find somewhere else to move onto, or to simply conceed to plex86 and start working on selling support of the project. They could look to see if they could combine something like VMWare with Transmeta's code morphing, perhaps even to virtualizing different processors on one machine. There are directions they can still go, there is still room for improvement. Or they can compete the way the rivals to XFree86 compete, with a wider range of driver support. In short, I feel little sympathy for VMWare. If they can't keep ahead of plex86, then they're doing something wrong.
Thanks
Bruce
Bruce Perens.
IBM's virtual environment (VM-ESA) works without the aid of a "host operating system." In other words, if you want to load (for example) Linux/390 into one of your VM's, you don't have to have the VM running inside OS/390 (the operating system formerly known as MVS). The whole mainframe is virtualized by VM-ESA before you start getting into operating systems at all.
What would be involved in making something like this run on the x86 environment? Could, for example, a thin VM management layer run on the bottom, with Linux and Windows running in parallel, instead of one on top of the other as both plex86 and VMware do?
Or is the PC so badly designed that there's no hope of doing VM's without a host OS?
--
Tired of FB/Google censorship? Visit UNCENSORED!
Would this approach work? If nothing else, could BOCHS used in OS X to install/run Windows from the new Apple OS a la VirtualPC?
-------------------
-------------------
This is my SIG. There are many like it, but this one is mine.
Hi Kevin,
I've been lurking on the development mailing list for quite a few months now, and I'm wondering where do you see Plex86 going in the future? virtualization of as many OSes as possible? graphics virtualization? or some other tangent that hasn't been discussed yet?
---
I post links to stuff here
What characteristics make a processor difficult to virtualize? What characteristics make it easy? I have more than a passing interest in this, as I'm currently a graduate student studying IC design.
The more detailed the answer, the better.
Some apps will "never" be able to run in Wine (Windows lets you do things that Linux knows are *bad* ideas). With this in mind, are there any applications that you would really like to see running in Windows (or whatever) on Plex86?
Everyone mentions running Microsoft Office when it comes to Wine; do you have any "milestone events" in mind for Plex86 (as the list of booting OS's continues to climb)?
Do you beleive that large scale virtualisation could be possible, like emulating 100 linux hosts on a big SMP box, getting the kind of virtualisation that the Mainframe guys enjoys ?
Cheers,
--fred
(And yes, we could have a beowulf on a single host)
1 reply beneath your current threshold.
I understand that you cant control open source developers, and tell them "You must work on xyz aspect of the code", but I was wondering this one question: Is the driving force to get a perfect Virtual CPU, is it to boot OS XYZ at any given time, or is it to boot as many OS as possible?
CK
---
Video meliora proboque deteriora sequor - Ovidius
Are there any plans in the near future to replace the Elpin BIOS with a Free implementation?
--
The need for large partitions in a Windows environment coupled with the file size limits in Linux and the more restrictive Windows licensing means this sort of support is critical to anyone wanting to run Windows on Linux with plex86.
--
If the authors of an OS want to cooperate with Plex86, so it runs more efficiently when virtualized, what would you recommend? What (expensive) operations would be best avoided? Will Plex86 have a API available for a faster alternative to emulation?
Deven
"Simple things should be simple, and complex things should be possible." - Alan Kay
I'm an avid FreeBSD enthusiast, and I'm disappointed to see that Plex86 doesn't look like it will run under FreeBSD any time soon. Bochs, on the other hand, works fine under FreeBSD, but lacks many essential features that Plex86 appears to have. I was wondering what you will be doing (if anything) to ensure the platform independence of Plex86. Will you be leaving Bochs as the multi-platform solution? Will the Bochs be abandoned in favor of Plex86?
...These aren't the droids you're looking for....Move along....
Hi Kevin,
/. cast of thousands help out?
What are the greatest needs in the Plex86 project? How can the
(Ok Kevin, here's your chance - you'll never get a better one to recruit new helpers!:-)
I know this is a way off, but do you see any reason why DirectX support would not be possible? Or would it just require too much manpower that it wouldn't be feasable?
A topic brought up on Slashdot a couple days 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?
NO CARRIER
While the ideal is that Plex86 will support all operating systems, I assume that you've made choices as to which ones you're going to work on first. Your site mentioned Dos, NT, Win95, Linux and QNX as OSes that PLex86 currently runs. As someone who tends to use FreeBSD when I use a free OS, I'm curious as to where the BSDs rate in your priorities and what about BeOS, Plan 9, etc...