User:Xhy279/VirtualBox

Oracle VM VirtualBox (formerly Sun VirtualBox, Sun xVM VirtualBox and Innotek VirtualBox) is a hypervisor for x86 computers from Oracle Corporation. Developed initially by Innotek GmbH, it was acquired by Sun Microsystems in 2008 which was in turn acquired by Oracle in 2010.

VirtualBox can launch a second OS or even more on top of the first one; which means you can run multiple operating systems simultaneously. By VirtualBox, you can run software written for another system on your host operating system. For example, you can run windows software on Mac but without rebooting to use. You can configure the virtual hardware on which the software is installed.

VirtualBox may be installed on a number of host operating systems, including: Linux, OS X, Windows Vista, Solaris, and OpenSolaris. Its portability can allows you to run virtual machines on another host with a different host operating system; for example, you can create a virtual machine on Windows and then run it under Linux. It is called "type 2" hypervisor, which means VirtualBox running on a host operating system that deliver all the essential services.

There are also ports to FreeBSD and Genode. For FreeBSD, The port can be installed using these commands:


 * 1) cd /usr/ports/emulators/virtualbox-ose


 * 1) make install clean

VirtualBox can also be taken as a sandbox platform for testing. "Granted, Linux comes with a lot fewer security risks; but dealing with unknown factors and beta glitches can be time consuming to correct when they take down an entire box. A much safer and quicker way to deal with such potential harm is to spare the physical machines and run the new stuff in a virtual machine instead." Besides that, VirtualBox is built-in vagrant which will isolate dependencies and their configuration within a single disposable, consistent environment, without sacrificing any of the tools you're used to working with (editors, browsers, debuggers, etc.).

VirtualBox support snapshot feature which means that you can save the state of your virtual machine and deal with it when you come back. The snapshot button lays on the upright position of the main window.

It supports the creation and management of guest virtual machines running versions and derivations of Windows, Linux, BSD, OS/2, Solaris, Haiku, OSx86 and others, - and limited virtualization of OS X guests on Apple hardware.

For some guest operating systems, a "Guest Additions" package of device drivers and system applications is available which typically improves performance, especially of graphics.

History


VirtualBox was initially offered by Innotek GmbH from Weinstadt, Germany under a proprietary software license, making one version of the product available at no cost for personal or evaluation use, subject to the VirtualBox Personal Use and Evaluation License (PUEL). In January 2007, based on counsel by LiSoG, Innotek GmbH released VirtualBox Open Source Edition (OSE) as free and open-source software, subject to the requirements of the GNU General Public License (GPL), version 2.

Innotek GmbH also contributed to the development of OS/2 and Linux support in virtualization and OS/2 ports of products from Connectix which were later acquired by Microsoft. Specifically, Innotek developed the “additions” code in both Microsoft Virtual PC and Microsoft Virtual Server, which enables various host-guest OS interactions like shared clipboards or dynamic viewport resizing.

Sun Microsystems acquired Innotek in February 2008.

Oracle Corporation acquired Sun in January 2010 and re-branded the product as "Oracle VM VirtualBox".

Licensing
The core package is, since version 4 in December 2010, free software under GNU General Public License version 2 (GPLv2). The separate "VirtualBox Oracle VM VirtualBox extension pack" providing support for USB 2.0 devices, Remote Desktop Protocol (RDP) and Preboot Execution Environment (PXE) is under a proprietary Personal Use and Evaluation License (PUEL), which permits use of the software for personal use, educational use, or evaluation, free of charge. Oracle defines personal use as any situation in which one person installs the software, and only that individual, and their friends and family, use the software. Oracle does not care if that use is for commercial or non-commercial purposes.

Prior to version 4, there were two different packages of the VirtualBox software. The full package was offered free under the PUEL, with licenses for other commercial deployment purchasable from Oracle. A second package called the VirtualBox Open Source Edition (OSE) was released under GPLv2. This removed the same proprietary components not available under GPLv2.

Virtualbox requires the use of the Open Watcom compiler to build the BIOS since version 4.2.

Although VirtualBox has experimental support for Mac OS X guests, the end user license agreement of Mac OS X does not permit the operating system to run on non-Apple hardware, and this is enforced within the operating system by calls to the Apple System Management Controller (SMC) in all Apple machines, which verifies the authenticity of the hardware.

Emulated environment
Users of VirtualBox can load multiple guest OSs under a single host operating-system (host OS). Each guest can be started, paused and stopped independently within its own virtual machine (VM). The user can independently configure each VM and run it under a choice of software-based virtualization or hardware assisted virtualization if the underlying host hardware supports this. The host OS and guest OSs and applications can communicate with each other through a number of mechanisms including a common clipboard and a virtualized network facility. Guest VMs can also directly communicate with each other if configured to do so.

Software-based virtualization
In the absence of hardware-assisted virtualization, VirtualBox adopts a standard software-based virtualization approach. This mode supports 32-bit guest OSs which run in rings 0 and 3 of the Intel ring architecture.
 * The system reconfigures the guest OS code, which would normally run in ring 0, to execute in ring 1 on the host hardware. Because this code contains many privileged instructions which cannot run natively in ring 1, VirtualBox employs a Code Scanning and Analysis Manager (CSAM) to scan the ring 0 code recursively before its first execution to identify problematic instructions and then calls the Patch Manager (PATM) to perform in-situ patching.  This replaces the instruction with a jump to a VM-safe equivalent compiled code fragment in hypervisor memory.
 * The guest user-mode code, running in ring 3, generally runs directly on the host hardware in ring 3.

In both cases, VirtualBox uses CSAM and PATM to inspect and patch the offending instructions whenever a fault occurs. VirtualBox also contains a dynamic recompiler, based on QEMU to recompile any real mode or protected mode code entirely (e.g. BIOS code, a DOS guest, or any operating system startup).

Using these techniques, VirtualBox can achieve a performance comparable to that of VMware.

Hardware-assisted virtualization
VirtualBox supports both Intel's VT-x and AMD's AMD-V hardware-virtualization. Making use of these facilities, VirtualBox can run each guest VM in its own separate address-space; the guest OS ring 0 code runs on the host at ring 0 in VMX non-root mode rather than in ring 1.

VirtualBox supports some guests (including 64-bit guests, SMP guests and certain proprietary OSs) only on hosts with hardware-assisted virtualization.

Device virtualization
The system emulates hard disks in one of three disk image formats:
 * 1) VDI: This format is VirtualBox-specific and stores data in files bearing ".vdi" filename extension.
 * 2) VMDK: This open format is used by VMWare products such as VMWare Workstation and VMWare Player. It stores data in one or more files bearing ".vmdk" filename extensions. A single virtual hard disk may span several files.
 * 3) VHD: This format is the native virtual disk format of Microsoft operating system, starting with Windows 7 and Windows Server 2008 R2. Data in this format are stored in a single file bearing ".vhd" filename extension.

A VirtualBox virtual machine can, therefore, use disks previously created in VMware or Microsoft Virtual PC, as well as its own native format. VirtualBox can also connect to iSCSI targets and to raw partitions on the host, using either as virtual hard disks. VirtualBox emulates IDE (PIIX4 and ICH6 controllers), SCSI, SATA (ICH8M controller) and SAS controllers to which hard drives can be attached.

VirtualBox has supported Open Virtualization Format (OVF) since version 2.2.0 (April 2009).

Both ISO images and host-connected physical devices can be mounted as CD/DVD drives. For example, the DVD image of a Linux distribution can be downloaded and used directly by VirtualBox.

By default VirtualBox provides graphics support through a custom virtual graphics-card that is VESA compatible. The Guest Additions for Windows, Linux, Solaris, OpenSolaris, or OS/2 guests include a special video-driver that increases video performance and includes additional features, such as automatically adjusting the guest resolution when resizing the VM window or desktop composition via virtualized WDDM drivers.

For an Ethernet network adapter, VirtualBox virtualizes these Network Interface Cards:
 * AMD PCnet PCI II (Am79C970A)
 * AMD PCnet-Fast III (Am79C973)
 * Intel Pro/1000 MT Desktop (82540EM)
 * Intel Pro/1000 MT Server (82545EM)
 * Intel Pro/1000 T Server (82543GC)

The emulated network cards allow most guest OSs to run without the need to find and install drivers for networking hardware as they are shipped as part of the guest OS. A special paravirtualized network adapter is also available, which improves network performance by eliminating the need to match a specific hardware interface, but requires special driver support in the guest. (Many distributions of Linux ship with this driver included.) By default, VirtualBox uses NAT through which Internet software for end-users such as Firefox or ssh can operate. Bridged networking via a host network adapter or virtual networks between guests can also be configured. Up to 36 network adapters can be attached simultaneously, but only four are configurable through the graphical interface.

For a sound card, VirtualBox virtualizes Intel HD Audio, Intel ICH AC'97 and SoundBlaster 16 devices.

A USB 1.1 controller is emulated so that any USB devices attached to the host can be seen in the guest. The proprietary extension pack adds a USB 2.0 controller and, if VirtualBox acts as an RDP server, it can also use USB devices on the remote RDP client as if they were connected to the host, although only if the client supports this VirtualBox-specific extension (Oracle provides clients for Solaris, Linux and Sun Ray thin clients that can do this, and have promised support for other platforms in future versions).

Installation
"In order to run VirtualBox on your machine, you need:
 * Running requirements:
 * Reasonably powerful x86 hardware. Any recent Intel or AMD processor should do.
 * Memory. Depending on what guest operating systems you want to run, you will need at least 512 MB of RAM (but probably more is better). Basically, you will need whatever your host operating system needs to run comfortably, also counting the amount that the guest operating system needs. So, if you want to run Windows XP on Windows XP, you probably won't enjoy the experience much with less than 1 GB of RAM. If you want to try out Windows Vista in a guest, it will refuse to install if it is given less than 512 MB RAM, since you need 512M RAM for the single guest, plus the memory your operating system normally needs.
 * Hard disk space. While VirtualBox itself is very lean (a typical installation will only need about 30 MB of hard disk space), the virtual machines will require fairly huge files on disk to represent their own hard disk storage. So, to install Windows XP, for example, you will need a file that will easily grow to several GB in size.
 * A supported host operating system. Presently, we support Windows (XP and later), many Linux distributions, Mac OS X, Solaris and OpenSolaris.
 * A supported guest operating system. Besides the user manual (see below), up-to-date information is available at "Status: Guest OSes".

Virtual Box provides varieties of Internet connection ways. They vary from different aspects. User can choose any model they need to use.
 * Network setting
 * 1) NAT model: It is the default way to make your guest OS connect to Internet. All the data you exchange with Internet is provided by main machine.
 * 2) Bridge Adaptor model: The Virtual Box can emulate an independent network card, which provides an independent IP address for guest OS. Under this model, the guest OS can share its documents with main machine and connect to each other.
 * 3) Internal model: Make a local network between guest operating systems. All guest operating systems can not connect to the main machine.
 * 4) Host-only Adaptor model

Strength

 * Portability
 * No hardware virtualization required
 * Guest Additions: shared folders, seamless windows, 3D virtualization
 * Multigeneration branched snapshots
 * VM groups
 * Remote machine display

Limitations

 * It has poor performance with 32-bit guests on AMD CPUs.
 * Not well support the OVF file
 * Compacting virtual disk images is limited to VDI files.
 * VirtualBox has a very low transfer rate from and to USB2 devices.
 * Even though VirtualBox is an open source product some of its features are supplied only in a binary form under a commercial license (see The extension pack below)
 * USB3 devices pass through is not supported by older guest OSes like Windows Vista and Windows XP due to the lack of drivers

Feature set

 * 64-bit guests (hardware virtualization support is required)
 * Snapshots
 * Seamless mode - the ability to run virtualized applications side by side with normal desktop applications
 * Shared clipboard
 * Shared folders
 * Special drivers and utilities to facilitate switching between systems
 * Command line interaction (in addition to the GUI)
 * Public API (Java, Python, SOAP, XPCOM) to control VM configuration and execution
 * Nested paging for AMD-V and Intel VT (only for processors supporting SLAT and with SLAT enabled)
 * Limited support for 3D graphics acceleration (including OpenGL up to (but not including) 3.0 and Direct3D 9.0c via Wine's Direct3D to OpenGL translation)
 * SMP support (up to 32 virtual CPUs per virtual machine), since version 3.0
 * Teleportation (aka Live Migration)
 * 2D video output acceleration (not to be mistaken with video decoding acceleration), since version 3.1


 * Storage emulation features
 * NCQ support for SATA, SCSI and SAS raw disks and partitions
 * SATA disks hotplugging
 * Pass-through mode for solid-state drives
 * Pass-through mode for CD/DVD/BD disks - allows to play audio CDs, burn optical disks, play encrypted DVD disks
 * Can disable host OS I/O cache
 * Allows to limit IO bandwidth
 * PATA, SATA, SCSI, SAS, iSCSI, floppy disk controllers
 * VM disk image encryption using AES128/AES256


 * Storage support
 * Raw hard disk access – allows physical hard disk partitions on the host system to appear in the guest system
 * VMware Virtual Machine Disk (VMDK) format support – allows VirtualBox to exchange disk images with VMware
 * Microsoft VHD support
 * QEMU qed and qcow disks
 * HDD format disks (only version 2; version 3 and 4 are not supported) used by Parallels virtualization products


 * Since version 3.2:
 * Mac OS X Server guest support – experimental
 * Memory ballooning (not available on Solaris hosts)
 * RAM deduplication (Page Fusion) for Windows guests on 64-bit hosts
 * CPU hot-plugging for Linux (hot-add and hot-remove) and certain Windows guests (hot-add only)
 * Deleting snapshots while the VM is running
 * Multi-monitor guest setups in the GUI, for Windows guests
 * LSI Logic SAS controller emulation
 * Remote Desktop Protocol (RDP) video acceleration
 * Run and control guest applications from the host – for automated software deployments


 * Since version 4.0:
 * The PUEL/OSE separation was given up in favor of an open source base product and a closed source extension pack that can be installed on top of the base product. As part of this change, additional components of VirtualBox were made open source (installers, documentation, device drivers)
 * Intel HD audio codec emulation
 * Intel ICH9 chipset emulation
 * A new VM storage scheme where all VM data is stored in one single folder to improve VM portability
 * Several UI enhancements including a new look with VM preview and scale mode
 * On 32-bit hosts, VMs can each use more than 1.5 GB of RAM
 * In addition to OVF, the single file OVA format is supported
 * CPU use and I/O bandwidth can be limited per VM
 * Support for Apple DMG images (DVD)
 * Multi-monitor guest setups for Linux/Solaris guests (previously Windows only)
 * Resizing of disk image formats from Oracle, VDI (VirtualBox disk image), and Microsoft, VHD (Virtual PC hard disk)


 * Since version 4.1
 * Windows Aero support (experimental)
 * Virtual machine cloning


 * Since version 4.2
 * Virtual machine groups - allows you to manage a group of virtual machines as a single unit (power them on or off, snapshot them, etc.)
 * Some VM settings can be altered during a VM execution
 * Support up to 36 NICs in case of the ICH9 chipset
 * Support for limiting network IO bandwidth
 * Can automatically run VMs on a host system startup (except on Windows host)


 * Since version 4.3
 * VM video capturing support
 * Host touch devices support (GUI passes host touch-events to guest)/USB virtualization of such devices


 * Since version 5.0
 * Paravirtualization support for Windows and Linux guests to improve time-keeping accuracy and performance
 * USB3 controller based on Intel's hardware implementation. It's supported by any Windows version starting from Windows 7, any Linux kernel starting from 2.6.31 and Mac OS X starting from version 10.7.4.
 * Bidirectional drag and drop support for Windows, Linux and Solaris guests
 * VM disk image encryption
 * VM output scaling and HiDPI displays support
 * Hotplugging of SATA disks using GUI
 * USB traffic capturing
 * VMs can be disconnected from a GUI session and run in background
 * AVX, AVX-2, AES-NI, SSE 4.1/4.2 instructions (if supported by the host CPU)

Advanced configuration
“ Recent versions of Virtual Box have support for accelerating OpenGL inside guests. This can be enabled with a simple checkbox in the machine's settings, right below where video ram is set, and installing the Virtual Box guest additions. However, most Windows games use Direct3D (part of DirectX), not OpenGL, and are thus not helped by this method. However, it is possible to gain accelerated Direct3D in your Windows guests by borrowing the d3d libraries from Wine, which translate d3d calls into OpenGL, which is then accelerated. These libraries are now part of Virtual Box guest additions software.”
 * D3D acceleration in Windows guests

“After enabling OpenGL acceleration as described above, reboot the guest into safe mode (press F8 before the Windows screen appears but after the Virtual Box screen disappears), and install Virtual Box guest additions, during install enable checkbox "Direct3D support". Reboot back to normal mode and you should have accelerated Direct3D.”

VirtualBox Extension Pack
Some features require the installation of the closed-source "VirtualBox Extension Pack":
 * Support for a virtual USB 2.0/3.0 controller (EHCI/xHCI)
 * VirtualBox RDP: support for proprietary remote connection protocol developed by Microsoft and Citrix.
 * PXE boot for Intel cards
 * VM disk image encryption

Host OS support
VirtualBox 5.0 dropped the official support for Windows XP. People report that VirtualBox still can be installed and used in this OS but developers give no warranty in regard to its usability under this version of Windows. VirtualBox can also be run under various Linux distributions, MacOS X and Sun Solaris.

Third-party tools
Although VirtualBox is not a portable app, a portable version may be obtained from third-parties, including vbox.me or LinuxLive USB Creator.