VMware vs Virtual PC vs Bochs
Sean writes "Possibly of great interest to developers as well as alternative OS users, this article compares three x86 emulators, VMWare, VirtualPC and Bochs. It looks like VMWare is better than the lot, but Bochs is shaping up nicely too."
Bochs and VMWare are completely different animals. Comparing their relative performances is simply nonsensical. From the bochs site:
Bochs is a highly portable free IA-32 (x86) PC emulator written in C++,
that runs on most popular platforms. It includes emulation of the Intel x86
CPU, common I/O devices, and a custom BIOS.
On the other hand, VMWare is a virtual machine implementation. Whilst Bochs can mimic an Intel processor on any platform to which it's ported, VMWare depends on being able to pass machine code directly to the native CPU without interpreting it, and therefore its performace is pretty snappy.
At least you can say appples and oranges are both round, but this 'review' takes the biscuit. Bochs will never "shape up nicely" in the way that the article expects it to because it's a fundamentally different piece of software to VMWare. Plex86 (formerly FreeMWare), founded by the lead developer of Bochs, would have been the Open Source analogy for VMWare, had its development not died off several months ago due to a terminal lack of developer interest.
I don't believe these emulators take advantage of multiple CPU's, so he is using effectively a 533mhz Celeron. That's a little slow for these emulators.
He states that neither supports sound cards. This is not correct. VPC has the edge for this function in my opinion, although VMWare isn't bad.
Here's what I've learned. Virtual PC is your best bet for running virual Windows based machines. It runs them very well. On the other hand, I can't get any distro of Linux to fully load under VPC. That's not saying you can't, but each one crashes or freezes at some point. The real strength of VPC is that it emulates known, common hardware, so it provides an easier environment to set up in the emulated machine.
By contrast, VMWare is mediocre at providing an environment for Windows. It will do it, but the non-standard video card it emulates is a huge pain in the rear. However, VMWare runs Linux distro's pretty well. It emulates different types of hardware, and the options are impressive.
I wouldn't rate one better than the other, they're both very good and some things, and very average to poor at others.
However, you should buy one of these tools for testing out new software. You can load software inside the virtual machine, test it (for trojans, spyware, whatever), and then when you're done, you either blow the changes away or keep them in you virtual machine. The virutal disks themselves are disk files, so they provide an excellent testing environment because they are effectively immune from user changes to the environment (burn the hard drive image to a CD, and pass it out to the testers with VPC on their drive). It allows you to test on dozens of machines without owning dozens of machines.
Its cool stuff.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
I've heard this repeated several places, and I don't understand where people are getting it. In fact, plex86 is a dead (or rather dormant) project, while bochs is chugging along healthily.
If you don't believe me, read the development mail archives for the month of May:
bochs
plex86
Daniel
Hurry up and jump on the individualist bandwagon!
If you're going to use VMWare (I do, have since 1.0, and it's great), here are some tips to keep in mind:
- when asked about the graphics card during a Linux install, say SVGA generic, later on you'll upgrade it to the VMWare video card when you install the VMWare tools.
- specify "Undoable" for your disk(s) if you ever want to run a bunch of odd tests, installing weird things for example, or trying a virus to see what it does, then just say "forget it" when you're done. If you're doing a virus test please do remember to turn off the network connection though...
- If you've used VMWare 1.x or 2.x but not tried 3.x, it's a whole new world. The mouse responds like it's a real system - even on my slower machine (dual PII-400's). 3.0 is a major leap forward.
- Have lots of memory in the host system, remember running two OS's means you'll be using a lot more RAM.
- Sound is a weak point currently, you can get it pretty good but not great. Using the preempt kernel patch on 2.4.17 helps but isn't quite enough. Playing around with priorities helps too.
Got Wisdom?
- I've been playing DOS games (under PC-DOS). Settlers II and Ultima Underworld I/II play perfectly. Populous is unplayably fast. Tomb Raider was reasonably fast though it did keep stopping for a while every 10 seconds.
- Playing games under Windows 98 is tricky. Age of Empires II and Red Alert play. They're a little slow but not so slow you can't play.
- I installed Debian with no problem. In some tests the emulated X server is faster than the Native XDarwin. (I'm serious! XDarwin sucks and I guess the there's no reason for the emulated S3 card to be that slow.) Couldn't get networking to work. Did some numeric speed tests (eg. echo "2^100000"|time bc) and found the emulated machine to be half the speed of running natively. Really! That dynamic compilation stuff works well sometimes. XGalaga worked fine!
- Also tried FreeBSD (did an FTP install, flawless), Plan 9 (3 or 4 hours to install but it seemed to work) and MenuetOS (pretty nippy).
with success.Goes to show you can emulate the hardware completely and still get good results. Bochs has a long way to go.
-- SIGFPE
Unfortunately, the quirks can be real show stoppers. VMware has the edge in that it actually is a useful environment if you have to occasionally use Windows, and need a bit of performance. As long as VMware sort of works under FreeBSD (yeah, I know, it's official and BSD is dying; nothing to see here, please move on), I'm happy with it.
Bochs is pretty impressive in that it actually works and actually does useful things, but I wouldn't dream of using it for serious work as it stands now. It's just too slow, and plex86 is just too far out.
I did work on Wine way back when and I still like its idea, but portability really is a huge issue.
None of these emulators are at the point where I can start contributing anything useful. The gorgeous thing about Wine is that, once you get it to run at all, you can start addressing things that don't work for you, and work in that area can benefit all the emulators. As things stand now, you're pioneering to get any of them to run Solitaire under FreeBSD, and that just hurts too much to consider scratching.
Bert Driehuis -- All I asked was a friggin' rotatin' chair. Throw me a bone here, people.
Well, NeTraCurse went dot-com-tits-up a year or so ago, and moved to Austin with about 10 managers and 2 engineers, so I don't know how well the product has advanced recently.
I checked their support page a while back, and they have like 70 kernel builds available for download, since they couldn't get their kernel mods accepted into the mainstream kernel, and didn't figure out how to have a self-building installer like VMWare has.
One facet of these emulators that is of particular interest to developers, but not mentioned in the article, is the completeness of the emulation. Back when I was working on an OS, I found that there were some instructions that were incompletely/improperly emulated by bochs and plex86. This made it difficult to write some kinds of code.
I am not sure how VMWare compares with regards to this. When I tried it it seemed to be alot more complete than bochs/plex86, but unfortunately it was missing the "console only" mode that plex86/bochs has.
Also I corresponded with VMWare who was unwilling to guarantee that their cheaper "Linux guest only" version would be able to run a simple handcrafted OS. I decided that their much more expensive general version was not worth the price, and stuck with plex86/bochs, working around the improperly emulated, or non-emulated, instructions.
I think it would be interesting to see a comparison of these emulators from a completeness standpoint, not just a performance standpoint. For an OS developer, the former is probably more important than the latter.
In any case, an emulator is a godsend when you are writing OS code, because otherwise you have to reboot your machine and wait for it to POST each time you change you code rather than just simply firing off a much quicker and easier run of the emulator. Also, the emulators often print out useful messages when there is an unusual processor condition or a processor exception, which can be very helpful in tracking down the cause of lockups. Plex86 was particularly good in this regard at the time that I was using it.
...unless you talk only about emulators for x86 (the topic wasn't too clear about this.)
For most of the x86 UNIX world, VMWare and Bochs are surely helpful. As a Virtual PC for Mac user, I was dubious about the introduction of VPC for Windows until I realized that trying to install multiple versions of OSes on x86 hardware is a pain in the ass at best. VPC should run very nicely on these systems since the emulation may be less. Unlike VPC/Mac, VPC/Windows shouldn't have to translate the processor instructions from Intel Pentium II to PowerPC G3 instructions, but just shove them at the actual processor.
VPC/Mac has one thing going over its x86 cousins: it truly emulates a PC, not just an environment rich enough for an OS to operate. I'm starting to speak out of the side of my mouth, not having to use VMWare or Bochs, but there's something to be said of emulation of a whole machine on hardware that was not intended to process these kind of instructions.
Vos teneo officium eram periculosus ut vos recipero is.
I do network app development that requires multiple machines. Using VPC I can run a Netware server, RedHat 7.2, and Win2K on my Win2k laptop at the same time. It is simply the best way when you can't have a lab full of equipment. I also run VPC on my OS X powerbook on occaision. The Mac version can use multiple processors...not sure about the windows version.
To clarify the plex vs. bochs posts: about two weeks ago I tried for a whole night to find ANYTHING about plex newer than November, and couldn't. It appears that Mandrake bought up Bochs, turned it into Plex using the original developer, Kevin Lawton, and then fired him. It looks like he has since returned to Bochs and they have released 1.3 and 1.4 since then, while plex is still looking for someone to lead the project. In the words of one reviewer of Bochs and Plex, this kind of programming is so difficult it makes kernel hacking look like high level code and there are very few people out there that can do it.
Kudos to Kevin for all his great work, and I'm sorry that Plex86 is dead in the water, 'cause that's probably what I would have used.
Put identity in the browser.
I work for Symantec in testing Norton Internet Security products, and we, testers, use it all the time. It's a great product. I used to do Web testing, and it was great for that too. :)
Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
The sad part is that x86 self-virtualization is so difficult in the first place. It would be much easier if user-mode accesses to control registers were disallowed. How hard could that be for Intel? Or for AMD?
Several other (less popular architectures) are much easier to virtualize: S/370, M680x0 and PowerPC e.g. Motorola just missed the target with the original 68000 - eight privileged status bits were user-readable. They fixed that in the M68010.
The x86 situation benefits only VMWare, which figured out how to virtualize x86 despite Intel. And VMWare still has trouble; it can handle only specific OSes in guest machines. By contrast VM/370 (or whatever IBM is calling it these days) can handle virtually any guest OS.
You can download programs to slow down your games for faster machines. I still play Arena: The Elder Scrolls myself. =)
You should be able to d/l the programs from:
http://www.elderscrolls.net/
I've found that bochs could actually help playing old MSDOS games because of this... if it's SVGA BIOS emualtion was working for these games.
It's definitely a niche product, but it's just the ticket for a Windows refugee for whom WINE doesn't quite cut it. The VNET virtual NIC handles Internet Explorer and Eudora just fine.
One reservation in recommending Win4Lin is that the target market may find installation too difficult. For example, I had to jump through some hoops to make a floppy boot image (I have the non-bootable W98 upgrade CD) for a system without a floppy drive.
Also, you're dependent on NeTraverse keeping the kernel patch up to date. Unless they can make an NT/2K/XP version, Win4Lin will probably die in a year or two. I don't know what kind of R&D NeTraverse has, as this product is basically a port of Merge from SCO to Linux.
Finally, some potential Win4Lin or VMware customers may find that connecting to a second machine with VNC is just as good a solution.
I've been subscribed to the plex86 mailing list for around 6 months and there really isn't anything of interest going on. What happened was the lead developer, Kevin Lawton, was sacked from Mandrake and disappeared. As far as I can tell he didn't leave anyone with check-in access to the CVS tree, and the whole thing just stopped.
Not that it was ever that great, it really is a pain to install and try and use compared to Vmware. It's now moved to here (for one of those very Stallman-esqe reasons sourceforge wasn't "free" enough or something) and apparently Drew is working on getting the latest CVS with patches up and running, but don't hold your breath.
it could be a good project, just needs some more effort from people. i personally thought there would have been more developer interest.