2689 lines
92 KiB
XML
2689 lines
92 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright (C) 2006-2023 Oracle and/or its affiliates.
|
|
|
|
This file is part of VirtualBox base platform packages, as
|
|
available from https://www.virtualbox.org.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation, in version 3 of the
|
|
License.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, see <https://www.gnu.org/licenses>.
|
|
|
|
SPDX-License-Identifier: GPL-3.0-only
|
|
-->
|
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"[
|
|
<!ENTITY % all.entities SYSTEM "all-entities.ent">
|
|
%all.entities;
|
|
]>
|
|
<chapter id="guestadditions">
|
|
|
|
<title>Guest Additions</title>
|
|
|
|
<para>
|
|
The previous chapter covered getting started with &product-name; and
|
|
installing operating systems in a virtual machine. For any serious
|
|
and interactive use, the &product-name; Guest Additions will make
|
|
your life much easier by providing closer integration between host
|
|
and guest and improving the interactive performance of guest
|
|
systems. This chapter describes the Guest Additions in detail.
|
|
</para>
|
|
|
|
<sect1 id="guestadd-intro">
|
|
|
|
<title>Introduction to Guest Additions</title>
|
|
|
|
<para>
|
|
As mentioned in <xref linkend="virtintro" />, the Guest Additions
|
|
are designed to be installed <emphasis>inside</emphasis> a virtual
|
|
machine after the guest operating system has been installed. They
|
|
consist of device drivers and system applications that optimize
|
|
the guest operating system for better performance and usability.
|
|
See <xref linkend="guestossupport" /> for details on what guest
|
|
operating systems are fully supported with Guest Additions by
|
|
&product-name;.
|
|
</para>
|
|
|
|
<para>
|
|
The &product-name; Guest Additions for all supported guest
|
|
operating systems are provided as a single CD-ROM image file which
|
|
is called <filename>VBoxGuestAdditions.iso</filename>. This image
|
|
file is located in the installation directory of &product-name;.
|
|
To install the Guest Additions for a particular VM, you mount this
|
|
ISO file in your VM as a virtual CD-ROM and install from there.
|
|
</para>
|
|
|
|
<para>
|
|
The Guest Additions offer the following features:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Mouse pointer integration</emphasis>. To
|
|
overcome the limitations for mouse support described in
|
|
<xref linkend="keyb_mouse_normal" />, this feature provides
|
|
you with seamless mouse support. You will only have one mouse
|
|
pointer and pressing the Host key is no longer required to
|
|
<emphasis>free</emphasis> the mouse from being captured by the
|
|
guest OS. To make this work, a special mouse driver is
|
|
installed in the guest that communicates with the physical
|
|
mouse driver on your host and moves the guest mouse pointer
|
|
accordingly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Shared folders.</emphasis> These provide
|
|
an easy way to exchange files between the host and the guest.
|
|
Much like ordinary Windows network shares, you can tell
|
|
&product-name; to treat a certain host directory as a shared
|
|
folder, and &product-name; will make it available to the guest
|
|
operating system as a network share, irrespective of whether
|
|
the guest actually has a network. See
|
|
<xref linkend="sharedfolders" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Better video support.</emphasis> While
|
|
the virtual graphics card which &product-name; emulates for
|
|
any guest operating system provides all the basic features,
|
|
the custom video drivers that are installed with the Guest
|
|
Additions provide you with extra high and non-standard video
|
|
modes, as well as accelerated video performance.
|
|
</para>
|
|
|
|
<para>
|
|
In addition, with Windows, Linux, and Oracle Solaris guests,
|
|
you can resize the virtual machine's window if the Guest
|
|
Additions are installed. The video resolution in the guest
|
|
will be automatically adjusted, as if you had manually entered
|
|
an arbitrary resolution in the guest's
|
|
<emphasis role="bold">Display</emphasis> settings. See
|
|
<xref linkend="intro-resize-window" />.
|
|
</para>
|
|
|
|
<para>
|
|
If the Guest Additions are installed, 3D graphics and 2D video
|
|
for guest applications can be accelerated. See
|
|
<xref linkend="guestadd-video" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Seamless windows.</emphasis> With this
|
|
feature, the individual windows that are displayed on the
|
|
desktop of the virtual machine can be mapped on the host's
|
|
desktop, as if the underlying application was actually running
|
|
on the host. See <xref linkend="seamlesswindows" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Generic host/guest communication
|
|
channels.</emphasis> The Guest Additions enable you to control
|
|
and monitor guest execution. The <emphasis>guest
|
|
properties</emphasis> provide a generic string-based mechanism
|
|
to exchange data bits between a guest and a host, some of
|
|
which have special meanings for controlling and monitoring the
|
|
guest. See <xref linkend="guestadd-guestprops" />.
|
|
</para>
|
|
|
|
<para>
|
|
Additionally, applications can be started in a guest from the
|
|
host. See <xref linkend="guestadd-guestcontrol" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Time synchronization.</emphasis> With
|
|
the Guest Additions installed, &product-name; can ensure that
|
|
the guest's system time is better synchronized with that of
|
|
the host.
|
|
</para>
|
|
|
|
<para>
|
|
For various reasons, the time in the guest might run at a
|
|
slightly different rate than the time on the host. The host
|
|
could be receiving updates through NTP and its own time might
|
|
not run linearly. A VM could also be paused, which stops the
|
|
flow of time in the guest for a shorter or longer period of
|
|
time. When the wall clock time between the guest and host only
|
|
differs slightly, the time synchronization service attempts to
|
|
gradually and smoothly adjust the guest time in small
|
|
increments to either catch up or lose time. When the
|
|
difference is too great, for example if a VM paused for hours
|
|
or restored from saved state, the guest time is changed
|
|
immediately, without a gradual adjustment.
|
|
</para>
|
|
|
|
<para>
|
|
The Guest Additions will resynchronize the time regularly. See
|
|
<xref linkend="changetimesync" /> for how to configure the
|
|
parameters of the time synchronization mechanism.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Shared clipboard.</emphasis> With the
|
|
Guest Additions installed, the clipboard of the guest
|
|
operating system can optionally be shared with your host
|
|
operating system. See <xref linkend="generalsettings" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Automated logins.</emphasis> Also called
|
|
credentials passing. See <xref linkend="autologon" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Each version of &product-name;, even minor releases, ship with
|
|
their own version of the Guest Additions. While the interfaces
|
|
through which the &product-name; core communicates with the Guest
|
|
Additions are kept stable so that Guest Additions already
|
|
installed in a VM should continue to work when &product-name; is
|
|
upgraded on the host, for best results, it is recommended to keep
|
|
the Guest Additions at the same version.
|
|
</para>
|
|
|
|
<para>
|
|
The Windows and Linux Guest Additions therefore check
|
|
automatically whether they have to be updated. If the host is
|
|
running a newer &product-name; version than the Guest Additions, a
|
|
notification with further instructions is displayed in the guest.
|
|
</para>
|
|
|
|
<para>
|
|
To disable this update check for the Guest Additions of a given
|
|
virtual machine, set the value of its
|
|
<literal>/VirtualBox/GuestAdd/CheckHostVersion</literal> guest
|
|
property to <literal>0</literal>. See
|
|
<xref linkend="guestadd-guestprops" />.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-install">
|
|
|
|
<title>Installing and Maintaining Guest Additions</title>
|
|
|
|
<para>
|
|
Guest Additions are available for virtual machines running
|
|
Windows, Linux, Oracle Solaris, or OS/2. The following sections
|
|
describe the specifics of each variant in detail.
|
|
</para>
|
|
|
|
<sect2 id="additions-windows">
|
|
|
|
<title>Guest Additions for Windows</title>
|
|
|
|
<para>
|
|
The &product-name; Windows Guest Additions are designed to be
|
|
installed in a virtual machine running a Windows operating
|
|
system. The following versions of Windows guests are supported:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows NT 4.0 (any service pack)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows 2000 (any service pack)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows XP (any service pack)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows Server 2003 (any service pack)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows Server 2008
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows Vista (all editions)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows 7 (all editions)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows 8 (all editions)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows 10 RTM build 10240
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Microsoft Windows Server 2012
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect3 id="mountingadditionsiso">
|
|
|
|
<title>Installing the Windows Guest Additions</title>
|
|
|
|
<para>
|
|
In the <emphasis role="bold">Devices</emphasis> menu in the
|
|
virtual machine's menu bar, &product-name; has a menu item
|
|
<emphasis role="bold">Insert Guest Additions CD
|
|
Image</emphasis>, which mounts the Guest Additions ISO file
|
|
inside your virtual machine. A Windows guest should then
|
|
automatically start the Guest Additions installer, which
|
|
installs the Guest Additions on your Windows guest.
|
|
</para>
|
|
|
|
<para>
|
|
For other guest operating systems, or if automatic start of
|
|
software on a CD is disabled, you need to do a manual start of
|
|
the installer.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
For the basic Direct3D acceleration to work in a Windows
|
|
guest, you have to install the WDDM video driver available
|
|
for Windows Vista or later.
|
|
</para>
|
|
|
|
<para>
|
|
For Windows 8 and later, only the WDDM Direct3D video driver
|
|
is available. For basic Direct3D acceleration to work in
|
|
Windows XP guests, you have to install the Guest Additions
|
|
in Safe Mode. See <xref linkend="KnownIssues" /> for
|
|
details.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
If you prefer to mount the Guest Additions manually, you can
|
|
perform the following steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Start the virtual machine in which you have installed
|
|
Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Select <emphasis role="bold">Optical Drives</emphasis>
|
|
from the <emphasis role="bold">Devices</emphasis> menu in
|
|
the virtual machine's menu bar and then
|
|
<emphasis role="bold">Choose/Create a Disk
|
|
Image</emphasis>. This displays the Virtual Media Manager,
|
|
described in <xref linkend="virtual-media-manager" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In the Virtual Media Manager, click
|
|
<emphasis role="bold">Add</emphasis> and browse your host
|
|
file system for the
|
|
<filename>VBoxGuestAdditions.iso</filename> file.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
On a Windows host, this file is in the &product-name;
|
|
installation directory, usually in
|
|
<filename>C:\Program
|
|
files\Oracle\VirtualBox</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On macOS hosts, this file is in the application bundle
|
|
of &product-name;. Right-click on the &product-name;
|
|
icon in Finder and choose <emphasis role="bold">Show
|
|
Package Contents</emphasis>. The file is located in
|
|
the <filename>Contents/MacOS</filename> folder.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On a Linux host, this file is in the
|
|
<filename>additions</filename> folder where you
|
|
installed &product-name;, usually
|
|
<filename>/opt/VirtualBox/</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Oracle Solaris hosts, this file is in the
|
|
<filename>additions</filename> folder where you
|
|
installed &product-name;, usually
|
|
<filename>/opt/VirtualBox</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In the Virtual Media Manager, select the ISO file and
|
|
click the <emphasis role="bold">Add</emphasis> button.
|
|
This mounts the ISO file and presents it to your Windows
|
|
guest as a CD-ROM.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Unless you have the Autostart feature disabled in your Windows
|
|
guest, Windows will now autostart the &product-name; Guest
|
|
Additions installation program from the Additions ISO. If the
|
|
Autostart feature has been turned off, choose
|
|
<filename>VBoxWindowsAdditions.exe</filename> from the CD/DVD
|
|
drive inside the guest to start the installer.
|
|
</para>
|
|
|
|
<para>
|
|
The installer will add several device drivers to the Windows
|
|
driver database and then invoke the hardware detection wizard.
|
|
</para>
|
|
|
|
<para>
|
|
Depending on your configuration, it might display warnings
|
|
that the drivers are not digitally signed. You must confirm
|
|
these in order to continue the installation and properly
|
|
install the Additions.
|
|
</para>
|
|
|
|
<para>
|
|
After installation, reboot your guest operating system to
|
|
activate the Additions.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-windows-updating">
|
|
|
|
<title>Updating the Windows Guest Additions</title>
|
|
|
|
<para>
|
|
Windows Guest Additions can be updated by running the
|
|
installation program again. This replaces the previous
|
|
Additions drivers with updated versions.
|
|
</para>
|
|
|
|
<para>
|
|
Alternatively, you can also open the Windows Device Manager
|
|
and select <emphasis role="bold">Update Driver...</emphasis>
|
|
for the following devices:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
&product-name; Graphics Adapter
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
&product-name; System Device
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
For each, choose the option to provide your own driver, click
|
|
<emphasis role="bold">Have Disk</emphasis> and navigate to the
|
|
CD-ROM drive with the Guest Additions.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-windows-install-unattended">
|
|
|
|
<title>Unattended Installation of the Windows Guest Additions</title>
|
|
|
|
<para>
|
|
You can configure unattended installation of the
|
|
&product-name; Guest Additions when you create a new VM using
|
|
the <emphasis role="bold">Create Virtual Machine</emphasis>
|
|
wizard. Select the <emphasis role="bold">Guest
|
|
Additions</emphasis> check box on the
|
|
<emphasis role="bold">Unattended Guest OS Install</emphasis>
|
|
page of the wizard.
|
|
</para>
|
|
|
|
<para>
|
|
Guest Additions are installed automatically, following
|
|
completion of the guest OS installation.
|
|
</para>
|
|
|
|
<simplesect id="additions-windows-install-unattended-certs">
|
|
|
|
<title>Installing Code Signing Certificates</title>
|
|
|
|
<para>
|
|
To avoid popups when performing an unattended installation
|
|
of the &product-name; Guest Additions, the code signing
|
|
certificates used to sign the drivers needs to be installed
|
|
in the correct certificate stores on the guest operating
|
|
system. Failure to do this will cause a typical Windows
|
|
installation to display multiple dialogs asking whether you
|
|
want to install a particular driver.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
On some legacy Windows versions, such as Windows 2000 and
|
|
Windows XP, the user intervention popups mentioned above
|
|
are always displayed, even after importing the Oracle
|
|
certificates.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Installing the code signing certificates on a Windows guest
|
|
can be done automatically. Use the
|
|
<filename>VBoxCertUtil.exe</filename> utility from the
|
|
<filename>cert</filename> folder on the Guest Additions
|
|
installation CD.
|
|
</para>
|
|
|
|
<para>
|
|
Use the following steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Log in as Administrator on the guest.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Mount the &product-name; Guest Additions .ISO.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Open a command line window on the guest and change to
|
|
the <filename>cert</filename> folder on the
|
|
&product-name; Guest Additions CD.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Run the following command:
|
|
</para>
|
|
|
|
<screen>VBoxCertUtil.exe add-trusted-publisher vbox*.cer --root vbox*.cer</screen>
|
|
|
|
<para>
|
|
This command installs the certificates to the
|
|
certificate store. When installing the same certificate
|
|
more than once, an appropriate error will be displayed.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
<para>
|
|
To allow for completely unattended guest installations, you
|
|
can specify a command line parameter to the install
|
|
launcher:
|
|
</para>
|
|
|
|
<screen>VBoxWindowsAdditions.exe /S</screen>
|
|
|
|
<para>
|
|
This automatically installs the right files and drivers for
|
|
the corresponding platform, either 32-bit or 64-bit.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
By default on an unattended installation on a Vista or
|
|
Windows 7 guest, there will be the XPDM graphics driver
|
|
installed. This graphics driver does not support Windows
|
|
Aero / Direct3D on the guest. Instead, the WDDM graphics
|
|
driver needs to be installed. To select this driver by
|
|
default, add the command line parameter
|
|
<literal>/with_wddm</literal> when invoking the Windows
|
|
Guest Additions installer. This is only required for Vista
|
|
and Windows 7.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>
|
|
For Windows Aero to run correctly on a guest, the guest's
|
|
VRAM size needs to be configured to at least 128 MB.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
For more options regarding unattended guest installations,
|
|
consult the command line help by using the command:
|
|
</para>
|
|
|
|
<screen>VBoxWindowsAdditions.exe /?</screen>
|
|
|
|
</simplesect>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="windows-guest-file-extraction">
|
|
|
|
<title>Manual File Extraction</title>
|
|
|
|
<para>
|
|
If you would like to install the files and drivers manually,
|
|
you can extract the files from the Windows Guest Additions
|
|
setup as follows:
|
|
</para>
|
|
|
|
<screen>VBoxWindowsAdditions.exe /extract</screen>
|
|
|
|
<para>
|
|
To explicitly extract the Windows Guest Additions for another
|
|
platform than the current running one, such as 64-bit files on
|
|
a 32-bit system, you must use the appropriate platform
|
|
installer. Use
|
|
<filename>VBoxWindowsAdditions-x86.exe</filename> or
|
|
<filename>VBoxWindowsAdditions-amd64.exe</filename> with the
|
|
<literal>/extract</literal> parameter.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="additions-linux">
|
|
|
|
<title>Guest Additions for Linux</title>
|
|
|
|
<para>
|
|
Like the Windows Guest Additions, the &product-name; Guest
|
|
Additions for Linux are a set of device drivers and system
|
|
applications which may be installed in the guest operating
|
|
system.
|
|
</para>
|
|
|
|
<para>
|
|
The following Linux distributions are officially supported:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Oracle Linux as of version 5, including UEK kernels
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fedora as of Fedora Core 4
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Red Hat Enterprise Linux as of version 3
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
SUSE and openSUSE Linux as of version 9
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ubuntu as of version 5.10
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Many other distributions are known to work with the Guest
|
|
Additions.
|
|
</para>
|
|
|
|
<para>
|
|
The version of the Linux kernel supplied by default in SUSE and
|
|
openSUSE 10.2, Ubuntu 6.10 (all versions) and Ubuntu 6.06
|
|
(server edition) contains a bug which can cause it to crash
|
|
during startup when it is run in a virtual machine. The Guest
|
|
Additions work in those distributions.
|
|
</para>
|
|
|
|
<para>
|
|
Note that some Linux distributions already come with all or part
|
|
of the &product-name; Guest Additions. You may choose to keep
|
|
the distribution's version of the Guest Additions but these are
|
|
often not up to date and limited in functionality, so we
|
|
recommend replacing them with the Guest Additions that come with
|
|
&product-name;. The &product-name; Linux Guest Additions
|
|
installer tries to detect an existing installation and replace
|
|
them but depending on how the distribution integrates the Guest
|
|
Additions, this may require some manual interaction. It is
|
|
highly recommended to take a snapshot of the virtual machine
|
|
before replacing preinstalled Guest Additions.
|
|
</para>
|
|
|
|
<sect3 id="additions-linux-install">
|
|
|
|
<title>Installing the Linux Guest Additions</title>
|
|
|
|
<para>
|
|
The &product-name; Guest Additions for Linux are provided on
|
|
the same virtual CD-ROM file as the Guest Additions for
|
|
Windows. See <xref linkend="mountingadditionsiso"/>. They also
|
|
come with an installation program that guides you through the
|
|
setup process. However, due to the significant differences
|
|
between Linux distributions, installation may be slightly more
|
|
complex when compared to Windows.
|
|
</para>
|
|
|
|
<para>
|
|
Installation generally involves the following steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Before installing the Guest Additions, you prepare your
|
|
guest system for building external kernel modules. This
|
|
works as described in
|
|
<xref linkend="externalkernelmodules" />, except that this
|
|
step must be performed in your Linux
|
|
<emphasis>guest</emphasis> instead of on a Linux host
|
|
system.
|
|
</para>
|
|
|
|
<para>
|
|
If you suspect that something has gone wrong, check that
|
|
your guest is set up correctly and run the following
|
|
command as root:
|
|
</para>
|
|
|
|
<screen>rcvboxadd setup</screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Insert the <filename>VBoxGuestAdditions.iso</filename> CD
|
|
file into your Linux guest's virtual CD-ROM drive, as
|
|
described for a Windows guest in
|
|
<xref linkend="mountingadditionsiso" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change to the directory where your CD-ROM drive is mounted
|
|
and run the following command as root:
|
|
</para>
|
|
|
|
<screen>sh ./VBoxLinuxAdditions.run</screen>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-linux-install-unattended">
|
|
|
|
<title>Unattended Installation of the Linux Guest Additions</title>
|
|
|
|
<para>
|
|
You can configure unattended installation of the
|
|
&product-name; Guest Additions when you create a new VM using
|
|
the <emphasis role="bold">Create Virtual Machine</emphasis>
|
|
wizard. Select the <emphasis role="bold">Guest
|
|
Additions</emphasis> check box on the
|
|
<emphasis role="bold">Unattended Guest OS Install</emphasis>
|
|
page of the wizard.
|
|
</para>
|
|
|
|
<para>
|
|
Guest Additions are installed automatically, following
|
|
completion of the guest OS installation.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-linux-graphics-mouse">
|
|
|
|
<title>Graphics and Mouse Integration</title>
|
|
|
|
<para>
|
|
In Linux and Oracle Solaris guests, &product-name; graphics
|
|
and mouse integration goes through the X Window System.
|
|
&product-name; can use the X.Org variant of the system, or
|
|
XFree86 version 4.3 which is identical to the first X.Org
|
|
release. During the installation process, the X.Org display
|
|
server will be set up to use the graphics and mouse drivers
|
|
which come with the Guest Additions.
|
|
</para>
|
|
|
|
<para>
|
|
After installing the Guest Additions into a fresh installation
|
|
of a supported Linux distribution or Oracle Solaris system,
|
|
many unsupported systems will work correctly too, the guest's
|
|
graphics mode will change to fit the size of the
|
|
&product-name; window on the host when it is resized. You can
|
|
also ask the guest system to switch to a particular resolution
|
|
by sending a video mode hint using the
|
|
<command>VBoxManage</command> tool.
|
|
</para>
|
|
|
|
<para>
|
|
Multiple guest monitors are supported in guests using the
|
|
X.Org server version 1.3, which is part of release 7.3 of the
|
|
X Window System version 11, or a later version. The layout of
|
|
the guest screens can be adjusted as needed using the tools
|
|
which come with the guest operating system.
|
|
</para>
|
|
|
|
<para>
|
|
If you want to understand more about the details of how the
|
|
X.Org drivers are set up, in particular if you wish to use
|
|
them in a setting which our installer does not handle
|
|
correctly, see <xref linkend="guestxorgsetup" />.
|
|
</para>
|
|
|
|
<para>
|
|
Starting from &product-name; 7, Linux guest screen resize
|
|
functionality for guests running VMSVGA graphics configuration
|
|
has been changed. Since then, this functionality consists of a
|
|
standalone daemon called VBoxDRMClient and its Desktop
|
|
Environment helper counterpart.
|
|
</para>
|
|
|
|
<para>
|
|
VBoxDRMClient runs as a root process and is a bridge between
|
|
the host and the guest's vmwgfx driver. This means that
|
|
VBoxDRMClient listens to screen resize hints from the host and
|
|
forwards them to the vmwgfx driver. This enables guest screen
|
|
resize functionality to be available before the user has
|
|
performed a graphical login.
|
|
</para>
|
|
|
|
<para>
|
|
In order to perform Desktop Environment specific actions, such
|
|
as setting the primary screen in a multimonitor setup, a
|
|
Desktop Environment helper is used. Once the user has
|
|
performed a graphical login operation, the helper daemon
|
|
starts with user session scope and attempts to connect to
|
|
VBoxDRMClient using an IPC connection. When VBoxDRMClient has
|
|
received a corresponding command from the host, it is
|
|
forwarded to the helper daemon over IPC and the action is then
|
|
performed.
|
|
</para>
|
|
|
|
<para>
|
|
By default, VBoxDRMClient allows any process to connect to its
|
|
IPC socket. This can be restricted by using the following
|
|
steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
The Guest Additions Linux installer creates a
|
|
<literal>vboxdrmipc</literal> user group. A corresponding
|
|
user needs to be added to this group.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
You must set the <literal>DRMIpcRestricted</literal> guest
|
|
property, as follows:
|
|
</para>
|
|
|
|
<screen>VBoxManage guestproperty set "VM name" /VirtualBox/GuestAdd/DRMIpcRestricted 1 \
|
|
--flags RDONLYGUEST</screen>
|
|
|
|
<para>
|
|
It is important to set only the RDONLYGUEST flag for the
|
|
property, so that it cannot be changed from inside the
|
|
guest.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
<note>
|
|
<para>
|
|
Both steps are required. If one of them is missing, all
|
|
processes will have access to the IPC socket.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Restricted mode can be disabled by unsetting the guest
|
|
property, as follows:
|
|
</para>
|
|
|
|
<screen>VBoxManage guestproperty unset "VM name" /VirtualBox/GuestAdd/DRMIpcRestricted</screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-linux-updating">
|
|
|
|
<title>Updating the Linux Guest Additions</title>
|
|
|
|
<para>
|
|
The Guest Additions can simply be updated by going through the
|
|
installation procedure again with an updated CD-ROM image.
|
|
This will replace the drivers with updated versions. You
|
|
should reboot after updating the Guest Additions.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-linux-uninstall">
|
|
|
|
<title>Uninstalling the Linux Guest Additions</title>
|
|
|
|
<para>
|
|
If you have a version of the Guest Additions installed on your
|
|
virtual machine and wish to remove it without installing new
|
|
ones, you can do so by inserting the Guest Additions CD image
|
|
into the virtual CD-ROM drive as described above. Then run the
|
|
installer for the current Guest Additions with the
|
|
<literal>uninstall</literal> parameter from the path that the
|
|
CD image is mounted on in the guest, as follows:
|
|
</para>
|
|
|
|
<screen>sh ./VBoxLinuxAdditions.run uninstall</screen>
|
|
|
|
<para>
|
|
While this will normally work without issues, you may need to
|
|
do some manual cleanup of the guest in some cases, especially
|
|
of the XFree86Config or xorg.conf file. In particular, if the
|
|
Additions version installed or the guest operating system were
|
|
very old, or if you made your own changes to the Guest
|
|
Additions setup after you installed them.
|
|
</para>
|
|
|
|
<para>
|
|
You can uninstall the Additions as follows:
|
|
</para>
|
|
|
|
<screen>/opt/VBoxGuestAdditions-<replaceable>version</replaceable>/uninstall.sh</screen>
|
|
|
|
<para>
|
|
Replace
|
|
<filename>/opt/VBoxGuestAdditions-<replaceable>version</replaceable></filename>
|
|
with the correct Guest Additions installation directory.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="additions-solaris">
|
|
|
|
<title>Guest Additions for Oracle Solaris</title>
|
|
|
|
<para>
|
|
Like the Windows Guest Additions, the &product-name; Guest
|
|
Additions for Oracle Solaris take the form of a set of device
|
|
drivers and system applications which may be installed in the
|
|
guest operating system.
|
|
</para>
|
|
|
|
<para>
|
|
The following Oracle Solaris distributions are officially
|
|
supported:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Oracle Solaris 11, including Oracle Solaris 11 Express
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Oracle Solaris 10 4/08 and later
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Other distributions may work if they are based on comparable
|
|
software releases.
|
|
</para>
|
|
|
|
<sect3 id="additions-solaris-install">
|
|
|
|
<title>Installing the Oracle Solaris Guest Additions</title>
|
|
|
|
<para>
|
|
The &product-name; Guest Additions for Oracle Solaris are
|
|
provided on the same ISO CD-ROM as the Additions for Windows
|
|
and Linux. They come with an installation program that guides
|
|
you through the setup process.
|
|
</para>
|
|
|
|
<para>
|
|
Installation involves the following steps:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Mount the <filename>VBoxGuestAdditions.iso</filename> file
|
|
as your Oracle Solaris guest's virtual CD-ROM drive,
|
|
exactly the same way as described for a Windows guest in
|
|
<xref linkend="mountingadditionsiso" />.
|
|
</para>
|
|
|
|
<para>
|
|
If the CD-ROM drive on the guest does not get mounted, as
|
|
seen with some versions of Oracle Solaris 10, run the
|
|
following command as root:
|
|
</para>
|
|
|
|
<screen>svcadm restart volfs</screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change to the directory where your CD-ROM drive is mounted
|
|
and run the following command as root:
|
|
</para>
|
|
|
|
<screen>pkgadd -G -d ./VBoxSolarisAdditions.pkg</screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Choose <emphasis role="bold">1</emphasis> and confirm
|
|
installation of the Guest Additions package. After the
|
|
installation is complete, log out and log in to X server
|
|
on your guest, to activate the X11 Guest Additions.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-solaris-install-unattended">
|
|
|
|
<title>Unattended Installation of the Oracle Solaris Guest Additions</title>
|
|
|
|
<para>
|
|
You can configure unattended installation of the
|
|
&product-name; Guest Additions when you create a new VM using
|
|
the <emphasis role="bold">Create Virtual Machine</emphasis>
|
|
wizard. Select the <emphasis role="bold">Guest
|
|
Additions</emphasis> check box on the
|
|
<emphasis role="bold">Unattended Guest OS Install</emphasis>
|
|
page of the wizard.
|
|
</para>
|
|
|
|
<para>
|
|
Guest Additions are installed automatically, following
|
|
completion of the guest OS installation.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-solaris-uninstall">
|
|
|
|
<title>Uninstalling the Oracle Solaris Guest Additions</title>
|
|
|
|
<para>
|
|
The Oracle Solaris Guest Additions can be safely removed by
|
|
removing the package from the guest. Open a root terminal
|
|
session and run the following command:
|
|
</para>
|
|
|
|
<screen>pkgrm SUNWvboxguest</screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="additions-solaris-updating">
|
|
|
|
<title>Updating the Oracle Solaris Guest Additions</title>
|
|
|
|
<para>
|
|
The Guest Additions should be updated by first uninstalling
|
|
the existing Guest Additions and then installing the new ones.
|
|
Attempting to install new Guest Additions without removing the
|
|
existing ones is not possible.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="additions-os2">
|
|
|
|
<title>Guest Additions for OS/2</title>
|
|
|
|
<para>
|
|
&product-name; also ships with a set of drivers that improve
|
|
running OS/2 in a virtual machine. Due to restrictions of OS/2
|
|
itself, this variant of the Guest Additions has a limited
|
|
feature set. See <xref linkend="KnownIssues" /> for details.
|
|
</para>
|
|
|
|
<para>
|
|
The OS/2 Guest Additions are provided on the same ISO CD-ROM as
|
|
those for the other platforms. Mount the ISO in OS/2 as
|
|
described previously. The OS/2 Guest Additions are located in
|
|
the directory <filename>\OS2</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
We do not provide an automatic installer at this time. See the
|
|
<filename>readme.txt</filename> file in the CD-ROM directory,
|
|
which describes how to install the OS/2 Guest Additions
|
|
manually.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="sharedfolders">
|
|
|
|
<title>Shared Folders</title>
|
|
|
|
<para>
|
|
With the <emphasis>shared folders</emphasis> feature of
|
|
&product-name;, you can access files of your host system from
|
|
within the guest system. This is similar to how you would use
|
|
network shares in Windows networks, except that shared folders do
|
|
not require networking, only the Guest Additions. Shared folders
|
|
are supported with Windows 2000 or later, Linux, and Oracle
|
|
Solaris guests. &product-name; includes experimental support for
|
|
Mac OS X and OS/2 guests.
|
|
</para>
|
|
|
|
<para>
|
|
Shared folders physically reside on the <emphasis>host</emphasis>
|
|
and are then shared with the guest, which uses a special file
|
|
system driver in the Guest Additions to talk to the host. For
|
|
Windows guests, shared folders are implemented as a pseudo-network
|
|
redirector. For Linux and Oracle Solaris guests, the Guest
|
|
Additions provide a virtual file system.
|
|
</para>
|
|
|
|
<para>
|
|
To share a host folder with a virtual machine in &product-name;,
|
|
you must specify the path of the folder and choose a
|
|
<emphasis>share name</emphasis> that the guest can use to access
|
|
the shared folder. This happens on the host. In the guest you can
|
|
then use the share name to connect to it and access files.
|
|
</para>
|
|
|
|
<para>
|
|
There are several ways in which shared folders can be set up for a
|
|
virtual machine:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
In the window of a running VM, you select
|
|
<emphasis role="bold">Shared Folders</emphasis> from the
|
|
<emphasis role="bold">Devices</emphasis> menu, or click on the
|
|
folder icon on the status bar in the bottom right corner.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
If a VM is not currently running, you can configure shared
|
|
folders in the virtual machine's
|
|
<emphasis role="bold">Settings</emphasis> window.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
From the command line, you can create shared folders using
|
|
<command>VBoxManage</command>, as follows:
|
|
</para>
|
|
|
|
<screen>VBoxManage sharedfolder add "VM name" --name "sharename" --hostpath "C:\test"</screen>
|
|
|
|
<para>
|
|
See <xref linkend="vboxmanage-sharedfolder" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
There are two types of shares:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Permanent shares, that are saved with the VM settings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Transient shares, that are added at runtime and disappear when
|
|
the VM is powered off. These can be created using a check box
|
|
in &vbox-mgr;, or by using the <option>--transient</option>
|
|
option of the <command>VBoxManage sharedfolder add</command>
|
|
command.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Shared folders can either be read-write or read-only. This means
|
|
that the guest is either allowed to both read and write, or just
|
|
read files on the host. By default, shared folders are read-write.
|
|
Read-only folders can be created using a check box in the
|
|
&vbox-mgr;, or with the <option>--readonly</option> option of the
|
|
<command>VBoxManage sharedfolder add</command> command.
|
|
</para>
|
|
|
|
<para>
|
|
&product-name; shared folders also support symbolic links, also
|
|
called <emphasis>symlinks</emphasis>, under the following
|
|
conditions:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
The host operating system must support symlinks. For example,
|
|
a macOS, Linux, or Oracle Solaris host is required.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The guest VM must have a version of the Guest Additions
|
|
installed which supports symlinks. Currently only the Linux and
|
|
Oracle Solaris Guest Additions support symlinks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
For security reasons the guest OS is not allowed to create
|
|
symlinks by default. If you trust the guest OS to not abuse
|
|
the functionality, you can enable the creation of symlinks for
|
|
a shared folder as follows:
|
|
</para>
|
|
|
|
<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<replaceable>sharename</replaceable> 1</screen>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
If a symbolic link is created inside a shared folder on the host
|
|
and the installed Guest Additions don't support symbolic links
|
|
then the guest will see the target of the symlink as a file
|
|
inside the shared folder. For example, if a symlink is created
|
|
to a file on a Linux host:
|
|
</para>
|
|
|
|
<screen>$ cd /SharedFolder && ln -s filename symlink-to-filename</screen>
|
|
|
|
<para>
|
|
And then the shared folder is viewed on a Windows guest there
|
|
will be two identical files listed, <emphasis>filename</emphasis>
|
|
and <emphasis>symlink-to-filename</emphasis>.
|
|
</para>
|
|
|
|
<sect2 id="sf_mount_manual">
|
|
|
|
<title>Manual Mounting</title>
|
|
|
|
<para>
|
|
You can mount the shared folder from inside a VM, in the same
|
|
way as you would mount an ordinary network share:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
In a Windows guest, shared folders are browseable and
|
|
therefore visible in Windows Explorer. To attach the host's
|
|
shared folder to your Windows guest, open Windows Explorer
|
|
and look for the folder in <emphasis role="bold">My
|
|
Networking Places</emphasis>, <emphasis role="bold">Entire
|
|
Network</emphasis>, <emphasis role="bold">&product-name;
|
|
Shared Folders</emphasis>. By right-clicking on a shared
|
|
folder and selecting <emphasis role="bold">Map Network
|
|
Drive</emphasis> from the menu that pops up, you can assign
|
|
a drive letter to that shared folder.
|
|
</para>
|
|
|
|
<para>
|
|
Alternatively, on the Windows command line, use the
|
|
following command:
|
|
</para>
|
|
|
|
<screen>net use x: \\vboxsvr\sharename</screen>
|
|
|
|
<para>
|
|
While <literal>vboxsvr</literal> is a fixed name, note that
|
|
<literal>vboxsrv</literal> would also work, replace
|
|
<replaceable>x:</replaceable> with the drive letter that you
|
|
want to use for the share, and
|
|
<replaceable>sharename</replaceable> with the share name
|
|
specified with <command>VBoxManage</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In a Linux guest, use the following command:
|
|
</para>
|
|
|
|
<screen>mount -t vboxsf [-o OPTIONS] sharename mountpoint</screen>
|
|
|
|
<para>
|
|
To mount a shared folder during boot, add the following
|
|
entry to <filename>/etc/fstab</filename>:
|
|
</para>
|
|
|
|
<screen>sharename mountpoint vboxsf defaults 0 0</screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In a Oracle Solaris guest, use the following command:
|
|
</para>
|
|
|
|
<screen>mount -F vboxfs [-o OPTIONS] sharename mountpoint</screen>
|
|
|
|
<para>
|
|
Replace <replaceable>sharename</replaceable>, use a
|
|
lowercase string, with the share name specified with
|
|
<command>VBoxManage</command> or &vbox-mgr;. Replace
|
|
<replaceable>mountpoint</replaceable> with the path where
|
|
you want the share to be mounted on the guest, such as
|
|
<filename>/mnt/share</filename>. The usual mount rules
|
|
apply. For example, create this directory first if it does
|
|
not exist yet.
|
|
</para>
|
|
|
|
<para>
|
|
Here is an example of mounting the shared folder for the
|
|
user jack on Oracle Solaris:
|
|
</para>
|
|
|
|
<screen>$ id
|
|
uid=5000(jack) gid=1(other)
|
|
$ mkdir /export/home/jack/mount
|
|
$ pfexec mount -F vboxfs -o uid=5000,gid=1 jackshare /export/home/jack/mount
|
|
$ cd ~/mount
|
|
$ ls
|
|
sharedfile1.mp3 sharedfile2.txt
|
|
$</screen>
|
|
|
|
<para>
|
|
Beyond the standard options supplied by the
|
|
<command>mount</command> command, the following are
|
|
available:
|
|
</para>
|
|
|
|
<screen>iocharset CHARSET</screen>
|
|
|
|
<para>
|
|
This option sets the character set used for I/O operations.
|
|
Note that on Linux guests, if the
|
|
<literal>iocharset</literal> option is not specified, then
|
|
the Guest Additions driver will attempt to use the character
|
|
set specified by the CONFIG_NLS_DEFAULT kernel option. If
|
|
this option is not set either, then UTF-8 is used.
|
|
</para>
|
|
|
|
<screen>convertcp CHARSET</screen>
|
|
|
|
<para>
|
|
This option specifies the character set used for the shared
|
|
folder name. This is UTF-8 by default.
|
|
</para>
|
|
|
|
<para>
|
|
The generic mount options, documented in the
|
|
<command>mount</command> manual page, apply also. Especially
|
|
useful are the options <literal>uid</literal>,
|
|
<literal>gid</literal> and <literal>mode</literal>, as they
|
|
can allow access by normal users in read/write mode,
|
|
depending on the settings, even if root has mounted the
|
|
filesystem.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In an OS/2 guest, use the <command>VBoxControl</command>
|
|
command to manage shared folders. For example:
|
|
</para>
|
|
|
|
<screen>VBoxControl sharedfolder use D: MyShareName
|
|
VBoxControl sharedfolder unuse D:
|
|
VBoxControl sharedfolder list</screen>
|
|
|
|
<para>
|
|
As with Windows guests, shared folders can also be accessed
|
|
via UNC using <filename>\\VBoxSF\</filename>,
|
|
<filename>\\VBoxSvr\</filename> or
|
|
<filename>\\VBoxSrv\</filename> as the server name and the
|
|
shared folder name as <replaceable>sharename</replaceable>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="sf_mount_auto">
|
|
|
|
<title>Automatic Mounting</title>
|
|
|
|
<para>
|
|
&product-name; provides the option to mount shared folders
|
|
automatically. When automatic mounting is enabled for a shared
|
|
folder, the Guest Additions service will mount it for you
|
|
automatically. For Windows or OS/2, a preferred drive letter can
|
|
also be specified. For Linux or Oracle Solaris, a mount point
|
|
directory can also be specified.
|
|
</para>
|
|
|
|
<para>
|
|
If a drive letter or mount point is not specified, or is in use
|
|
already, an alternative location is found by the Guest Additions
|
|
service. The service searches for an alternative location
|
|
depending on the guest OS, as follows:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Windows and OS/2 guests.</emphasis>
|
|
Search for a free drive letter, starting at
|
|
<filename>Z:</filename>. If all drive letters are assigned,
|
|
the folder is not mounted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Linux and Oracle Solaris
|
|
guests.</emphasis> Folders are mounted under the
|
|
<filename>/media</filename> directory. The folder name is
|
|
normalized (no spaces, slashes or colons) and is prefixed
|
|
with <filename>sf_</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
For example, if you have a shared folder called
|
|
<filename>myfiles</filename>, it will appear as
|
|
<filename>/media/sf_myfiles</filename> in the guest.
|
|
</para>
|
|
|
|
<para>
|
|
The guest properties
|
|
<literal>/VirtualBox/GuestAdd/SharedFolders/MountDir</literal>
|
|
and the more generic
|
|
<literal>/VirtualBox/GuestAdd/SharedFolders/MountPrefix</literal>
|
|
can be used to override the automatic mount directory and
|
|
prefix. See <xref linkend="guestadd-guestprops" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Access to an automatically mounted shared folder is granted to
|
|
everyone in a Windows guest, including the guest user. For Linux
|
|
and Oracle Solaris guests, access is restricted to members of
|
|
the group <literal>vboxsf</literal> and the
|
|
<literal>root</literal> user.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-dnd">
|
|
|
|
<title>Drag and Drop</title>
|
|
|
|
<para>
|
|
&product-name; enables you to drag and drop content from the host
|
|
to the guest, and vice versa. For this to work the latest version
|
|
of the Guest Additions must be installed on the guest.
|
|
</para>
|
|
|
|
<para>
|
|
Drag and drop transparently allows copying or opening files,
|
|
directories, and even certain clipboard formats from one end to
|
|
the other. For example, from the host to the guest or from the
|
|
guest to the host. You then can perform drag and drop operations
|
|
between the host and a VM, as it would be a native drag and drop
|
|
operation on the host OS.
|
|
</para>
|
|
|
|
<para>
|
|
At the moment drag and drop is implemented for Windows-based and
|
|
X-Windows-based systems, both on the host and guest side. As
|
|
X-Windows supports many different drag and drop protocols only the
|
|
most common one, XDND, is supported for now. Applications using
|
|
other protocols, such as Motif or OffiX, will not be recognized by
|
|
&product-name;.
|
|
</para>
|
|
|
|
<para>
|
|
In the context of using drag and drop, the origin of the data is
|
|
called the <emphasis>source</emphasis>. That is, where the actual
|
|
data comes from and is specified. The
|
|
<emphasis>destination</emphasis> specifies where the data from the
|
|
source should go to. Transferring data from the source to the
|
|
destination can be done in various ways, such as copying, moving,
|
|
or linking.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
At the moment only copying of data is supported. Moving or
|
|
linking is not yet implemented.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
When transferring data from the host to the guest OS, the host in
|
|
this case is the source, whereas the guest OS is the destination.
|
|
However, when transferring data from the guest OS to the host, the
|
|
guest OS this time became the source and the host is the
|
|
destination.
|
|
</para>
|
|
|
|
<para>
|
|
For security reasons drag and drop can be configured at runtime on
|
|
a per-VM basis either using the <emphasis role="bold">Drag and
|
|
Drop</emphasis> menu item in the
|
|
<emphasis role="bold">Devices</emphasis> menu of the virtual
|
|
machine, as shown below, or the <command>VBoxManage</command>
|
|
command.
|
|
</para>
|
|
|
|
<figure id="fig-drag-drop-options">
|
|
<title>Drag and Drop Menu Options</title>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/dnd-modes.png"
|
|
width="10cm" />
|
|
</imageobject>
|
|
</mediaobject>
|
|
</figure>
|
|
|
|
<para>
|
|
The following drag and drop modes are available:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Disabled.</emphasis> Disables the drag
|
|
and drop feature entirely. This is the default when creating a
|
|
new VM.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Host To Guest.</emphasis> Enables drag
|
|
and drop operations from the host to the guest only.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Guest To Host.</emphasis> Enables drag
|
|
and drop operations from the guest to the host only.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Bidirectional.</emphasis> Enables drag
|
|
and drop operations in both directions: from the host to the
|
|
guest, and from the guest to the host.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<note>
|
|
<para>
|
|
Drag and drop support depends on the frontend being used. At the
|
|
moment, only the &vbox-mgr; frontend provides this
|
|
functionality.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
To use the <command>VBoxManage</command> command to control the
|
|
current drag and drop mode, see <xref linkend="vboxmanage" />. The
|
|
<command>modifyvm</command> and <command>controlvm</command>
|
|
commands enable setting of a VM's current drag and drop mode from
|
|
the command line.
|
|
</para>
|
|
|
|
<sect2 id="guestadd-dnd-formats">
|
|
|
|
<title>Supported Formats</title>
|
|
|
|
<para>
|
|
As &product-name; can run on a variety of host operating systems
|
|
and also supports a wide range of guests, certain data formats
|
|
must be translated after transfer. This is so that the
|
|
destination operating system, which receives the data, is able
|
|
to handle them in an appropriate manner.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
When dragging files no data conversion is done in any way. For
|
|
example, when transferring a file from a Linux guest to a
|
|
Windows host the Linux-specific line endings are not converted
|
|
to Windows line endings.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
The following formats are handled by the &product-name; drag and
|
|
drop service:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Plain text:</emphasis> From
|
|
applications such as text editors, internet browsers and
|
|
terminal windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Files:</emphasis> From file managers
|
|
such as Windows Explorer, Nautilus, and Finder.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Directories:</emphasis> For
|
|
directories, the same formats apply as for files.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="guestadd-dnd-limitations">
|
|
|
|
<title>Known Limitations</title>
|
|
|
|
<para>
|
|
The following limitations are known for drag and drop:
|
|
</para>
|
|
|
|
<para>
|
|
On Windows hosts, dragging and dropping content between
|
|
UAC-elevated (User Account Control) programs and
|
|
non-UAC-elevated programs is not allowed. If you start
|
|
&product-name; with Administrator privileges then drag and drop
|
|
will not work with Windows Explorer, which runs with regular
|
|
user privileges by default.
|
|
</para>
|
|
|
|
<para>
|
|
On Linux hosts and guests, programs can query for drag and drop
|
|
data while the drag operation is still in progress. For example,
|
|
on LXDE using the PCManFM file manager. This currently is not
|
|
supported. As a workaround, a different file manager, such as
|
|
Nautilus, can be used instead.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-video">
|
|
|
|
<title>Hardware-Accelerated Graphics</title>
|
|
|
|
<sect2 id="guestadd-3d">
|
|
|
|
<title>Hardware 3D Acceleration (OpenGL and Direct3D 8/9)</title>
|
|
|
|
<para>
|
|
The &product-name; Guest Additions contain experimental hardware
|
|
3D support for Windows, Linux, and Oracle Solaris guests.
|
|
</para>
|
|
|
|
<para>
|
|
With this feature, if an application inside your virtual machine
|
|
uses 3D features through the OpenGL or Direct3D 8/9 programming
|
|
interfaces, instead of emulating them in software, which would
|
|
be slow, &product-name; will attempt to use your host's 3D
|
|
hardware. This works for all supported host platforms, provided
|
|
that your host operating system can make use of your accelerated
|
|
3D hardware in the first place.
|
|
</para>
|
|
|
|
<para>
|
|
The 3D acceleration feature currently has the following
|
|
preconditions:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
It is only available for certain Windows, Linux, and Oracle
|
|
Solaris guests. In particular:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
3D acceleration with Windows guests requires Windows
|
|
2000 or later. Apart from on Windows 2000 guests, both
|
|
OpenGL and Direct3D 8/9 are supported on an experimental
|
|
basis.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
OpenGL on Linux requires kernel 2.6.27 or later, as well
|
|
as X.org server version 1.5 or later. Ubuntu 10.10 and
|
|
Fedora 14 have been tested and confirmed as working.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
OpenGL on Oracle Solaris guests requires X.org server
|
|
version 1.5 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The Guest Additions must be installed.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
For the basic Direct3D acceleration to work in a Windows
|
|
Guest, &product-name; needs to replace Windows system
|
|
files in the virtual machine. As a result, the Guest
|
|
Additions installation program offers Direct3D
|
|
acceleration as an option that must be explicitly enabled.
|
|
Also, you must install the Guest Additions in Safe Mode.
|
|
This does <emphasis>not</emphasis> apply to the WDDM
|
|
Direct3D video driver available for Windows Vista and
|
|
later. See <xref linkend="KnownIssues" /> for details.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Because 3D support is still experimental at this time, it is
|
|
disabled by default and must be <emphasis>manually
|
|
enabled</emphasis> in the VM settings. See
|
|
<xref linkend="settings-display" />.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
Untrusted guest systems should not be allowed to use the
|
|
3D acceleration features of &product-name;, just as
|
|
untrusted host software should not be allowed to use 3D
|
|
acceleration. Drivers for 3D hardware are generally too
|
|
complex to be made properly secure and any software which
|
|
is allowed to access them may be able to compromise the
|
|
operating system running them. In addition, enabling 3D
|
|
acceleration gives the guest direct access to a large body
|
|
of additional program code in the &product-name; host
|
|
process which it might conceivably be able to use to crash
|
|
the virtual machine.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
To enable Aero theme support, the &product-name; WDDM video
|
|
driver must be installed, which is available with the Guest
|
|
Additions installation. The WDDM driver is not installed by
|
|
default for Vista and Windows 7 guests and must be
|
|
<emphasis>manually selected</emphasis> in the Guest Additions
|
|
installer by clicking <emphasis role="bold">No</emphasis> in the
|
|
<emphasis role="bold">Would You Like to Install Basic Direct3D
|
|
Support</emphasis> dialog displayed when the Direct3D feature is
|
|
selected.
|
|
</para>
|
|
|
|
<para>
|
|
The Aero theme is not enabled by default on Windows. See your
|
|
Windows platform documentation for details of how to enable the
|
|
Aero theme.
|
|
</para>
|
|
|
|
<para>
|
|
Technically, &product-name; implements 3D acceleration by
|
|
installing an additional hardware 3D driver inside the guest
|
|
when the Guest Additions are installed. This driver acts as a
|
|
hardware 3D driver and reports to the guest operating system
|
|
that the virtual hardware is capable of 3D hardware
|
|
acceleration. When an application in the guest then requests
|
|
hardware acceleration through the OpenGL or Direct3D programming
|
|
interfaces, these are sent to the host through a special
|
|
communication tunnel implemented by &product-name;. The
|
|
<emphasis>host</emphasis> then performs the requested 3D
|
|
operation using the host's programming interfaces.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="guestadd-2d">
|
|
|
|
<title>Hardware 2D Video Acceleration for Windows Guests</title>
|
|
|
|
<para>
|
|
The &product-name; Guest Additions contain experimental hardware
|
|
2D video acceleration support for Windows guests.
|
|
</para>
|
|
|
|
<para>
|
|
With this feature, if an application such as a video player
|
|
inside your Windows VM uses 2D video overlays to play a movie
|
|
clip, then &product-name; will attempt to use your host's video
|
|
acceleration hardware instead of performing overlay stretching
|
|
and color conversion in software, which would be slow. This
|
|
currently works for Windows, Linux and macOS host platforms,
|
|
provided that your host operating system can make use of 2D
|
|
video acceleration in the first place.
|
|
</para>
|
|
|
|
<para>
|
|
Hardware 2D video acceleration currently has the following
|
|
preconditions:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Only available for Windows guests, running Windows XP or
|
|
later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Guest Additions must be installed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Because 2D support is still experimental at this time, it is
|
|
disabled by default and must be <emphasis>manually
|
|
enabled</emphasis> in the VM settings. See
|
|
<xref linkend="settings-display" />.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Technically, &product-name; implements this by exposing video
|
|
overlay DirectDraw capabilities in the Guest Additions video
|
|
driver. The driver sends all overlay commands to the host
|
|
through a special communication tunnel implemented by
|
|
&product-name;. On the host side, OpenGL is then used to
|
|
implement color space transformation and scaling.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="seamlesswindows">
|
|
|
|
<title>Seamless Windows</title>
|
|
|
|
<para>
|
|
With the <emphasis>seamless windows</emphasis> feature of
|
|
&product-name;, you can have the windows that are displayed within
|
|
a virtual machine appear side by side next to the windows of your
|
|
host. This feature is supported for the following guest operating
|
|
systems, provided that the Guest Additions are installed:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Windows guests.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Supported Linux or Oracle Solaris guests running the X Window
|
|
System.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
After seamless windows are enabled, &product-name; suppresses the
|
|
display of the desktop background of your guest, allowing you to
|
|
run the windows of your guest operating system seamlessly next to
|
|
the windows of your host.
|
|
</para>
|
|
|
|
<figure id="fig-seamless-windows">
|
|
<title>Seamless Windows on a Host Desktop</title>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/seamless.png" width="14cm" />
|
|
</imageobject>
|
|
</mediaobject>
|
|
</figure>
|
|
|
|
<para>
|
|
To enable seamless mode, after starting the virtual machine, press
|
|
the <emphasis role="bold">Host key + L</emphasis>. The Host key is
|
|
normally the right control key. This will enlarge the size of the
|
|
VM's display to the size of your host screen and mask out the
|
|
guest operating system's background. To disable seamless windows
|
|
and go back to the normal VM display, press the Host key + L
|
|
again.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-guestprops">
|
|
|
|
<title>Guest Properties</title>
|
|
|
|
<para>
|
|
&product-name; enables requests of some properties from a running
|
|
guest, provided that the &product-name; Guest Additions are
|
|
installed and the VM is running. This provides the following
|
|
advantages:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
A number of predefined VM characteristics are automatically
|
|
maintained by &product-name; and can be retrieved on the host.
|
|
For example, to monitor VM performance and statistics.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Arbitrary string data can be exchanged between guest and host.
|
|
This works in both directions.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
To accomplish this, &product-name; establishes a private
|
|
communication channel between the &product-name; Guest Additions
|
|
and the host, and software on both sides can use this channel to
|
|
exchange string data for arbitrary purposes. Guest properties are
|
|
simply string keys to which a value is attached. They can be set,
|
|
or written to, by either the host and the guest. They can also be
|
|
read from both sides.
|
|
</para>
|
|
|
|
<para>
|
|
In addition to establishing the general mechanism of reading and
|
|
writing values, a set of predefined guest properties is
|
|
automatically maintained by the &product-name; Guest Additions to
|
|
allow for retrieving interesting guest data such as the guest's
|
|
exact operating system and service pack level, the installed
|
|
version of the Guest Additions, users that are currently logged
|
|
into the guest OS, network statistics and more. These predefined
|
|
properties are all prefixed with <literal>/VirtualBox/</literal>
|
|
and organized into a hierarchical tree of keys.
|
|
</para>
|
|
|
|
<para>
|
|
Some of this runtime information is shown when you select
|
|
<emphasis role="bold">Session Information Dialog</emphasis> from a
|
|
virtual machine's <emphasis role="bold">Machine</emphasis> menu.
|
|
</para>
|
|
|
|
<para>
|
|
A more flexible way to use this channel is with the
|
|
<command>VBoxManage guestproperty</command> command. See
|
|
<xref linkend="vboxmanage-guestproperty" />. For example, to have
|
|
<emphasis>all</emphasis> the available guest properties for a
|
|
given running VM listed with their respective values, use this
|
|
command:
|
|
</para>
|
|
|
|
<screen>$ VBoxManage guestproperty enumerate "Windows Vista III"
|
|
VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
|
|
Copyright (C) 2005-2023 Oracle and/or its affiliates
|
|
|
|
Name: /VirtualBox/GuestInfo/OS/Product, value: Windows Vista Business Edition,
|
|
timestamp: 1229098278843087000, flags:
|
|
Name: /VirtualBox/GuestInfo/OS/Release, value: 6.0.6001,
|
|
timestamp: 1229098278950553000, flags:
|
|
Name: /VirtualBox/GuestInfo/OS/ServicePack, value: 1,
|
|
timestamp: 1229098279122627000, flags:
|
|
Name: /VirtualBox/GuestAdd/InstallDir,
|
|
value: C:/Program Files/Oracle/VirtualBox
|
|
Guest Additions, timestamp: 1229098279269739000, flags:
|
|
Name: /VirtualBox/GuestAdd/Revision, value: 40720,
|
|
timestamp: 1229098279345664000, flags:
|
|
Name: /VirtualBox/GuestAdd/Version, value: <replaceable>version-number</replaceable>,
|
|
timestamp: 1229098279479515000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxControl.exe, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279651731000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxHook.dll, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279804835000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxDisp.dll, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279880611000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxMRXNP.dll, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279882618000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxService.exe, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279883195000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxTray.exe, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279885027000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxGuest.sys, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279886838000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxMouse.sys, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279890600000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxSF.sys, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279893056000, flags:
|
|
Name: /VirtualBox/GuestAdd/Components/VBoxVideo.sys, value: <replaceable>version-number</replaceable>r40720,
|
|
timestamp: 1229098279895767000, flags:
|
|
Name: /VirtualBox/GuestInfo/OS/LoggedInUsers, value: 1,
|
|
timestamp: 1229099826317660000, flags:
|
|
Name: /VirtualBox/GuestInfo/OS/NoLoggedInUsers, value: false,
|
|
timestamp: 1229098455580553000, flags:
|
|
Name: /VirtualBox/GuestInfo/Net/Count, value: 1,
|
|
timestamp: 1229099826299785000, flags:
|
|
Name: /VirtualBox/HostInfo/GUI/LanguageID, value: C,
|
|
timestamp: 1229098151272771000, flags:
|
|
Name: /VirtualBox/GuestInfo/Net/0/V4/IP, value: 192.168.2.102,
|
|
timestamp: 1229099826300088000, flags:
|
|
Name: /VirtualBox/GuestInfo/Net/0/V4/Broadcast, value: 255.255.255.255,
|
|
timestamp: 1229099826300220000, flags:
|
|
Name: /VirtualBox/GuestInfo/Net/0/V4/Netmask, value: 255.255.255.0,
|
|
timestamp: 1229099826300350000, flags:
|
|
Name: /VirtualBox/GuestInfo/Net/0/Status, value: Up,
|
|
timestamp: 1229099826300524000, flags:
|
|
Name: /VirtualBox/GuestInfo/OS/LoggedInUsersList, value: username,
|
|
timestamp: 1229099826317386000, flags:</screen>
|
|
|
|
<para>
|
|
To query the value of a single property, use the
|
|
<command>get</command> subcommand as follows:
|
|
</para>
|
|
|
|
<screen>$ VBoxManage guestproperty get "Windows Vista III" "/VirtualBox/GuestInfo/OS/Product"
|
|
VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
|
|
Copyright (C) 2005-2023 Oracle and/or its affiliates
|
|
|
|
Value: Windows Vista Business Edition</screen>
|
|
|
|
<para>
|
|
To add or change guest properties from the guest, use the tool
|
|
<command>VBoxControl</command>. This tool is included in the Guest
|
|
Additions. When started from a Linux guest, this tool requires
|
|
root privileges for security reasons.
|
|
</para>
|
|
|
|
<screen>$ sudo VBoxControl guestproperty enumerate
|
|
VirtualBox Guest Additions Command Line Management Interface Version <replaceable>version-number</replaceable>
|
|
Copyright (C) 2005-2023 Oracle and/or its affiliates
|
|
|
|
Name: /VirtualBox/GuestInfo/OS/Release, value: 2.6.28-18-generic,
|
|
timestamp: 1265813265835667000, flags: <NULL>
|
|
Name: /VirtualBox/GuestInfo/OS/Version, value: #59-Ubuntu SMP Thu Jan 28 01:23:03 UTC 2010,
|
|
timestamp: 1265813265836305000, flags: <NULL>
|
|
...</screen>
|
|
|
|
<para>
|
|
For more complex needs, you can use the &product-name; programming
|
|
interfaces. See <xref linkend="VirtualBoxAPI" />.
|
|
</para>
|
|
|
|
<sect2 id="guestadd-guestprops-waits">
|
|
|
|
<title>Using Guest Properties to Wait on VM Events</title>
|
|
|
|
<para>
|
|
The properties <literal>/VirtualBox/HostInfo/VBoxVer</literal>,
|
|
<literal>/VirtualBox/HostInfo/VBoxVerExt</literal> or
|
|
<literal>/VirtualBox/HostInfo/VBoxRev</literal> can be waited on
|
|
to detect that the VM state was restored from saved state or
|
|
snapshot:
|
|
</para>
|
|
|
|
<screen>$ VBoxControl guestproperty wait /VirtualBox/HostInfo/VBoxVer</screen>
|
|
|
|
<para>
|
|
Similarly the
|
|
<literal>/VirtualBox/HostInfo/ResumeCounter</literal> can be
|
|
used to detect that a VM was resumed from the paused state or
|
|
saved state.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-gc-file-manager">
|
|
|
|
<title>Guest Control File Manager</title>
|
|
|
|
<para>
|
|
The Guest Control File Manager is a feature of the Guest Additions
|
|
that enables easy copying and moving of files between a guest and
|
|
the host system. Other file management operations provide support
|
|
to create new folders and to rename or delete files.
|
|
</para>
|
|
|
|
<para>
|
|
This feature is useful when the VM window of a guest is not
|
|
visible. For example, when the guest is running in headless mode.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
To use the Guest Control File Manager, the guest must be
|
|
running. For powered-off guests, it is disabled automatically.
|
|
</para>
|
|
</note>
|
|
|
|
<figure id="fig-guest-control-fm">
|
|
<title>Guest Control File Manager</title>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata align="center" fileref="images/guest-fm.png"
|
|
width="12cm" />
|
|
</imageobject>
|
|
</mediaobject>
|
|
|
|
</figure>
|
|
|
|
<para>
|
|
The Guest Control File Manager works by mounting the host file
|
|
system. Guest users must authenticate and create a guest session
|
|
before they can transfer files.
|
|
</para>
|
|
|
|
<sect2 id="guestadd-gc-file-manager-using">
|
|
|
|
<title>Using the Guest Control File Manager</title>
|
|
|
|
<para>
|
|
The following steps describe how to use the Guest Control File
|
|
Manager.
|
|
</para>
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Open the Guest Control File Manager. Do either of the
|
|
following:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
In the guest VM, select
|
|
<emphasis role="bold">Machine</emphasis>,
|
|
<emphasis role="bold">File Manager</emphasis>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In &vbox-mgr;, click on the machine name. Click
|
|
<emphasis role="bold">File Manager</emphasis> in the
|
|
machine tools menu for the VM.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The left pane shows the files on the host system.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a guest session.
|
|
</para>
|
|
|
|
<para>
|
|
At the bottom of the Guest Control File Manager, enter
|
|
authentication credentials for a user on the guest system.
|
|
</para>
|
|
|
|
<para>
|
|
Click <emphasis role="bold">Create Session</emphasis>.
|
|
</para>
|
|
|
|
<para>
|
|
The contents of the guest VM file system appears in the
|
|
right pane of the Guest Control File Manager.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Transfer files between the guest and the host system by
|
|
using the move and copy file transfer icons.
|
|
</para>
|
|
|
|
<para>
|
|
You can copy and move files from the guest to the host
|
|
system or from the host system to the guest.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Close the Guest Control File Manager.
|
|
</para>
|
|
|
|
<para>
|
|
Click <emphasis role="bold">Close</emphasis> to end the
|
|
guest session.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-guestcontrol">
|
|
|
|
<title>Guest Control of Applications</title>
|
|
|
|
<para>
|
|
The Guest Additions enable starting of applications inside a guest
|
|
VM from the host system. This feature can be used to automate
|
|
deployment of software within the guest.
|
|
</para>
|
|
|
|
<para>
|
|
For this to work, the application needs to be installed on the
|
|
guest. No additional software needs to be installed on the host.
|
|
Additionally, text mode output to stdout and stderr can be shown
|
|
on the host for further processing. There are options to specify
|
|
user credentials and a timeout value, in milliseconds, to limit
|
|
the time the application is able to run.
|
|
</para>
|
|
|
|
<para>
|
|
The Guest Additions for Windows allow for automatic updating. This
|
|
applies for already installed Guest Additions versions. Also,
|
|
copying files from host to the guest as well as remotely creating
|
|
guest directories is available.
|
|
</para>
|
|
|
|
<para>
|
|
To use these features, use the &product-name; command line. See
|
|
<xref linkend="vboxmanage-guestcontrol" />.
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-memory-usage">
|
|
|
|
<title>Memory Overcommitment</title>
|
|
|
|
<para>
|
|
In server environments with many VMs, the Guest Additions can be
|
|
used to share physical host memory between several VMs. This
|
|
reduces the total amount of memory in use by the VMs. If memory
|
|
usage is the limiting factor and CPU resources are still
|
|
available, this can help with running more VMs on each host.
|
|
</para>
|
|
|
|
<sect2 id="guestadd-balloon">
|
|
|
|
<title>Memory Ballooning</title>
|
|
|
|
<para>
|
|
The Guest Additions can change the amount of host memory that a
|
|
VM uses, while the machine is running. Because of how this is
|
|
implemented, this feature is called <emphasis>memory
|
|
ballooning</emphasis>.
|
|
</para>
|
|
|
|
<note>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
&product-name; supports memory ballooning only on 64-bit
|
|
hosts. It is not supported on macOS hosts.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Memory ballooning does not work well with large pages
|
|
enabled. To turn off large pages support for a VM, run
|
|
<command>VBoxManage modifyvm
|
|
<replaceable>vmname</replaceable> --large-pages
|
|
off</command>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</note>
|
|
|
|
<para>
|
|
Normally, to change the amount of memory allocated to a virtual
|
|
machine, you have to shut down the virtual machine entirely and
|
|
modify its settings. With memory ballooning, memory that was
|
|
allocated for a virtual machine can be given to another virtual
|
|
machine without having to shut the machine down.
|
|
</para>
|
|
|
|
<para>
|
|
When memory ballooning is requested, the &product-name; Guest
|
|
Additions, which run inside the guest, allocate physical memory
|
|
from the guest operating system on the kernel level and lock
|
|
this memory down in the guest. This ensures that the guest will
|
|
not use that memory any longer. No guest applications can
|
|
allocate it, and the guest kernel will not use it either.
|
|
&product-name; can then reuse this memory and give it to another
|
|
virtual machine.
|
|
</para>
|
|
|
|
<para>
|
|
The memory made available through the ballooning mechanism is
|
|
only available for reuse by &product-name;. It is
|
|
<emphasis>not</emphasis> returned as free memory to the host.
|
|
Requesting balloon memory from a running guest will therefore
|
|
not increase the amount of free, unallocated memory on the host.
|
|
Effectively, memory ballooning is therefore a memory
|
|
overcommitment mechanism for multiple virtual machines while
|
|
they are running. This can be useful to temporarily start
|
|
another machine, or in more complicated environments, for
|
|
sophisticated memory management of many virtual machines that
|
|
may be running in parallel depending on how memory is used by
|
|
the guests.
|
|
</para>
|
|
|
|
<para>
|
|
At this time, memory ballooning is only supported through
|
|
<command>VBoxManage</command>. Use the following command to
|
|
increase or decrease the size of the memory balloon within a
|
|
running virtual machine that has Guest Additions installed:
|
|
</para>
|
|
|
|
<screen>VBoxManage controlvm "VM name" guestmemoryballoon n</screen>
|
|
|
|
<para>
|
|
where <replaceable>VM name</replaceable> is the name or UUID of
|
|
the virtual machine in question and <replaceable>n</replaceable>
|
|
is the amount of memory to allocate from the guest in megabytes.
|
|
See <xref
|
|
linkend="vboxmanage-controlvm" />.
|
|
</para>
|
|
|
|
<para>
|
|
You can also set a default balloon that will automatically be
|
|
requested from the VM every time after it has started up with
|
|
the following command:
|
|
</para>
|
|
|
|
<screen>VBoxManage modifyvm "VM name" --guest-memory-balloon n</screen>
|
|
|
|
<para>
|
|
By default, no balloon memory is allocated. This is a VM
|
|
setting, like other <command>modifyvm</command> settings, and
|
|
therefore can only be set while the machine is shut down. See
|
|
<xref
|
|
linkend="vboxmanage-modifyvm" />.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="guestadd-pagefusion">
|
|
|
|
<title>Page Fusion</title>
|
|
|
|
<para>
|
|
Whereas memory ballooning simply reduces the amount of RAM that
|
|
is available to a VM, Page Fusion works differently. It avoids
|
|
memory duplication between several similar running VMs.
|
|
</para>
|
|
|
|
<para>
|
|
In a server environment running several similar VMs on the same
|
|
host, lots of memory pages are identical. For example, if the
|
|
VMs are using identical operating systems. &product-name;'s Page
|
|
Fusion technology can efficiently identify these identical
|
|
memory pages and share them between multiple VMs.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
&product-name; supports Page Fusion only on 64-bit hosts, and
|
|
it is not supported on macOS hosts. Page Fusion currently
|
|
works only with Windows 2000 and later guests.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
The more similar the VMs on a given host are, the more
|
|
efficiently Page Fusion can reduce the amount of host memory
|
|
that is in use. It therefore works best if all VMs on a host run
|
|
identical operating systems. Instead of having a complete copy
|
|
of each operating system in each VM, Page Fusion identifies the
|
|
identical memory pages in use by these operating systems and
|
|
eliminates the duplicates, sharing host memory between several
|
|
machines. This is called <emphasis>deduplication</emphasis>. If
|
|
a VM tries to modify a page that has been shared with other VMs,
|
|
a new page is allocated again for that VM with a copy of the
|
|
shared page. This is called <emphasis>copy on write</emphasis>.
|
|
All this is fully transparent to the virtual machine.
|
|
</para>
|
|
|
|
<para>
|
|
You may be familiar with this kind of memory overcommitment from
|
|
other hypervisor products, which call this feature
|
|
<emphasis>page sharing</emphasis> or <emphasis>same page
|
|
merging</emphasis>. However, Page Fusion differs significantly
|
|
from those other solutions, whose approaches have several
|
|
drawbacks:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Traditional hypervisors scan <emphasis>all</emphasis> guest
|
|
memory and compute checksums, also called hashes, for every
|
|
single memory page. Then, they look for pages with identical
|
|
hashes and compare the entire content of those pages. If two
|
|
pages produce the same hash, it is very likely that the
|
|
pages are identical in content. This process can take rather
|
|
long, especially if the system is not idling. As a result,
|
|
the additional memory only becomes available after a
|
|
significant amount of time, such as hours or sometimes days.
|
|
Even worse, this kind of page sharing algorithm generally
|
|
consumes significant CPU resources and increases the
|
|
virtualization overhead by 10 to 20%.
|
|
</para>
|
|
|
|
<para>
|
|
Page Fusion in &product-name; uses logic in the
|
|
&product-name; Guest Additions to quickly identify memory
|
|
cells that are most likely identical across VMs. It can
|
|
therefore achieve most of the possible savings of page
|
|
sharing almost immediately and with almost no overhead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Page Fusion is also much less likely to be confused by
|
|
identical memory that it will eliminate, just to learn
|
|
seconds later that the memory will now change and having to
|
|
perform a highly expensive and often service-disrupting
|
|
reallocation.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
At this time, Page Fusion can only be controlled with
|
|
<command>VBoxManage</command>, and only while a VM is shut down.
|
|
To enable Page Fusion for a VM, use the following command:
|
|
</para>
|
|
|
|
<screen>VBoxManage modifyvm "VM name" --page-fusion on</screen>
|
|
|
|
<para>
|
|
You can observe Page Fusion operation using some metrics.
|
|
<literal>RAM/VMM/Shared</literal> shows the total amount of
|
|
fused pages, whereas the per-VM metric
|
|
<literal>Guest/RAM/Usage/Shared</literal> will return the amount
|
|
of fused memory for a given VM. See
|
|
<xref linkend="vboxmanage-metrics" /> for information on how to
|
|
query metrics.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
Enabling Page Fusion might indirectly increase the chances for
|
|
malicious guests to successfully attack other VMs running on
|
|
the same host. See <xref linkend="pot-insecure"/>.
|
|
</para>
|
|
</note>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="guestadd-resizing">
|
|
|
|
<title>Controlling Virtual Monitor Topology</title>
|
|
|
|
<sect2 id="guestadd-resizing-linux">
|
|
|
|
<title>X11/Wayland Desktop Environments</title>
|
|
|
|
<para>
|
|
The Guest Additions provide services for controlling the guest
|
|
system's monitor topology. Monitor topology means the resolution
|
|
of each virtual monitor and its state (disabled/enabled). The
|
|
resolution of a virtual monitor can be modified from the host
|
|
side either by resizing the window that hosts the virtual
|
|
monitor, by using the <emphasis role="bold">View</emphasis> menu
|
|
or the <command>VBoxManage controlvm
|
|
<replaceable>vmname</replaceable> setscreenlayout</command>
|
|
command. On guest operating systems with X11/Wayland desktops
|
|
this is put into effect by either of the following two services:
|
|
</para>
|
|
|
|
<screen>
|
|
VBoxClient --vmsvga
|
|
VBoxDRMClient
|
|
</screen>
|
|
|
|
<para>
|
|
The following are some details about guest screen resolution
|
|
control functionality:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
On X11/Wayland desktops the resizing service is started
|
|
during desktop session initialization, that is desktop
|
|
login. On X11 desktops <code>VBoxClient --vmsvga</code>
|
|
handles screen topology through the RandR extension. On
|
|
Wayland clients <code>VBoxDRMClient</code> is used. The
|
|
decision is made automatically at each desktop session
|
|
start.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On 32-bit guest operating systems
|
|
<command>VBoxDRMClient</command> is always used, in order to
|
|
work around bugs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Since the monitor topology control services are initialized
|
|
during the desktop session start, it is impossible to
|
|
control the monitor resolution of display managers such as
|
|
GDM or LightDM. This default behavior can be changed by
|
|
setting the guest property
|
|
<literal>/VirtualBox/GuestAdd/DRMResize</literal> of the
|
|
virtual machine to any value. See
|
|
<xref linkend="guestadd-guestprops" /> for details of how to
|
|
update guest properties. When this guest property is set
|
|
then <command>VBoxDRMClient</command> is started during the
|
|
guest OS boot and stays active all the time, for both the
|
|
display manager login screen and the desktop session.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect3 id="guestadd-resizing-linux-limitations">
|
|
|
|
<title>Known Limitations</title>
|
|
|
|
<para>
|
|
<command>VBoxDRMClient</command> is not able to handle
|
|
arbitrary guest monitor topologies. Specifically, disabling a
|
|
guest monitor that is not the last one invalidates the monitor
|
|
topology due to limitations in the
|
|
<literal>vmwgfx.ko</literal> Linux kernel module. For example,
|
|
when the guest is configured to have four monitors it is not
|
|
recommended to disable the second or third monitor.
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|