|PC Virtual Machine Monitors|
VirtualBox is a virtual machine monitor produced by Oracle (previously Sun Microsystems). It is largely open-source (GPL) with a few feature packs that are closed source. It is very easy to use and has good support for many host and guest platforms.
- It has very good documentation so it is very easy to use out of the box.
- VirtualBox supports booting from real media or images of floppies and CD/DVD-ROM's.
- It also supports debugging.
- The ability to access host USB drives.
You are able to also use features of the host operating system where applicable. Some features make using the guest OS easier. For example, "pointer integration" (which allows you to move the cursor between the host OS and certain guest OS's seamlessly).
To run a 64-bit guest OS on a 32-bit or 64-bit host, the CPU must support virtualization (AMD-V or Intel VT-x) and nested paging (AMD RVI or Intel EPT), and must have these features enabled in the BIOS and the VirtualBox machine configuration. The VirtualBox developers didn't implement software virtualization for 64-bit hosts since most modern CPUs support hardware virtualization, and sofware virtualization would be too slow and memory consuming (especially on 32-bit hosts). If your CPU doesn't support virtualization or nested paging, then you can use QEMU, Bochs or VMware Player as these support 64-bit guests without hardware virtualization.
To see which virtualization features are present and enabled for VirtualBox, run your virtual machine and hover with the mouse over the V icon in the bottom bar.
VirtualBox supports the virtualization of the following hardware:
- Intel PIIX3
- Intel ICH9
- AMD PCNet PCI II (AM79C970A)
- AMD PCNet FAST III (AM79C973)
- Intel PRO/1000 MT Desktop (82540EM)
- Intel PRO/1000 T Server (82543GC)
- Intel PRO/1000 MT Server (82545EM)
- Paravirtualized networking (through KVM's 'virtio' networking drivers)
- Main article: VirtualBox_Guest_Additions
VirtualBox offers many features to integrate the user experience of the guest operating system more easily into the host operating system. These features include;
- Shared drag and drop capability.
- Mounting shared directories on the host in the client.
- Seamless mouse pointer integration.
- Seamless window blending.
- Shared clipboard.
- Detecting the size of the VirtualBox window.
- 2D and 3D acceleration.
All of the official VirtualBox documentation either targets end-users installing guest operating systems or people developing VirtualBox. Documentation for people developing for VirtualBox's virtual hardware is virtually non existent. The best reference you have available is the source code for the guest additions for FreeBSD, Linux, OS2, Solaris, and Windows. The source code can be found on the VirtualBox SVN respository under /vbox/trunk/src/VBox/Additions.
The ability to enable certain guest features depends on the value of the "Guest OS" property. For example, the option to enable 3d acceleration doesn't become available unless the "Guest OS" property is set to Windows. Changing the "Guest OS" merely changes the recommended settings and what extended features are available; it does not change the behaviour of the virtual machine.