FAUmachine - A Configurable Virtual Machine
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.
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.macosxin 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,
- networking hubs and routers,
- serial terminals,
- USB-to-Serial adapters,
- and even a three-story elevator.
- Zuse23 computer
- ARM cpus
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
We created some screenshots.
We have collected a small number of links to projects with related topics.
Parts of FAUmachine were supported by the European Community (DBench Project, IST-2000-25425).
Send any bugs you find to Volkmar.Sieh@fau.de.