Chapter 9. Advanced topics

Oracle VM VirtualBox

Chapter 9. Advanced topics

Table of Contents

9.1. VBoxSDL, the simplified VM displayer
9.1.1. Introduction
9.1.2. Secure labeling with VBoxSDL
9.1.3. Releasing modifiers with VBoxSDL on Linux
9.2. Automated guest logons
9.2.1. Automated Windows guest logons
9.2.2. Automated Linux/Unix guest logons
9.3. Advanced configuration for Windows guests
9.3.1. Automated Windows system preparation
9.4. Advanced configuration for Linux and Solaris guests
9.4.1. Manual setup of selected guest services on Linux
9.4.2. Guest graphics and mouse driver setup in depth
9.5. CPU hot-plugging
9.6. PCI passthrough
9.7. Webcam passthrough
9.7.1. Using a host webcam in the guest
9.7.2. Windows hosts
9.7.3. Mac OS X hosts
9.7.4. Linux and Solaris hosts
9.8. Advanced display configuration
9.8.1. Custom VESA resolutions
9.8.2. Configuring the maximum resolution of guests when using the graphical frontend
9.9. Advanced storage configuration
9.9.1. Using a raw host hard disk from a guest
9.9.2. Configuring the hard disk vendor product data (VPD)
9.9.3. Access iSCSI targets via Internal Networking
9.10. Legacy commands for using serial ports
9.11. Fine-tuning the VirtualBox NAT engine
9.11.1. Configuring the address of a NAT network interface
9.11.2. Configuring the boot server (next server) of a NAT network interface
9.11.3. Tuning TCP/IP buffers for NAT
9.11.4. Binding NAT sockets to a specific interface
9.11.5. Enabling DNS proxy in NAT mode
9.11.6. Using the host's resolver as a DNS proxy in NAT mode
9.11.7. Configuring aliasing of the NAT engine
9.12. Configuring the BIOS DMI information
9.13. Configuring the custom ACPI table
9.14. Fine-tuning timers and time synchronization
9.14.1. Configuring the guest time stamp counter (TSC) to reflect guest execution
9.14.2. Accelerate or slow down the guest clock
9.14.3. Tuning the Guest Additions time synchronization parameters
9.14.4. Disabling the Guest Additions time synchronization
9.15. Installing the alternate bridged networking driver on Solaris 11 hosts
9.16. VirtualBox VNIC templates for VLANs on Solaris 11 hosts
9.17. Configuring multiple host-only network interfaces on Solaris hosts
9.18. Configuring the VirtualBox CoreDumper on Solaris hosts
9.19. VirtualBox and Solaris kernel zones
9.20. Locking down the VirtualBox GUI
9.20.1. Customizing the VM manager
9.20.2. VM selector customization
9.20.3. Configure VM selector menu entries
9.20.4. Configure VM window menu entries
9.20.5. Configure VM window status bar entries
9.20.6. Configure VM window visual modes
9.20.7. Host Key customization
9.20.8. Action when terminating the VM
9.20.9. Default action when terminating the VM
9.20.10. Action for handling a Guru Meditation
9.20.11. Configuring automatic mouse capturing
9.20.12. Configuring automatic mouse capturing
9.20.13. Requesting legacy full-screen mode
9.21. Starting the VirtualBox web service automatically
9.21.1. Linux: starting the webservice via init
9.21.2. Solaris: starting the web service via SMF
9.21.3. Mac OS X: starting the webservice via launchd
9.22. VirtualBox Watchdog
9.22.1. Memory ballooning control
9.22.2. Host isolation detection
9.22.3. More information
9.22.4. Linux: starting the watchdog service via init
9.22.5. Solaris: starting the watchdog service via SMF
9.23. Other extension packs
9.24. Starting virtual machines during system boot
9.24.1. Linux: starting the autostart service via init
9.24.2. Solaris: starting the autostart service via SMF
9.24.3. Mac OS X: starting the autostart service via launchd
9.25. VirtualBox expert storage management
9.26. Handling of host power management events
9.27. Experimental support for passing through SSE4.1 / SSE4.2 instructions
9.28. Support for keyboard indicators synchronization
9.29. Capturing USB traffic for selected devices
9.30. Configuring the heartbeat service
9.31. Encryption of disk images
9.31.1. Limitations
9.31.2. Encrypting disk images
9.31.3. Starting a VM with encrypted images
9.31.4. Decrypting encrypted images
9.32. Paravirtualized debugging
9.32.1. Hyper-V debug options
9.33. PC speaker passthrough
9.34. Accessing USB devices exposed over the network with USB/IP
9.34.1. Setting up USB/IP support on a Linux system
9.34.2. Security considerations
9.35. VISO file format / RTIsoMaker

9.1. VBoxSDL, the simplified VM displayer

9.1.1. Introduction

VBoxSDL is a simple graphical user interface (GUI) that lacks the nice point-and-click support which VirtualBox, our main GUI, provides. VBoxSDL is currently primarily used internally for debugging VirtualBox and therefore not officially supported. Still, you may find it useful for environments where the virtual machines are not necessarily controlled by the same person that uses the virtual machine.

Note

VBoxSDL is not available on the Mac OS X host platform.

As you can see in the following screenshot, VBoxSDL does indeed only provide a simple window that contains only the "pure" virtual machine, without menus or other controls to click upon and no additional indicators of virtual machine activity:

To start a virtual machine with VBoxSDL instead of the VirtualBox GUI, enter the following on a command line:

VBoxSDL --startvm <vm>

where <vm> is, as usual with VirtualBox command line parameters, the name or UUID of an existing virtual machine.

9.1.2. Secure labeling with VBoxSDL

When running guest operating systems in full screen mode, the guest operating system usually has control over the whole screen. This could present a security risk as the guest operating system might fool the user into thinking that it is either a different system (which might have a higher security level) or it might present messages on the screen that appear to stem from the host operating system.

In order to protect the user against the above mentioned security risks, the secure labeling feature has been developed. Secure labeling is currently available only for VBoxSDL. When enabled, a portion of the display area is reserved for a label in which a user defined message is displayed. The label height in set to 20 pixels in VBoxSDL. The label font color and background color can be optionally set as hexadecimal RGB color values. The following syntax is used to enable secure labeling:

VBoxSDL --startvm "VM name"
      --securelabel --seclabelfnt ~/fonts/arial.ttf
      --seclabelsiz 14 --seclabelfgcol 00FF00 --seclabelbgcol 00FFFF

In addition to enabling secure labeling, a TrueType font has to be supplied. To use another font size than 12 point use the parameter --seclabelsiz.

The label text can be set with

VBoxManage setextradata "VM name" "VBoxSDL/SecureLabel" "The Label"

Changing this label will take effect immediately.

Typically, full screen resolutions are limited to certain "standard" geometries such as 1024 x 768. Increasing this by twenty lines is not usually feasible, so in most cases, VBoxSDL will chose the next higher resolution, e.g. 1280 x 1024 and the guest's screen will not cover the whole display surface. If VBoxSDL is unable to choose a higher resolution, the secure label will be painted on top of the guest's screen surface. In order to address the problem of the bottom part of the guest screen being hidden, VBoxSDL can provide custom video modes to the guest that are reduced by the height of the label. For Windows guests and recent Solaris and Linux guests, the VirtualBox Guest Additions automatically provide the reduced video modes. Additionally, the VESA BIOS has been adjusted to duplicate its standard mode table with adjusted resolutions. The adjusted mode IDs can be calculated using the following formula:

reduced_modeid = modeid + 0x30

For example, in order to start Linux with 1024 x 748 x 16, the standard mode 0x117 (1024 x 768 x 16) is used as a base. The Linux video mode kernel parameter can then be calculated using:

vga = 0x200 | 0x117 + 0x30
vga = 839

The reason for duplicating the standard modes instead of only supplying the adjusted modes is that most guest operating systems require the standard VESA modes to be fixed and refuse to start with different modes.

When using the X.org VESA driver, custom modelines have to be calculated and added to the configuration (usually in /etc/X11/xorg.conf. A handy tool to determine modeline entries can be found at http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html.)

9.1.3. Releasing modifiers with VBoxSDL on Linux

When switching from a X virtual terminal (VT) to another VT using Ctrl-Alt-Fx while the VBoxSDL window has the input focus, the guest will receive Ctrl and Alt keypress events without receiving the corresponding key release events. This is an architectural limitation of Linux. In order to reset the modifier keys, it is possible to send SIGUSR1 to the VBoxSDL main thread (first entry in the ps list). For example, when switching away to another VT and saving the virtual machine from this terminal, the following sequence can be used to make sure the VM is not saved with stuck modifiers:

kill -usr1 <pid>
VBoxManage controlvm "Windows 2000" savestate