Context Navigation

Frequently Asked Questions (FAQ) for developers (Developer FAQ)

This particular FAQ is for developer issues only; you may want to look at the User FAQ and Licensing FAQ for additional topics.

Q: How does VirtualBox relate to QEMU? I have seen some source files that appear to be related to his project.

A: VirtualBox makes use of QEMU in two ways: first of all, some of our virtual hardware devices have their origin in the QEMU project. We have found them to be very useful and took them as a starting point. Secondly, we have incorporated the recompiler of QEMU as a fallback mechanism for situations where our Virtual Machine Manager (VMM) cannot correctly handle a certain situation. This holds true for guest code that executes in real mode (such as bootup) and some rare scenarios at runtime. See VirtualBox architecture for details. QEMU saved us a lot of work and we are very grateful to be able to rely on it.

Q: Does VirtualBox support CPU virtualization enhancements such as Intel VT-x (codename Vanderpool) and AMD SVM?

Q: Why do you ship source codes from Mozilla and build them as part of VirtualBox? This increases build times and every sane person on this planet already has Mozilla Firefox installed!

A: On Linux hosts, VirtualBox makes use of Mozilla XPCOM? as its component model. Unfortunately, XPCOM is not very standardized and each and every application based on it brings its own binary version of XPCOM. Also, we have significantly enhanced XPCOM for cross process communication and our enhancements have not been incorporated into the Mozilla code base yet. We therefore cannot rely on XPCOM being present on our target systems and even if, it would not have our enhancements. For Windows hosts, we do not rely on XPCOM so we don't build it there.

Q: Why does it take so long to build VirtualBox?

A: That's because your computer is slow :-) No, the truth is that VirtualBox is a very large and complex project and due to its modular architecture, there are a lot of different components. Also, our build system is configured to be very flexible and cross platform so simpler and faster approaches (such as a single global makefile) are not feasible. Note that you can perform incremental builds and when working on a single component, it is much faster to start the build from the component directory instead of the base directory. Also, making use of precompiled headers is on the agenda, feel free to help out.