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."
It doesn't emulate an OS, it emulates an x86 PC.
It acts like a...well, a virtual PC.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
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
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 [plex86.org] (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.
Excuse me? The review states *exactly* what you've stated. It's very clear about it. All over the place. Every third paragraph mentions that Bochs is meant for different uses, and is portable.
Man, read the article before you go bashing authors. There are enough really *horrible* reviews out there that you should be expounding on the virtues of a half-decent one, not nit-picking non-existent flaws.
Barclay family motto:
Aut agere aut mori.
(Either action or death.)
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.
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.
Hmm...VMware...
(click) [VMware open]
(click) [VMware open]
(click) [VMware open]
(click) [VMware open]
"Huh, what? Wait a sec. Just a few more clicks, and I'll have a beowulf cluster of these..."
(click)
(click)
(click)
(click)...
-- I'd say your post was about 3 monkeys, 18 minutes.