Slashdot Mirror


Pointers for Developing x86 Virtualization?

josh asks: "For my next project, I've decided I want to do something related to x86 virtualization (the way VMware does it or Plex86 not Xen/Bochs/etc.) but I really don't know where to start. Googling hasn't been helpful (just look at the results if you don't believe me). Are there any resources for learning about this kind of x86 virtualization? I know virtual 8086 mode wouldn't work, but without that what advantage does something like VMware have over something like Bochs? Are there any F/OSS projects aimed at something along the lines of my thinking? Please enlighten me with any references and resources you might have. Thanks!"

10 of 41 comments (clear)

  1. Read More Slowly by mcgroarty · · Score: 5, Informative
    Reread the second paragraph of the Plex86 page you linked to -- plex86 virtualizes like VMWare. It's not an emulator. bochs and plex86 were started by the same developer, and virtualization versus emulation is the difference between the two projects.

    Go to the plex86 page you linked to and download source. That's an excellent place to start. Apart from that, boning up on the difference between user and kernel modes and getting your hands on the free Intel developers' docs on the Intel website are about as good as it gets for this kind of learning.

  2. qemu by cfallin · · Score: 2, Informative

    I find qemu to be quite excellent x86 virtualization software. It's closer to VMware than Bochs, using dynamic translation.

    1. Re:qemu by caseih · · Score: 3, Informative

      Not quite. While qemu will most likely yet gain virtualization to speed it up, qemu is definitely not what the poster is asking about. qemu is an emulator just like bochs, except that qemu employs dynamic translation of cpu instructions (and caching of said blocks of code). One mode of qemu, qemu-fast, uses a linux kernel module to allow the native OS memory manangement and paging routines. In pure emulation mode memory management is also emulated. At best qemu can yield a raw cpu speed of 1/3 the host processor. Compare this to vmware which, although it seems slow, in theory can be almost full speed in terms of cpu-bound metrics.

      I think that down the road qemu will adopt some virtualization techniques on various platforms. Obviously this would be limited to x86 on x86 or ppc on ppc. But it will be exciting to watch and follow qemu. I already run win2k in qemu on my 1.5 gHz athlon at quite a respectable speed.

  3. Get guides to the hardware you want to emulate by ChaseTec · · Score: 4, Informative

    Half of what you want is cpu documentation, Intel makes nice free guides to their 32 bit x86 cpus. Sometimes they even will send out the manuals free in book format, right now it looks like you can download them or order a free cd. Check back often because the free books(shipping free too) come and go. http://developer.intel.com/design/pentium4/manuals /index2.htm

    The other main half is BIOS info, check our Ralf Brown's int list: http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/p ub/WWW/files.html

    For the rest you just need lots docs about various hardware like floppy controllers and such, check out my site for OS developers since I probably have more links listed then anyone else. Besides this stuff you might want to re-include java in your google searches because most of the research into virtual machines that I've seen uses java but alot would still apply.

    --
    My Hello World is 512 bytes. But it's also a valid Fat12 boot sector, Fat12 file reader, and Pmode routine.
  4. MOL by Joe+Tennies · · Score: 3, Informative

    Something you may want to look at is MOL (maconlinux.org). It's for PPC, but it does demonstrate how to do virtual machines like you are discussing.

    Don't forget that one good thing is also your ability to write a good driver for the client OS. That can yield huge speed increases on its own.

  5. virtualization wiki by johnseq · · Score: 2, Informative
    I maintain a wiki on virtualization projects which has several oss listed

    this page has all the open source wiki pages, and this is the front page for the site.

  6. Not restricting to x86... by hubertf · · Score: 3, Informative

    here are a few links from my collection on the topic:

    + vmware
    + bochs
    + vax with simh-vax, see
    http://www.netbsd.org/Ports/vax/emulator-howto.htm l
    + xen
    (http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
    + LilyVM
    (http://lilyvm.sourceforge.net/index.ja.html)
    + mips64emul
    (http://www.mdstud.chalmers.se/~md1gavan/mips64emu l/),
    + dosbox (http://dosbox.sf.net)

    I'm mostly interested with running non-Linux (e.g. NetBSD, Solaris) in a virtual environment for using it in my "Virtual Unix Lab" training environment, see http://www.feyrer.de/vulab/).

    - Hubert

  7. Check out Qemu - the Quick Emulator by Nailer · · Score: 2, Informative

    If you want a real Open Source emulator that's complete enough to run Windows XP (and do so with usable speed), QEmu is your only option. Currently it simulates a Pentium, Vesa fgramebuffer video card, and ISA NE2000 NIC.

    Check out this dude's blog for screenshots of QEmu running Win2K.

    Combine it with a copy of x86 glibc and a recent Crossover, you can use it to run Office XP for Windows on Linux on a Mac. Scary :^).

    Go get it from the Qemu Site.

  8. Re:Link by vinit79 · · Score: 2, Informative

    The acm portal does have a wealth of information but u need to pay for the subscription to access most papers(unless as in my case u r a student and ur univ library has a subscription) . However, one good idea is to find the relevant papers and then google for them( many authors often maintain a copy of their papers on their webpages .. albiet somewhat illegally)

  9. Re:Link by addaon · · Score: 2, Informative

    It is legal for the author to make a copy of their paper available free of charge, although the ACM (and other professional organizations) discourage it. The author is the copyright holder.

    --

    I've had this sig for three days.