Whats is Qemu?
QEMU is a generic and open source machine emulator and virtualizer.
- When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performances.
- When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. A host driver called the QEMU accelerator (also known as KQEMU) is needed in this case. The virtualizer mode requires that both the host and guest machine use x86 compatible processors.
QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures.
In conjunction with CPU emulation, it also provides a set of device models, allowing it to run a variety of unmodified guest operating systems, thus it can be viewed as a hosted virtual machine monitor. It also provides an accelerated mode for supporting a mixture of binary translation (for kernel code) and native execution (for user code), in the same fashion as VMware Workstation and Microsoft Virtual PC.
QEMU can also be used purely for CPU emulation for user level processes; in this mode of operation it is most similar to valgrind.
One feature exclusive to QEMU is that of portability: the virtual machines can be run on any PC, even those where the user has only Limited Rights with no Administrator access, making the 'PC-on-a-USB-stick' concept very real. Similar applications exist (such as MojoPac) but they currently require Administrator rights to run, making them useless in areas such as public libraries, internet cafes, and so on.