Slashdot Mirror


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."

23 of 204 comments (clear)

  1. Apples and oranges by AirLace · · Score: 3, Informative

    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.

    1. Re:Apples and oranges by dbarclay10 · · Score: 5, Informative

      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.)
  2. A few things to note... by tkrotchko · · Score: 5, Informative

    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
    1. Re:A few things to note... by Insightfill · · Score: 2, Informative
      I use VMWare everyday and while I agree it doesn't use multiple CPUs, you can launch multiple instances of VMs at the same time and they will use sep. CPUs from each other. In essence, you're then running two Celeron533s at the same time. The video driver it supplies is good enough for testing anything except games.

      Love this package - instead of keeping a dual-boot machine floating around, you can keep multiple VMs on the same machine, and even run them at the same time. Bonus trick - get four VMWare sessions running at once and have them network amongst each other. Very cool.

      BTW, your trick of blowing away the delta file (VM calls it an "undo" disk) is exactly what we use it for - beats Ghost.

    2. Re:A few things to note... by SlamMan · · Score: 3, Informative

      Another really sweetfeature of VPC is that you can have multiple image instances running at the same. Even better than that, is that you can network them together. I at one point had win200 running, and win 98, me, and 95 all up to check connectivity with it. Its a cool toy.

      --
      Mod point free since 2001
    3. Re:A few things to note... by cookd · · Score: 2, Informative

      For my use, multiple CPUs on a machine destined for Virtual PC-ing is almost a requirement. Although the VPC will basically be maxing out the once CPU, it has a few background threads running as well. Giving these threads a separate CPU to run on really improves responsiveness and reduces "hang" time (every few seconds, the VPC seems to hang for a few seconds, then comes back to life). In addition, if you plan to do stuff on the host OS while the virtual OS is going, the second CPU will give the host OS enough cycles to perform well even while the first CPU is somewhat busy maintaining the hardware state of the VPC.

      --
      Time flies like an arrow. Fruit flies like a banana.
  3. Re:bochs vs plex86 by Daniel · · Score: 5, Informative

    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!
  4. VMWare tips by young-earth · · Score: 5, Informative

    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.

  5. I've been using Virtual PC for a little while... by SIGFPE · · Score: 4, Informative
    ...on my MacOS X 550MHz G4 Powerbook.
    1. 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.
    2. 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.
    3. 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!
    4. 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
  6. Scratching my itch by driehuis · · Score: 3, Informative

    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.

  7. Re:What happened to win4lin? by Anonymous Coward · · Score: 1, Informative

    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.

  8. Incomplete emulation by Bryan+Ischo · · Score: 4, Informative

    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.

    1. Re:Incomplete emulation by Permission+Denied · · Score: 3, Informative
      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.

      I wrote an OS kernel using VMWare. It's actually fairly nice (VMWare, not my kernel :).

      The way I worked it is that I wrote my own stupid little program to snarf the significant ELF sections from a Linux-Elf binary and stick them into a simplistic file format. I wanted to do this all by myself (that was the whole point of the thing), so I wrote my own bootloader in assembly (using nasm, a great tool) which would subsequently load up the image from floppy and jump into the C code. Pretty common stuff as far as I can tell. I got somewhat far along (started trying to figure out how to get the network card working - that would have been really interesting) before other projects caught my attention.

      It's a very nice environment. I don't know anything else about Bochs or Plex86, but VMWare has this thing where you can specify that the floppy device is actually a file. Greatly cuts down the time on the compile/assemble/boot cycle. One funny thing is that it would ask you to file a bug report whenever you managed to triple-fault (which happens a lot when you're just figuring out the nasty GDTs et al.).

      Another nice use for VMWare is setting up four FreeBSD virtual machines, each with 16M of memory and playing networking games (eg, try to write your own distributed filesystem) when you don't have access to private network (eg, on vacation with the laptop - no Internet connection, you get more work done).

      I'm very happy with VMWare. You should definitely try it out, especially if you can manage to get the educational discount.

  9. This IS an odd comparison... by Spencerian · · Score: 3, Informative

    ...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.
  10. "Didn't read the article" alert! by CoughDropAddict · · Score: 3, Informative
    If you had, you would have read this:
    First off, we need to clear out an issue that many people are confused about or just do not fully understand. VMware Workstation & VirtualPC are not emulators as Bochs is. They deliver the same output, but the way they work is different.

    [...]

    VMware Workstation buys speed with its runtime engine, while Bochs and VirtualPC buys portability. It is a trade-off game.
  11. VPC for development by Anonymous Coward · · Score: 1, Informative

    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.

  12. Re:bochs vs plex86 by Daengbo · · Score: 2, Informative

    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.

  13. VMware is excellent for Software Quality Assurance by antdude · · Score: 3, Informative

    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).
  14. The sad part by clem.dickey · · Score: 4, Informative

    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.

    1. Re:The sad part by kma · · Score: 2, Informative

      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?

      Alas, you would have to change enough stuff that it wouldn't feel like the x86 anymore. The canonical example of the x86's unvirtualizability is the eflags register. This register is a jumble of supervisor state and user state; for example, condition flags set by arithmetic operations appear there, as does the flag that enables/disables external interrupts.

      There's an instruction, POPF, that replaces the contents of the eflags register with the top of the stack. If user-level code mucks with supervisor flags, the hardware silently ignores these attempts, with no fault to give a would-be virtual machine monitor a hint that something fishy is happening. That's a problem for VMware; every time the linux kernel executes one of its restore_flags macros, it performs a POPF that attempts to alter the state of the interrupt flag. VMware needs to notice this somehow; currently, the hardware provides no help.

      This POPF problem could be solved by creating some sort of processor mode, analogous to the virtual 8086 mode used by windows DOS boxes, that makes POPFs that attempt to modify the interrupt flag from user mode trap. However, there are other "unvirtualizable" attributes of the x86 that go a bit deeper.

      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.

      There is some truth to this. Malicious x86 guest OS'es will probably always be able to tell that they are running inside a VM.

      Still, it gets me down when people imply that VMware is some goofy hack that happens to work with Windows and Linux. By design, nothing prevents us from running more exotic OSes. The list of random OS'es that work in VMs is, in my biased opinon, pretty impressive: Plan9, BeOS, AtheOS, Solaris, OpenStep, QNX. Check out vmware.guest.misc for more.

      Keith Adams (partisan VMware mts)

  15. OT: Slowing down MSDOS games for faster machines by Mongoose · · Score: 3, Informative

    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.

  16. Two thumbs up for Win4Lin by _|()|\| · · Score: 3, Informative
    I use Windows 98 with Win4Lin 4.0 on Red Hat 7.2. The product works as advertised. It consists of a kernel patch (RPMs available for Red Hat, SuSE, Mandrake, et al.) and utilities (also available as an RPM). It comes with a graphical installer, but I didn't use it.

    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.

  17. Re:bochs vs plex86 by MrDelSarto · · Score: 2, Informative

    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.