Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
FAUmachine

FAUmachine - A Configurable Virtual Machine

Description

The FAUmachine group focuses on the design of Virtual Machines. Main aspects are speed, clean design, configurability, and fault injection.

All ideas are implemented into the Virtual Machine called FAUmachine which is developed at the university since several years.

The research group is part of the Informatik 4. Head of the group is Dr.-Ing. Volkmar Sieh. The team consists of many members.

FAUmachine

FAUmachine is a virtual machine, similar in many respects to VMWare[tm], QEMU or Virtual PC[tm].

What distinguishes FAUmachine from these other virtual machines, are the following features:

  • The FAUmachine virtual machine runs as a normal user process (no root privileges or kernel modules needed) on top of Linux on i386 and x86_64 hardware. The port of FAUmachine to OpenBSD is in progress, the one to Mac OS X (intel) is working on both 32 and 64 bit platforms (but is not officially supported, see README.macosx in source for more details).
  • Fault injection capability for experimentation in FAUmachine.
  • VHDL interpreter for automating experiments and tests based upon our project fauhdlc. We also ship example scripts for our VHDL interpreter that allow the automatic installation of several Linux distributions and other operating systems using the distribution's cdrom(-image).

The CPU of FAUmachine is based on the virtual CPU from Fabrice Bellard's excellent QEMU simulator, which can execute almost anything a real x86/x86_64 CPU can execute, too.

Beginning with release 20090922, there is an additional CPU which uses the kvm module of the Linux kernel to execute most of the guest code directly on the host CPU instead of emulating it. (This feature is still to be considered experimental.)

FAUmachine simulates a large variety of different hardware components, including

  • several x86 and x86_64 CPUs,
  • IDE and SCSI controllers,
  • NE2000- and Intel eepro100 network interface adapters,
  • a Sound Blaster 16 sound card,
  • a generic VGA and a Cirrus GD5446 graphics adapter,
  • a 24 and a 48 pin direct-I/O PCI-card,
but also peripherals such as
  • networking hubs and routers,
  • serial terminals,
  • modems,
  • USB-to-Serial adapters,
  • and even a three-story elevator.
and also other hardware like
  • Zuse23 computer
  • ARM cpus
and many other hardware items.

Additionally, FAUmachine can not only simulate a PC, but also its environment, like power switches, the monitor, the power supply and even the interaction of the user. The virtual user can recognize text and bitmaps on the screen and react to it by typing, moving and clicking the mouse, pressing the reset button, and the like.

One of the main differences to other virtual machines like QEMU, VirtualBox, Bochs or VMware is, that FAUmachine can be configured on a very fine granular level. Such details include, to what memory bank a memory module is connected to, or which PCI-slot a PCI-card is inserted into.

Of course FAUmachine supports networking. It can be connected to the local network which its host machine is attached to in a masquerading-like way using slirp, or even transparently via a TUN/TAP-bridging interface. If the appropriate servers are running on the FAUmachine, login from any real machine is possible, once the network is set up.

FAUmachine has the ability to take screenshots of the simulated monitor. It also comes with facilities to record a movie of the virtual screen during simulation, which can be re-coded to OGG/Theora using our tool faum-encoder.

We created some screenshots.

We have collected a small number of links to projects with related topics.

Acknowledgement

Parts of FAUmachine were supported by the European Community (DBench Project, IST-2000-25425).

Contact

Please feel free to mail comments, questions and suggestions to a member of the FAUmachine project team or to Volkmar.Sieh@fau.de.

Send any bugs you find to Volkmar.Sieh@fau.de.