summaryrefslogtreecommitdiffstats
path: root/doc/manual
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 14:19:18 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 14:19:18 +0000
commit4035b1bfb1e5843a539a8b624d21952b756974d1 (patch)
treef1e9cd5bf548cbc57ff2fddfb2b4aa9ae95587e2 /doc/manual
parentInitial commit. (diff)
downloadvirtualbox-4035b1bfb1e5843a539a8b624d21952b756974d1.tar.xz
virtualbox-4035b1bfb1e5843a539a8b624d21952b756974d1.zip
Adding upstream version 6.1.22-dfsg.upstream/6.1.22-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/manual')
-rw-r--r--doc/manual/.scm-settings23
-rw-r--r--doc/manual/Config.kmk351
-rw-r--r--doc/manual/Makefile.kmk897
-rw-r--r--doc/manual/common-formatcfg.xsl146
-rw-r--r--doc/manual/common-html-formatcfg.xsl174
-rw-r--r--doc/manual/docbook-changelog-formatcfg.xsl80
-rw-r--r--doc/manual/docbook-html-chunks-formatcfg.xsl41
-rw-r--r--doc/manual/docbook-html-one-page-formatcfg.xsl20
-rw-r--r--doc/manual/docbook-htmlhelp-formatcfg.xsl53
-rw-r--r--doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl154
-rw-r--r--doc/manual/docbook-refentry-to-C-help.xsl962
-rw-r--r--doc/manual/docbook-refentry-to-H-help.xsl137
-rw-r--r--doc/manual/docbook-refentry-to-manpage-preprocessing.xsl78
-rw-r--r--doc/manual/docbook-refentry-to-manpage.xsl30
-rw-r--r--doc/manual/docbook-refentry-to-manual-overview.xsl63
-rw-r--r--doc/manual/docbook-refentry-to-manual-sect1.xsl163
-rw-r--r--doc/manual/docbook2latex.xsl1275
-rw-r--r--doc/manual/dummy-sect1.xml9
-rw-r--r--doc/manual/en_US/.scm-settings21
-rw-r--r--doc/manual/en_US/Accessibility.xml229
-rw-r--r--doc/manual/en_US/Makefile.kup0
-rw-r--r--doc/manual/en_US/SDKRef.xml6252
-rw-r--r--doc/manual/en_US/UserManual.xml90
-rw-r--r--doc/manual/en_US/images/clone-vm.pngbin0 -> 59209 bytes
-rw-r--r--doc/manual/en_US/images/cloud-profile-manager.pngbin0 -> 48730 bytes
-rw-r--r--doc/manual/en_US/images/create-vdi-1.pngbin0 -> 53859 bytes
-rw-r--r--doc/manual/en_US/images/create-vm-1.pngbin0 -> 61947 bytes
-rw-r--r--doc/manual/en_US/images/create-vm-2.pngbin0 -> 58000 bytes
-rw-r--r--doc/manual/en_US/images/dnd-modes.pngbin0 -> 19004 bytes
-rw-r--r--doc/manual/en_US/images/export-appliance-oci.pngbin0 -> 214590 bytes
-rw-r--r--doc/manual/en_US/images/guest-fm.pngbin0 -> 84517 bytes
-rw-r--r--doc/manual/en_US/images/import-instance.pngbin0 -> 154751 bytes
-rw-r--r--doc/manual/en_US/images/newcloudvm.pngbin0 -> 126865 bytes
-rw-r--r--doc/manual/en_US/images/ovf-import.pngbin0 -> 91671 bytes
-rw-r--r--doc/manual/en_US/images/seamless.pngbin0 -> 603665 bytes
-rw-r--r--doc/manual/en_US/images/snapshots-1.pngbin0 -> 11768 bytes
-rw-r--r--doc/manual/en_US/images/softkeybd.pngbin0 -> 90286 bytes
-rw-r--r--doc/manual/en_US/images/upload-key.pngbin0 -> 37716 bytes
-rw-r--r--doc/manual/en_US/images/vbox-components.pngbin0 -> 61668 bytes
-rw-r--r--doc/manual/en_US/images/vbox-sdl.pngbin0 -> 865462 bytes
-rw-r--r--doc/manual/en_US/images/vboxlogo.pngbin0 -> 57874 bytes
-rw-r--r--doc/manual/en_US/images/virtual-disk-manager.pngbin0 -> 46245 bytes
-rw-r--r--doc/manual/en_US/images/virtual-disk-manager2.pngbin0 -> 19565 bytes
-rw-r--r--doc/manual/en_US/images/virtualbox-main-empty.pngbin0 -> 67366 bytes
-rw-r--r--doc/manual/en_US/images/virtualbox-main.pngbin0 -> 411734 bytes
-rw-r--r--doc/manual/en_US/images/vm-close.pngbin0 -> 6558 bytes
-rw-r--r--doc/manual/en_US/images/vm-groups.pngbin0 -> 97888 bytes
-rw-r--r--doc/manual/en_US/images/vm-hostkey.pngbin0 -> 1977 bytes
-rw-r--r--doc/manual/en_US/images/vm-settings-harddisk.pngbin0 -> 37864 bytes
-rw-r--r--doc/manual/en_US/images/vm-vista-running.pngbin0 -> 522810 bytes
-rw-r--r--doc/manual/en_US/man_VBoxHeadless.xml228
-rw-r--r--doc/manual/en_US/man_VBoxManage-adoptstate.xml99
-rw-r--r--doc/manual/en_US/man_VBoxManage-bandwidthctl.xml296
-rw-r--r--doc/manual/en_US/man_VBoxManage-checkmediumpwd.xml102
-rw-r--r--doc/manual/en_US/man_VBoxManage-clonemedium.xml203
-rw-r--r--doc/manual/en_US/man_VBoxManage-clonevm.xml263
-rw-r--r--doc/manual/en_US/man_VBoxManage-closemedium.xml108
-rw-r--r--doc/manual/en_US/man_VBoxManage-cloud.xml623
-rw-r--r--doc/manual/en_US/man_VBoxManage-cloudimage.xml229
-rw-r--r--doc/manual/en_US/man_VBoxManage-cloudinstance.xml212
-rw-r--r--doc/manual/en_US/man_VBoxManage-cloudlist.xml130
-rw-r--r--doc/manual/en_US/man_VBoxManage-cloudprofile.xml176
-rw-r--r--doc/manual/en_US/man_VBoxManage-controlvm.xml2081
-rw-r--r--doc/manual/en_US/man_VBoxManage-convertfromraw.xml239
-rw-r--r--doc/manual/en_US/man_VBoxManage-createmedium.xml180
-rw-r--r--doc/manual/en_US/man_VBoxManage-createvm.xml163
-rw-r--r--doc/manual/en_US/man_VBoxManage-debugvm.xml615
-rw-r--r--doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml221
-rw-r--r--doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl114
-rw-r--r--doc/manual/en_US/man_VBoxManage-dhcpserver.xml564
-rw-r--r--doc/manual/en_US/man_VBoxManage-discardstate.xml91
-rw-r--r--doc/manual/en_US/man_VBoxManage-encryptmedium.xml163
-rw-r--r--doc/manual/en_US/man_VBoxManage-export.xml436
-rw-r--r--doc/manual/en_US/man_VBoxManage-extpack.xml144
-rw-r--r--doc/manual/en_US/man_VBoxManage-getextradata.xml141
-rw-r--r--doc/manual/en_US/man_VBoxManage-guestcontrol.xml1319
-rw-r--r--doc/manual/en_US/man_VBoxManage-guestproperty.xml325
-rw-r--r--doc/manual/en_US/man_VBoxManage-hostonlyif.xml190
-rw-r--r--doc/manual/en_US/man_VBoxManage-import.xml218
-rw-r--r--doc/manual/en_US/man_VBoxManage-list.xml523
-rw-r--r--doc/manual/en_US/man_VBoxManage-mediumio.xml164
-rw-r--r--doc/manual/en_US/man_VBoxManage-mediumproperty.xml209
-rw-r--r--doc/manual/en_US/man_VBoxManage-metrics.xml414
-rw-r--r--doc/manual/en_US/man_VBoxManage-modifymedium.xml245
-rw-r--r--doc/manual/en_US/man_VBoxManage-modifyvm.xml2484
-rw-r--r--doc/manual/en_US/man_VBoxManage-movevm.xml97
-rw-r--r--doc/manual/en_US/man_VBoxManage-natnetwork.xml360
-rw-r--r--doc/manual/en_US/man_VBoxManage-registervm.xml92
-rw-r--r--doc/manual/en_US/man_VBoxManage-setextradata.xml112
-rw-r--r--doc/manual/en_US/man_VBoxManage-setproperty.xml208
-rw-r--r--doc/manual/en_US/man_VBoxManage-sharedfolder.xml201
-rw-r--r--doc/manual/en_US/man_VBoxManage-showmediuminfo.xml131
-rw-r--r--doc/manual/en_US/man_VBoxManage-showvminfo.xml177
-rw-r--r--doc/manual/en_US/man_VBoxManage-snapshot.xml392
-rw-r--r--doc/manual/en_US/man_VBoxManage-startvm.xml162
-rw-r--r--doc/manual/en_US/man_VBoxManage-storageattach.xml538
-rw-r--r--doc/manual/en_US/man_VBoxManage-storagectl.xml194
-rw-r--r--doc/manual/en_US/man_VBoxManage-unattended.xml242
-rw-r--r--doc/manual/en_US/man_VBoxManage-unregistervm.xml112
-rw-r--r--doc/manual/en_US/man_VBoxManage-usbdevsource.xml118
-rw-r--r--doc/manual/en_US/man_VBoxManage-usbfilter.xml304
-rw-r--r--doc/manual/en_US/man_VBoxManage.xml262
-rw-r--r--doc/manual/en_US/man_vboximg-mount.xml398
-rw-r--r--doc/manual/en_US/oracle-accessibility-en.xml27
-rw-r--r--doc/manual/en_US/oracle-diversity.xml13
-rw-r--r--doc/manual/en_US/oracle-support-en.xml23
-rw-r--r--doc/manual/en_US/user_AdvancedTopics.xml7403
-rw-r--r--doc/manual/en_US/user_BasicConcepts.xml3037
-rw-r--r--doc/manual/en_US/user_ChangeLog.xml48
-rw-r--r--doc/manual/en_US/user_Frontends.xml1210
-rw-r--r--doc/manual/en_US/user_Glossary.xml700
-rw-r--r--doc/manual/en_US/user_GuestAdditions.xml2478
-rw-r--r--doc/manual/en_US/user_Installation.xml1405
-rw-r--r--doc/manual/en_US/user_Introduction.xml4801
-rw-r--r--doc/manual/en_US/user_KnownIssues.xml464
-rw-r--r--doc/manual/en_US/user_Networking.xml1562
-rw-r--r--doc/manual/en_US/user_Preface.xml93
-rw-r--r--doc/manual/en_US/user_PrivacyPolicy.xml93
-rw-r--r--doc/manual/en_US/user_Security.xml729
-rw-r--r--doc/manual/en_US/user_Storage.xml1800
-rw-r--r--doc/manual/en_US/user_Technical.xml941
-rw-r--r--doc/manual/en_US/user_ThirdParty.xml4813
-rw-r--r--doc/manual/en_US/user_Troubleshooting.xml1872
-rw-r--r--doc/manual/en_US/user_VBoxManage.xml8969
-rw-r--r--doc/manual/en_US/user_VirtualBoxAPI.xml37
-rw-r--r--doc/manual/fr_FR/Makefile.kup0
-rw-r--r--doc/manual/fr_FR/SDKRef.xml4900
-rw-r--r--doc/manual/fr_FR/UserManual.xml83
-rw-r--r--doc/manual/fr_FR/images/clone-vm.pngbin0 -> 100972 bytes
-rw-r--r--doc/manual/fr_FR/images/create-vdi-1.pngbin0 -> 81293 bytes
-rw-r--r--doc/manual/fr_FR/images/create-vm-1.pngbin0 -> 78820 bytes
-rw-r--r--doc/manual/fr_FR/images/create-vm-2.pngbin0 -> 94345 bytes
-rw-r--r--doc/manual/fr_FR/images/dnd-modes.pngbin0 -> 84541 bytes
-rw-r--r--doc/manual/fr_FR/images/ovf-import.pngbin0 -> 111985 bytes
-rw-r--r--doc/manual/fr_FR/images/seamless.pngbin0 -> 874877 bytes
-rw-r--r--doc/manual/fr_FR/images/snapshots-1.pngbin0 -> 152166 bytes
-rw-r--r--doc/manual/fr_FR/images/vbox-components.pngbin0 -> 178225 bytes
-rw-r--r--doc/manual/fr_FR/images/vbox-sdl.pngbin0 -> 865462 bytes
-rw-r--r--doc/manual/fr_FR/images/vboxlogo.pngbin0 -> 206625 bytes
-rw-r--r--doc/manual/fr_FR/images/virtual-disk-manager.pngbin0 -> 100098 bytes
-rw-r--r--doc/manual/fr_FR/images/virtual-disk-manager2.pngbin0 -> 115239 bytes
-rw-r--r--doc/manual/fr_FR/images/virtualbox-main-empty.pngbin0 -> 81467 bytes
-rw-r--r--doc/manual/fr_FR/images/virtualbox-main.pngbin0 -> 656931 bytes
-rw-r--r--doc/manual/fr_FR/images/vm-close.pngbin0 -> 24522 bytes
-rw-r--r--doc/manual/fr_FR/images/vm-groups.pngbin0 -> 593012 bytes
-rw-r--r--doc/manual/fr_FR/images/vm-hostkey.pngbin0 -> 33065 bytes
-rw-r--r--doc/manual/fr_FR/images/vm-settings-harddisk.pngbin0 -> 55406 bytes
-rw-r--r--doc/manual/fr_FR/images/vm-vista-running.pngbin0 -> 336122 bytes
-rw-r--r--doc/manual/fr_FR/user_AdvancedTopics.xml3296
-rw-r--r--doc/manual/fr_FR/user_BasicConcepts.xml1442
-rw-r--r--doc/manual/fr_FR/user_ChangeLog.xml11947
-rw-r--r--doc/manual/fr_FR/user_Frontends.xml824
-rw-r--r--doc/manual/fr_FR/user_Glossary.xml494
-rw-r--r--doc/manual/fr_FR/user_GuestAdditions.xml1915
-rw-r--r--doc/manual/fr_FR/user_Installation.xml868
-rw-r--r--doc/manual/fr_FR/user_Introduction.xml1906
-rw-r--r--doc/manual/fr_FR/user_KnownIssues.xml325
-rw-r--r--doc/manual/fr_FR/user_Networking.xml958
-rw-r--r--doc/manual/fr_FR/user_PrivacyPolicy.xml69
-rw-r--r--doc/manual/fr_FR/user_Security.xml392
-rw-r--r--doc/manual/fr_FR/user_Storage.xml959
-rw-r--r--doc/manual/fr_FR/user_Technical.xml929
-rw-r--r--doc/manual/fr_FR/user_ThirdParty.xml3364
-rw-r--r--doc/manual/fr_FR/user_Troubleshooting.xml1487
-rw-r--r--doc/manual/fr_FR/user_VBoxManage.xml4363
-rw-r--r--doc/manual/fr_FR/user_VirtualBoxAPI.xml25
-rw-r--r--doc/manual/string.xsl1237
-rw-r--r--doc/manual/titlepage-htmlhelp.xml669
-rw-r--r--doc/manual/user_ChangeLogImpl.xml1269
-rw-r--r--doc/manual/xidl2docbook.xsl577
-rw-r--r--doc/manual/xml2tag.xsl32
171 files changed, 116108 insertions, 0 deletions
diff --git a/doc/manual/.scm-settings b/doc/manual/.scm-settings
new file mode 100644
index 00000000..7d88196d
--- /dev/null
+++ b/doc/manual/.scm-settings
@@ -0,0 +1,23 @@
+# $Id: .scm-settings $
+## @file
+# Source code massager settings for the manual.
+#
+
+#
+# Copyright (C) 2010-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+
+/string.xsl: --external-copyright --no-convert-tabs
+/titlepage-htmlhelp.xml: --external-copyright --no-convert-tabs
+
+--filter-out-dirs /texfiles/.
+
diff --git a/doc/manual/Config.kmk b/doc/manual/Config.kmk
new file mode 100644
index 00000000..befee545
--- /dev/null
+++ b/doc/manual/Config.kmk
@@ -0,0 +1,351 @@
+# $Id: Config.kmk $
+## @file
+# kBuild Configuration file for the manual.
+#
+
+#
+# Copyright (C) 2010-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+ifndef VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED
+VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED = 1
+
+# Include the top-level configure file.
+ifndef VBOX_ROOT_CONFIG_KMK_INCLUDED
+ include $(PATH_ROOT)/Config.kmk
+endif
+
+
+#
+# Globals.
+#
+
+# Source location.
+VBOX_PATH_MANUAL_SRC := $(PATH_ROOT)/doc/manual
+# Output location.
+VBOX_PATH_MANUAL_OUTBASE := $(PATH_OBJ)/manual
+
+## List of refentry files (manpages).
+VBOX_MANUAL_XML_REFENTRY_FILES := \
+ man_VBoxManage-snapshot.xml \
+ man_VBoxManage-clonevm.xml \
+ man_VBoxManage-mediumio.xml \
+ man_VBoxManage-sharedfolder.xml \
+ man_VBoxManage-dhcpserver.xml \
+ man_VBoxManage-debugvm.xml \
+ man_VBoxManage-extpack.xml \
+ man_VBoxManage-unattended.xml \
+ man_VBoxManage-cloud.xml \
+ man_VBoxManage-cloudprofile.xml
+
+## List of user manual XML files.
+VBOX_MANUAL_XML_FILES = \
+ UserManual.xml \
+ user_Preface.xml \
+ user_Introduction.xml \
+ user_Installation.xml \
+ user_BasicConcepts.xml \
+ user_GuestAdditions.xml \
+ user_Storage.xml \
+ user_Networking.xml \
+ user_Frontends.xml \
+ user_VBoxManage.xml \
+ user_AdvancedTopics.xml \
+ user_Technical.xml \
+ user_VirtualBoxAPI.xml \
+ user_Troubleshooting.xml \
+ user_Security.xml \
+ user_KnownIssues.xml \
+ user_ChangeLog.xml \
+ user_ThirdParty.xml \
+ user_PrivacyPolicy.xml \
+ user_Glossary.xml \
+ oracle-accessibility-en.xml \
+ oracle-diversity.xml \
+ oracle-support-en.xml
+
+## List of user manual XML files common for all languages.
+VBOX_MANUAL_XML_FILES_COMMON = \
+ $(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml
+
+
+# Tool locations.
+ifndef VBOX_OSE
+ # use docbook from our tools directory
+ VBOX_PATH_DOCBOOK ?= $(PATH_DEVTOOLS)/common/DocBook/v1.69.1
+ VBOX_PATH_DOCBOOK_DTD ?= $(PATH_DEVTOOLS)/common/docbook-xml/v4.5
+else
+ # use docbook of the build host
+ VBOX_PATH_DOCBOOK ?= /usr/share/xml/docbook/stylesheet/docbook-xsl
+ VBOX_PATH_DOCBOOK_DTD ?= /usr/share/xml/docbook/schema/dtd/4.5
+endif
+VBOX_XML_CATALOG ?= $(VBOX_PATH_MANUAL_OUTBASE)/catalog
+VBOX_XML_CATALOG_DOCBOOK ?= $(VBOX_PATH_MANUAL_OUTBASE)/docbook
+VBOX_XML_CATALOG_MANUAL ?= $(VBOX_PATH_MANUAL_OUTBASE)/manual
+VBOX_XML_ENTITIES ?= $(VBOX_PATH_MANUAL_OUTBASE)/all-entities.ent
+
+# xsltproc with the catalog trick if applicable (set XML_DEBUG_CATALOG to
+# non-zero value to debug file/uri resolution through the catalogs, using
+# one of them is enough, they show the same information).
+ifdef VBOX_XML_CATALOG
+ VBOX_XSLTPROC_WITH_CAT = $(REDIRECT) -E "XML_CATALOG_FILES=$(VBOX_XML_CATALOG)" -E "XML_DEBUG_CATALOG=" $1 -- \
+ $(VBOX_XSLTPROC) --nonet --xinclude $(VBOX_XSLTPROC_OPTS) --path "$(VBOX_PATH_MANUAL_OUTBASE)"
+ VBOX_XMLLINT_WITH_CAT = $(REDIRECT) -E "XML_CATALOG_FILES=$(VBOX_XML_CATALOG)" -E "XML_DEBUG_CATALOG=" -- \
+ $(VBOX_XMLLINT) --nonet --xinclude --noout $(VBOX_XMLLINT_OPTS) --path "$(VBOX_PATH_MANUAL_OUTBASE)"
+else
+ VBOX_XSLTPROC_WITH_CAT = $(if $(1), $(REDIRECT) $1 --,) $(VBOX_XSLTPROC) --nonet --xinclude $(VBOX_XSLTPROC_OPTS) \
+ --path "$(VBOX_PATH_MANUAL_OUTBASE)"
+ VBOX_XMLLINT_WITH_CAT = $(VBOX_XMLLINT) --nonet --xinclude --noout $(VBOX_XMLLINT_OPTS) --path "$(VBOX_PATH_MANUAL_OUTBASE)"
+endif
+
+
+# Location of the generate stylesheet for transformating xref elements into
+# name user manual sections.
+VBOX_XML_XREF_TO_TEXT = $(VBOX_PATH_MANUAL_OUTBASE)/xref-to-text.xsl
+
+##
+# Emits rules for preprocessing refentry sources (applying remarks element),
+# and for producing the actual man pages.
+#
+# $(evalcall2 def_vbox_refentry_to_manpage)
+# @param 1 The output directory.
+# @param 2 The XML file name (no path).
+# @param 3 The XML file with full path.
+# @param 4 Non-empty if xrefs to replace.
+define def_vbox_refentry_preprocess_for_manpage
+$(1)/$(2): \
+ $(3) \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl \
+ $(if $(4),$$(VBOX_XML_XREF_TO_TEXT),) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
+ $$(QUIET)$$(RM) -f "$$@"
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ \
+ "$$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl" $$<
+ifneq ($(4),)
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@.tmp $$(VBOX_XML_XREF_TO_TEXT) $$@
+ $$(QUIET)$$(MV) -f -- "$$@.tmp" "$$@"
+endif
+if defined(VBOX_HAVE_XMLLINT) && "$(USER)" == "bird" # Effing stuff happends on build servers, probably kmk related...
+ $$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $$@
+endif
+endef
+
+##
+# Generate a single header file containing everything (no C file).
+#
+# @param 1 Destination file.
+# @param 2 Full source file path.
+# @param 3 Help infix.
+define def_vbox_single_refentry_to_h
+$(1).ts +| $(1): \
+ $$(VBOX_DOCBOOK_REFENTRY_TO_C_HELP) \
+ $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) \
+ $(2) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) $(MAKEFILE) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(filter %.xml,$$^),$$(patsubst %.ts,%,$$@))
+ $$(QUIET)$$(APPEND) -tn "$$@" \
+ '/* Autogenerated by $$(notdir $$(filter %.xsl,$$^)), do not edit! */' \
+ '' \
+ '#include <iprt/message.h>' \
+ '' \
+ 'typedef enum HELP_CMD_$(3)' \
+ '{' \
+ ' HELP_CMD_INVALID = 0,'
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") \
+ --stringparam 'g_sMode' 'cmd' $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) $(2)
+ $$(QUIET)$$(APPEND) -n "$$@" \
+ ' HELP_CMD_END' \
+ '} HELP_CMD_VBOXMANAGE;' \
+ ''
+ $$(NLTAB)$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") \
+ --stringparam 'g_sMode' 'subcmd' $$(VBOX_DOCBOOK_REFENTRY_TO_H_HELP) $(2)
+ $$(QUIET)$$(APPEND) -n "$$@" \
+ ''
+ $$(NLTAB)$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT, -a+to "$$@") $$(VBOX_DOCBOOK_REFENTRY_TO_C_HELP) $(2)
+ $$(QUIET)$$(APPEND) -n "$$@" \
+ '' \
+ '/* end of file */'
+ $$(QUIET)$$(CP) --changed -- "$$@" "$$(patsubst %.ts,%,$$@)"
+endef
+
+
+#
+# Make sure we've got a rule to make the output directory.
+#
+BLDDIRS += $(VBOX_PATH_MANUAL_OUTBASE)
+
+
+ifdef VBOX_XML_CATALOG
+ # Trickery for making sure that the file:/// URLs end up with exactly 3
+ # slashes, both on Unixy OSes (where the absolute path contributes one more,
+ # and some very picky xsltproc variants are floating around which do not work
+ # quite correctly with file:////, doing incorrect filename transformations)
+ # and on Windows (where the absolute path starts with a drive letter).
+ VBOX_FILE_URL_MAYBE_SLASH = $(if $(eq $(KBUILD_HOST),win),/,)
+ #
+ # To avoid network I/O for fetching DTDs, we generate catalogs mapping the public
+ # entity IDs to local files. (Obviously, only done when we have local files.)
+ #
+ # Create a catalog file for xsltproc that points to docbook catalog.
+ $(VBOX_XML_CATALOG): $(VBOX_PATH_MANUAL_SRC)/Config.kmk | $$(dir $$@)
+ $(call MSG_L1,Creating catalog $@)
+ $(QUIET)$(APPEND) -tn "$@" \
+ '<?xml version="1.0"?>' \
+ '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
+ '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
+ ' <delegatePublic publicIdStartString="-//OASIS/ENTITIES DocBook XML" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegatePublic publicIdStartString="-//OASIS/DTD DocBook XML" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegateSystem systemIdStartString="http://www.oasis-open.org/docbook/" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegateSystem systemIdStartString="http://docbook.org/" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegateURI uriStartString="http://www.oasis-open.org/docbook/" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegateURI uriStartString="http://docbook.org/" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_DOCBOOK)"/>' \
+ ' <delegateSystem systemIdStartString="$(VBOX_PATH_MANUAL_SRC)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ ' <delegateSystem systemIdStartString="$(VBOX_PATH_MANUAL_OUTBASE)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ ' <delegateURI uriStartString="$(VBOX_PATH_MANUAL_SRC)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ ' <delegateURI uriStartString="$(VBOX_PATH_MANUAL_OUTBASE)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ ' <delegateURI uriStartString="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ ' <delegateURI uriStartString="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_OUTBASE)" catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG_MANUAL)"/>' \
+ '</catalog>'
+
+ # Create a docbook catalog file for xsltproc that points to the local docbook files.
+ $(VBOX_XML_CATALOG_DOCBOOK): $(VBOX_PATH_MANUAL_SRC)/Config.kmk | $$(dir $$@)
+ $(call MSG_L1,Creating catalog $@)
+ $(QUIET)$(APPEND) -tn "$@" \
+ '<?xml version="1.0"?>' \
+ '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
+ '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
+ ' <public publicId="-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/dbpoolx.mod"/>' \
+ ' <public publicId="-//OASIS//DTD DocBook XML V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd"/>' \
+ ' <public publicId="-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/dbcentx.mod"/>' \
+ ' <public publicId="-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/dbnotnx.mod"/>' \
+ ' <public publicId="-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/dbgenent.mod"/>' \
+ ' <public publicId="-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/dbhierx.mod"/>' \
+ ' <public publicId="-//OASIS//DTD XML Exchange Table Model 19990315//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/soextblx.dtd"/>' \
+ ' <public publicId="-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/calstblx.dtd"/>' \
+ ' <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)"/>' \
+ ' <rewriteSystem systemIdStartString="http://docbook.org/xml/4.5" rewritePrefix="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)"/>' \
+ ' <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)"/>' \
+ ' <rewriteURI uriStartString="http://docbook.org/xml/4.5" rewritePrefix="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsa.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsb.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsc.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsn.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amso.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-amsr.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Box and Line Drawing//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-box.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Russian Cyrillic//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-cyr1.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-cyr2.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Diacritical Marks//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-dia.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Greek Letters//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk1.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Monotoniko Greek//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk2.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Greek Symbols//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk3.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-grk4.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Latin 1//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-lat1.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Added Latin 2//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-lat2.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-num.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES Publishing//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-pub.ent"/>' \
+ ' <public publicId="ISO 8879:1986//ENTITIES General Technical//EN" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK_DTD)/ent/iso-tech.ent"/>' \
+ '</catalog>'
+
+ # Create a docbook catalog file for xsltproc that points to the local manual files in non-default locations
+ $(VBOX_XML_CATALOG_MANUAL): $(VBOX_PATH_MANUAL_SRC)/Config.kmk | $$(dir $$@)
+ $(call MSG_L1,Creating catalog $@)
+ $(QUIET)$(APPEND) -tn "$@" \
+ '<?xml version="1.0"?>' \
+ '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
+ '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/common/oracle-accessibility-en.xml" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)/en_US/oracle-accessibility-en.xml"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/common/oracle-diversity.xml" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)/en_US/oracle-diversity.xml"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/common/oracle-support-en.xml" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)/en_US/oracle-support-en.xml"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/user_ChangeLogImpl.xml" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/titlepage-htmlhelp.xsl" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl"/>' \
+ $(foreach x,user_VBoxManage_CommandsOverview.xml user_isomakercmd-man.xml $(addprefix user_,$(VBOX_MANUAL_XML_REFENTRY_FILES) man_VBoxHeadless.xml man_vboximg-mount.xml)\
+ ,' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/$(x)" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_OUTBASE)/en_US/$(x)"/>') \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/SDKRef_apiref.xml" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef_apiref.xml"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/all-entities.ent" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_OUTBASE)/all-entities.ent"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/html/docbook.xsl" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK)/html/docbook.xsl"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/html/chunk.xsl" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK)/html/chunk.xsl"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/htmlhelp/htmlhelp.xsl" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK)/htmlhelp/htmlhelp.xsl"/>' \
+ ' <system systemId="$(VBOX_PATH_MANUAL_SRC)/manpages/docbook.xsl" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_DOCBOOK)/manpages/docbook.xsl"/>' \
+ '</catalog>'
+
+endif # VBOX_XML_CATALOG
+
+
+ifdef VBOX_XML_ENTITIES
+
+ $(VBOX_XML_ENTITIES): $(VBOX_PATH_MANUAL_SRC)/Config.kmk $(VBOX_VERSION_STAMP) | $$(dir $$@)
+ $(call MSG_L1,Creating entities $@)
+ $(QUIET)$(APPEND) -tn "$@" \
+ '<!-- Entities for product names -->' \
+ '<!ENTITY product-version "$(VBOX_VERSION_STRING)">' \
+ '<!ENTITY product-name "Oracle VM VirtualBox">' \
+ '<!ENTITY oci "Oracle Cloud Infrastructure">' \
+ '' \
+ '<!-- VBox placeholder entities -->' \
+ '<!ENTITY VBOX_VERSION_MAJOR "$(VBOX_VERSION_MAJOR)" >' \
+ '<!ENTITY VBOX_VERSION_MINOR "$(VBOX_VERSION_MINOR)" >' \
+ '<!ENTITY VBOX_VERSION_BUILD "$(VBOX_VERSION_MINOR)" >' \
+ '<!ENTITY VBOX_VERSION_STRING "$(VBOX_VERSION_STRING)" >' \
+ '<!ENTITY VBOX_VENDOR "$(VBOX_VENDOR)" >' \
+ '<!ENTITY VBOX_C_YEAR "$(VBOX_C_YEAR)" >' \
+ '<!ENTITY VBOX_PRODUCT '\''<trademark class="registered">Oracle</trademark> VM <trademark class="registered">VirtualBox</trademark>'\'' >' \
+ '' \
+ '<!-- Entities for Oracle Help Center -->' \
+ '<!ENTITY ohc-base-url "https://docs.oracle.com/en">' \
+ '<!ENTITY ohc-doc-page "&ohc-base-url;/virtualization/virtualbox/index.html">'
+
+endif # VBOX_XML_ENTITIES
+
+
+## Produce stylesheet for translating cross references (xref) to user manual
+# chapters and sections in the man pages and --help output.
+#
+# Note! This requires processing UserManual.xml as a single document in order
+# to get the correct chapter and section numbering, so we use a catalog
+# file to replace the generated XML documents it includes with a dummy
+# one. This reduces the dependencies and recipies we require to build
+# VBoxManage and the RTIsoMaker (w/ derivatives).
+$(VBOX_XML_XREF_TO_TEXT) + $(VBOX_XML_XREF_TO_TEXT).cat: \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-link-replacement-xsl-gen.xsl \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_XML_FILES)) \
+ $(VBOX_MANUAL_XML_FILES_COMMON) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) $(VBOX_XML_ENTITIES) \
+ | $$(dir $$@)
+ $(call MSG_L1,Creating stylesheet $@)
+ $(QUIET)$(APPEND) -nt "$(VBOX_XML_XREF_TO_TEXT).cat" \
+ '<?xml version="1.0"?>' \
+ '<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">' \
+ '<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">' \
+ $(foreach x,user_VBoxManage_CommandsOverview.xml user_isomakercmd-man.xml $(addprefix user_,$(VBOX_MANUAL_XML_REFENTRY_FILES))\
+ ,' <system systemId="$(VBOX_PATH_MANUAL_SRC)/en_US/$(x)" uri="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_PATH_MANUAL_SRC)/dummy-sect1.xml"/>') \
+ ' <nextCatalog catalog="file://$(VBOX_FILE_URL_MAYBE_SLASH)$(VBOX_XML_CATALOG)"/>' \
+ '</catalog>'
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT, -E "XML_CATALOG_FILES=$(VBOX_XML_XREF_TO_TEXT).cat") \
+ --output "$@" "$<" $(filter %UserManual.xml,$^)
+
+#
+# Generate rules for editing the refentry to C/H style sheets.
+#
+VBOX_DOCBOOK_REFENTRY_TO_C_HELP = $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-C-help.xsl
+
+VBOX_DOCBOOK_REFENTRY_TO_H_HELP = $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-H-help.xsl
+
+#
+# Manual dependency.
+#
+$(VBOX_PATH_MANUAL_OUTBASE)/docbook-refentry-to-C-help.xsl: $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl
+
+
+endif # !defined(VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED)
+
diff --git a/doc/manual/Makefile.kmk b/doc/manual/Makefile.kmk
new file mode 100644
index 00000000..2b154a8a
--- /dev/null
+++ b/doc/manual/Makefile.kmk
@@ -0,0 +1,897 @@
+# $Id: Makefile.kmk $
+## @file
+# Sub-Makefile for the VirtualBox User Manual, SDK reference and other manuals.
+#
+
+#
+# Copyright (C) 2006-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+#
+# This slightly messy makefile transforms the DocBook XML source for the
+# user manual into presentation output. We support two targets:
+#
+# -- UserManual.pdf, generated by LaTex
+#
+# -- VirtualBox.chm
+#
+# Both files end up in PATH_STAGE_BIN.
+#
+# Both targets indirectly depend on the XML files in this directory;
+# "indirectly" because we first copy them to PATH_TARGET and hack them
+# up a bit for variable substitution and such (see below).
+# The toolchains are roughly like this:
+#
+# -- PDF file via Apache FOP: pre-process the XML files in PATH_TARGET,
+# then create a .FO file (another XML format for "formatted objects")
+# via xsltproc, then feed the .FO file to Apache FOP to create the PDF.
+#
+# -- PDF file via LaTeX: pre-process the XML files in PATH_TARGET, then
+# run our custom "dblatex" perl script on UserManual.xml, which parses
+# the XML (using the Perl SAX parsers) and dumps a matching LaTeX file
+# to UserManual.tex. This is then regularly processed by pdflatex to
+# generate PDF.
+#
+# -- CHM file: again, pre-process the XML files in PATH_TARGET, then use
+# xsltproc to create a .HHP file for the Microsoft Help Compiler, then
+# feed that file to it.
+#
+
+SUB_DEPTH = ../..
+include $(KBUILD_PATH)/subheader.kmk
+
+ifndef VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED
+ include $(PATH_SUB_CURRENT)/Config.kmk
+endif
+
+
+#
+# Globals
+#
+
+# Error out if someone tries to override old globals.
+ifdef HTMLHELPOPTS
+ $(error HTMLHELPOPTS was renamed to VBOX_HTMLHELP_OPTS!)
+endif
+ifdef DOCBOOKPATH
+ $(error DOCBOOKPATH was renamed to VBOX_PATH_DOCBOOK!)
+endif
+ifdef DOCBOOKPATH
+ $(error DOCBOOKPATH was renamed to VBOX_PATH_DOCBOOK!)
+endif
+ifdef XML_CATALOG
+ $(error XML_CATALOG was renamed to VBOX_XML_CATALOG!)
+endif
+ifdef XML_CATALOG_DOCBOOK
+ $(error XML_CATALOG_DOCBOOK was renamed to VBOX_XML_CATALOG_DOCBOOK!)
+endif
+ifdef VBOXMANAGEPATH
+ $(error VBOXMANAGEPATH was renamed to VBOXMANAGEHELP_PATH!)
+endif
+ifdef PDFLATEX_INTERACTION
+ $(error PDFLATEX_INTERACTION was renamed to VBOX_PDFLATEX_INTERACTION!)
+endif
+ifdef PDFLATEX
+ $(error PDFLATEX was renamed to VBOX_PDFLATEX_CMD!)
+endif
+ifdef HHC
+ $(error HHC was renamed to VBOX_HHC!)
+endif
+
+
+
+VBOXMANAGEHELP_PATH ?= $(PATH_STAGE_BIN)/VBoxManageHelp$(SUFF_EXE)
+
+ # VBOX_PDFLATEX_INTERACTION = errorstopmode - Use this when you wants to figure out build failures
+ # without catting the log a million times.
+VBOX_PDFLATEX_INTERACTION ?= batchmode
+ifeq ($(KBUILD_HOST),win)
+ ifndef VBOX_PDFLATEX
+ VBOX_PDFLATEX := $(firstword $(rsort $(wildcard $(PATH_DEVTOOLS)/win.x86/miktex-portable/*/miktex/bin/pdflatex.exe)))
+ ifneq ($(VBOX_PDFLATEX),)
+ VBOX_PDFLATEX_CMD = $(VBOX_PDFLATEX) -halt-on-error -interaction $(VBOX_PDFLATEX_INTERACTION)
+ endif
+ endif
+ ifndef VBOX_PDFLATEX
+ # Tell MiKTeX to automatically download packages if system wide install.
+ VBOX_PDFLATEX := pdflatex
+ VBOX_PDFLATEX_CMD = $(VBOX_PDFLATEX) -halt-on-error -interaction $(VBOX_PDFLATEX_INTERACTION) --enable-installer
+ endif
+else
+ VBOX_PDFLATEX ?= pdflatex
+ VBOX_PDFLATEX_HALT = $(shell ( $(VBOX_PDFLATEX) -version | head -1 | grep 141592 > /dev/null ) && echo -halt-on-error )
+ VBOX_PDFLATEX_CMD = pdflatex $(VBOX_PDFLATEX_HALT) -interaction $(VBOX_PDFLATEX_INTERACTION)
+endif
+
+# Windows HTML Help Workshop compiler (stupid thing always returns an error!)
+VBOX_HHC = -$(EXEC_X86_WIN32) $(VBOX_PATH_HTML_HELP_WORKSHOP)/hhc.exe
+
+
+# Additional xsltproc options when generating
+VBOX_HTMLHELP_OPTS ?=
+
+# SDK related globals.
+VBOX_MANUAL_APIREF_TMP = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef_apiref.xml
+VBOX_DOC_XIDL_SRC = $(PATH_ROOT)/src/VBox/Main/idl/VirtualBox.xidl
+VBOX_DOC_XIDL_SRC_TMP = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/VirtualBox.xidl.tmp
+
+
+#
+# Targets
+#
+
+BLDDIRS += $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/, $(VBOX_MANUAL_LANGUAGES))
+
+if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK))
+ if defined(VBOX_ONLY_SDK) || defined(VBOX_WITH_DOCS_SDKREF)
+ INSTALLS += VBox-docs-sdkref
+ endif
+
+ ifdef VBOX_WITH_DOCS_HTML
+ INSTALLS += VBox-docs-usermanual-html
+ VBOX_PATH_BIN_HTML = $(PATH_STAGE_BIN)/UserManual-html.zip
+ else # Do not build html.
+ VBOX_PATH_BIN_HTML =
+ endif
+
+ ifdef VBOX_WITH_DOCS_CHM
+ INSTALLS += VBox-docs-usermanual-chm
+ VBOX_PATH_BIN_CHM = $(PATH_STAGE_BIN)/VirtualBox.chm
+ else # Do not build chm.
+ VBOX_PATH_BIN_CHM =
+ endif
+
+ ifndef VBOX_ONLY_SDK
+ VBOX_MANUAL_PACK += \
+ $(PATH_STAGE_BIN)/UserManual.pdf \
+ $(VBOX_PATH_BIN_HTML) \
+ $(VBOX_PATH_BIN_CHM)
+ INSTALLS += VBox-docs-usermanual
+
+ ifdef VBOX_WITH_DOCS_TRANSLATIONS
+ INSTALLS += VBox-docs-usermanual-l10n
+ VBOX_MANUAL_PACK += \
+ $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(PATH_STAGE_BIN)/UserManual_$(f).pdf)
+ ifdef VBOX_WITH_DOCS_CHM
+ INSTALLS += VBox-docs-usermanual-l10n-chm
+ VBOX_MANUAL_PACK += \
+ $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(PATH_STAGE_BIN)/VirtualBox_$(f).chm)
+ endif
+ endif
+ endif # !VBOX_ONLY_SDK
+
+ ifdef VBOX_WITH_DOCS_ACCESSIBILITY
+ INSTALLS += VBox-docs-accessibility
+ INSTALLS += VBox-docs-accessibility-html
+ endif
+
+ ifdef VBOX_ONLY_DOCS
+ PACKING += $(PATH_STAGE_BIN)/VBoxDocumentation.zip
+ endif
+
+ ifdef VBOX_WITH_DOCS_TRANSLATIONS
+ VBOX_MANUAL_LANGUAGES += $(VBOX_MANUAL_ADD_LANGUAGES)
+ endif
+
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES), \
+ $(eval VBOX_MANUAL_XML_FILES_GENERATED_$$(lang) := \
+ $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
+ $$(addprefix $$(VBOX_PATH_MANUAL_OUTBASE)/overview_,$$(filter man_VBoxManage%,$$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/user_VBoxManage_CommandsOverview.xml \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_VBoxHeadless.xml \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_man_vboximg-mount.xml \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/$$(lang)/user_isomakercmd-man.xml))
+
+ VBOX_SDKREF_XML_FILES = \
+ SDKRef.xml
+
+ VBOX_ACCESSIBILITY_XML_FILES = \
+ Accessibility.xml
+
+ # Wildcard the images path for every supported language
+ $(foreach f,$(VBOX_MANUAL_LANGUAGES), \
+ $(eval VBOX_MANUAL_PNG_FILES_$$(f) := $$(patsubst $$(VBOX_PATH_MANUAL_SRC)/$$(f)/%,%,$$(wildcard $$(VBOX_PATH_MANUAL_SRC)/$$(f)/images/*.png))))
+
+ VBOX_MANUAL_TEX_UNICODE_FILES = \
+ $(wildcard $(VBOX_PATH_MANUAL_SRC)/texfiles/unicode/*)
+
+ VBOX_MANUAL_LATEX_FILES_TARGET = \
+ $(addprefix UserManual.,aux log out toc tex)
+
+ VBOX_SDKREF_LATEX_FILES_TARGET = \
+ $(addprefix SDKRef.,aux log out toc tex)
+
+ VBOX_ACCESSIBILITY_LATEX_FILES_TARGET = \
+ $(addprefix Accessibility.,aux log out toc tex)
+
+ BLDDIRS += \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/,\
+ $(addsuffix /images, $(VBOX_MANUAL_LANGUAGES)) \
+ $(addsuffix /html-single, $(VBOX_MANUAL_LANGUAGES)) \
+ $(addsuffix /html-chunks, $(VBOX_MANUAL_LANGUAGES)) \
+ $(addsuffix /HTMLHelp, $(VBOX_MANUAL_LANGUAGES)) \
+ $(addsuffix /HTMLHelp/images, $(VBOX_MANUAL_LANGUAGES)) \
+ )
+
+ # Explicit cleaning has some overlap with default cleaning rules, since this
+ # Makefile is using very complex conditionals for selectively creating
+ # specific files, and not everyone remembers to use the same with "kmk clean".
+ OTHER_CLEAN += \
+ $(VBOX_XML_CATALOG) \
+ $(VBOX_XML_CATALOG_DOCBOOK) \
+ $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) \
+ $(VBOX_XML_XREF_TO_TEXT) \
+ $(VBOX_XML_XREF_TO_TEXT).cat \
+ $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/, \
+ $(addprefix user_,$(VBOX_MANUAL_XML_REFENTRY_FILES)) \
+ $(VBOX_MANUAL_XML_REFENTRY_FILES) \
+ $(patsubst man_%,%.1,$(basename $(VBOX_MANUAL_XML_REFENTRY_FILES))) \
+ man_VBoxHeadless.xml \
+ user_man_VBoxHeadless.xml \
+ man_vboximg-mount.xml \
+ user_man_vboximg-mount.xml \
+ isomakercmd-man.xml \
+ user_isomakercmd-man.xml \
+ $(VBOX_MANUAL_LATEX_FILES_TARGET) \
+ $(VBOX_MANUAL_PNG_FILES_$(lang)) \
+ $(notdir $(VBOX_MANUAL_TEX_UNICODE_FILES)) \
+ $(addprefix HTMLHelp/,$(VBOX_MANUAL_PNG_FILES_$(lang))) \
+ html-single/UserManual.html \
+ $(addprefix HTMLHelp/, index.html go01.html) \
+ $(addprefix html-chunks/, index.html go01.html) \
+ $(foreach n,01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 \
+ ,html-chunks/ch$(n).html \
+ html-chunks/re$(n).html \
+ HTMLHelp/ch$(n).html \
+ HTMLHelp/re$(n).html \
+ $(foreach d2,0 1 2 3 4 5 6 7 8 9,$(foreach d1,0 1 2 3 4 5 6 7 8 9,HTMLHelp/ch$(n)s$(d2)$(d1).html)) ) \
+ $(foreach n,a b c \
+ ,html-chunks/ap$(n).html \
+ HTMLHelp/ap$(n).html \
+ $(foreach s,01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20,HTMLHelp/ap$(n)s$(s).html) ) \
+ $(foreach n,01 02 03 04 05 \
+ ,html-chunks/pr$(n).html \
+ HTMLHelp/pr$(n).html \
+ $(foreach s,01 02 03 04 05 06 07 08,HTMLHelp/pr$(n)s$(s).html) ) \
+ HTMLHelp/toc.hhc \
+ HTMLHelp/htmlhelp.hhp \
+ UserManual.pdf \
+ VirtualBox.chm \
+ ChangeLog.html \
+ validatemanual.run \
+ validateaccessibility.run \
+ validatesdkref.run \
+ )) \
+ $(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/overview_,$(VBOX_MANUAL_XML_REFENTRY_FILES)) \
+ $(VBOX_PATH_MANUAL_OUTBASE)/user_VBoxManage_CommandsOverview.xml \
+ $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(PATH_STAGE_BIN)/UserManual_$(f).pdf) \
+ $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(PATH_STAGE_BIN)/VirtualBox_$(f).chm) \
+ $(PATH_STAGE_BIN)/UserManual.pdf \
+ $(PATH_STAGE_BIN)/VirtualBox.chm \
+ \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/, \
+ $(VBOX_SDKREF_LATEX_FILES_TARGET) \
+ SDKRef.pdf \
+ ) \
+ $(PATH_STAGE_BIN)/sdk/docs/SDKRef.pdf \
+ \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/, \
+ $(VBOX_ACCESSIBILITY_LATEX_FILES_TARGET) \
+ html-single/Accessibility.html \
+ Accessibility.pdf \
+ ) \
+ $(PATH_STAGE_BIN)/Accessibility.html \
+ $(PATH_STAGE_BIN)/Accessibility.pdf \
+ \
+ $(VBOX_DOC_XIDL_SRC_TMP) \
+ $(VBOX_MANUAL_APIREF_TMP)
+
+endif # if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK))
+
+#
+# target for installing UserManual.pdf
+#
+VBox-docs-usermanual_INST = $(INST_BIN)
+VBox-docs-usermanual_MODE = a+r,u+w
+VBox-docs-usermanual_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/UserManual.pdf
+
+#
+# target for installing translated UserManual_*.pdf
+#
+VBox-docs-usermanual-l10n_INST = $(INST_BIN)
+VBox-docs-usermanual-l10n_MODE = a+r,u+w
+VBox-docs-usermanual-l10n_SOURCES = $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$(f)/UserManual.pdf=>UserManual_$(f).pdf)
+
+#
+# target for installing the chunked HTML docs
+#
+VBox-docs-usermanual-html_INST = $(INST_BIN)
+VBox-docs-usermanual-html_MODE = a+r,u+w
+VBox-docs-usermanual-html_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/UserManual.zip=>UserManual-html.zip
+
+#
+# target for installing VirtualBox.chm
+#
+VBox-docs-usermanual-chm_INST = $(INST_BIN)
+VBox-docs-usermanual-chm_MODE = a+r,u+w
+VBox-docs-usermanual-chm_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/VirtualBox.chm
+
+#
+# target for installing translated VirtualBox_*.chm
+#
+VBox-docs-usermanual-l10n-chm_INST = $(INST_BIN)
+VBox-docs-usermanual-l10n-chm_MODE = a+r,u+w
+VBox-docs-usermanual-l10n-chm_SOURCES = $(foreach f,$(VBOX_MANUAL_ADD_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$(f)/VirtualBox.chm=>VirtualBox_$(f).chm)
+
+#
+# target for installing SDKRef.pdf
+#
+VBox-docs-sdkref_INST = $(INST_SDK)docs/
+VBox-docs-sdkref_MODE = a+r,u+w
+VBox-docs-sdkref_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.pdf
+
+#
+# target for installing Accessibility.pdf
+#
+VBox-docs-accessibility_INST = $(INST_BIN)
+VBox-docs-accessibility_MODE = a+r,u+w
+VBox-docs-accessibility_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/Accessibility.pdf
+
+#
+# target for installing Accessibility.html
+#
+VBox-docs-accessibility-html_INST = $(INST_BIN)
+VBox-docs-accessibility-html_MODE = a+r,u+w
+VBox-docs-accessibility-html_SOURCES = $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/Accessibility.html
+
+
+
+if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK))
+
+##
+# Morph man pages into manual sections.
+# $(evalcall2 def_vbox_refentry_to_user_sect1)
+# @param 1 Language.
+# @param 2 the refentry xml base file name.
+# @param 3 the full refentry xml file path.
+define def_vbox_refentry_to_user_sect1
+$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/user_$(2): $(3) \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-sect1.xsl \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(filter %.xsl,$$^)),,$$(filter %.xml,$$^),$$@)
+ $$(QUIET)$$(RM) -f "$$@"
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-sect1.xsl $$<
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
+man_VBoxHeadless.xml \
+man_vboximg-mount.xml \
+, $(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),$(file),$(VBOX_PATH_MANUAL_SRC)/$(lang)/$(file))))
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES) \
+,$(evalcall2 def_vbox_refentry_to_user_sect1,$(lang),isomakercmd-man.xml,$(PATH_ROOT)/src/VBox/Runtime/common/fs/isomakercmd-man.xml))
+
+
+# Generates the VBoxManage command overview include file (shared between
+# languages) from the refsynopsisdiv section of the man pages.
+$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/overview_,$(VBOX_MANUAL_XML_REFENTRY_FILES)): \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-overview.xsl \
+ $$(patsubst overview_%,$$(VBOX_PATH_MANUAL_SRC)/en_US/%,$$(notdir $$@)) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) --output "$@" $< $(filter %.xml,$^)
+
+$(VBOX_PATH_MANUAL_OUTBASE)/user_VBoxManage_CommandsOverview.xml: $(VBOXMANAGEHELP_PATH) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_GENERATE,,$@,)
+ $(QUIET)$(RM) -f $@ $@.dumpopts
+ $(QUIET)$(APPEND) -tn "$@" \
+ '<?xml version="1.0" encoding="UTF-8"?>' \
+ '<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">' \
+ '<sect1> <!-- this will be skipped via xpointer in the include. --> '
+ $(QUIET)$(REDIRECT) -wo $@.dumpopts -E 'VBOX_LOG_FLAGS=disabled' -E 'VBOX_LOG_DEST=nofile' \
+ $(if $(eq $(KBUILD_TARGET),darwin), -E 'DYLD_FALLBACK_LIBRARY_PATH=$(dir $(LIB_RUNTIME))') \
+ -- \
+ $(VBOXMANAGEHELP_PATH) --dumpopts
+ $(QUIET)$(SED) \
+ -e ':a' \
+ -e 'N' \
+ -e '$(DOLLAR)!ba' \
+ -e 's/</\&lt\;/g' \
+ -e 's/>/\&gt\;/g' \
+ -e 's/\n*$(DOLLAR)/<\/screen>/' \
+ -e 's/^/<screen>/' \
+ --append $@ $@.dumpopts
+ $(QUIET)$(RM) -f $@.dumpopts
+ $(QUIET)$(APPEND) -n "$@" \
+ ' <remark role="VBoxManage-overview">' \
+ $(foreach refentry, $(filter man_VBoxManage%,$(VBOX_MANUAL_XML_REFENTRY_FILES)) \
+ , ' <xi:include href="overview_$(refentry)" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />') \
+ ' </remark>' \
+ '</sect1>'
+
+
+
+
+##########################################################################################
+#
+# Shared rules for PDF generation
+#
+##########################################################################################
+
+ifndef VBOX_OSE
+# copy ucs.sty and related files
+$(foreach f,$(VBOX_MANUAL_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$f/ucs.sty):
+ $(call MSG_L1,Copying unicode support for LaTeX)
+ $(QUIET)$(INSTALL_STAGING) -m0644 -- $(VBOX_MANUAL_TEX_UNICODE_FILES) "$(@D)"
+endif
+
+# copy the PNG files.
+# Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+define def_vbox_cp_images_pdf
+local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
+$(addprefix $$(out_dir)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
+ $$(out_dir)/%: $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
+ $$(call MSG_L1,Copying temporary $$< => $$@)
+ $$(QUIET)$$(INSTALL_STAGING) -m0644 -- '$$<' '$$(@D)'
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_cp_images_pdf))
+
+
+##########################################################################################
+#
+# UserManual.pdf
+#
+##########################################################################################
+
+
+# Generate PDF from LaTeX
+# Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+define def_vbox_usermanual_tex_to_pdf
+local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
+$$(out_dir)/UserManual.pdf: \
+ $$(out_dir)/UserManual.tex \
+ $$(if $$(VBOX_OSE),,$$(out_dir)/ucs.sty) \
+ $$(addprefix $$(out_dir)/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) | $$$$(dir $$$$@)
+# PDF generation via Latex: generate the .tex file
+ $$(call MSG_L1,pdflatex $$< (four passes) -> $$@)
+ $$(QUIET)$$(REDIRECT) -w+ti /dev/null -C $$(@D) -- $$(VBOX_PDFLATEX_CMD) UserManual.tex
+ $$(QUIET)$$(REDIRECT) -w+ti /dev/null -C $$(@D) -- $$(VBOX_PDFLATEX_CMD) UserManual.tex
+ $$(QUIET)$$(REDIRECT) -w+ti /dev/null -C $$(@D) -- $$(VBOX_PDFLATEX_CMD) UserManual.tex
+ $$(QUIET)$$(REDIRECT) -w+ti /dev/null -C $$(@D) -- $$(VBOX_PDFLATEX_CMD) UserManual.tex
+ $$(QUIET)$$(SED) -ne '/Warning: Hyper reference/p' $$(basename $$<).log
+ $$(QUIET)$$(SED) -n \
+ -e '/Warning: There were \(undefined references\|multiply-defined labels\)/{p; q 1}' \
+ $$(basename $$@).log
+ $$(call MSG_L1,Fresh LaTeX-generated PDF is now at $$@)
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_tex_to_pdf))
+
+# Generate LaTeX from XML
+# Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+define def_vbox_usermanual_xml_to_tex
+local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
+$$(out_dir)/UserManual.tex: \
+ $$(addprefix $$(VBOX_PATH_MANUAL_SRC)/$(lang)/,$$(VBOX_MANUAL_XML_FILES)) \
+ $$(VBOX_MANUAL_XML_FILES_COMMON) \
+ $$(VBOX_MANUAL_XML_FILES_GENERATED_$(lang)) \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
+ $$(if $$(VBOX_HAVE_XMLLINT),$$(out_dir)/validatemanual.run,) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) $$(MAKEFILE_CURRENT) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(filter %.xsl,$$^)),,$$(firstword $$(filter %.xml,$$^)),$$@)
+ $$(QUIET)$$(RM) -f $$(addprefix $$(@D)/,$$(VBOX_MANUAL_LATEX_FILES_TARGET))
+# generate TeX source from processed docbook and store it in UserManual.tex.tmp;
+# pass current language to xsltproc in TARGETLANG variable
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --stringparam TARGETLANG $(lang) \
+ -o $$@.tmp $$(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl $$<
+# for pretty quotes, replace " with `` or '' depending on whether it's at the start of a word;
+# the \QUOTE{} was inserted by docbook2latex.xsl for all quotes _outside_ of screen sections
+ $$(QUIET)$$(SED) \
+ -e 's|^\\QUOTE{}|\\OQ{}|g' \
+ -e 's|\(\W\)\\QUOTE{}|\1\\OQ{}|g' \
+ -e 's|\(\w\)\\QUOTE{}|\1\\CQ{}|g' \
+ --output $$@ $$@.tmp
+ $$(QUIET)$$(RM) -f $$@.tmp
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_xml_to_tex))
+
+# Useful aliases
+usermanual UserManual.pdf:: $(PATH_STAGE_BIN)/UserManual.pdf
+
+debug-usermanual:
+ $(MAKE) --pretty-command-printing -j1 VBOX_PDFLATEX_INTERACTION=errorstopmode $(PATH_STAGE_BIN)/UserManual.pdf
+
+#
+# Generate rules for validating the UserManual.xml. These are invoked
+# automatically at build time, but can also be manually invoked via the
+# 'validatemanual' and 'validatemanual_<lang>' aliases.
+#
+define def_vbox_validate_xml
+validatemanual_$(lang):: $$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/validatemanual.run
+$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/validatemanual.run: \
+ $$(addprefix $$(VBOX_PATH_MANUAL_SRC)/$(lang)/,$$(VBOX_MANUAL_XML_FILES)) \
+ $$(VBOX_MANUAL_XML_FILES_COMMON) \
+ $$(VBOX_MANUAL_XML_FILES_GENERATED_$(lang)) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) $$(MAKEFILE_CURRENT) | $$$$(dir $$$$@)
+ $$(call MSG_L1,Validating $$<)
+ $$(QUIET)$$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $$<
+ $$(QUIET)$$(APPEND) -t "$$@" "done"
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_validate_xml))
+
+
+# Handy aliases.
+validatemanual:: $(foreach lang,$(VBOX_MANUAL_LANGUAGES),validatemanual_$(lang))
+
+
+
+#
+# SDKRef.pdf
+#
+
+# Replace <tt> tags in VirtualBox.xidl.
+$(VBOX_DOC_XIDL_SRC_TMP): $(VBOX_DOC_XIDL_SRC) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_L1,Generating $@)
+ $(QUIET)$(SED) -e 's|@a \+\(\w\+\)|<tt>\1</tt>|g' \
+ -e 's|@c \+\(\w\+\)|<tt>\1</tt>|g' \
+ --output $@ $<
+
+# Generate SDKRef_apiref.xml as a docbook file excerpt that will be referenced from the SDKRef.xml.
+$(VBOX_MANUAL_APIREF_TMP): $(VBOX_PATH_MANUAL_SRC)/xidl2docbook.xsl $(VBOX_DOC_XIDL_SRC_TMP)
+ $(call MSG_L1,Generating $@)
+ $(QUIET)$(VBOX_XSLTPROC) $(VBOX_XSLTPROC_OPTS) --xinclude --nonet -o $@ $< $(VBOX_DOC_XIDL_SRC_TMP)
+
+# Turn SDKRef.xml into LaTeX.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.tex: \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_SDKREF_XML_FILES)) \
+ $(VBOX_MANUAL_APIREF_TMP) \
+ $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
+ $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatesdkref.run,) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(RM) -f $(addprefix $(@D/),$(VBOX_SDKREF_LATEX_FILES_TARGET))
+# generate TeX source from processed docbook and store it in SDKRef.tex.tmp
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) --stringparam TARGETLANG en_US \
+ -o $@.tmp $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl $<
+# for pretty quotes, replace " with `` or '' depending on whether it's at the start of a word;
+# the \QUOTE{} was inserted by docbook2latex.xsl for all quotes _outside_ of screen sections
+ $(QUIET)$(SED) \
+ -e 's|^\\QUOTE{}|\\OQ{}|g' \
+ -e 's|\(\W\)\\QUOTE{}|\1\\OQ{}|g' \
+ -e 's|\(\w\)\\QUOTE{}|\1\\CQ{}|g' \
+ --output $@ $@.tmp
+ $(QUIET)$(RM) -f $@.tmp
+
+# Turn SDKRef.tex into a PDF.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.pdf: \
+ $(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.tex \
+ $(if $(VBOX_OSE),,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/ucs.sty) \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) | $$(dir $$@)
+ $(call MSG_L1,pdflatex $< (three passes))
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) SDKRef.tex
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) SDKRef.tex
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) SDKRef.tex
+ $(QUIET)$(SED) -ne '/Warning: Hyper reference/p' $(basename $<).log
+ $(QUIET)$(SED) -n \
+ -e '/Warning: There were \(undefined references\|multiply-defined labels\)/{p; q 1}' \
+ $(basename $<).log
+ $(call MSG_L1,Fresh LaTeX-generated PDF is now at $@)
+
+# Validating SDKRef.xml. It is invoked automatically at build time,
+# but can also be manually invoked via the 'validate-sdkref' alias.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatesdkref.run: \
+ $(VBOX_PATH_MANUAL_SRC)/en_US/SDKRef.xml \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_SDKREF_XML_FILES)) \
+ $(VBOX_MANUAL_APIREF_TMP) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_L1,Validating $<)
+ $(QUIET)$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $<
+ $(QUIET)$(APPEND) -t "$@" "done"
+
+
+# Handy aliases.
+validate-sdkref:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatesdkref.run
+sdkref:: $(PATH_STAGE_BIN)/sdk/docs/SDKRef.pdf
+
+
+
+#
+# Accessibility.pdf
+#
+
+# Turn Accessibility.xml into LaTeX.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/Accessibility.tex: \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_ACCESSIBILITY_XML_FILES)) \
+ $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
+ $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validateaccessibility.run,) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(RM) -f $(addprefix $(@D/),$(VBOX_ACCESSIBILITY_LATEX_FILES_TARGET))
+# generate TeX source from processed docbook and store it in Accessibility.tex.tmp
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) --stringparam TARGETLANG en_US \
+ -o $@.tmp $(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl $<
+# for pretty quotes, replace " with `` or '' depending on whether it's at the start of a word;
+# the \QUOTE{} was inserted by docbook2latex.xsl for all quotes _outside_ of screen sections
+ $(QUIET)$(SED) \
+ -e 's|^\\QUOTE{}|\\OQ{}|g' \
+ -e 's|\(\W\)\\QUOTE{}|\1\\OQ{}|g' \
+ -e 's|\(\w\)\\QUOTE{}|\1\\CQ{}|g' \
+ --output $@ $@.tmp
+ $(QUIET)$(RM) -f $@.tmp
+
+# Turn Accessibility.tex into a PDF.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/Accessibility.pdf: \
+ $(VBOX_PATH_MANUAL_OUTBASE)/en_US/Accessibility.tex \
+ $(if $(VBOX_OSE),,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/ucs.sty) \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) | $$(dir $$@)
+ $(call MSG_L1,pdflatex $< (three passes))
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) Accessibility.tex
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) Accessibility.tex
+ $(QUIET)$(REDIRECT) -C $(<D) -- $(VBOX_PDFLATEX_CMD) Accessibility.tex
+ $(QUIET)$(SED) -ne '/Warning: Hyper reference/p' $(basename $<).log
+ $(QUIET)$(SED) -n \
+ -e '/Warning: There were \(undefined references\|multiply-defined labels\)/{p; q 1}' \
+ $(basename $<).log
+ $(call MSG_L1,Fresh LaTeX-generated PDF is now at $@)
+
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/Accessibility.html: \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_ACCESSIBILITY_XML_FILES)) \
+ $(VBOX_DOCBOOK_HTML_ONE_PAGE_FORMATCFG) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) \
+ --output $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/Accessibility.html \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-html-one-page-formatcfg.xsl \
+ $<
+
+# Validating Accessibility.xml. It is invoked automatically at build time,
+# but can also be manually invoked via the 'validate-accessibility' alias.
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validateaccessibility.run: \
+ $(VBOX_PATH_MANUAL_SRC)/en_US/Accessibility.xml \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_ACCESSIBILITY_XML_FILES)) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_L1,Validating $<)
+ $(QUIET)$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $<
+ $(QUIET)$(APPEND) -t "$@" "done"
+
+
+# Handy aliases.
+validate-accessibility:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/validateaccessibility.run
+accessibility:: $(PATH_STAGE_BIN)/Accessibility.pdf
+accessibility-html:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/Accessibility.html
+
+
+
+ifdef VBOX_WITH_DOCS_CHM
+ #
+ # VirtualBox.chm
+ #
+ # We first generate a .hhp help source file from the preprocessed
+ # DocBook XML files, as defined above, then feed that into the
+ # Microsoft Help Compiler.
+ #
+ VBOX_DOCBOOK_HTMLHELP_FORMATCFG = \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-htmlhelp-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-html-formatcfg.xsl
+
+ # Prepare the XSL file for our title page, htmlhelp variant.
+ $(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl: \
+ $(VBOX_PATH_MANUAL_SRC)/titlepage-htmlhelp.xml $(MAKEFILE_CURRENT) | $$(dir $$@)
+ $(call MSG_L1,xsltproc $<)
+ $(QUIET)$(RM) -f $@.tmp $@
+ $(QUIET)$(VBOX_XSLTPROC) --xinclude --nonet -o $@.tmp $(VBOX_PATH_DOCBOOK)/template/titlepage.xsl $<
+ $(QUIET)$(MV) -f $@.tmp $@
+
+ # Generate CHM from HHP
+ # Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+ define def_vbox_usermanual_hhp_to_chm
+ local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
+ $$(out_dir)/VirtualBox.chm: \
+ $$(out_dir)/HTMLHelp/htmlhelp.hhp \
+ $$(addprefix $$(out_dir)/HTMLHelp/,$$(VBOX_MANUAL_PNG_FILES_$(lang))) \
+ | $$$$(dir $$$$@)
+ $$(call MSG_L1,hhc $$<,=> $$@)
+ $$(QUIET)$$(RM) -f $$@
+ $$(QUIET)$$(VBOX_HHC) $$(subst /,\\,$$<)
+ $$(call MSG_L1,Fresh CHM is now at $$@)
+ endef
+ $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_hhp_to_chm))
+
+ # Generate HHP from XML
+ # Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+ define def_vbox_usermanual_xml_to_hhp
+ local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)
+ $$(out_dir)/HTMLHelp/htmlhelp.hhp: \
+ $$(addprefix $$(VBOX_PATH_MANUAL_SRC)/$(lang)/,$$(VBOX_MANUAL_XML_FILES)) \
+ $$(VBOX_MANUAL_XML_FILES_COMMON) \
+ $$(VBOX_MANUAL_XML_FILES_GENERATED_$(lang)) \
+ $$(VBOX_DOCBOOK_HTMLHELP_FORMATCFG) \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/titlepage-htmlhelp.xsl \
+ $$(if $$(VBOX_HAVE_XMLLINT),$$(out_dir)/validatemanual.run,) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
+ $$(QUIET)$$(RM) -f $$@
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$(@D)/ \
+ --stringparam htmlhelp.chm \
+ $$(subst /,\\,$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/VirtualBox.chm) \
+ $$(HTMLHELPOPTS) $$(VBOX_PATH_MANUAL_SRC)/docbook-htmlhelp-formatcfg.xsl \
+ $$<
+ endef
+ $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(evalcall2 def_vbox_usermanual_xml_to_hhp))
+
+ # copy the PNG files.
+ # Note: out_dir needs to be referenced with an escaped $ so it doesn't expand as eval expands it input.
+ define def_vbox_cp_images_htmlhelp
+ local out_dir := $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/HTMLHelp
+ $(addprefix $$(out_dir)/,$(VBOX_MANUAL_PNG_FILES_$(lang))): \
+ $$(out_dir)/%: $(VBOX_PATH_MANUAL_SRC)/$(lang)/% | $$$$(dir $$$$@)
+ $$(call MSG_L1,Copying temporary $$< => $$@)
+ $$(QUIET)$$(INSTALL_STAGING) -m0644 -- '$$<' '$$(@D)'
+ endef
+ $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(eval $(def_vbox_cp_images_htmlhelp)))
+
+endif # VBOX_WITH_DOCS_CHM
+
+
+# Packing the docs into a zip file
+$(PATH_STAGE_BIN)/VBoxDocumentation.zip: $(VBOX_MANUAL_PACK)
+ $(call MSG_L1,Packing documentation $@)
+ $(QUIET)$(RM) -f $@
+ $(QUIET)$(REDIRECT) -C $(PATH_STAGE_BIN) -- $(VBOX_ZIP) -9 $@ $(notdir $^)
+
+
+##########################################################################################
+#
+# UserManual.html
+#
+##########################################################################################
+VBOX_DOCBOOK_HTML_ONE_PAGE_FORMATCFG = \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-html-one-page-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-html-formatcfg.xsl
+
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/UserManual.html: \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_XML_FILES)) \
+ $(VBOX_MANUAL_XML_FILES_COMMON) \
+ $(VBOX_MANUAL_XML_FILES_GENERATED_en_US) \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) \
+ $(VBOX_DOCBOOK_HTML_ONE_PAGE_FORMATCFG) \
+ $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatemanual.run,) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) \
+ --output $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/UserManual.html \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-html-one-page-formatcfg.xsl \
+ $<
+
+VBOX_DOCBOOK_HTML_CHUNKS_FORMATCFG = \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-html-chunks-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_SRC)/common-html-formatcfg.xsl
+
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html: \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_XML_FILES)) \
+ $(VBOX_MANUAL_XML_FILES_COMMON) \
+ $(VBOX_MANUAL_XML_FILES_GENERATED_en_US) \
+ $(VBOX_DOCBOOK_HTML_CHUNKS_FORMATCFG) \
+ $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US)) \
+ $(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/en_US/validatemanual.run,) \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) \
+ --output $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html \
+ --stringparam chunk.section.depth 0 \
+ $(VBOX_PATH_MANUAL_SRC)/docbook-html-chunks-formatcfg.xsl \
+ $<
+
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/UserManual.zip: \
+ $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/UserManual.html \
+ $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html \
+ $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_PNG_FILES_en_US))
+ $(call MSG_L1,Packing documentation $@)
+ $(QUIET)$(RM) -f $@
+ $(QUIET)$(REDIRECT) -C $(VBOX_PATH_MANUAL_OUTBASE)/en_US/ -- $(VBOX_ZIP) \
+ -9 -r $@ html-single html-chunks $(VBOX_MANUAL_PNG_FILES_en_US)
+
+html:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/UserManual.html
+html:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html
+html-zip:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/UserManual.zip
+
+
+#
+# ChangeLog.html
+#
+# This XSLT rule formats en_US/user_ChangeLog.xml (which includes the actual change log
+# contained in user_ChangeLogImpl.xml) as a standalone HTML file.
+#
+$(VBOX_PATH_MANUAL_OUTBASE)/en_US/ChangeLog.html: \
+ $(VBOX_PATH_MANUAL_SRC)/en_US/docbook-changelog-formatcfg.xsl \
+ $(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_ChangeLog.xml \
+ $(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(VBOX_XML_CATALOG_MANUAL) \
+ $(VBOX_XML_ENTITIES) | $$(dir $$@)
+ $(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
+ $(QUIET)$(call VBOX_XSLTPROC_WITH_CAT) --output "$@" "$<" $(filter %.xml,$^)
+ $(call MSG_L1,Fresh ChangeLog.html is now at $@)
+
+cl-html:: $(VBOX_PATH_MANUAL_OUTBASE)/en_US/ChangeLog.html
+
+
+
+endif # if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DOCS) || defined(VBOX_ONLY_SDK))
+
+
+#
+# VBoxManage man pages (parts also required by VBoxManage built-in help).
+#
+
+##
+# Emits rules for preprocessing refentry sources (applying remarks element),
+# and for producing the actual man pages.
+# $(evalcall2 def_vbox_refentry_to_manpage)
+# @param 1 The language
+# @param 2 The file name (no path).
+define def_vbox_refentry_to_manpage
+$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2): \
+ $$(VBOX_PATH_MANUAL_SRC)/$(1)/$(2) \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl \
+ $$(VBOX_XML_XREF_TO_TEXT) \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
+ $$(QUIET)$$(RM) -f "$$@"
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage-preprocessing.xsl $$<
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@.tmp $$(VBOX_XML_XREF_TO_TEXT) $$@
+ $$(QUIET)$$(MV) -f -- "$$@.tmp" "$$@"
+if defined(VBOX_HAVE_XMLLINT)
+ $$(VBOX_XMLLINT_WITH_CAT) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd $$@
+endif
+
+$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(patsubst man_%,%.1,$(basename $(2))): \
+ $$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$(2) \
+ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage.xsl \
+ $$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(VBOX_XML_CATALOG_MANUAL) \
+ $$(VBOX_XML_ENTITIES) $$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
+ $$(QUIET)$$(RM) -f "$$@"
+ $$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT) --output $$@ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manpage.xsl $$<
+endef
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
+, $(evalcall2 def_vbox_refentry_to_manpage,$(lang),$(file))))
+
+
+# Handy aliases.
+validate-manpages:: $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_MANUAL_XML_REFENTRY_FILES))
+man-experiment:: $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(foreach file,$(VBOX_MANUAL_XML_REFENTRY_FILES) \
+ ,$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/$(patsubst man_%,%.1,$(basename $(file)))))
+
+#
+# Manually updating the DHCP option list taken from VirtualBox.xidl
+#
+dhcpoptions: $(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl \
+ $(PATH_ROOT)/src/VBox/Main/idl/VirtualBox.xidl
+ $(call VBOX_XSLTPROC) --output "$(PATH_ROOT)/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml" $+
+
+
+include $(FILE_KBUILD_SUB_FOOTER)
+
diff --git a/doc/manual/common-formatcfg.xsl b/doc/manual/common-formatcfg.xsl
new file mode 100644
index 00000000..40121cfd
--- /dev/null
+++ b/doc/manual/common-formatcfg.xsl
@@ -0,0 +1,146 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- General formatting settings. -->
+<xsl:variable name="section.autolabel">1</xsl:variable>
+<xsl:variable name="section.label.includes.component.label">1</xsl:variable>
+<xsl:attribute-set name="monospace.properties">
+ <xsl:attribute name="font-size">90%</xsl:attribute>
+</xsl:attribute-set>
+<xsl:param name="draft.mode" select="'no'"/>
+
+<!-- Shift down section sizes one magstep. -->
+<xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.728"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.44"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level4.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level5.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+<xsl:attribute-set name="section.title.level6.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<!-- Shift down chapter font size one magstep. -->
+<xsl:attribute-set name="component.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 2.0736"></xsl:value-of>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<!-- command synopsis -->
+<xsl:variable name="arg.choice.opt.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.opt.close.str">]</xsl:variable>
+<xsl:variable name="arg.choice.req.open.str">&lt;</xsl:variable>
+<xsl:variable name="arg.choice.req.close.str">&gt;</xsl:variable>
+<xsl:variable name="arg.choice.plain.open.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.plain.close.str"><xsl:text> </xsl:text></xsl:variable>
+<xsl:variable name="arg.choice.def.open.str">[</xsl:variable>
+<xsl:variable name="arg.choice.def.close.str">]</xsl:variable>
+<xsl:variable name="arg.rep.repeat.str">...</xsl:variable>
+<xsl:variable name="arg.rep.norepeat.str"></xsl:variable>
+<xsl:variable name="arg.rep.def.str"></xsl:variable>
+<xsl:variable name="arg.or.sep"> | </xsl:variable>
+<xsl:variable name="cmdsynopsis.hanging.indent">4pi</xsl:variable>
+
+<!--
+ Make sure that sections inside the Preface are not numbered.
+ -->
+<xsl:template match="preface/sect1" mode="object.title.template">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<!--
+ refentry related layout tweaks.
+
+ Note! While we could save us all this work by using refsect1..3 and
+ refsynopsisdiv docbook-refentry-to-manual-sect1.xsl, we'd like to have
+ a valid XML document and thus do do some extra markup using the role
+ and condition attributes. We catch some of it here. But the XSLT
+ for specific targets (html, latex, etc) have a few more tweaks
+ related to this.
+
+ The @role has only one special trick 'not-in-toc' that excludes sections
+ like 'Synopsis' and 'Description' from the TOCs.
+
+ The @condition records the original refentry element name, i.e. it will
+ have values like refentry, refsynopsisdiv, refsect1, refsect2 and refsect3.
+ -->
+
+<!-- This removes the not-in-toc bits from the toc. -->
+<xsl:template match="sect2[@role = 'not-in-toc']" mode="toc" />
+<xsl:template match="sect3[@role = 'not-in-toc']" mode="toc" />
+<xsl:template match="sect4[@role = 'not-in-toc']" mode="toc" />
+<xsl:template match="sect5[@role = 'not-in-toc']" mode="toc" />
+<xsl:template match="section[@role = 'not-in-toc']" mode="toc" />
+<xsl:template match="simplesect[@role = 'not-in-toc']" mode="toc" />
+
+<!-- This removes unnecessary <dd><dl> stuff caused by the above. -->
+<xsl:template match="sect1[sect2/@role = 'not-in-toc']" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect2[@role != 'not-in-toc'] | bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2[sect3/@role = 'not-in-toc']" mode="toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:call-template name="subtoc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="nodes" select="sect3[@role != 'not-in-toc'] | bridgehead[$bridgehead.in.toc != 0]"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- This make the refsect* and refsynopsisdiv unnumbered like the default refentry rendering. -->
+<xsl:template match="sect2[@condition = 'refsynopsisdiv']
+ | sect2[starts-with(@condition, 'refsect')]
+ | sect3[starts-with(@condition, 'refsect')]
+ | sect4[starts-with(@condition, 'refsect')]
+ | sect5[starts-with(@condition, 'refsect')]
+ | section[starts-with(@condition, 'refsect')]
+ | simplesect[starts-with(@condition, 'refsect')]"
+ mode="object.title.template"
+ >
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
+ <xsl:with-param name="name">
+ <xsl:call-template name="xpath.location"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/doc/manual/common-html-formatcfg.xsl b/doc/manual/common-html-formatcfg.xsl
new file mode 100644
index 00000000..fcaad2ff
--- /dev/null
+++ b/doc/manual/common-html-formatcfg.xsl
@@ -0,0 +1,174 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- Must strip spaces in 'arg' elements too, we'll get extra spaces when
+ using 'replaceable'. Adding option too, just in case. -->
+<xsl:strip-space elements="arg option"/>
+
+<!-- Our hand written css styling. -->
+<xsl:template name="user.head.content">
+ <style type="text/css">
+ <xsl:comment>
+ body
+ {
+ font-family: Verdana, Sans-serif, Arial, 'Trebuchet MS', 'Times New Roman';
+ font-size: small;
+ }
+ h2.title
+ {
+ font-family: Verdana, Sans-serif, Arial, 'Trebuchet MS', 'Times New Roman';
+ margin: 5px 0 0;
+ padding: 1px 5px 1px;
+ border: 1px solid #6b89d4;
+ -moz-border-radius: 0.3em;
+ background: #e6edff;
+ }
+ .titlepage
+ {
+ text-align: center;
+ }
+ .refsynopsisdiv, .refsect1, .refsect2, .refsect3
+ {
+ text-align: left;
+ }
+ .warning
+ {
+ padding: 5px;
+ border: 1px solid #ff0011;
+ -moz-border-radius: 0.3em;
+ background: #ffbbbb;
+ }
+ .warning .title { margin: 0px 0px 5px 0px; }
+ .warning p { margin: 1px; }
+ .note
+ {
+ padding: 1px 5px 1px;
+ border: 1px solid #84c43b;
+ -moz-border-radius: 0.3em;
+ background: #d7e9a7;
+ }
+ .note .title { margin: 0px 0px 5px 0px; }
+ .note p { margin: 1px; }
+ .cmdsynopsis
+ {
+ font-family: monospace;
+ }
+ .refsynopsisdiv > .cmdsynopsis p, .refsect1 > .cmdsynopsis p,
+ .refsynopsisdiv .sect2 > .cmdsynopsis p, .refsect1 .sect2 > .cmdsynopsis p
+ {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+ .cmdsynopsis p
+ {
+ padding-left: 3.4em;
+ text-indent: -2.2em;
+ }
+ p.nextcommand
+ {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+ p.lastcommand
+ {
+ margin-top: 0px;
+ }
+ .refentry * h3
+ {
+ font-size: large;
+ }
+ .refentry * h4
+ {
+ font-size: larger;
+ }
+ .refentry * h5
+ {
+ font-size: larger;
+ }
+
+ </xsl:comment>
+ </style>
+</xsl:template>
+
+
+<!-- Ignore/skip the remark that the command overview inclusion file
+ uses as the root element. -->
+<xsl:template match="remark[@role='VBoxManage-overview']">
+ <xsl:apply-templates select="node()"/>
+</xsl:template>
+
+
+<!-- This is for allow special CSS rules to apply to the refsect stuff. -->
+<xsl:template match="sect2[ @role = 'not-in-toc']/title
+ | sect3[ @role = 'not-in-toc']/title
+ | sect4[ @role = 'not-in-toc']/title
+ | sect5[ @role = 'not-in-toc']/title
+ | section[ @role = 'not-in-toc']/title
+ | simplesect[@role = 'not-in-toc']/title
+ | sect1[ @condition = 'refentry']/title
+ | sect2[ @condition = 'refentry']/title
+ | sect1[ starts-with(@condition, 'refsect')]/title
+ | sect2[ starts-with(@condition, 'refsect')]/title
+ | sect3[ starts-with(@condition, 'refsect')]/title
+ | sect4[ starts-with(@condition, 'refsect')]/title
+ | sect5[ starts-with(@condition, 'refsect')]/title
+ | section[ starts-with(@condition, 'refsect')]/title
+ | simplesect[starts-with(@condition, 'refsect')]/title
+" mode="titlepage.mode">
+ <xsl:element name="div">
+ <xsl:attribute name="class">
+ <xsl:value-of select="../@role"/>
+ <xsl:if test="../@role and ../@condition">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="../@condition"/>
+ </xsl:attribute>
+ <xsl:apply-imports/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="sect2[ @role = 'not-in-toc']
+ | sect3[ @role = 'not-in-toc']
+ | sect4[ @role = 'not-in-toc']
+ | sect5[ @role = 'not-in-toc']
+ | section[ @role = 'not-in-toc']
+ | simplesect[@role = 'not-in-toc']
+ | sect1[ @condition = 'refentry']
+ | sect2[ @condition = 'refentry']
+ | sect1[ starts-with(@condition, 'refsect')]
+ | sect2[ starts-with(@condition, 'refsect')]
+ | sect3[ starts-with(@condition, 'refsect')]
+ | sect4[ starts-with(@condition, 'refsect')]
+ | sect5[ starts-with(@condition, 'refsect')]
+ | section[ starts-with(@condition, 'refsect')]
+ | simplesect[starts-with(@condition, 'refsect')]" >
+ <xsl:element name="div">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@role"/>
+ <xsl:if test="@role and @condition">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="@condition"/>
+ </xsl:attribute>
+ <xsl:apply-imports/>
+ </xsl:element>
+</xsl:template>
+
+<!-- To use CSS to correctly insert hanging indent when soft wrapping and
+ <sbr>'ing a synopsis, we must place each command in its own <p>. The default
+ is to must issue a <br /> before each <command>, except the first one.
+ Note! This is a bit ugly as we're going contrary to the grain of XSLT here
+ starting with an closing . -->
+<xsl:template match="cmdsynopsis/command">
+ <xsl:text disable-output-escaping="yes"><![CDATA[</p><p class="nextcommand">]]></xsl:text>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+<xsl:template match="cmdsynopsis/command[last()]">
+ <xsl:text disable-output-escaping="yes"><![CDATA[</p><p class="lastcommand">]]></xsl:text>
+ <xsl:call-template name="inline.monoseq"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-changelog-formatcfg.xsl b/doc/manual/docbook-changelog-formatcfg.xsl
new file mode 100644
index 00000000..5d3c4f16
--- /dev/null
+++ b/doc/manual/docbook-changelog-formatcfg.xsl
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- Single html file template -->
+<xsl:import href="html/docbook.xsl"/>
+<xsl:import href="common-formatcfg.xsl"/>
+
+<!-- Adjust some params -->
+<!--
+<xsl:param name="draft.mode" select="'no'"/>
+<xsl:param name="generate.toc">book nop</xsl:param>
+<xsl:param name="generate.index" select="0"></xsl:param>
+<xsl:param name="suppress.navigation" select="1"></xsl:param>
+<xsl:param name="header.rule" select="0"></xsl:param>
+<xsl:param name="abstract.notitle.enabled" select="0"></xsl:param>
+<xsl:param name="footer.rule" select="0"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+<xsl:param name="html.cleanup" select="1"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+-->
+
+<!-- Our hand written css styling -->
+<xsl:template name="user.head.content">
+ <style type="text/css">
+ <xsl:comment>
+ <!--
+ body
+ {
+ height: 100%;
+ font-family: Verdana, Sans-serif, Arial, 'Trebuchet MS', 'Times New Roman';
+ font-size: small;
+ position: absolute;
+ margin: 0px 0 0 0;
+ }
+ h2
+ {
+ text-decoration: none;
+ font-size: 1.2em;
+ font-family: Verdana, Sans-serif, Arial, 'Trebuchet MS', 'Times New Roman';
+ margin: 5px 0 0;
+ padding: 1px 5px 1px;
+ border: 1px solid #6b89d4; /* #84C43B; */
+ -moz-border-radius: 0.3em;
+ background: #e6edff; /* #d7e9a7; */
+ }
+ #watermark
+ {
+ margin: 0;
+ position: fixed;
+ top: 40%;
+ color: #eeeeee;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ vertical-align: middle;
+ font-size: 9em;
+ font-weight: bold;
+ z-index:-1;
+ }
+ -->
+ </xsl:comment>
+ </style>
+</xsl:template>
+
+<!-- Remove the title page at all -->
+<!--
+<xsl:template name="book.titlepage">
+ -->
+ <!-- Doesn't work with Qt, grrr -->
+ <!--<xsl:text><div id="watermark">VirtualBox<br />Change Log</div></xsl:text>-->
+<!--
+</xsl:template>
+-->
+
+<!-- Disable any links into the manual -->
+<xsl:template match="xref" name="xref">
+ <xsl:text>the manual for more information</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/manual/docbook-html-chunks-formatcfg.xsl b/doc/manual/docbook-html-chunks-formatcfg.xsl
new file mode 100644
index 00000000..6452b463
--- /dev/null
+++ b/doc/manual/docbook-html-chunks-formatcfg.xsl
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- Chunked html file template -->
+<xsl:import href="html/chunk.xsl"/>
+
+<xsl:import href="common-formatcfg.xsl"/>
+<xsl:import href="common-html-formatcfg.xsl"/>
+
+<!-- Adjust some params -->
+<xsl:param name="draft.mode" select="'no'"/>
+<xsl:param name="suppress.navigation" select="1"></xsl:param>
+<xsl:param name="header.rule" select="0"></xsl:param>
+<xsl:param name="abstract.notitle.enabled" select="0"></xsl:param>
+<xsl:param name="footer.rule" select="0"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+<xsl:param name="html.cleanup" select="1"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+
+<xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title,figure,table,example,equation
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 nop
+sect2 nop
+sect3 nop
+sect4 nop
+sect5 nop
+section nop
+set toc,title
+</xsl:param>
+
+
+</xsl:stylesheet>
diff --git a/doc/manual/docbook-html-one-page-formatcfg.xsl b/doc/manual/docbook-html-one-page-formatcfg.xsl
new file mode 100644
index 00000000..373937b2
--- /dev/null
+++ b/doc/manual/docbook-html-one-page-formatcfg.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!-- Single html file template -->
+<xsl:import href="html/docbook.xsl"/>
+
+<xsl:import href="common-formatcfg.xsl"/>
+<xsl:import href="common-html-formatcfg.xsl"/>
+
+<!-- Adjust some params -->
+<xsl:param name="draft.mode" select="'no'"/>
+<xsl:param name="suppress.navigation" select="1"></xsl:param>
+<xsl:param name="header.rule" select="0"></xsl:param>
+<xsl:param name="abstract.notitle.enabled" select="0"></xsl:param>
+<xsl:param name="footer.rule" select="0"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+<xsl:param name="html.cleanup" select="1"></xsl:param>
+<xsl:param name="css.decoration" select="1"></xsl:param>
+
+</xsl:stylesheet>
diff --git a/doc/manual/docbook-htmlhelp-formatcfg.xsl b/doc/manual/docbook-htmlhelp-formatcfg.xsl
new file mode 100644
index 00000000..3c6bb78e
--- /dev/null
+++ b/doc/manual/docbook-htmlhelp-formatcfg.xsl
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="htmlhelp/htmlhelp.xsl"/>
+<xsl:import href="common-formatcfg.xsl"/>
+<xsl:import href="common-html-formatcfg.xsl"/>
+
+<xsl:include href="titlepage-htmlhelp.xsl"/>
+
+<!-- Override the style sheet stuff from common-html-formatcfg.xsl, we don't
+ the same as the html-chunks and html-one-page. Also, the microsoft
+ help viewer may have limited CSS support, depending on which browser
+ version it emulated, so keep it simple. -->
+<xsl:template name="user.head.content">
+ <style type="text/css">
+ <xsl:comment>
+ .cmdsynopsis p
+ {
+ padding-left: 3.4em;
+ text-indent: -2.2em;
+ }
+ p.nextcommand
+ {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ }
+ p.lastcommand
+ {
+ margin-top: 0px;
+ }
+ </xsl:comment>
+ </style>
+</xsl:template>
+
+
+<!-- for some reason, the default docbook stuff doesn't wrap simple <arg> elements
+ into HTML <code>, so with a default CSS a cmdsynopsis ends up with a mix of
+ monospace and proportional fonts. Elsewhere we hack that in the CSS, here
+ that turned out to be harded, so we just wrap things in <code>, risking
+ nested <code> elements, but who cares as long as it works... -->
+<xsl:template match="group|arg">
+ <xsl:choose>
+ <xsl:when test="name(..) = 'arg' or name(..) = 'group'">
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <code><xsl:apply-imports/></code>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl b/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl
new file mode 100644
index 00000000..364f8698
--- /dev/null
+++ b/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl
@@ -0,0 +1,154 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-link-replacement-xsl-gen.xsl.xsl:
+ XSLT stylesheet for generate a stylesheet that replaces links
+ to the user manual in the manpages.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+
+ <xsl:output method="text" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+
+<!-- Default operation is to supress output -->
+<xsl:template match="node()|@*">
+ <xsl:apply-templates/>
+</xsl:template>
+
+
+<!-- Remove all remarks. -->
+<xsl:template match="remark"/>
+
+<!--
+Output header and footer.
+-->
+<xsl:template match="/">
+ <xsl:text>&lt;?xml version="1.0"?&gt;
+&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" &gt;
+&lt;xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /&gt;
+&lt;xsl:template match="node()|@*"&gt;
+ &lt;xsl:copy&gt;
+ &lt;xsl:apply-templates select="node()|@*"/&gt;
+ &lt;/xsl:copy&gt;
+&lt;/xsl:template&gt;
+
+</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>
+&lt;/xsl:stylesheet&gt;
+</xsl:text>
+</xsl:template>
+
+
+<!--
+Produce the transformation templates:
+-->
+<xsl:template match="chapter[@id]/title">
+ <xsl:text>
+&lt;xsl:template match="xref[@linkend='</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>']"&gt;
+ &lt;xsl:text&gt;chapter </xsl:text><xsl:value-of select="count(../preceding-sibling::chapter) + 1"/><xsl:text> &quot;</xsl:text>
+ <xsl:value-of select="normalize-space()"/>
+ <xsl:text>&quot; in the user manual&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="sect1[@id]/title">
+ <xsl:text>&lt;xsl:template match="xref[@linkend='</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>']"&gt;
+ &lt;xsl:text&gt;section </xsl:text>
+ <xsl:value-of select="count(../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../preceding-sibling::sect1) + 1"/>
+ <xsl:text> &quot;</xsl:text>
+ <xsl:value-of select="normalize-space()"/><xsl:text>&quot; of the user manual&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="sect2[@id]/title">
+ <xsl:text>&lt;xsl:template match="xref[@linkend='</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>']"&gt;
+ &lt;xsl:text&gt;section </xsl:text>
+ <xsl:value-of select="count(../../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../../preceding-sibling::sect1) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../preceding-sibling::sect2) + 1"/>
+ <xsl:text> &quot;</xsl:text>
+ <xsl:value-of select="normalize-space()"/><xsl:text>&quot; of the user manual&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="sect3[@id]/title">
+ <xsl:text>&lt;xsl:template match="xref[@linkend='</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>']"&gt;
+ &lt;xsl:text&gt;section </xsl:text>
+ <xsl:value-of select="count(../../../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../../../preceding-sibling::sect1) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../../preceding-sibling::sect2) + 1"/><xsl:text>.</xsl:text>
+ <xsl:value-of select="count(../preceding-sibling::sect3) + 1"/>
+ <xsl:text> &quot;</xsl:text>
+ <xsl:value-of select="normalize-space()"/><xsl:text>&quot; of the user manual&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="preface[@id]/title">
+ <xsl:text>&lt;xsl:template match="xref[@linkend='</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>']"&gt;
+ &lt;xsl:text&gt;&quot;</xsl:text>
+ <xsl:value-of select="normalize-space()"/><xsl:text>&quot; of the user manual&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!--
+ Debug/Diagnostics: Return the path to the specified node (by default the current).
+ -->
+<xsl:template name="get-node-path">
+ <xsl:param name="Node" select="."/>
+ <xsl:for-each select="$Node">
+ <xsl:for-each select="ancestor-or-self::node()">
+ <xsl:choose>
+ <xsl:when test="name(.) = ''">
+ <xsl:text>text()</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('/', name(.))"/>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:text>[@id=</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:when test="position() > 1">
+ <xsl:text>[</xsl:text><xsl:value-of select="position()"/><xsl:text>]</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-C-help.xsl b/doc/manual/docbook-refentry-to-C-help.xsl
new file mode 100644
index 00000000..f92f9051
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-C-help.xsl
@@ -0,0 +1,962 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-to-manual-sect1.xsl:
+ XSLT stylesheet for nicking the refsynopsisdiv bit of a
+ refentry (manpage) for use in the command overview section
+ in the user manual.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://xsltsl.org/string"
+ >
+
+ <xsl:import href="string.xsl"/>
+ <xsl:import href="common-formatcfg.xsl"/>
+
+ <xsl:output method="text" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+ <xsl:param name="g_fDebugText" select="0"/>
+
+ <xsl:variable name="g_sUnderlineRefSect1">
+ <xsl:text>===================================================================================================================</xsl:text>
+ </xsl:variable>
+ <xsl:variable name="g_sUnderlineRefSect2">
+ <xsl:text>-------------------------------------------------------------------------------------------------------------------</xsl:text>
+ </xsl:variable>
+
+ <!-- Sub-command style command (true) or single command (false). -->
+ <xsl:variable name="g_fSubCommands" select="not(not(//refsect2[@id]))" />
+
+ <!-- Default action, do nothing. -->
+ <xsl:template match="node()|@*"/>
+
+ <!--
+ main() - because we need to order the output in a specific manner
+ that is contrary to the data flow in the refentry, this is
+ going to look a bit more like a C program than a stylesheet.
+ -->
+ <xsl:template match="refentry">
+ <!-- Assert refetry expectations. -->
+ <xsl:if test="not(./refsynopsisdiv)">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refentry must have a refsynopsisdiv</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(./refentryinfo/title)">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refentry must have a refentryinfo with title</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(./refmeta/refentrytitle)">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refentry must have a refentryinfo with title</xsl:message>
+ </xsl:if>
+ <xsl:if test="./refmeta/refentrytitle != ./refnamediv/refname">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>The refmeta/refentrytitle and the refnamediv/refname must be identical</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(./refsect1/title)">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refentry must have a refsect1 with title</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(@id) or @id = ''">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refentry must have an id attribute</xsl:message>
+ </xsl:if>
+
+ <!-- variables -->
+ <xsl:variable name="sBaseId" select="@id"/>
+ <xsl:variable name="sDataBaseSym" select="concat('g_', translate(@id, '-', '_'))"/>
+
+
+ <!--
+ Convert the refsynopsisdiv into REFENTRY::Synopsis data.
+ -->
+ <xsl:text>
+
+static const RTMSGREFENTRYSTR </xsl:text><xsl:value-of select="$sDataBaseSym"/><xsl:text>_synopsis[] =
+{</xsl:text>
+ <xsl:for-each select="./refsynopsisdiv/cmdsynopsis">
+ <!-- Assert synopsis expectations -->
+ <xsl:if test="not(@id) or substring-before(@id, '-') != 'synopsis'">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>The refsynopsisdiv/cmdsynopsis elements must have an id starting with 'synopsis-'.</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(starts-with(substring-after(@id, '-'), $sBaseId))">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>The refsynopsisdiv/cmdsynopsis elements @id is expected to include the refentry @id.</xsl:message>
+ </xsl:if>
+ <xsl:if test="not(../../refsect1/refsect2[@id=./@id]) and $g_fSubCommands">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>No refsect2 with id="<xsl:value-of select="@id"/>" found.</xsl:message>
+ </xsl:if>
+
+ <!-- Do the work. -->
+ <xsl:apply-templates select="."/>
+
+ </xsl:for-each>
+ <xsl:text>
+};</xsl:text>
+
+
+ <!--
+ Convert the whole manpage to help text.
+ -->
+ <xsl:text>
+static const RTMSGREFENTRYSTR </xsl:text><xsl:value-of select="$sDataBaseSym"/><xsl:text>_full_help[] =
+{</xsl:text>
+ <!-- We start by combining the refentry title and the refpurpose into a short description. -->
+ <xsl:text>
+ { </xsl:text><xsl:call-template name="calc-scope-for-refentry"/><xsl:text>,
+ "</xsl:text>
+ <xsl:apply-templates select="./refentryinfo/title/node()"/>
+ <xsl:text> -- </xsl:text>
+ <xsl:call-template name="capitalize">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="./refnamediv/refpurpose/node()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>." },
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+
+ <!-- The follows the usage (synopsis) section. -->
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_GLOBAL,
+ "Usage" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "=====" },</xsl:text>
+ <xsl:apply-templates select="./refsynopsisdiv/node()"/>
+
+ <!-- Then comes the description and other refsect1 -->
+ <xsl:for-each select="./refsect1">
+ <xsl:if test="name(*[1]) != 'title'"><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Expected title as the first element in refsect1.</xsl:message></xsl:if>
+ <xsl:if test="text()"><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>No text supported in refsect1.</xsl:message></xsl:if>
+ <xsl:if test="not(./remark[@role='help-skip'])">
+ <xsl:variable name="sTitle">
+ <xsl:apply-templates select="./title/node()"/>
+ </xsl:variable>
+ <xsl:text>
+ { </xsl:text><xsl:call-template name="calc-scope-refsect1"/><xsl:text>, "" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text><xsl:value-of select="$sTitle"/><xsl:text>" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text>
+ <xsl:value-of select="substring($g_sUnderlineRefSect1, 1, string-length($sTitle))"/>
+ <xsl:text>" },</xsl:text>
+
+ <xsl:apply-templates select="./*[name() != 'title']"/>
+
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:text>
+};</xsl:text>
+
+ <!--
+ Generate the refentry structure.
+ -->
+ <xsl:text>
+static const RTMSGREFENTRY </xsl:text><xsl:value-of select="$sDataBaseSym"/><xsl:text> =
+{
+ /* .idInternal = */ HELP_CMD_</xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains(@id, '-')">
+ <xsl:call-template name="str:to-upper"> <!-- Multi level command. -->
+ <xsl:with-param name="text" select="translate(substring-after(@id, '-'), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:to-upper"> <!-- Simple command. -->
+ <xsl:with-param name="text" select="@id"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>,
+ /* .Synopsis = */ { RT_ELEMENTS(</xsl:text>
+ <xsl:value-of select="$sDataBaseSym"/><xsl:text>_synopsis), 0, </xsl:text>
+ <xsl:value-of select="$sDataBaseSym"/><xsl:text>_synopsis },
+ /* .Help = */ { RT_ELEMENTS(</xsl:text>
+ <xsl:value-of select="$sDataBaseSym"/><xsl:text>_full_help), 0, </xsl:text>
+ <xsl:value-of select="$sDataBaseSym"/><xsl:text>_full_help },
+ /* pszBrief = */ "</xsl:text>
+ <xsl:apply-templates select="./refnamediv/refpurpose/node()"/>
+ <!-- TODO: Add the command name too. -->
+ <xsl:text>"
+};
+</xsl:text>
+ </xsl:template>
+
+
+ <!--
+ Convert command synopsis to text.
+ -->
+ <xsl:template match="cmdsynopsis">
+ <xsl:if test="text()"><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>cmdsynopsis with text is not supported.</xsl:message></xsl:if>
+ <xsl:if test="position() = 1">
+ <xsl:text>
+ { </xsl:text><xsl:call-template name="calc-scope-cmdsynopsis"/><xsl:text> | RTMSGREFENTRYSTR_FLAGS_SYNOPSIS, "" }, </xsl:text>
+ </xsl:if>
+ <xsl:text>
+ { </xsl:text><xsl:call-template name="calc-scope-cmdsynopsis"/><xsl:text> | RTMSGREFENTRYSTR_FLAGS_SYNOPSIS,
+ "</xsl:text><xsl:call-template name="emit-indentation"/><xsl:apply-templates select="*|@*"/><xsl:text>" },</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="sbr">
+ <xsl:text>" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME | RTMSGREFENTRYSTR_FLAGS_SYNOPSIS,
+ " </xsl:text><xsl:call-template name="emit-indentation"/> <!-- hardcoded in VBoxManageHelp.cpp too -->
+ </xsl:template>
+
+ <xsl:template match="cmdsynopsis/command">
+ <xsl:text>" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME | RTMSGREFENTRYSTR_FLAGS_SYNOPSIS,
+ "</xsl:text><xsl:call-template name="emit-indentation"/>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:template>
+
+ <xsl:template match="cmdsynopsis/command[1]" priority="2">
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:template>
+
+ <xsl:template match="command|option|computeroutput|literal|emphasis|filename">
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:template>
+
+ <xsl:template match="replaceable">
+ <xsl:choose>
+ <xsl:when test="ancestor::arg">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&gt;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- duplicated in docbook2latex.xsl -->
+ <xsl:template match="arg|group">
+ <!-- separator char if we're not the first child -->
+ <xsl:if test="position() > 1">
+ <xsl:choose>
+ <xsl:when test="parent::group"><xsl:value-of select="$arg.or.sep"/></xsl:when>
+ <xsl:when test="ancestor-or-self::*/@sepchar"><xsl:value-of select="ancestor-or-self::*/@sepchar"/></xsl:when>
+ <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- open wrapping -->
+ <xsl:variable name="fWrappers" select="not(ancestor::group)"/>
+ <xsl:if test="$fWrappers">
+ <xsl:choose>
+ <xsl:when test="not(@choice) or @choice = ''"> <xsl:value-of select="$arg.choice.def.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'opt'"> <xsl:value-of select="$arg.choice.opt.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'req'"> <xsl:value-of select="$arg.choice.req.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'plain'"/>
+ <xsl:otherwise><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Invalid arg choice: "<xsl:value-of select="@choice"/>"</xsl:message></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- render the arg (TODO: may need to do more work here) -->
+ <xsl:apply-templates />
+
+ <!-- repeat wrapping -->
+ <xsl:choose>
+ <xsl:when test="@rep = 'norepeat' or not(@rep) or @rep = ''"/>
+ <xsl:when test="@rep = 'repeat'"> <xsl:value-of select="$arg.rep.repeat.str"/></xsl:when>
+ <xsl:otherwise><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Invalid rep choice: "<xsl:value-of select="@rep"/>"</xsl:message></xsl:otherwise>
+ </xsl:choose>
+
+ <!-- close wrapping -->
+ <xsl:if test="$fWrappers">
+ <xsl:choose>
+ <xsl:when test="not(@choice) or @choice = ''"> <xsl:value-of select="$arg.choice.def.close.str"/></xsl:when>
+ <xsl:when test="@choice = 'opt'"> <xsl:value-of select="$arg.choice.opt.close.str"/></xsl:when>
+ <xsl:when test="@choice = 'req'"> <xsl:value-of select="$arg.choice.req.close.str"/></xsl:when>
+ </xsl:choose>
+ <!-- Add a space padding if we're the last element in a repeating arg or group -->
+ <xsl:if test="(parent::arg or parent::group) and not(following-sibiling)">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+
+ <!--
+ refsect2
+ -->
+ <xsl:template match="refsect2">
+ <!-- assertions -->
+ <xsl:if test="text()"><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refsect2 shouldn't contain text</xsl:message></xsl:if>
+ <xsl:if test="count(./title) != 1"><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>refsect2 requires a title (<xsl:value-of select="ancestor-or-self::*[@id][1]/@id"/>)</xsl:message></xsl:if>
+
+ <!-- title / command synopsis - sets the scope. -->
+ <xsl:variable name="sTitle">
+ <xsl:apply-templates select="./title/text()"/>
+ </xsl:variable>
+ <xsl:text>
+ { </xsl:text><xsl:call-template name="calc-scope-refsect2"/><xsl:text>, "" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text><xsl:call-template name="emit-indentation"/>
+ <xsl:value-of select="$sTitle"/>
+ <xsl:text>" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text><xsl:call-template name="emit-indentation"/>
+ <xsl:value-of select="substring($g_sUnderlineRefSect2, 1, string-length($sTitle))"/>
+ <xsl:text>" },</xsl:text>
+
+<!-- <xsl:if test="./*[name() != 'title']/following::
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "y" },</xsl:text> cmdsynopsis -->
+
+ <!-- Format the text in the section -->
+ <xsl:for-each select="./*[name() != 'title']">
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+
+ <!-- Add two blank lines, unless we're the last element in this refsect1. -->
+ <xsl:if test="position() != last()">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+
+ <!--
+ para
+ -->
+ <xsl:template match="para">
+ <xsl:if test="position() != 1 or not(parent::listitem)">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="process-mixed"/>
+ </xsl:template>
+
+
+ <!--
+ variablelist
+ -->
+ <xsl:template match="variablelist">
+ <xsl:if test="*[not(self::varlistentry)]|text()">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Only varlistentry elements are supported in variablelist </xsl:message>
+ </xsl:if>
+ <xsl:for-each select="./varlistentry">
+ <xsl:if test="not(term) or not(listitem) or count(listitem) > 1">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Expected one or more term members and exactly one listentry member in varlistentry element.</xsl:message>
+ </xsl:if>
+ <xsl:if test="(not(@spacing) or @spacing != 'compact') and (position() > 1 or (count(../preceding-sibling::*) - count(../preceding-sibling::title) > 0))">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="varlistentry/term">
+ <xsl:call-template name="process-mixed"/>
+ </xsl:template>
+
+ <xsl:template match="varlistentry/listitem">
+ <xsl:call-template name="check-children">
+ <xsl:with-param name="UnsupportedNodes" select="*[not(self::para or self::itemizedlist or self::orderedlist or self::variablelist)]|text()"/>
+ <xsl:with-param name="SupportedNames">para, itemizedlist and orderedlist</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="*"/>
+ </xsl:template>
+
+
+ <!--
+ itemizedlist and orderedlist
+ -->
+ <xsl:template match="itemizedlist|orderedlist">
+ <xsl:if test="*[not(self::listitem)]|text()">
+ <xsl:message terminate="yes">
+ <xsl:call-template name="error-prefix"/>Only listitem elements are supported in <xsl:value-of select="name()"/>:
+ <xsl:call-template name="list-nodes">
+ <xsl:with-param name="Nodes" select="*[not(self::listitem)]|text()"/>
+ </xsl:call-template>
+ </xsl:message>
+ </xsl:if>
+ <xsl:if test="parent::para">
+ <xsl:message terminate="yes"><xsl:value-of select="name()"/> inside a para is current not supported. <!-- no newline
+ -->Close the para before the list, it makes no difference to html and latex/pdf output.</xsl:message>
+ </xsl:if>
+ <xsl:if test="position() != 1 and (not(@spacing) or @spacing != 'compact')">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ <xsl:for-each select="./listitem">
+ <xsl:apply-templates select="*"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="itemizedlist/listitem|orderedlist/listitem">
+ <xsl:if test="*[not(self::para)]|text()">
+ <xsl:message terminate="yes">
+ <xsl:call-template name="error-prefix"/>Expected <xsl:value-of select="name()"/>/listitem to only contain para elements:
+ <xsl:call-template name="list-nodes">
+ <xsl:with-param name="Nodes" select="*[not(self::para)]|text()"/>
+ </xsl:call-template>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="position() != 1 and @spaceing != 'compact'">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME, "" },</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="*"/>
+ </xsl:template>
+
+
+ <!--
+ Screen
+ -->
+ <xsl:template match="screen">
+ <xsl:if test="ancestor::para">
+ <xsl:text>" },</xsl:text>
+ </xsl:if>
+
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text>
+
+ <xsl:for-each select="node()">
+ <xsl:choose>
+ <xsl:when test="name() = ''">
+ <xsl:call-template name="screen_text_line">
+ <xsl:with-param name="sText" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="*">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Support for elements under screen has not been implemented: <xsl:value-of select="name()"/></xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+
+ <xsl:if test="not(ancestor::para)">
+ <xsl:text>" },</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="screen_text_line">
+ <xsl:param name="sText"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($sText, '&#x0a;')">
+ <xsl:call-template name="escape_fixed_text">
+ <xsl:with-param name="sText" select="substring-before($sText,'&#x0a;')"/>
+ </xsl:call-template>
+
+ <xsl:if test="substring-after($sText,'&#x0a;')">
+ <xsl:text>" },
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text>
+ <xsl:call-template name="screen_text_line">
+ <xsl:with-param name="sText" select="substring-after($sText,'&#x0a;')"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise> <!-- no newline, so use the whole string -->
+ <xsl:call-template name="escape_fixed_text">
+ <xsl:with-param name="sText" select="$sText"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!--
+ Text escaping for C.
+ -->
+ <xsl:template match="text()" name="escape_text">
+ <!-- Leading whitespace hack! -->
+ <xsl:if test="substring(.,1,1) = ' ' and position() != 1">
+ <xsl:text> </xsl:text>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text: add space</xsl:message>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- Body of text -->
+ <xsl:choose>
+
+ <xsl:when test="contains(., '\') or contains(., '&quot;')">
+ <xsl:variable name="sTmp">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="normalize-space(.)"/>
+ <xsl:with-param name="replace" select="'\'"/>
+ <xsl:with-param name="with" select="'\\'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="sTmp2">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$sTmp"/>
+ <xsl:with-param name="replace" select="'&quot;'"/>
+ <xsl:with-param name="with" select="'\&quot;'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$sTmp2"/>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text: |<xsl:value-of select="$sTmp2"/>|</xsl:message>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text: |<xsl:value-of select="normalize-space(.)"/>|</xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- Trailing whitespace hack! -->
+ <xsl:if test="substring(.,string-length(.)) = ' ' and position() != last() and string-length(.) != 1">
+ <xsl:text> </xsl:text>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text: add space</xsl:message>
+ </xsl:if>
+ </xsl:if>
+
+ </xsl:template>
+
+ <!-- Elements producing non-breaking strings (single line). -->
+ <xsl:template match="command/text()|option/text()|computeroutput/text()|arg/text()|filename/text()" name="escape_fixed_text">
+ <xsl:param name="sText" select="normalize-space(.)"/>
+ <xsl:choose>
+
+ <xsl:when test="contains($sText, '\') or contains($sText, '&quot;')">
+ <xsl:variable name="sTmp1">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$sText"/>
+ <xsl:with-param name="replace" select="'\'"/>
+ <xsl:with-param name="with" select="'\\'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="sTmp2">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$sTmp1"/>
+ <xsl:with-param name="replace" select="'&quot;'"/>
+ <xsl:with-param name="with" select="'\&quot;'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="sTmp3">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$sTmp2"/>
+ <xsl:with-param name="replace" select="' '"/>
+ <xsl:with-param name="with" select="'\b'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$sTmp3"/>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text! |<xsl:value-of select="$sTmp3"/>|</xsl:message>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="contains($sText, ' ')">
+ <xsl:variable name="sTmp">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$sText"/>
+ <xsl:with-param name="replace" select="' '"/>
+ <xsl:with-param name="with" select="'\b'"/>
+ <xsl:with-param name="disable-output-escaping" select="yes"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$sTmp"/>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text! |<xsl:value-of select="$sTmp"/>|</xsl:message>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$sText"/>
+ <xsl:if test="boolean($g_fDebugText)">
+ <xsl:message>text! |<xsl:value-of select="$sText"/>|</xsl:message>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!--
+ Unsupported elements and elements handled directly.
+ -->
+ <xsl:template match="synopfragment|synopfragmentref|title|refsect1">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>The <xsl:value-of select="name()"/> element is not supported</xsl:message>
+ </xsl:template>
+
+ <!--
+ Fail on misplaced scoping remarks.
+ -->
+ <xsl:template match="remark[@role = 'help-scope']">
+ <xsl:choose>
+ <xsl:when test="parent::refsect1"/>
+ <xsl:when test="parent::refsect2"/>
+ <xsl:when test="parent::cmdsynopsis and ancestor::refsynopsisdiv"/>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Misplaced remark/@role=help-scope element.
+Only supported on: refsect1, refsect2, refsynopsisdiv/cmdsynopsis</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ Execute synopsis copy remark (avoids duplication for complicated xml).
+ -->
+ <xsl:template match="remark[@role = 'help-copy-synopsis']">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>remark/@role=help-copy-synopsis is not supported by this stylesheet. Must preprocess input!</xsl:message>
+ </xsl:template>
+
+ <!--
+ Warn about unhandled elements
+ -->
+ <xsl:template match="*">
+ <xsl:message terminate="no">Warning: Unhandled element: <!-- no newline -->
+ <xsl:for-each select="ancestor-or-self::*">
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:value-of select="concat('[id=', @id ,']')"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:message>
+ </xsl:template>
+
+
+ <!--
+ Functions
+ Functions
+ Functions
+ -->
+
+ <!--
+ Processes mixed children, i.e. both text and regular elements.
+ Normalizes whitespace. -->
+ <xsl:template name="process-mixed">
+ <xsl:text>
+ { RTMSGREFENTRYSTR_SCOPE_SAME,
+ "</xsl:text><xsl:call-template name="emit-indentation"/>
+
+ <xsl:for-each select="node()[not(self::remark)]">
+ <xsl:choose>
+ <xsl:when test="name() = ''">
+ <xsl:call-template name="escape_text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+
+ <xsl:text>" },</xsl:text>
+ </xsl:template>
+
+
+ <!--
+ Element specific scoping.
+ -->
+
+ <xsl:template name="calc-scope-for-refentry">
+ <xsl:text>HELP_SCOPE_</xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains(@id, '-')"> <!-- Multi level command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(substring-after(@id, '-'), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise> <!-- Single command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="@id"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Figures out the scope of a refsect1 element. -->
+ <xsl:template name="calc-scope-refsect1">
+ <xsl:choose>
+ <xsl:when test="title[text() = 'Description']">
+ <xsl:text>RTMSGREFENTRYSTR_SCOPE_GLOBAL</xsl:text>
+ </xsl:when>
+ <xsl:when test="@id or remark[@role='help-scope']">
+ <xsl:call-template name="calc-scope-from-remark-or-id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>RTMSGREFENTRYSTR_SCOPE_GLOBAL</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Figures out the scope of a refsect2 element. -->
+ <xsl:template name="calc-scope-refsect2">
+ <xsl:choose>
+ <xsl:when test="@id or remark[@role='help-scope']">
+ <xsl:call-template name="calc-scope-from-remark-or-id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>RTMSGREFENTRYSTR_SCOPE_SAME</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Figures out the scope of a refsect1 element. -->
+ <xsl:template name="calc-scope-cmdsynopsis">
+ <xsl:choose>
+ <xsl:when test="ancestor::refsynopsisdiv">
+ <xsl:call-template name="calc-scope-from-remark-or-id">
+ <xsl:with-param name="sId" select="substring-after(@id, '-')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>RTMSGREFENTRYSTR_SCOPE_SAME</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!--
+ Scoping worker functions.
+ -->
+
+ <!-- Calculates the current scope from the scope remark or @id. -->
+ <xsl:template name="calc-scope-from-remark-or-id">
+ <xsl:param name="sId" select="@id"/>
+ <xsl:choose>
+ <xsl:when test="remark[@role='help-scope']">
+ <xsl:call-template name="calc-scope-consts-from-remark"/>
+ </xsl:when>
+ <xsl:when test="$sId != ''">
+ <xsl:call-template name="calc-scope-const-from-id">
+ <xsl:with-param name="sId" select="$sId"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>expected remark child or id attribute.</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Turns a @id into a scope constant.
+ Some woodoo taking place here here that chops the everything up to and
+ including the first refentry/@id word from all IDs before turning them into
+ constants (word delimiter '-'). -->
+ <xsl:template name="calc-scope-const-from-id">
+ <xsl:param name="sId" select="@id"/>
+ <xsl:param name="sAncestorId" select="ancestor::refentry/@id"/>
+ <xsl:text>HELP_SCOPE_</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not($sAncestorId)"> <!-- Sanity check. -->
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>calc-scope-const-from-id is invoked without an refentry ancestor with a id. <xsl:call-template name="get-node-path"/> </xsl:message>
+ </xsl:when>
+
+ <xsl:when test="contains($sAncestorId, '-')"> <!-- Multi level command. -->
+ <xsl:variable name="sPrefix" select="concat(substring-before($sAncestorId, '-'), '-')"/>
+ <xsl:if test="not(contains($sId, $sPrefix))">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Expected sId (<xsl:value-of select="$sId"/>) to contain <xsl:value-of select="$sPrefix"/></xsl:message>
+ </xsl:if>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(substring-after($sId, $sPrefix), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise> <!-- Single command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate($sId, '-', '_')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Turns a remark into one or more scope constants. -->
+ <xsl:template name="calc-scope-consts-from-remark">
+ <xsl:param name="sCondition" select="remark/@condition"/>
+ <xsl:variable name="sNormalized" select="concat(normalize-space(translate($sCondition, ',;:|', ' ')), ' ')"/>
+ <xsl:if test="$sNormalized = ' ' or $sNormalized = ''">
+ <xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Empty @condition for help-scope remark.</xsl:message>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="substring-before($sNormalized, ' ') = 'GLOBAL'">
+ <xsl:text>RTMSGREFENTRYSTR_SCOPE_GLOBAL</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>HELP_SCOPE_</xsl:text><xsl:value-of select="substring-before($sNormalized, ' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="calc-scope-const-from-remark-worker">
+ <xsl:with-param name="sList" select="substring-after($sNormalized, ' ')"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="calc-scope-const-from-remark-worker">
+ <xsl:param name="sList"/>
+ <xsl:if test="$sList != ''">
+ <xsl:choose>
+ <xsl:when test="substring-before($sList, ' ') = 'GLOBAL'">
+ <xsl:text>| RTMSGREFENTRYSTR_SCOPE_GLOBAL</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> | HELP_SCOPE_</xsl:text><xsl:value-of select="substring-before($sList, ' ')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="calc-scope-const-from-remark-worker">
+ <xsl:with-param name="sList" select="substring-after($sList, ' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+
+ <!--
+ Calculates and emits indentation list markup.
+ -->
+ <xsl:template name="emit-indentation">
+ <xsl:variable name="iDepth" select="count(ancestor-or-self::*)"/>
+ <xsl:for-each select="ancestor-or-self::*">
+ <xsl:choose>
+
+ <xsl:when test="self::refsect1
+ | self::refsect2
+ | self::refsect3
+ | self::refsynopsisdiv">
+ <xsl:text> </xsl:text>
+ </xsl:when>
+
+ <xsl:when test="self::term">
+ <!-- currently no indent. -->
+ </xsl:when>
+
+ <!-- Evidence here (especially with orderedlist) that doing list by for-each
+ listitem in the template matching the list type would be easier... -->
+ <xsl:when test="self::listitem and parent::itemizedlist and (position() + 1) = $iDepth">
+ <xsl:text> - </xsl:text>
+ </xsl:when>
+
+ <xsl:when test="self::listitem and parent::orderedlist and (position() + 1) = $iDepth">
+ <xsl:variable name="iNumber" select="count(preceding-sibling::listitem) + 1"/>
+ <xsl:if test="$iNumber &lt;= 9">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$iNumber"/>
+ <xsl:text>. </xsl:text>
+ </xsl:when>
+
+ <xsl:when test="self::listitem">
+ <xsl:text> </xsl:text>
+ </xsl:when>
+
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!--
+ Captializes the given text.
+ -->
+ <xsl:template name="capitalize">
+ <xsl:param name="text"/>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($text,1,1)"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring($text,2)"/>
+ </xsl:template>
+
+
+ <!--
+ Debug/Diagnostics: Return the path to the specified node (by default the current).
+ -->
+ <xsl:template name="get-node-path">
+ <xsl:param name="Node" select="."/>
+ <xsl:for-each select="$Node">
+ <xsl:for-each select="ancestor-or-self::node()">
+ <xsl:choose>
+ <xsl:when test="name(.) = ''">
+ <xsl:text>text()</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('/', name(.))"/>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:text>[@id=</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:when test="position() > 1">
+ <xsl:text>[</xsl:text><xsl:value-of select="position()"/><xsl:text>]</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!--
+ Debug/Diagnostics: Return error message prefix.
+ -->
+ <xsl:template name="error-prefix">
+ <xsl:param name="Node" select="."/>
+ <xsl:text>error: </xsl:text>
+ <xsl:call-template name="get-node-path">
+ <xsl:with-param name="Node" select="$Node"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </xsl:template>
+
+ <!--
+ Debug/Diagnostics: Print list of nodes (by default all children of current node).
+ -->
+ <xsl:template name="list-nodes">
+ <xsl:param name="Nodes" select="node()"/>
+ <xsl:for-each select="$Nodes">
+ <xsl:if test="position() != 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="name(.) = ''">
+ <xsl:text>text:text()</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="name(.)"/>
+ <xsl:if test="@id">
+ <xsl:text>[@id=</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>]</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="check-children">
+ <xsl:param name="Node" select="."/>
+ <xsl:param name="UnsupportedNodes" select="*"/>
+ <xsl:param name="SupportedNames" select="'none'"/>
+ <xsl:if test="count($UnsupportedNodes) != 0">
+ <xsl:message terminate="yes">
+ <xsl:call-template name="get-node-path">
+ <xsl:with-param name="Node" select="$Node"/>
+ </xsl:call-template>
+ <!-- -->: error: Only <xsl:value-of select="$SupportedNames"/> are supported as children to <!-- -->
+ <xsl:value-of select="name($Node)"/>
+ <!-- -->
+Unsupported children: <!-- -->
+ <xsl:call-template name="list-nodes">
+ <xsl:with-param name="Nodes" select="$UnsupportedNodes"/>
+ </xsl:call-template>
+ </xsl:message>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-H-help.xsl b/doc/manual/docbook-refentry-to-H-help.xsl
new file mode 100644
index 00000000..7f6285c9
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-H-help.xsl
@@ -0,0 +1,137 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-to-H-help.xsl:
+ XSLT stylesheet for generating command and sub-command
+ constants header for the built-in help.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://xsltsl.org/string"
+ >
+
+ <xsl:import href="string.xsl"/>
+
+ <xsl:output method="text" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+ <xsl:param name="g_sMode" select="not-specified"/>
+
+
+ <!-- Default action, do nothing. -->
+ <xsl:template match="node()|@*"/>
+
+ <!--
+ Generate SCOPE enum for a refentry. We convert the
+ cmdsynopsisdiv/cmdsynopsis IDs into constants.
+ -->
+ <xsl:template match="refentry">
+ <xsl:variable name="RefEntry" select="."/>
+ <xsl:variable name="sRefEntryId" select="@id"/>
+ <xsl:variable name="sBaseNm">
+ <xsl:choose>
+ <xsl:when test="contains($sRefEntryId, '-')"> <!-- Multi level command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(substring-after($sRefEntryId, '-'), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise> <!-- Simple command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate($sRefEntryId, '-', '_')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <!-- Generate subcommand enums and defines -->
+ <xsl:when test="$g_sMode = 'subcmd'">
+ <!-- Start enum type and start off with the refentry id. -->
+ <xsl:text>
+enum
+{
+#define HELP_SCOPE_</xsl:text>
+ <xsl:value-of select="$sBaseNm"/>
+ <xsl:value-of select="substring(' ',1,56 - string-length($sBaseNm) - 11)"/>
+ <xsl:text> RT_BIT_32(HELP_SCOPE_</xsl:text><xsl:value-of select="$sBaseNm"/><xsl:text>_BIT)
+ HELP_SCOPE_</xsl:text><xsl:value-of select="$sBaseNm"/><xsl:text>_BIT = 0</xsl:text>
+
+ <!-- Synopsis IDs -->
+ <xsl:for-each select="./refsynopsisdiv/cmdsynopsis[@id != concat('synopsis-', $sRefEntryId)]">
+ <xsl:variable name="sSubNm">
+ <xsl:text>HELP_SCOPE_</xsl:text>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(substring-after(substring-after(@id, '-'), '-'), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:text>,
+#define </xsl:text>
+ <xsl:value-of select="$sSubNm"/>
+ <xsl:value-of select="substring(' ',1,56 - string-length($sSubNm))"/>
+ <xsl:text> RT_BIT_32(</xsl:text><xsl:value-of select="$sSubNm"/><xsl:text>_BIT)
+ </xsl:text>
+ <xsl:value-of select="$sSubNm"/><xsl:text>_BIT</xsl:text>
+ </xsl:for-each>
+
+ <!-- Add scoping info for refsect1, refsect2 and refsect3 IDs that aren't part of the synopsis. -->
+ <xsl:for-each select=".//refsect1[@id] | .//refsect2[@id] | .//refsect3[@id]">
+ <xsl:variable name="sThisId" select="@id"/>
+ <xsl:if test="not($RefEntry[@id = $sThisId]) and not($RefEntry/refsynopsisdiv/cmdsynopsis[@id = concat('synopsis-', $sThisId)])">
+ <xsl:variable name="sSubNm">
+ <xsl:text>HELP_SCOPE_</xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains($sRefEntryId, '-')"> <!-- Multi level command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(substring-after(@id, '-'), '-', '_')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise> <!-- Simple command. -->
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="translate(@id, '-', '_')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>,
+#define </xsl:text>
+ <xsl:value-of select="$sSubNm"/>
+ <xsl:value-of select="substring(' ',1,56 - string-length($sSubNm))"/>
+ <xsl:text> RT_BIT_32(</xsl:text><xsl:value-of select="$sSubNm"/><xsl:text>_BIT)
+ </xsl:text>
+ <xsl:value-of select="$sSubNm"/><xsl:text>_BIT</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+
+ <!-- Done - complete the enum. -->
+ <xsl:text>,
+ HELP_SCOPE_</xsl:text><xsl:value-of select="$sBaseNm"/><xsl:text>_END
+};
+</xsl:text>
+ </xsl:when>
+
+ <!-- Generate command enum value. -->
+ <xsl:when test="$g_sMode = 'cmd'">
+ <xsl:text> HELP_CMD_</xsl:text><xsl:value-of select="$sBaseNm"/><xsl:text>,
+</xsl:text>
+ </xsl:when>
+
+ <!-- Shouldn't happen. -->
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Bad or missing g_sMode string parameter value.</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-manpage-preprocessing.xsl b/doc/manual/docbook-refentry-to-manpage-preprocessing.xsl
new file mode 100644
index 00000000..811d2da0
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-manpage-preprocessing.xsl
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-to-manpage-preprocessing.xsl:
+ XSLT stylesheet preprocessing remarks elements before
+ turning a refentry (manpage) into a unix manual page and
+ VBoxManage built-in help.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://xsltsl.org/string"
+ >
+
+ <xsl:output method="xml" version="1.0" encoding="utf-8" indent="no"/>
+
+ <!--
+ The default action is to copy everything.
+ -->
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!--
+ Execute synopsis copy remark (avoids duplication for complicated xml).
+ We strip the attributes off it.
+ -->
+ <xsl:template match="remark[@role = 'help-copy-synopsis']">
+ <xsl:choose>
+ <xsl:when test="parent::refsect2"/>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Misplaced remark/@role=help-copy-synopsis element.
+Only supported on: refsect2</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="sSrcId">
+ <xsl:choose>
+ <xsl:when test="@condition"><xsl:value-of select="concat('synopsis-', @condition)"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="concat('synopsis-', ../@id)"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="CmdSynopsis" select="/refentry/refsynopsisdiv/cmdsynopsis[@id = $sSrcId]"/>
+ <xsl:if test="not($CmdSynopsis)">
+ <xsl:message terminate="yes">Could not find any cmdsynopsis with id=<xsl:value-of select="$sSrcId"/> in refsynopsisdiv.</xsl:message>
+ </xsl:if>
+
+ <xsl:element name="cmdsynopsis">
+ <xsl:apply-templates select="$CmdSynopsis/node()"/>
+ </xsl:element>
+
+ </xsl:template>
+
+ <!--
+ Remove bits only intended for the manual.
+ -->
+ <xsl:template match="remark[@role='help-manual']"/>
+
+ <!--
+ Remove remarks without a role.
+ These are used for leaving questions and such while working with the documentation team.
+ -->
+ <xsl:template match="remark[not(@role)]"/>
+
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-manpage.xsl b/doc/manual/docbook-refentry-to-manpage.xsl
new file mode 100644
index 00000000..7310b7fc
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-manpage.xsl
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+ docbook-to-man.xsl:
+ XSLT stylesheet that renders a refentry into a troff manpage.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:import href="manpages/docbook.xsl"/>
+
+ <!--
+ <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+ -->
+
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-manual-overview.xsl b/doc/manual/docbook-refentry-to-manual-overview.xsl
new file mode 100644
index 00000000..36c4ac2d
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-manual-overview.xsl
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-to-manual-sect1.xsl:
+ XSLT stylesheet for nicking the refsynopsisdiv bit of a
+ refentry (manpage) for use in the command overview section
+ in the user manual.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+
+ <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+
+<!-- Base operation is to copy. -->
+<xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+</xsl:template>
+
+<!--
+ The refentry element is the top level one. We only process the
+ refsynopsisdiv sub element within it, since that is all we want.
+ -->
+<xsl:template match="refentry">
+ <xsl:apply-templates select="refsynopsisdiv"/>
+</xsl:template>
+
+<!--
+ Combine all cmdsynopsis lines into a bunch of commands.
+ -->
+<xsl:template match="refsynopsisdiv">
+ <xsl:if test="not(cmdsynopsis)">
+ <xsl:message terminate="yes">What? No cmdsynopsis in the refsynopsisdiv?</xsl:message>
+ </xsl:if>
+ <xsl:element name="cmdsynopsis">
+ <xsl:attribute name="id"><xsl:value-of select="/refentry/@id"/><xsl:text>-overview</xsl:text></xsl:attribute>
+ <xsl:for-each select="cmdsynopsis">
+ <xsl:copy-of select="node()"/>
+ </xsl:for-each>
+ </xsl:element>
+</xsl:template>
+
+<!-- Remove all remarks (for now). -->
+<xsl:template match="remark"/>
+
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook-refentry-to-manual-sect1.xsl b/doc/manual/docbook-refentry-to-manual-sect1.xsl
new file mode 100644
index 00000000..1ee5435e
--- /dev/null
+++ b/doc/manual/docbook-refentry-to-manual-sect1.xsl
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!--
+ docbook-refentry-to-manual-sect1.xsl:
+ XSLT stylesheet for transforming a refentry (manpage)
+ to a sect1 for the user manual.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://xsltsl.org/string"
+ >
+
+ <xsl:import href="string.xsl"/>
+
+ <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ global XSLT variables
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ base operation is to copy.
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+</xsl:template>
+
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<!-- rename refentry to sect1 -->
+<xsl:template match="refentry">
+ <xsl:element name="sect1">
+ <xsl:attribute name="condition">refentry</xsl:attribute>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:element>
+</xsl:template>
+
+<!-- Remove refentryinfo, keeping the title element. -->
+<xsl:template match="refentryinfo">
+ <xsl:if test="./title">
+ <xsl:copy-of select="./title"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- Morph refnamediv into a brief description. -->
+<xsl:template match="refnamediv">
+ <xsl:element name="para">
+ <xsl:call-template name="capitalize">
+ <xsl:with-param name="text" select="normalize-space(./refpurpose)"/>
+ </xsl:call-template>
+ <xsl:text>.</xsl:text>
+ </xsl:element>
+</xsl:template>
+
+<!-- Morph the refsynopsisdiv part into a synopsis section. -->
+<xsl:template match="refsynopsisdiv">
+ <xsl:if test="name(*[1]) != 'cmdsynopsis'"><xsl:message terminate="yes">Expected refsynopsisdiv to start with cmdsynopsis</xsl:message></xsl:if>
+ <xsl:if test="title"><xsl:message terminate="yes">No title element supported in refsynopsisdiv</xsl:message></xsl:if>
+
+ <xsl:element name="sect2">
+ <xsl:attribute name="role">not-in-toc</xsl:attribute>
+ <xsl:attribute name="condition">refsynopsisdiv</xsl:attribute>
+ <xsl:element name="title">
+ <xsl:text>Synopsis</xsl:text>
+ </xsl:element>
+ <xsl:apply-templates />
+ </xsl:element>
+
+</xsl:template>
+
+<!-- refsect1 -> sect2 -->
+<xsl:template match="refsect1">
+ <xsl:if test="not(title)"><xsl:message terminate="yes">refsect1 requires title</xsl:message></xsl:if>
+ <xsl:element name="sect2">
+ <xsl:attribute name="role">not-in-toc</xsl:attribute>
+ <xsl:attribute name="condition">refsect1</xsl:attribute>
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+<!-- refsect2 -> sect3 -->
+<xsl:template match="refsect2">
+ <xsl:if test="not(title)"><xsl:message terminate="yes">refsect2 requires title</xsl:message></xsl:if>
+ <xsl:element name="sect3">
+ <xsl:attribute name="role">not-in-toc</xsl:attribute>
+ <xsl:attribute name="condition">refsect2</xsl:attribute>
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+<!-- refsect3 -> sect4 -->
+<xsl:template match="refsect3">
+ <xsl:if test="not(title)"><xsl:message terminate="yes">refsect3 requires title</xsl:message></xsl:if>
+ <xsl:element name="sect4">
+ <xsl:attribute name="role">not-in-toc</xsl:attribute>
+ <xsl:attribute name="condition">refsect3</xsl:attribute>
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+
+<!-- Remove refmeta. -->
+<xsl:template match="refmeta"/>
+
+<!--
+ remark extensions:
+ -->
+<!-- Default: remove all remarks. -->
+<xsl:template match="remark"/>
+
+<!-- help-manual - stuff that should only be included in the manual. -->
+<xsl:template match="remark[@role = 'help-manual']">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- help-copy-synopsis - used in refsect2 to copy synopsis from the refsynopsisdiv. -->
+<xsl:template match="remark[@role = 'help-copy-synopsis']">
+ <xsl:if test="not(parent::refsect2)">
+ <xsl:message terminate="yes">The help-copy-synopsis remark is only applicable in refsect2.</xsl:message>
+ </xsl:if>
+ <xsl:variable name="sSrcId" select="concat('synopsis-',../@id)"/>
+ <xsl:if test="not(/refentry/refsynopsisdiv/cmdsynopsis[@id = $sSrcId])">
+ <xsl:message terminate="yes">Could not find any cmdsynopsis with id=<xsl:value-of select="$sSrcId"/> in refsynopsisdiv.</xsl:message>
+ </xsl:if>
+ <xsl:element name="cmdsynopsis">
+ <xsl:copy-of select="/refentry/refsynopsisdiv/cmdsynopsis[@id = $sSrcId]/node()"/>
+ </xsl:element>
+</xsl:template>
+
+<!--
+ Captializes the given text.
+ -->
+<xsl:template name="capitalize">
+ <xsl:param name="text"/>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($text,1,1)"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring($text,2)"/>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/docbook2latex.xsl b/doc/manual/docbook2latex.xsl
new file mode 100644
index 00000000..a76f8cbd
--- /dev/null
+++ b/doc/manual/docbook2latex.xsl
@@ -0,0 +1,1275 @@
+<?xml version="1.0"?>
+
+<!--
+ docbook2latex.xslt:
+ translates a DocBook XML source into a LaTeX source file,
+ which can be processed with pdflatex to produce a
+ pretty PDF file.
+
+ Note: In the LaTeX output, this XSLT encodes all quotes
+ with \QUOTE{} commands, which are not defined in this
+ file. This is because XSLT does not support regular
+ expressions natively and therefore it is rather difficult
+ to implement proper "pretty quotes" (different glyphs for
+ opening and closing quotes) in XSLT. The doc/manual/
+ makefile solves this by running sed over the LaTeX source
+ once more, replacing all \QUOTE{} commands with
+ \OQ{} and \CQ{} commands, which _are_ defined to the
+ pretty quotes for English in the LaTeX output generated
+ by this XSLT (see below).
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:str="http://xsltsl.org/string"
+>
+
+ <xsl:import href="string.xsl"/>
+ <xsl:import href="common-formatcfg.xsl"/>
+
+ <xsl:variable name="g_nlsChapter">
+ <xsl:choose>
+ <xsl:when test="$TARGETLANG='de_DE'">Kapitel</xsl:when>
+ <xsl:when test="$TARGETLANG='fr_FR'">chapitre</xsl:when>
+ <xsl:when test="$TARGETLANG='en_US'">chapter</xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:value-of select="concat('Invalid language ', $TARGETLANG)" /></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="g_nlsPage">
+ <xsl:choose>
+ <xsl:when test="$TARGETLANG='de_DE'">auf Seite</xsl:when>
+ <xsl:when test="$TARGETLANG='fr_FR'">page</xsl:when>
+ <xsl:when test="$TARGETLANG='en_US'">page</xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:value-of select="concat('Invalid language ', $TARGETLANG)" /></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="g_nlsNote">
+ <xsl:choose>
+ <xsl:when test="$TARGETLANG='de_DE'">Hinweis</xsl:when>
+ <xsl:when test="$TARGETLANG='fr_FR'">Note</xsl:when>
+ <xsl:when test="$TARGETLANG='en_US'">Note</xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:value-of select="concat('Invalid language ', $TARGETLANG)" /></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="g_nlsWarning">
+ <xsl:choose>
+ <xsl:when test="$TARGETLANG='de_DE'">Warnung</xsl:when>
+ <xsl:when test="$TARGETLANG='fr_FR'">Avertissement</xsl:when>
+ <xsl:when test="$TARGETLANG='en_US'">Warning</xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:value-of select="concat('Invalid language ', $TARGETLANG)" /></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:output method="text"/>
+
+ <xsl:strip-space elements="*"/>
+ <xsl:preserve-space elements="para"/>
+
+ <xsl:template match="/book">
+ <xsl:text>
+\documentclass[oneside,a4paper,10pt,DIV10]{scrbook}
+\usepackage{geometry}
+\geometry{top=3cm,bottom=4cm}
+\usepackage{ucs}
+\usepackage[utf8x]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{tabulary}
+\usepackage[pdftex,
+ a4paper,
+ colorlinks=true,
+ linkcolor=blue,
+ urlcolor=darkgreen,
+ bookmarksnumbered,
+ bookmarksopen=true,
+ bookmarksopenlevel=0,
+ hyperfootnotes=false,
+ plainpages=false,
+ pdfpagelabels
+ ]{hyperref}
+
+\usepackage{nameref}
+\usepackage{graphicx}
+\usepackage{hyperref}
+\usepackage{fancybox}
+\usepackage{alltt}
+\usepackage{color}
+\usepackage{scrextend}
+\definecolor{darkgreen}{rgb}{0,0.6,0}
+\tymin=21pt
+
+</xsl:text>
+ <xsl:if test="$TARGETLANG='de_DE'">\usepackage[ngerman]{babel}&#10;\PrerenderUnicode{ü}</xsl:if>
+<!-- <xsl:if test="$TARGETLANG='fr_FR'">\usepackage[french]{babel}&#10;\FrenchItemizeSpacingfalse&#10;\renewcommand{\FrenchLabelItem}{\textbullet}</xsl:if>
+ this command is no longer understood by TexLive2008
+ -->
+ <xsl:text>
+
+% use Palatino as serif font:
+% \usepackage{mathpazo}
+\usepackage{charter}
+% use Helvetica as sans-serif font:
+\usepackage{helvet}
+
+% use Bera Mono (a variant of Bitstream Vera Mono) as typewriter font
+% (requires texlive-fontsextra)
+\usepackage[scaled]{beramono}
+% previously: use Courier as typewriter font:
+% \usepackage{courier}
+
+\definecolor{colNote}{rgb}{0,0,0}
+\definecolor{colWarning}{rgb}{0,0,0}
+\definecolor{colScreenFrame}{rgb}{0,0,0}
+\definecolor{colScreenText}{rgb}{0,0,0}
+
+% number headings down to this level
+\setcounter{secnumdepth}{3}
+% more space for the section numbers
+\makeatletter
+\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.9em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{4.4em}{3.8em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{8.2em}{3.8em}}
+\renewcommand*\@pnumwidth{1.7em}
+\renewcommand*\@tocrmarg{5.0em}
+\makeatother
+
+% more tolerance at 2nd wrap stage:
+\tolerance = 1000
+% allow 3rd wrap stage:
+\emergencystretch = 10pt
+% no Schusterjungen:
+\clubpenalty = 10000
+% no Hurenkinder:
+\widowpenalty = 10000
+\displaywidowpenalty = 10000
+% max pdf compression:
+\pdfcompresslevel9
+
+% opening and closing quotes: the OQ and CQ macros define this (and the makefile employs some sed magic also)
+</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$TARGETLANG='de_DE'">
+ <xsl:text>\newcommand\OQ{\texorpdfstring{\glqq}{"}}&#10;\newcommand\CQ{\texorpdfstring{\grqq}{"}}&#10;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$TARGETLANG='fr_FR'">
+ <xsl:text>\newcommand\OQ{\texorpdfstring{``}{"}}&#10;\newcommand\CQ{\texorpdfstring{''}{"}}&#10;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$TARGETLANG='en_US'">
+ <xsl:text>\newcommand\OQ{\texorpdfstring{``}{"}}&#10;\newcommand\CQ{\texorpdfstring{''}{"}}&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes"><xsl:value-of select="concat('Invalid language ', $TARGETLANG)" /></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates />
+
+ <xsl:text>
+\end{sloppypar}
+\end{document}
+ </xsl:text>
+
+ </xsl:template>
+
+ <xsl:template match="bookinfo">
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\newcommand\docbookbookinfocopyright{\copyright{} \docbookbookinfocopyrightyear{} \docbookbookinfocopyrightholder{}}&#x0a;
+\author{ \docbooktitleedition \\ %
+\\ %
+</xsl:text>
+ <xsl:if test="//bookinfo/address">
+ <xsl:text>\docbookbookinfoaddress \\ %
+\\ %
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\docbookbookinfocopyright \\ %
+}
+
+\title{\docbooktitle \\
+\docbooksubtitle}
+% \subtitle{\docbooksubtitle}
+\hypersetup{pdfauthor=\docbookcorpauthor}
+\hypersetup{pdftitle=\docbooktitle{} \docbooksubtitle{}}
+
+\hyphenation{da-ta-ba-ses}
+\hyphenation{deb-conf}
+\hyphenation{VirtualBox}
+
+\begin{document}
+% bird/2018-05-14: Use sloppypar so we don't push path names and other long words
+% thru the right margin. TODO: Find better solution? microtype?
+\begin{sloppypar}
+% \maketitle
+%\begin{titlepage}
+\thispagestyle{empty}
+\begin{minipage}{\textwidth}
+\begin{center}
+\includegraphics[width=4cm]{images/vboxlogo.png}
+\end{center}%
+\vspace{10mm}
+
+{\fontsize{40pt}{40pt}\selectfont\rmfamily\bfseries%
+\begin{center}
+\docbooktitle
+\end{center}%
+\vspace{10mm}
+}
+
+{\fontsize{30pt}{30pt}\selectfont\rmfamily\bfseries%
+\begin{center}
+\docbooksubtitle
+\end{center}%
+\vspace{10mm}
+}
+
+{\fontsize{16pt}{20pt}\selectfont\rmfamily%
+\begin{center}
+</xsl:text>
+ <xsl:if test="//bookinfo/othercredit">
+ <xsl:text>\docbookbookinfoothercreditcontrib{}: \docbookbookinfoothercreditfirstname{} \docbookbookinfoothercreditsurname
+
+\vspace{8mm}
+</xsl:text>
+ </xsl:if>
+ <xsl:text>\docbooktitleedition
+
+\vspace{2mm}
+
+\docbookbookinfocopyright
+
+\vspace{2mm}
+
+\docbookbookinfoaddress
+\end{center}%
+}
+
+%\end{titlepage}
+\end{minipage}
+
+\tableofcontents
+ </xsl:text>
+ </xsl:template>
+
+ <xsl:template match="subtitle">
+ <xsl:choose>
+ <xsl:when test="name(..)='bookinfo'">
+ <xsl:text>\newcommand\docbooksubtitle{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Determins the section depth, returning a number 1,2,3,4,5,6,7,... -->
+ <xsl:template name="get-section-level">
+ <xsl:param name="a_Node" select=".."/>
+ <xsl:for-each select="$a_Node"> <!-- makes it current -->
+ <xsl:choose>
+ <xsl:when test="self::sect1"><xsl:text>1</xsl:text></xsl:when>
+ <xsl:when test="self::sect2"><xsl:text>2</xsl:text></xsl:when>
+ <xsl:when test="self::sect3"><xsl:text>3</xsl:text></xsl:when>
+ <xsl:when test="self::sect4"><xsl:text>4</xsl:text></xsl:when>
+ <xsl:when test="self::sect5"><xsl:text>5</xsl:text></xsl:when>
+ <xsl:when test="self::section">
+ <xsl:value-of select="count(ancestor::section) + 1"/>
+ </xsl:when>
+ <xsl:when test="self::simplesect">
+ <xsl:variable name="tmp">
+ <xsl:call-template name="get-section-level">
+ <xsl:with-param name="a_Node" select="parent::*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$tmp + 1"/>
+ </xsl:when>
+ <xsl:when test="self::preface"><xsl:text>0</xsl:text></xsl:when>
+ <xsl:when test="self::chapter"><xsl:text>0</xsl:text></xsl:when>
+ <xsl:when test="self::appendix"><xsl:text>0</xsl:text></xsl:when>
+ <xsl:when test="self::article"><xsl:text>0</xsl:text></xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">get-section-level was called on non-section element: <xsl:value-of select="."/> </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!--
+ Inserts \hypertarget{@id} that can be referenced via the /A "nameddest=@id"
+ command line or #nameddest=@id URL parameter.
+
+ TODO: The placement of the target could be improved on. The raisebox
+ stuff is a crude hack to make it a little more acceptable. -->
+ <xsl:template name="title-wrapper">
+ <xsl:param name="texcmd" select="concat('\',name(..))"/>
+ <xsl:param name="refid" select="../@id"/>
+ <xsl:param name="role" select="../@role"/>
+
+ <xsl:call-template name="xsltprocNewlineOutputHack"/>
+ <xsl:if test="$texcmd='\chapter' and $role='frontmatter'">
+ <xsl:text>\frontmatter&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:if test="$texcmd='\chapter' and ../preceding-sibling::*[1][@role='frontmatter']">
+ <xsl:text>\mainmatter&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$refid">
+ <xsl:text>&#x0a;</xsl:text>
+ <xsl:value-of select="$texcmd"/>
+ <xsl:if test="not(contains($texcmd, '*'))">
+ <xsl:text>[</xsl:text> <!-- for toc -->
+ <xsl:apply-templates />
+ <xsl:text>]</xsl:text>
+ </xsl:if>
+ <xsl:text>{</xsl:text> <!-- for doc -->
+ <xsl:text>\raisebox{\ht\strutbox}{\hypertarget{</xsl:text>
+ <xsl:value-of select="$refid"/>
+ <xsl:text>}{}}</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#x0a;</xsl:text><xsl:value-of select="$texcmd"/><xsl:text>{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="title">
+ <xsl:variable name="refid" select="../@id" />
+ <xsl:choose>
+ <xsl:when test="name(..)='bookinfo'">
+ <xsl:text>\newcommand\docbooktitle{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:when test="name(..)='chapter'">
+ <xsl:call-template name="title-wrapper"/>
+ </xsl:when>
+ <xsl:when test="name(..)='preface'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\chapter</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect1' and ../../@role='frontmatter'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\section*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect1'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\section</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="parent::sect2[@role='not-in-toc'] or parent::refsect1 or (parent::section and count(ancestor::section) = 2)">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subsection*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect2'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subsection</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="parent::sect3[@role='not-in-toc'] or parent::refsect2 or (parent::section and count(ancestor::section) = 3)">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subsubsection*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect3'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subsubsection</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="parent::sect4[@role='not-in-toc'] or parent::refsect3 or (parent::section and count(ancestor::section) = 4)">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\paragraph*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect4'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\paragraph</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="parent::sect5[@role='not-in-toc'] or parent::refsect4 or (parent::section and count(ancestor::section) = 5)">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subparagraph*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='sect5'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\subparagraph</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='appendix'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\chapter</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(..)='glossdiv'">
+ <xsl:call-template name="title-wrapper">
+ <xsl:with-param name="texcmd">\section*</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="parent::simplesect">
+ <xsl:if test="../@role">
+ <xsl:message terminate="yes">Role not allowed with simplesect: <xsl:value-of select="../@role"/></xsl:message>
+ </xsl:if>
+ <xsl:variable name="level">
+ <xsl:call-template name="get-section-level">
+ <xsl:with-param name="a_Node" select=".."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$level = 1">
+ <xsl:call-template name="title-wrapper"><xsl:with-param name="texcmd">\section*</xsl:with-param></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$level = 2">
+ <xsl:call-template name="title-wrapper"><xsl:with-param name="texcmd">\subsection*</xsl:with-param></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$level = 3">
+ <xsl:call-template name="title-wrapper"><xsl:with-param name="texcmd">\subsubsection*</xsl:with-param></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$level = 4">
+ <xsl:call-template name="title-wrapper"><xsl:with-param name="texcmd">\paragraph*</xsl:with-param></xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$level = 5">
+ <xsl:call-template name="title-wrapper"><xsl:with-param name="texcmd">\subparagraph*</xsl:with-param></xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Unsupported simplesect/title depth: <xsl:value-of select="$level"/></xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ </xsl:choose>
+ <xsl:if test="$refid">
+ <xsl:value-of select="concat('&#x0a;\label{', $refid, '}')" />
+ </xsl:if>
+ <xsl:text>&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="edition">
+ <xsl:choose>
+ <xsl:when test="name(..)='bookinfo'">
+ <xsl:text>\newcommand\docbooktitleedition{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="corpauthor">
+ <xsl:choose>
+ <xsl:when test="name(..)='bookinfo'">
+ <xsl:text>\newcommand\docbookcorpauthor{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="address">
+ <xsl:choose>
+ <xsl:when test="name(..)='bookinfo'">
+ <xsl:text>\newcommand\docbookbookinfoaddress{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="year">
+ <xsl:choose>
+ <xsl:when test="name(..)='copyright'">
+ <xsl:text>\newcommand\docbookbookinfocopyrightyear{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="holder">
+ <xsl:choose>
+ <xsl:when test="name(..)='copyright'">
+ <xsl:text>\newcommand\docbookbookinfocopyrightholder{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="firstname">
+ <xsl:choose>
+ <xsl:when test="name(..)='othercredit'">
+ <xsl:text>\newcommand\docbookbookinfoothercreditfirstname{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="surname">
+ <xsl:choose>
+ <xsl:when test="name(..)='othercredit'">
+ <xsl:text>\newcommand\docbookbookinfoothercreditsurname{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="contrib">
+ <xsl:choose>
+ <xsl:when test="name(..)='othercredit'">
+ <xsl:text>\newcommand\docbookbookinfoothercreditcontrib{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}&#x0a;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="glossary">
+ <xsl:text>&#x0a;&#x0a;\backmatter&#x0a;\chapter{Glossary}&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <xsl:template match="para">
+ <xsl:if test="not(name(..)='footnote' or name(..)='note' or name(..)='warning' or name(..)='entry' or (name(../..)='varlistentry' and position()=1))">
+ <xsl:text>&#x0a;&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <xsl:template match="note">
+ <xsl:value-of select="concat('&#x0a;&#x0a;\vspace{.2cm}&#x0a;&#x0a;\begin{center}\fbox{\begin{minipage}[c]{0.9\textwidth}\color{colNote}\textbf{', $g_nlsNote, ':} ')" />
+ <xsl:apply-templates />
+ <xsl:text>\end{minipage}}\end{center}&#x0a;&#x0a;\vspace{.2cm}&#x0a;&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="warning">
+ <xsl:value-of select="concat('&#x0a;&#x0a;\vspace{.2cm}&#x0a;&#x0a;\begin{center}\fbox{\begin{minipage}[c]{0.9\textwidth}\color{colWarning}\textbf{', $g_nlsWarning, ':} ')" />
+ <xsl:apply-templates />
+ <xsl:text>\end{minipage}}\end{center}&#x0a;&#x0a;\vspace{.2cm}&#x0a;&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="screen">
+ <xsl:text>&#x0a;&#x0a;{\footnotesize\begin{alltt}&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{alltt}}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="programlisting">
+ <xsl:text>&#x0a;&#x0a;{\small\begin{alltt}&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{alltt}}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="footnote">
+ <xsl:text>\footnote{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="tgroup">
+ <xsl:choose>
+ <xsl:when test="@style='verywide'">
+ <xsl:text>&#x0a;&#x0a;{\small\begin{center}&#x0a;\begin{tabulary}{1.1\textwidth}[]</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#x0a;&#x0a;{\small\begin{center}&#x0a;\begin{tabulary}{.9\textwidth}[]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>{</xsl:text>
+ <xsl:choose>
+ <xsl:when test="@cols='1'">
+ <xsl:text>|L|</xsl:text>
+ </xsl:when>
+ <xsl:when test="@cols='2'">
+ <xsl:text>|L|L|</xsl:text>
+ </xsl:when>
+ <xsl:when test="@cols='3'">
+ <xsl:text>|L|L|L|</xsl:text>
+ </xsl:when>
+ <xsl:when test="@cols='4'">
+ <xsl:text>|L|L|L|L|</xsl:text>
+ </xsl:when>
+ <xsl:when test="@cols='5'">
+ <xsl:text>|L|L|L|L|L|</xsl:text>
+ </xsl:when>
+ <xsl:when test="@cols='6'">
+ <xsl:text>|L|L|L|L|L|L|</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Unsupported number of columns (<xsl:value-of select="@cols"/>), fix document or converter</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>}&#x0a;\hline&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{tabulary}&#x0a;\end{center}}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="row">
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\\ \hline&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="entry">
+ <xsl:if test="not(position()=1)">
+ <xsl:text> &amp; </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <xsl:template match="itemizedlist">
+ <xsl:call-template name="xsltprocNewlineOutputHack"/>
+ <xsl:text>&#x0a;\begin{itemize}&#x0a;</xsl:text>
+ <xsl:if test="@spacing = 'compact'">
+ <xsl:text> \setlength{\parskip}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\itemsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\topsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\parsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\partopsep}{0pt}&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{itemize}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="orderedlist">
+ <xsl:call-template name="xsltprocNewlineOutputHack"/>
+ <xsl:text>&#x0a;\begin{enumerate}&#x0a;</xsl:text>
+ <xsl:if test="@spacing = 'compact'">
+ <xsl:text> \setlength{\parskip}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\itemsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\topsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\parsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\partopsep}{0pt}&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{enumerate}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="variablelist">
+ <xsl:call-template name="xsltprocNewlineOutputHack"/>
+ <xsl:text>&#x0a;\begin{description}&#x0a;</xsl:text>
+ <xsl:if test="@spacing = 'compact'">
+ <xsl:text> \setlength{\parskip}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\itemsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\topsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\parsep}{0pt}&#x0a;</xsl:text>
+ <xsl:text> \setlength{\partopsep}{0pt}&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{description}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="varlistentry">
+ <xsl:if test="not(./term) or not(./listitem) or count(./listitem) != 1">
+ <xsl:message terminate="yes">Expected at least one term and one listitem element in the varlistentry.</xsl:message>
+ </xsl:if>
+ <xsl:text>&#x0a;&#x0a;\item[{\parbox[t]{\linewidth}{\raggedright </xsl:text>
+ <xsl:apply-templates select="./term[1]"/>
+ <xsl:for-each select="./term[position() > 1]">
+ <xsl:text>\\&#x0a; </xsl:text>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ <xsl:text>}}] \hfill \\&#x0a;</xsl:text>
+ <xsl:apply-templates select="listitem/*"/>
+ </xsl:template>
+
+ <xsl:template match="listitem">
+ <xsl:text>&#x0a;&#x0a;\item </xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="glossterm">
+ <xsl:variable name="refid" select="(@id)" />
+ <xsl:if test="$refid">
+ <xsl:value-of select="concat('&#x0a;\label{', $refid, '}')" />
+ </xsl:if>
+ <xsl:text>&#x0a;&#x0a;\item[</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>]</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="glosslist | glossdiv">
+ <xsl:text>&#x0a;&#x0a;\begin{description}&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&#x0a;\end{description}&#x0a;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="superscript">
+ <xsl:variable name="contents">
+ <xsl:apply-templates />
+ </xsl:variable>
+ <xsl:value-of select="concat('\texorpdfstring{\textsuperscript{', $contents, '}}{', $contents, '}')" />
+ </xsl:template>
+
+ <xsl:template match="emphasis">
+ <xsl:choose>
+ <xsl:when test="@role='bold'">
+ <xsl:text>\textbf{</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\textit{</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="computeroutput | code">
+ <xsl:text>\texttt{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="literal | filename">
+ <xsl:text>\texttt{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="citetitle">
+ <xsl:text>\textit{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="lineannotation">
+ <xsl:text>\textit{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="ulink[@url!='' and not(text())]">
+ <xsl:text>\url{</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="ulink[@url!='' and text()]">
+ <xsl:text>\href{</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>}{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="ulink[(@url='' or not(@url)) and text()]">
+ <xsl:text>\url{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="xref">
+ <xsl:choose>
+ <xsl:when test="@endterm">
+ <xsl:value-of select="concat('\hyperref[', @linkend, ']{\mbox{', @endterm, '}}')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($g_nlsChapter, ' \ref{', @linkend, '}, \textit{\nameref{', @linkend, '}}, ', $g_nlsPage, ' \pageref{', @linkend, '}')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="link">
+ <xsl:choose>
+ <xsl:when test="@endterm">
+ <xsl:value-of select="concat('\hyperref[', @linkend, ']{\mbox{', @endterm, '}}')" />
+ </xsl:when>
+ <xsl:when test="./text()">
+ <xsl:value-of select="concat('\hyperref[', @linkend, ']{\mbox{')" />
+ <xsl:apply-templates select="./text()"/>
+ <xsl:value-of select="'}}'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($g_nlsChapter, ' \ref{', @linkend, '}, \textit{\nameref{', @linkend, '}}, ', $g_nlsPage, ' \pageref{', @linkend, '}')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="trademark">
+ <xsl:apply-templates />
+ <xsl:text>\textsuperscript{\textregistered}</xsl:text>
+ </xsl:template>
+
+ <!-- for some reason, DocBook insists of having image data nested this way always:
+ mediaobject -> imageobject -> imagedata
+ but only imagedata is interesting -->
+ <xsl:template match="imagedata">
+ <xsl:if test="@align='center'">
+ <xsl:text>\begin{center}</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="concat('&#x0a;\includegraphics[width=', @width, ']{', @fileref, '}&#x0a;')" />
+ <xsl:apply-templates />
+ <xsl:if test="@align='center'">
+ <xsl:text>\end{center}</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!--
+ Turn the refsynopsisdiv part of a manpage into a named & indented paragraph.
+ -->
+ <xsl:template match="refsynopsisdiv">
+ <xsl:if test="name(*[1]) != 'cmdsynopsis'"><xsl:message terminate="yes">Expected refsynopsisdiv to start with cmdsynopsis</xsl:message></xsl:if>
+ <xsl:if test="title"><xsl:message terminate="yes">No title element supported in refsynopsisdiv</xsl:message></xsl:if>
+ <xsl:call-template name="xsltprocNewlineOutputHack"/>
+ <xsl:text>&#x0a;\subsection*{Synopsis}</xsl:text>
+ <xsl:if test="name(*[1]) != 'cmdsynopsis'"> <!-- just in case -->
+ <xsl:text>\hfill \\&#x0a;</xsl:text>
+ </xsl:if>
+ <xsl:text>&#x0a;</xsl:text>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <!--
+ The refsect1 is used for 'Description' and such. Do same as with refsynopsisdiv
+ and turn it into a named & indented paragraph.
+ -->
+ <xsl:template match="refsect1">
+ <xsl:if test="name(*[1]) != 'title' or count(title) != 1">
+ <xsl:message terminate="yes">Expected exactly one title as the first refsect1 element (remarks goes after title!).</xsl:message>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <!--
+ The refsect2 element will be turned into a subparagraph if it has a title,
+ however, that didn't work out when it didn't have a title and started with
+ a cmdsynopsis instead (subcommand docs). So, we're doing some trickery
+ here (HACK ALERT) for the non-title case to feign a paragraph.
+ -->
+ <xsl:template match="refsect2">
+ <xsl:if test="name(*[1]) != 'title' or count(title) != 1">
+ <xsl:message terminate="yes">Expected exactly one title as the first refsect2 element (remarks goes after title!).</xsl:message>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:text>&#x0a;</xsl:text>
+ </xsl:template>
+
+
+ <!--
+ Command Synopsis elements.
+
+ We treat each command element inside a cmdsynopsis as the start of
+ a new paragraph. The DocBook HTML converter does so too, but the
+ manpage one doesn't.
+
+ sbr and linebreaks made by latex should be indented from the base
+ command level. This is done by the \hangindent3em\hangafter1 bits.
+
+ We exploit the default paragraph indentation to get each command
+ indented from the left margin. This, unfortunately, doesn't work
+ if we're the first paragraph in a (sub*)section. \noindent cannot
+ counter this due to when latex enforces first paragraph stuff. Since
+ it's tedious to figure out when we're in the first paragraph and when
+ not, we just do \noindent\hspace{1em} everywhere.
+ -->
+ <xsl:template match="sbr">
+ <xsl:if test="not(ancestor::cmdsynopsis)">
+ <xsl:message terminate="yes">sbr only supported inside cmdsynopsis (because of hangindent)</xsl:message>
+ </xsl:if>
+ <xsl:text>\newline</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="refentry|refnamediv|refentryinfo|refmeta|refsect3|refsect4|refsect5|synopfragment|synopfragmentref|cmdsynopsis/info">
+ <xsl:message terminate="yes"><xsl:value-of select="name()"/> is not supported</xsl:message>
+ </xsl:template>
+
+ <xsl:template match="cmdsynopsis">
+ <xsl:if test="preceding-sibling::cmdsynopsis">
+ <xsl:text>\par%cmdsynopsis</xsl:text>
+ </xsl:if>
+ <xsl:text>&#x0a;</xsl:text>
+ <xsl:if test="parent::remark[@role='VBoxManage-overview']">
+ <!-- Overview fontsize trick -->
+ <xsl:text>{\footnotesize</xsl:text>
+ </xsl:if>
+ <xsl:text>\noindent\hspace{1em}</xsl:text>
+ <xsl:text>\hangindent3em\hangafter1\texttt{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ <xsl:if test="following-sibling::*">
+ </xsl:if>
+
+ <!-- For refsect2 subcommand descriptions. -->
+ <xsl:if test="not(following-sibling::cmdsynopsis) and position() != last()">
+ <xsl:text>\linebreak</xsl:text>
+ </xsl:if>
+ <!-- Special overview trick for the current VBoxManage command overview. -->
+ <xsl:if test="parent::remark[@role='VBoxManage-overview']">
+ <xsl:text>}\vspace{1em}</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="command">
+ <xsl:choose>
+ <xsl:when test="ancestor::cmdsynopsis">
+ <!-- Trigger a line break if this isn't the first command in a the synopsis -->
+ <xsl:if test="preceding-sibling::command">
+ <xsl:text>}\par%command&#x0a;</xsl:text>
+ <xsl:text>\noindent\hspace{1em}</xsl:text>
+ <xsl:text>\hangindent3em\hangafter1\texttt{</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\texttt{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="option">
+ <xsl:choose>
+ <xsl:when test="ancestor::cmdsynopsis">
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\texttt{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- duplicated in docbook-refentry-to-C-help.xsl -->
+ <xsl:template match="arg|group">
+ <!-- separator char if we're not the first child -->
+ <xsl:if test="position() > 1">
+ <xsl:choose>
+ <xsl:when test="parent::group"><xsl:value-of select="$arg.or.sep"/></xsl:when>
+ <xsl:when test="ancestor-or-self::*/@sepchar"><xsl:value-of select="ancestor-or-self::*/@sepchar"/></xsl:when>
+ <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- open wrapping -->
+ <xsl:variable name="fWrappers" select="not(ancestor::group)"/>
+ <xsl:if test="$fWrappers">
+ <xsl:choose>
+ <xsl:when test="not(@choice) or @choice = ''"> <xsl:value-of select="$arg.choice.def.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'opt'"> <xsl:value-of select="$arg.choice.opt.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'req'"> <xsl:value-of select="$arg.choice.req.open.str"/></xsl:when>
+ <xsl:when test="@choice = 'plain'"/>
+ <xsl:otherwise><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Invalid arg choice: "<xsl:value-of select="@choice"/>"</xsl:message></xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+
+ <!-- render the arg (TODO: may need to do more work here) -->
+ <xsl:apply-templates />
+
+ <!-- repeat wrapping -->
+ <xsl:choose>
+ <xsl:when test="@rep = 'norepeat' or not(@rep) or @rep = ''"/>
+ <xsl:when test="@rep = 'repeat'"> <xsl:value-of select="$arg.rep.repeat.str"/></xsl:when>
+ <xsl:otherwise><xsl:message terminate="yes"><xsl:call-template name="error-prefix"/>Invalid rep choice: "<xsl:value-of select="@rep"/>"</xsl:message></xsl:otherwise>
+ </xsl:choose>
+
+ <!-- close wrapping -->
+ <xsl:if test="$fWrappers">
+ <xsl:choose>
+ <xsl:when test="not(@choice) or @choice = ''"> <xsl:value-of select="$arg.choice.def.close.str"/></xsl:when>
+ <xsl:when test="@choice = 'opt'"> <xsl:value-of select="$arg.choice.opt.close.str"/></xsl:when>
+ <xsl:when test="@choice = 'req'"> <xsl:value-of select="$arg.choice.req.close.str"/></xsl:when>
+ </xsl:choose>
+ <!-- Add a space padding if we're the last element in a repeating arg or group -->
+ <xsl:if test="(parent::arg or parent::group) and not(following-sibiling)">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="replaceable">
+ <xsl:choose>
+ <xsl:when test="(not(ancestor::cmdsynopsis) and not(ancestor::option) and not(ancestor::screen)) or ancestor::arg">
+ <xsl:text>\texttt{\textit{</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>}}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\textit{&lt;</xsl:text>
+ <xsl:apply-templates />
+ <xsl:text>&gt;}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!--
+ Generic element text magic.
+ -->
+ <xsl:template match="//text()">
+
+ <!-- Do the translation of \ into \textbackslash{} in two steps, to avoid
+ running into replacing {} as well which would be very wrong. -->
+ <xsl:variable name="subst1">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="." />
+ <xsl:with-param name="replace" select="'\'" />
+ <xsl:with-param name="with" select="'\textbackslash'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst2">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst1" />
+ <xsl:with-param name="replace" select="'{'" />
+ <xsl:with-param name="with" select="'\{'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst3">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst2" />
+ <xsl:with-param name="replace" select="'}'" />
+ <xsl:with-param name="with" select="'\}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst4">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst3" />
+ <xsl:with-param name="replace" select="'\textbackslash'" />
+ <xsl:with-param name="with" select="'\textbackslash{}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="(name(..) = 'computeroutput') or (name(../..) = 'computeroutput')
+ or (name(..) = 'code') or (name(../..) = 'code')
+ or (name(..) = 'arg') or (name(../..) = 'arg')
+ or (name(..) = 'option') or (name(../..) = 'option')
+ or (name(..) = 'command') or (name(../..) = 'command')
+ or (name(..) = 'cmdsynopsis') or (name(../..) = 'cmdsynopsis')
+ or (name(..) = 'replaceable') or (name(../..) = 'replaceable')
+ or (name(..) = 'entry') or (name(../..) = 'entry')
+ ">
+ <xsl:variable name="subst5">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="translate(normalize-space(concat('&#x7f;',$subst4,'&#x7f;')),'&#x7f;','')" />
+ <xsl:with-param name="replace" select="'--'" />
+ <xsl:with-param name="with" select="'-{}-'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst6">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst5" />
+ <xsl:with-param name="replace" select="'_'" />
+ <xsl:with-param name="with" select="'\_'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst7">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst6" />
+ <xsl:with-param name="replace" select="'$'" />
+ <xsl:with-param name="with" select="'\$'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst8">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst7" />
+ <xsl:with-param name="replace" select="'%'" />
+ <xsl:with-param name="with" select="'\%'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst9">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst8" />
+ <xsl:with-param name="replace" select="'#'" />
+ <xsl:with-param name="with" select="'\#'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst10">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst9" />
+ <xsl:with-param name="replace" select="'~'" />
+ <xsl:with-param name="with" select="'\textasciitilde{}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst11">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst10" />
+ <xsl:with-param name="replace" select="'&amp;'" />
+ <xsl:with-param name="with" select="'\&amp;'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="parent::arg or parent::command">
+ <xsl:variable name="subst12">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst10" />
+ <xsl:with-param name="replace" select="' '" />
+ <xsl:with-param name="with" select="'~'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$subst12" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$subst11" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="(name(..)='address') or (name(../..)='address')">
+ <xsl:variable name="subst5">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst4" />
+ <xsl:with-param name="replace" select="'&#x0a;'" />
+ <xsl:with-param name="with" select="' \\'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$subst5" />
+ </xsl:when>
+
+ <!-- <screen> and <programlisting>, which work with alltt environment. -->
+ <xsl:otherwise>
+ <xsl:variable name="subst5">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst4" />
+ <xsl:with-param name="replace" select="'_'" />
+ <xsl:with-param name="with" select="'\_'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst6">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst5" />
+ <xsl:with-param name="replace" select="'$'" />
+ <xsl:with-param name="with" select="'\$'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst7">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst6" />
+ <xsl:with-param name="replace" select="'%'" />
+ <xsl:with-param name="with" select="'\%'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst8">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst7" />
+ <xsl:with-param name="replace" select="'#'" />
+ <xsl:with-param name="with" select="'\#'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst9">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst8" />
+ <xsl:with-param name="replace" select="'µ'" />
+ <xsl:with-param name="with" select="'$\mu$'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst10">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst9" />
+ <xsl:with-param name="replace" select="'®'" />
+ <xsl:with-param name="with" select="'\texorpdfstring{\textregistered}{}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="quote">"</xsl:variable>
+ <!-- preparation for pretty quotes: replace all double quotes _outside_ screen
+ sections with "\QUOTE{}" strings, which the makefile will then replace
+ with pretty quotes by invoking sed a few times. Unfortunately there are
+ no regular expressions in XSLT so there's no other way. -->
+ <xsl:variable name="subst11">
+ <xsl:choose>
+ <xsl:when test="(name(..)='screen') or (name(../..)='screen')
+ or (name(..)='programlisting') or (name(../..)='programlisting')
+ ">
+ <xsl:value-of select="$subst10" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst10" />
+ <xsl:with-param name="replace" select="$quote" />
+ <xsl:with-param name="with" select="'\QUOTE{}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="subst12">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst11" />
+ <xsl:with-param name="replace" select="'~'" />
+ <xsl:with-param name="with" select="'\textasciitilde{}'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="subst13">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$subst12" />
+ <xsl:with-param name="replace" select="'&amp;'" />
+ <xsl:with-param name="with" select="'\&amp;'" />
+ <xsl:with-param name="disable-output-escaping" select="no" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$subst13" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ xsltprocNewlineOutputHack - emits a single new line.
+
+ Hack Alert! This template helps xsltproc split up the output text elements
+ and avoid reallocating them into the MB range. Calls to this
+ template is made occationally while generating larger output
+ file. It's not necessary for small stuff like header.
+
+ The trick we're playing on xsltproc has to do with CDATA
+ and/or the escape setting of the xsl:text element. It forces
+ xsltproc to allocate a new output element, thus preventing
+ things from growing out of proportions and slowing us down.
+
+ This was successfully employed to reduce a 18+ seconds run to
+ around one second (possibly less due to kmk overhead).
+ -->
+ <xsl:template name="xsltprocNewlineOutputHack">
+ <xsl:text disable-output-escaping="yes"><![CDATA[
+]]></xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/dummy-sect1.xml b/doc/manual/dummy-sect1.xml
new file mode 100644
index 00000000..39e4f32b
--- /dev/null
+++ b/doc/manual/dummy-sect1.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Dummy for xref-to-text usage. -->
+<sect1>
+ Blah.
+ <xsect2>
+ More blah.
+ </xsect2>
+</sect1>
+
diff --git a/doc/manual/en_US/.scm-settings b/doc/manual/en_US/.scm-settings
new file mode 100644
index 00000000..59a06b6b
--- /dev/null
+++ b/doc/manual/en_US/.scm-settings
@@ -0,0 +1,21 @@
+# $Id: .scm-settings $
+## @file
+# Source code massager settings for the manual.
+#
+
+#
+# Copyright (C) 2010-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+
+/oracle-accessibility-en.xml: --external-copyright --no-strip-trailing-blanks
+/oracle-support-en.xml: --external-copyright --no-strip-trailing-blanks
+
diff --git a/doc/manual/en_US/Accessibility.xml b/doc/manual/en_US/Accessibility.xml
new file mode 100644
index 00000000..2c6efe9a
--- /dev/null
+++ b/doc/manual/en_US/Accessibility.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book 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;
+]>
+
+<book>
+ <bookinfo>
+ <title>&VBOX_PRODUCT;</title>
+
+ <subtitle>Accessibility Reference</subtitle>
+
+ <edition>Version &VBOX_VERSION_STRING;</edition>
+
+ <corpauthor>&VBOX_VENDOR;</corpauthor>
+
+ <address>https://www.virtualbox.org</address>
+
+ <copyright>
+ <year>2016-&VBOX_C_YEAR;</year>
+
+ <holder>&VBOX_VENDOR;</holder>
+ </copyright>
+ </bookinfo>
+
+ <chapter>
+ <title>Introduction</title>
+ <para>
+ Welcome to the <emphasis role="bold">VirtualBox Accessibility Support</emphasis> documentation! This document is primarily
+ a reference to help people who are interested in our project accessibility support and will describe how to use VirtualBox
+ user interface step-by-step. Since whole the application navigation will be explained here, this document will also be
+ helpful for those who are not familiar with our product user interface and wish to learn more. It will be written in a bit
+ excessive manner so that many obvious things will be explained too precisely to make it easier to understand by ear for a
+ blind users. The document will be periodically updated with recent changes and test-cases allowing us to more strictly
+ follow the required guidelines and make our product fully accessible.
+ </para>
+ <para>
+ Our application is based on Qt5, a powerful cross-platform library which allows to visualize various user interface ideas
+ the most flexible and native way. This also means that the library we use is responsible for many navigation and
+ accessibility aspects (like fonts, size hints, colors, look&amp;feel patterns and many other things), but not for all of
+ them. Nativity as one of the main ideas of the Qt-based application sometimes brings additional complexity because there is
+ always at least one host which uses unique combination of fonts and colors which breaks accessibility support in an
+ unpredictable way.
+ </para>
+ <para>
+ Independently on platform we are supporting screen-reader applications which can communicate with Qt5 accessibility
+ interface which supports Microsoft Active Accessibility (MSAA), OS X Accessibility, and the Unix/X11 AT-SPI standard.
+ </para>
+ <para>
+ Our application user interface is able to be started in two modes:
+ <itemizedlist>
+ <listitem>
+ <para>
+ First of them is <emphasis role="bold">VirtualBox Manager</emphasis> user interface, the main application window
+ which allows to manage and configure virtual machines and their groups. Besides that, this window provides user with
+ access to various global and machine related tools allowing to administrate some of VirtualBox objects and their
+ settings.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Second application mode is <emphasis role="bold">Virtual Machine</emphasis> user interface, which allows to control
+ virtual machine guest screens as separate application windows. Besides that, this interface allows to access some of
+ machine tools and adjust guest screens up to your needs, by changing their resolution and toggling full-screen,
+ seamless and scaled modes.
+ </para>
+ </listitem>
+ </itemizedlist>
+ But first of all we should start from the <emphasis role="bold">General Concept</emphasis> which is related to whole the
+ GUI and summarizes the navigation and accessibility aspects we are using for whole application.
+ </para>
+ </chapter>
+
+ <chapter>
+ <title>General concept</title>
+ <para>
+ This chapter describes the general navigation and accessibility concept. We should note that not every detail of this
+ concept is already implemented and not every widget in our project already follows that concept. There is still large work
+ to be done in that regard. But in the end whole the project should correspond to this concept.
+ </para>
+ <para>
+ In short, every application window of our project should be navigated using the following approaches:
+ <itemizedlist>
+ <listitem><para>Mouse Navigation</para></listitem>
+ <listitem><para>Keyboard Navigation</para></listitem>
+ <listitem><para>Screen-reader Navigation</para></listitem>
+ </itemizedlist>
+ </para>
+ <sect1>
+ <title>Mouse Navigation</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Each interactable widget can be focused with mouse (if that is not restricted by underlying host OS).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each hovered interactable widget causes own tool-tip to appear.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each tool-tip is given either in imperative mood (ex. "Create new virtual machine") or in short form (ex. "New").
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Short tool-tip form is only used if context is obvious for a user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Tool-tip can contain shortcut mentioned in parentheses.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each hovered menu bar / toolbar action causes own status-tip to appear (if window have status-bar).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each status-tip is given in imperative mood only.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ TBD...
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ <sect1>
+ <title>Keyboard Navigation</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Each interactable widget can be focused with keyboard (if that is not restricted by underlying host OS).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Focusing is possible through tabbing or mnemonic navigation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each button and menu bar / toolbar action can be directly activated with keyboard.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Activation is possible via shortcut or mnemonic.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each shortcut is configurable through application preferences.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mnemonic mentioned above is underlined alphanumeric character which is a part of widget label (if widget has label).
+ Mnemonic being triggered in conjunction with the Alt key.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each mnemonic is unique within the visible part of current application window, there are no collisions.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ TBD...
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ <sect1>
+ <title>Screen-reader Navigation</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Each interactable widget can be focused with screen-reader cursor.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each focused widget have clear name (or full description) in native user language.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each button and menu bar / toolbar action can be directly activated through the screen-reader cursor functionality.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each complex widget which has children (like list, tree, table and similar) is represented as closed group which
+ encapsulates it's children clearly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ While navigating user is able to skip any group without forcing to be entered inside.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each group child can be a group itself with the same rules as above applicable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each text-field can be directly edited through the screen-reader cursor functionality.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ TBD...
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ </chapter>
+</book>
+<!-- vim: set shiftwidth=2 tabstop=2 expandtab: -->
diff --git a/doc/manual/en_US/Makefile.kup b/doc/manual/en_US/Makefile.kup
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/doc/manual/en_US/Makefile.kup
diff --git a/doc/manual/en_US/SDKRef.xml b/doc/manual/en_US/SDKRef.xml
new file mode 100644
index 00000000..d4a221b9
--- /dev/null
+++ b/doc/manual/en_US/SDKRef.xml
@@ -0,0 +1,6252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book 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;
+]>
+
+<book>
+ <bookinfo>
+ <title>&VBOX_PRODUCT;</title>
+
+ <subtitle>Programming Guide and Reference</subtitle>
+
+ <edition>Version &VBOX_VERSION_STRING;</edition>
+
+ <corpauthor>&VBOX_VENDOR;</corpauthor>
+
+ <address>http://www.virtualbox.org</address>
+
+ <copyright>
+ <year>2004-&VBOX_C_YEAR;</year>
+
+ <holder>&VBOX_VENDOR;</holder>
+ </copyright>
+ </bookinfo>
+
+ <chapter>
+ <title>Introduction</title>
+
+ <para>VirtualBox comes with comprehensive support for third-party
+ developers. This Software Development Kit (SDK) contains all the
+ documentation and interface files that are needed to write code that
+ interacts with VirtualBox.</para>
+
+ <sect1>
+ <title>Modularity: the building blocks of VirtualBox</title>
+
+ <para>VirtualBox is cleanly separated into several layers, which can be
+ visualized like in the picture below:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vbox-components.png"
+ width="12cm"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>The orange area represents code that runs in kernel mode, the blue
+ area represents userspace code.</para>
+
+ <para>At the bottom of the stack resides the hypervisor -- the core of
+ the virtualization engine, controlling execution of the virtual machines
+ and making sure they do not conflict with each other or whatever the
+ host computer is doing otherwise.</para>
+
+ <para>On top of the hypervisor, additional internal modules provide
+ extra functionality. For example, the RDP server, which can deliver the
+ graphical output of a VM remotely to an RDP client, is a separate module
+ that is only loosely tacked into the virtual graphics device. Live
+ Migration and Resource Monitor are additional modules currently in the
+ process of being added to VirtualBox.</para>
+
+ <para>What is primarily of interest for purposes of the SDK is the API
+ layer block that sits on top of all the previously mentioned blocks.
+ This API, which we call the <emphasis role="bold">"Main API"</emphasis>,
+ exposes the entire feature set of the virtualization engine below. It is
+ completely documented in this SDK Reference -- see <xref
+ linkend="sdkref_classes"/> and <xref linkend="sdkref_enums"/> -- and
+ available to anyone who wishes to control VirtualBox programmatically.
+ We chose the name "Main API" to differentiate it from other programming
+ interfaces of VirtualBox that may be publicly accessible.</para>
+
+ <para>With the Main API, you can create, configure, start, stop and
+ delete virtual machines, retrieve performance statistics about running
+ VMs, configure the VirtualBox installation in general, and more. In
+ fact, internally, the front-end programs
+ <computeroutput>VirtualBox</computeroutput> and
+ <computeroutput>VBoxManage</computeroutput> use nothing but this API as
+ well -- there are no hidden backdoors into the virtualization engine for
+ our own front-ends. This ensures the entire Main API is both
+ well-documented and well-tested. (The same applies to
+ <computeroutput>VBoxHeadless</computeroutput>, which is not shown in the
+ image.)</para>
+ </sect1>
+
+ <sect1 id="webservice-or-com">
+ <title>Two guises of the same "Main API": the web service or
+ COM/XPCOM</title>
+
+ <para>There are several ways in which the Main API can be called by
+ other code:<orderedlist>
+ <listitem>
+ <para>VirtualBox comes with a <emphasis role="bold">web
+ service</emphasis> that maps nearly the entire Main API. The web
+ service ships in a stand-alone executable
+ (<computeroutput>vboxwebsrv</computeroutput>) that, when running,
+ acts as an HTTP server, accepts SOAP connections and processes
+ them.</para>
+
+ <para>Since the entire web service API is publicly described in a
+ web service description file (in WSDL format), you can write
+ client programs that call the web service in any language with a
+ toolkit that understands WSDL. These days, that includes most
+ programming languages that are available: Java, C++, .NET, PHP,
+ Python, Perl and probably many more.</para>
+
+ <para>All of this is explained in detail in subsequent chapters of
+ this book.</para>
+
+ <para>There are two ways in which you can write client code that
+ uses the web service:<orderedlist>
+ <listitem>
+ <para>For Java as well as Python, the SDK contains
+ easy-to-use classes that allow you to use the web service in
+ an object-oriented, straightforward manner. We shall refer
+ to this as the <emphasis role="bold">"object-oriented web
+ service (OOWS)"</emphasis>.</para>
+
+ <para>The OO bindings for Java are described in <xref
+ linkend="javaapi"/>, those for Python in <xref
+ linkend="glue-python-ws"/>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Alternatively, you can use the web service directly,
+ without the object-oriented client layer. We shall refer to
+ this as the <emphasis role="bold">"raw web
+ service"</emphasis>.</para>
+
+ <para>You will then have neither native object orientation
+ nor full type safety, since web services are neither
+ object-oriented nor stateful. However, in this way, you can
+ write client code even in languages for which we do not ship
+ object-oriented client code; all you need is a programming
+ language with a toolkit that can parse WSDL and generate
+ client wrapper code from it.</para>
+
+ <para>We describe this further in <xref
+ linkend="raw-webservice"/>, with samples for Java and
+ Perl.</para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Internally, for portability and easier maintenance, the Main
+ API is implemented using the <emphasis role="bold">Component
+ Object Model (COM), </emphasis> an interprocess mechanism for
+ software components originally introduced by Microsoft for
+ Microsoft Windows. On a Windows host, VirtualBox will use
+ Microsoft COM; on other hosts where COM is not present, it ships
+ with XPCOM, a free software implementation of COM originally
+ created by the Mozilla project for their browsers.</para>
+
+ <para>So, if you are familiar with COM and the C++ programming
+ language (or with any other programming language that can handle
+ COM/XPCOM objects, such as Java, Visual Basic or C#), then you can
+ use the COM/XPCOM API directly. VirtualBox comes with all
+ necessary files and documentation to build fully functional COM
+ applications. For an introduction, please see <xref
+ linkend="api_com"/> below.</para>
+
+ <para>The VirtualBox front-ends (the graphical user interfaces as
+ well as the command line), which are all written in C++, use
+ COM/XPCOM to call the Main API. Technically, the web service is
+ another front-end to this COM API, mapping almost all of it to
+ SOAP clients.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>If you wonder which way to choose, here are a few
+ comparisons:<table>
+ <title>Comparison web service vs. COM/XPCOM</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Web service</emphasis></entry>
+
+ <entry><emphasis role="bold">COM/XPCOM</emphasis></entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Pro:</emphasis> Easy to use with
+ Java and Python with the object-oriented web service;
+ extensive support even with other languages (C++, .NET, PHP,
+ Perl and others)</entry>
+
+ <entry><emphasis role="bold">Con:</emphasis> Usable from
+ languages where COM bridge available (most languages on
+ Windows platform, Python and C++ on other hosts)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Pro:</emphasis> Client can be on
+ remote machine</entry>
+
+ <entry><emphasis role="bold">Con: </emphasis>Client must be on
+ the same host where virtual machine is executed</entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Con: </emphasis>Significant
+ overhead due to XML marshalling over the wire for each method
+ call</entry>
+
+ <entry><emphasis role="bold">Pro: </emphasis>Relatively low
+ invocation overhead</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>In the following chapters, we will describe the different ways in
+ which to program VirtualBox, starting with the method that is easiest to
+ use and then increase complexity as we go along.</para>
+ </sect1>
+
+ <sect1 id="api_soap_intro">
+ <title>About web services in general</title>
+
+ <para>Web services are a particular type of programming interface.
+ Whereas, with "normal" programming, a program calls an application
+ programming interface (API) defined by another program or the operating
+ system and both sides of the interface have to agree on the calling
+ convention and, in most cases, use the same programming language, web
+ services use Internet standards such as HTTP and XML to
+ communicate.<footnote>
+ <para>In some ways, web services promise to deliver the same thing
+ as CORBA and DCOM did years ago. However, while these previous
+ technologies relied on specific binary protocols and thus proved to
+ be difficult to use between diverging platforms, web services
+ circumvent these incompatibilities by using text-only standards like
+ HTTP and XML. On the downside (and, one could say, typical of things
+ related to XML), a lot of standards are involved before a web
+ service can be implemented. Many of the standards invented around
+ XML are used one way or another. As a result, web services are slow
+ and verbose, and the details can be incredibly messy. The relevant
+ standards here are called SOAP and WSDL, where SOAP describes the
+ format of the messages that are exchanged (an XML document wrapped
+ in an HTTP header), and WSDL is an XML format that describes a
+ complete API provided by a web service. WSDL in turn uses XML Schema
+ to describe types, which is not exactly terse either. However, as
+ you will see from the samples provided in this chapter, the
+ VirtualBox web service shields you from these details and is easy to
+ use.</para>
+ </footnote></para>
+
+ <para>In order to successfully use a web service, a number of things are
+ required -- primarily, a web service accepting connections; service
+ descriptions; and then a client that connects to that web service. The
+ connections are governed by the SOAP standard, which describes how
+ messages are to be exchanged between a service and its clients; the
+ service descriptions are governed by WSDL.</para>
+
+ <para>In the case of VirtualBox, this translates into the following
+ three components:<orderedlist>
+ <listitem>
+ <para>The VirtualBox web service (the "server"): this is the
+ <computeroutput>vboxwebsrv</computeroutput> executable shipped
+ with VirtualBox. Once you start this executable (which acts as a
+ HTTP server on a specific TCP/IP port), clients can connect to the
+ web service and thus control a VirtualBox installation.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox also comes with WSDL files that describe the
+ services provided by the web service. You can find these files in
+ the <computeroutput>sdk/bindings/webservice/</computeroutput>
+ directory. These files are understood by the web service toolkits
+ that are shipped with most programming languages and enable you to
+ easily access a web service even if you don't use our
+ object-oriented client layers. VirtualBox is shipped with
+ pregenerated web service glue code for several languages (Python,
+ Perl, Java).</para>
+ </listitem>
+
+ <listitem>
+ <para>A client that connects to the web service in order to
+ control the VirtualBox installation.</para>
+
+ <para>Unless you play with some of the samples shipped with
+ VirtualBox, this needs to be written by you.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1 id="runvboxwebsrv">
+ <title>Running the web service</title>
+
+ <para>The web service ships in an stand-alone executable,
+ <computeroutput>vboxwebsrv</computeroutput>, that, when running, acts as
+ a HTTP server, accepts SOAP connections and processes them -- remotely
+ or from the same machine.<note>
+ <para>The web service executable is not contained with the
+ VirtualBox SDK, but instead ships with the standard VirtualBox
+ binary package for your specific platform. Since the SDK contains
+ only platform-independent text files and documentation, the binaries
+ are instead shipped with the platform-specific packages. For this
+ reason the information how to run it as a service is included in the
+ VirtualBox documentation.</para>
+ </note></para>
+
+ <para>The <computeroutput>vboxwebsrv</computeroutput> program, which
+ implements the web service, is a text-mode (console) program which,
+ after being started, simply runs until it is interrupted with Ctrl-C or
+ a kill command.</para>
+
+ <para>Once the web service is started, it acts as a front-end to the
+ VirtualBox installation of the user account that it is running under. In
+ other words, if the web service is run under the user account of
+ <computeroutput>user1</computeroutput>, it will see and manipulate the
+ virtual machines and other data represented by the VirtualBox data of
+ that user (for example, on a Linux machine, under
+ <computeroutput>/home/user1/.config/VirtualBox</computeroutput>; see the
+ VirtualBox User Manual for details on where this data is stored).</para>
+
+ <sect2 id="vboxwebsrv-ref">
+ <title>Command line options of vboxwebsrv</title>
+
+ <para>The web service supports the following command line
+ options:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>--help</computeroutput> (or
+ <computeroutput>-h</computeroutput>): print a brief summary of
+ command line options.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--background</computeroutput> (or
+ <computeroutput>-b</computeroutput>): run the web service as a
+ background daemon. This option is not supported on Windows
+ hosts.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--host</computeroutput> (or
+ <computeroutput>-H</computeroutput>): This specifies the host to
+ bind to and defaults to "localhost".</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--port</computeroutput> (or
+ <computeroutput>-p</computeroutput>): This specifies which port to
+ bind to on the host and defaults to 18083.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--ssl</computeroutput> (or
+ <computeroutput>-s</computeroutput>): This enables SSL
+ support.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--keyfile</computeroutput> (or
+ <computeroutput>-K</computeroutput>): This specifies the file name
+ containing the server private key and the certificate. This is a
+ mandatory parameter if SSL is enabled.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--passwordfile</computeroutput> (or
+ <computeroutput>-a</computeroutput>): This specifies the file name
+ containing the password for the server private key. If unspecified
+ or an empty string is specified this is interpreted as an empty
+ password (i.e. the private key is not protected by a password). If
+ the file name <computeroutput>-</computeroutput> is specified then
+ then the password is read from the standard input stream, otherwise
+ from the specified file. The user is responsible for appropriate
+ access rights to protect the confidential password.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cacert</computeroutput> (or
+ <computeroutput>-c</computeroutput>): This specifies the file name
+ containing the CA certificate appropriate for the server
+ certificate.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--capath</computeroutput> (or
+ <computeroutput>-C</computeroutput>): This specifies the directory
+ containing several CA certificates appropriate for the server
+ certificate.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--dhfile</computeroutput> (or
+ <computeroutput>-D</computeroutput>): This specifies the file name
+ containing the DH key. Alternatively it can contain the number of
+ bits of the DH key to generate. If left empty, RSA is used.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--randfile</computeroutput> (or
+ <computeroutput>-r</computeroutput>): This specifies the file name
+ containing the seed for the random number generator. If left empty,
+ an operating system specific source of the seed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--timeout</computeroutput> (or
+ <computeroutput>-t</computeroutput>): This specifies the session
+ timeout, in seconds, and defaults to 300 (five minutes). A web
+ service client that has logged on but makes no calls to the web
+ service will automatically be disconnected after the number of
+ seconds specified here, as if it had called the
+ <computeroutput>IWebSessionManager::logoff()</computeroutput>
+ method provided by the web service itself.</para>
+
+ <para>It is normally vital that each web service client call this
+ method, as the web service can accumulate large amounts of memory
+ when running, especially if a web service client does not properly
+ release managed object references. As a result, this timeout value
+ should not be set too high, especially on machines with a high
+ load on the web service, or the web service may eventually deny
+ service.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--check-interval</computeroutput> (or
+ <computeroutput>-i</computeroutput>): This specifies the interval
+ in which the web service checks for timed-out clients, in seconds,
+ and defaults to 5. This normally does not need to be
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--threads</computeroutput> (or
+ <computeroutput>-T</computeroutput>): This specifies the maximum
+ number or worker threads, and defaults to 100. This normally does
+ not need to be changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--keepalive</computeroutput> (or
+ <computeroutput>-k</computeroutput>): This specifies the maximum
+ number of requests which can be sent in one web service connection,
+ and defaults to 100. This normally does not need to be
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--authentication</computeroutput> (or
+ <computeroutput>-A</computeroutput>): This specifies the desired
+ web service authentication method. If the parameter is not
+ specified or the empty string is specified it does not change the
+ authentication method, otherwise it is set to the specified value.
+ Using this parameter is a good measure against accidental
+ misconfiguration, as the web service ensures periodically that it
+ isn't changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--verbose</computeroutput> (or
+ <computeroutput>-v</computeroutput>): Normally, the web service
+ outputs only brief messages to the console each time a request is
+ served. With this option, the web service prints much more detailed
+ data about every request and the COM methods that those requests
+ are mapped to internally, which can be useful for debugging client
+ programs.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--pidfile</computeroutput> (or
+ <computeroutput>-P</computeroutput>): Name of the PID file which is
+ created when the daemon was started.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logfile</computeroutput> (or
+ <computeroutput>-F</computeroutput>)
+ <computeroutput>&lt;file&gt;</computeroutput>: If this is
+ specified, the web service not only prints its output to the
+ console, but also writes it to the specified file. The file is
+ created if it does not exist; if it does exist, new output is
+ appended to it. This is useful if you run the web service
+ unattended and need to debug problems after they have
+ occurred.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logrotate</computeroutput> (or
+ <computeroutput>-R</computeroutput>): Number of old log files to
+ keep, defaults to 10. Log rotation is disabled if set to 0.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logsize</computeroutput> (or
+ <computeroutput>-S</computeroutput>): Maximum size of log file in
+ bytes, defaults to 100MB. Log rotation is triggered if the file
+ grows beyond this limit.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--loginterval</computeroutput> (or
+ <computeroutput>-I</computeroutput>): Maximum time interval to be
+ put in a log file before rotation is triggered, in seconds, and
+ defaults to one day.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="websrv_authenticate">
+ <title>Authenticating at web service logon</title>
+
+ <para>As opposed to the COM/XPCOM variant of the Main API, a client
+ that wants to use the web service must first log on by calling the
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>
+ API that is specific to the
+ web service. Logon is necessary for the web service to be stateful;
+ internally, it maintains a session for each client that connects to
+ it.</para>
+
+ <para>The <computeroutput>IWebsessionManager::logon()</computeroutput>
+ API takes a user name and a password as arguments, which the web
+ service then passes to a customizable authentication plugin that
+ performs the actual authentication.</para>
+
+ <para>For testing purposes, it is recommended that you first disable
+ authentication with this command:
+ <screen>VBoxManage setproperty websrvauthlibrary null</screen></para>
+
+ <para><warning>
+ <para>This will cause all logons to succeed, regardless of user
+ name or password. This should of course not be used in a
+ production environment.</para>
+ </warning>Generally, the mechanism by which clients are
+ authenticated is configurable by way of the
+ <computeroutput>VBoxManage</computeroutput> command:</para>
+
+ <para><screen>VBoxManage setproperty websrvauthlibrary default|null|&lt;library&gt;</screen></para>
+
+ <para>This way you can specify any shared object/dynamic link module
+ that conforms with the specifications for VirtualBox external
+ authentication modules as laid out in section <emphasis
+ role="bold">VRDE authentication</emphasis> of the VirtualBox User
+ Manual; the web service uses the same kind of modules as the
+ VirtualBox VRDE server. For technical details on VirtualBox external
+ authentication modules see <xref linkend="vbox-auth"/></para>
+
+ <para>By default, after installation, the web service uses the
+ VBoxAuth module that ships with VirtualBox. This module uses PAM on
+ Linux hosts to authenticate users. Any valid username/password
+ combination is accepted, it does not have to be the username and
+ password of the user running the web service daemon. Unless
+ <computeroutput>vboxwebsrv</computeroutput> runs as root, PAM
+ authentication can fail, because sometimes the file
+ <computeroutput>/etc/shadow</computeroutput>, which is used by PAM, is
+ not readable. On most Linux distribution PAM uses a suid root helper
+ internally, so make sure you test this before deploying it. One can
+ override this behavior by setting the environment variable
+ <computeroutput>VBOX_PAM_ALLOW_INACTIVE</computeroutput> which will
+ suppress failures when unable to read the shadow password file. Please
+ use this variable carefully, and only if you fully understand what
+ you're doing.</para>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter>
+ <title>Environment-specific notes</title>
+
+ <para>The Main API described in <xref linkend="sdkref_classes"/> and
+ <xref linkend="sdkref_enums"/> is mostly identical in all the supported
+ programming environments which have been briefly mentioned in the
+ introduction of this book. As a result, the Main API's general concepts
+ described in <xref linkend="concepts"/> are the same whether you use the
+ object-oriented web service (OOWS) for JAX-WS or a raw web service
+ connection via, say, Perl, or whether you use C++ COM bindings.</para>
+
+ <para>Some things are different depending on your environment, however.
+ These differences are explained in this chapter.</para>
+
+ <sect1 id="glue">
+ <title>Using the object-oriented web service (OOWS)</title>
+
+ <para>As explained in <xref linkend="webservice-or-com"/>, VirtualBox
+ ships with client-side libraries for Java, Python and PHP that allow you
+ to use the VirtualBox web service in an intuitive, object-oriented way.
+ These libraries shield you from the client-side complications of managed
+ object references and other implementation details that come with the
+ VirtualBox web service. (If you are interested in these complications,
+ have a look at <xref linkend="raw-webservice"/>).</para>
+
+ <para>We recommend that you start your experiments with the VirtualBox
+ web service by using our object-oriented client libraries for JAX-WS, a
+ web service toolkit for Java, which enables you to write code to
+ interact with VirtualBox in the simplest manner possible.</para>
+
+ <para>As "interfaces", "attributes" and "methods" are COM concepts,
+ please read the documentation in <xref linkend="sdkref_classes"/> and
+ <xref linkend="sdkref_enums"/> with the following notes in mind.</para>
+
+ <para>The OOWS bindings attempt to map the Main API as closely as
+ possible to the Java, Python and PHP languages. In other words, objects
+ are objects, interfaces become classes, and you can call methods on
+ objects as you would on local objects.</para>
+
+ <para>The main difference remains with attributes: to read an attribute,
+ call a "getXXX" method, with "XXX" being the attribute name with a
+ capitalized first letter. So when the Main API Reference says that
+ <computeroutput>IMachine</computeroutput> has a "name" attribute (see
+ <link linkend="IMachine__name">IMachine::name</link>), call
+ <computeroutput>getName()</computeroutput> on an IMachine object to
+ obtain a machine's name. Unless the attribute is marked as read-only in
+ the documentation, there will also be a corresponding "set"
+ method.</para>
+
+ <sect2 id="glue-jax-ws">
+ <title>The object-oriented web service for JAX-WS</title>
+
+ <para>JAX-WS is a powerful toolkit by Sun Microsystems to build both
+ server and client code with Java. It is part of Java 6 (JDK 1.6), but
+ can also be obtained separately for Java 5 (JDK 1.5). The VirtualBox
+ SDK comes with precompiled OOWS bindings working with both Java 5 and
+ 6.</para>
+
+ <para>The following sections explain how to get the JAX-WS sample code
+ running and explain a few common practices when using the JAX-WS
+ object-oriented web service.</para>
+
+ <sect3>
+ <title>Preparations</title>
+
+ <para>Since JAX-WS is already integrated into Java 6, no additional
+ preparations are needed for Java 6.</para>
+
+ <para>If you are using Java 5 (JDK 1.5.x), you will first need to
+ download and install an external JAX-WS implementation, as Java 5
+ does not support JAX-WS out of the box; for example, you can
+ download one from here: <ulink
+ url="https://jax-ws.dev.java.net/2.1.4/JAXWS2.1.4-20080502.jar">https://jax-ws.dev.java.net/2.1.4/JAXWS2.1.4-20080502.jar</ulink>.
+ Then perform the installation (<computeroutput>java -jar
+ JAXWS2.1.4-20080502.jar</computeroutput>).</para>
+ </sect3>
+
+ <sect3>
+ <title>Getting started: running the sample code</title>
+
+ <para>To run the OOWS for JAX-WS samples that we ship with the SDK,
+ perform the following steps: <orderedlist>
+ <listitem>
+ <para>Open a terminal and change to the directory where the
+ JAX-WS samples reside.<footnote>
+ <para>In
+ <computeroutput>sdk/bindings/glue/java/</computeroutput>.</para>
+ </footnote> Examine the header of
+ <computeroutput>Makefile</computeroutput> to see if the
+ supplied variables (Java compiler, Java executable) and a few
+ other details match your system settings.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:
+ <screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v
+ argument causes it to log all connections to the terminal.
+ (See <xref linkend="runvboxwebsrv"/> for details on how
+ to run the web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Back in the first terminal and still in the samples
+ directory, to start a simple client example just type:
+ <screen>make run16</screen></para>
+
+ <para>if you're on a Java 6 system; on a Java 5 system, run
+ <computeroutput>make run15</computeroutput> instead.</para>
+
+ <para>This should work on all Unix-like systems such as Linux
+ and Solaris. For Windows systems, use commands similar to what
+ is used in the Makefile.</para>
+
+ <para>This will compile the
+ <computeroutput>clienttest.java</computeroutput> code on the
+ first call and then execute the resulting
+ <computeroutput>clienttest</computeroutput> class to show the
+ locally installed VMs (see below).</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>The <computeroutput>clienttest</computeroutput> sample
+ imitates a few typical command line tasks that
+ <computeroutput>VBoxManage</computeroutput>, VirtualBox's regular
+ command-line front-end, would provide (see the VirtualBox User
+ Manual for details). In particular, you can run:<itemizedlist>
+ <listitem>
+ <para><computeroutput>java clienttest show
+ vms</computeroutput>: show the virtual machines that are
+ registered locally.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>java clienttest list
+ hostinfo</computeroutput>: show various information about the
+ host this VirtualBox installation runs on.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>java clienttest startvm
+ &lt;vmname|uuid&gt;</computeroutput>: start the given virtual
+ machine.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The <computeroutput>clienttest.java</computeroutput> sample
+ code illustrates common basic practices how to use the VirtualBox
+ OOWS for JAX-WS, which we will explain in more detail in the
+ following chapters.</para>
+ </sect3>
+
+ <sect3>
+ <title>Logging on to the web service</title>
+
+ <para>Before a web service client can do anything useful, two
+ objects need to be created, as can be seen in the
+ <computeroutput>clienttest</computeroutput> constructor:<orderedlist>
+ <listitem>
+ <para>An instance of
+ <link linkend="IWebsessionManager">IWebsessionManager</link>,
+ which is an interface provided by the web service to manage
+ "web sessions" -- that is, stateful connections to the web
+ service with persistent objects upon which methods can be
+ invoked.</para>
+
+ <para>In the OOWS for JAX-WS, the IWebsessionManager class
+ must be constructed explicitly, and a URL must be provided in
+ the constructor that specifies where the web service (the
+ server) awaits connections. The code in
+ <computeroutput>clienttest.java</computeroutput> connects to
+ "http://localhost:18083/", which is the default.</para>
+
+ <para>The port number, by default 18083, must match the port
+ number given to the
+ <computeroutput>vboxwebsrv</computeroutput> command line; see
+ <xref linkend="vboxwebsrv-ref"/>.</para>
+ </listitem>
+
+ <listitem>
+ <para>After that, the code calls
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>,
+ which is the first call that actually communicates with the
+ server. This authenticates the client with the web service and
+ returns an instance of
+ <link linkend="IVirtualBox">IVirtualBox</link>,
+ the most fundamental interface of the VirtualBox web service,
+ from which all other functionality can be derived.</para>
+
+ <para>If logon doesn't work, please take another look at <xref
+ linkend="websrv_authenticate"/>.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect3>
+
+ <sect3>
+ <title>Object management</title>
+
+ <para>The current OOWS for JAX-WS has certain memory management
+ related limitations. When you no longer need an object, call its
+ <link linkend="IManagedObjectRef__release">IManagedObjectRef::release()</link>
+ method explicitly, which
+ frees appropriate managed reference, as is required by the raw
+ web service; see <xref linkend="managed-object-references"/> for
+ details. This limitation may be reconsidered in a future version of
+ the VirtualBox SDK.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="glue-python-ws">
+ <title>The object-oriented web service for Python</title>
+
+ <para>VirtualBox comes with two flavors of a Python API: one for web
+ service, discussed here, and one for the COM/XPCOM API discussed in
+ <xref linkend="pycom"/>. The client code is mostly similar, except
+ for the initialization part, so it is up to the application developer
+ to choose the appropriate technology. Moreover, a common Python glue
+ layer exists, abstracting out concrete platform access details, see
+ <xref linkend="glue-python"/>.</para>
+
+ <para>The minimum supported Python version is 2.6.</para>
+
+ <para>As indicated in <xref linkend="webservice-or-com"/>, the
+ COM/XPCOM API gives better performance without the SOAP overhead, and
+ does not require a web server to be running. On the other hand, the
+ COM/XPCOM Python API requires a suitable Python bridge for your Python
+ installation (VirtualBox ships the most important ones for each
+ platform<footnote>
+ <para>On On Mac OS X only the Python versions bundled with the OS
+ are officially supported. This means 2.6 and 2.7 for 10.9 and later.</para>
+ </footnote>). On Windows, you can use the Main API from Python if the
+ Win32 extensions package for Python<footnote>
+ <para>See <ulink
+ url="http://sourceforge.net/project/showfiles.php?group_id=78018">http://sourceforge.net/project/showfiles.php?group_id=78018</ulink>.</para>
+ </footnote> is installed. Versions of Python Win32 extensions earlier
+ than 2.16 are known to have bugs, leading to issues with VirtualBox
+ Python bindings, so please make sure to use latest available Python
+ and Win32 extensions.</para>
+
+ <para>The VirtualBox OOWS for Python relies on the Python ZSI SOAP
+ implementation (see <ulink
+ url="http://pywebsvcs.sourceforge.net/zsi.html">http://pywebsvcs.sourceforge.net/zsi.html</ulink>),
+ which you will need to install locally before trying the examples.
+ Most Linux distributions come with package for ZSI, such as
+ <computeroutput>python-zsi</computeroutput> in Ubuntu.</para>
+
+ <para>To get started, open a terminal and change to the
+ <computeroutput>bindings/glue/python/sample</computeroutput>
+ directory, which contains an example of a simple interactive shell
+ able to control a VirtualBox instance. The shell is written using the
+ API layer, thereby hiding different implementation details, so it is
+ actually an example of code share among XPCOM, MSCOM and web services.
+ If you are interested in how to interact with the web services layer
+ directly, have a look at
+ <computeroutput>install/vboxapi/__init__.py</computeroutput> which
+ contains the glue layer for all target platforms (i.e. XPCOM, MSCOM
+ and web services).</para>
+
+ <para>To start the shell, perform the following commands:
+ <screen>/opt/VirtualBox/vboxwebsrv -t 0
+ # start web service with object autocollection disabled
+export VBOX_PROGRAM_PATH=/opt/VirtualBox
+ # your VirtualBox installation directory
+export VBOX_SDK_PATH=/home/youruser/vbox-sdk
+ # where you've extracted the SDK
+./vboxshell.py -w </screen>
+ See <xref linkend="vboxshell"/> for more
+ details on the shell's functionality. For you, as a VirtualBox
+ application developer, the vboxshell sample could be interesting as an
+ example of how to write code targeting both local and remote cases
+ (COM/XPCOM and SOAP). The common part of the shell is the same -- the
+ only difference is how it interacts with the invocation layer. You can
+ use the <computeroutput>connect</computeroutput> shell command to
+ connect to remote VirtualBox servers; in this case you can skip
+ starting the local web server.</para>
+ </sect2>
+
+ <sect2>
+ <title>The object-oriented web service for PHP</title>
+
+ <para>VirtualBox also comes with object-oriented web service (OOWS)
+ wrappers for PHP5. These wrappers rely on the PHP SOAP
+ Extension<footnote>
+ <para>See
+ <ulink url="https://www.php.net/soap">https://www.php.net/soap</ulink>.</para>
+ </footnote>, which can be installed by configuring PHP with
+ <computeroutput>--enable-soap</computeroutput>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="raw-webservice">
+ <title>Using the raw web service with any language</title>
+
+ <para>The following examples show you how to use the raw web service,
+ without the object-oriented client-side code that was described in the
+ previous chapter.</para>
+
+ <para>Generally, when reading the documentation in <xref
+ linkend="sdkref_classes"/> and <xref linkend="sdkref_enums"/>, due to
+ the limitations of SOAP and WSDL lined out in <xref
+ linkend="rawws-conventions"/>, please have the following notes in
+ mind:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Any COM method call becomes a <emphasis role="bold">plain
+ function call</emphasis> in the raw web service, with the object
+ as an additional first parameter (before the "real" parameters
+ listed in the documentation). So when the documentation says that
+ the <computeroutput>IVirtualBox</computeroutput> interface
+ supports the <computeroutput>createMachine()</computeroutput>
+ method (see
+ <link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>),
+ the web service operation is
+ <computeroutput>IVirtualBox_createMachine(...)</computeroutput>,
+ and a managed object reference to an
+ <computeroutput>IVirtualBox</computeroutput> object must be passed
+ as the first argument.</para>
+ </listitem>
+
+ <listitem>
+ <para>For <emphasis role="bold">attributes</emphasis> in
+ interfaces, there will be at least one "get" function; there will
+ also be a "set" function, unless the attribute is "readonly". The
+ attribute name will be appended to the "get" or "set" prefix, with
+ a capitalized first letter. So, the "version" readonly attribute
+ of the <computeroutput>IVirtualBox</computeroutput> interface can
+ be retrieved by calling
+ <computeroutput>IVirtualBox_getVersion(vbox)</computeroutput>,
+ with <computeroutput>vbox</computeroutput> being the VirtualBox
+ object.</para>
+ </listitem>
+
+ <listitem>
+ <para>Whenever the API documentation says that a method (or an
+ attribute getter) returns an <emphasis
+ role="bold">object</emphasis>, it will returned a managed object
+ reference in the web service instead. As said above, managed
+ object references should be released if the web service client
+ does not log off again immediately!</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para></para>
+
+ <sect2 id="webservice-java-sample">
+ <title>Raw web service example for Java with Axis</title>
+
+ <para>Axis is an older web service toolkit created by the Apache
+ foundation. If your distribution does not have it installed, you can
+ get a binary from <ulink
+ url="http://www.apache.org">http://www.apache.org</ulink>. The
+ following examples assume that you have Axis 1.4 installed.</para>
+
+ <para>The VirtualBox SDK ships with an example for Axis that, again,
+ is called <computeroutput>clienttest.java</computeroutput> and that
+ imitates a few of the commands of
+ <computeroutput>VBoxManage</computeroutput> over the wire.</para>
+
+ <para>Then perform the following steps:<orderedlist>
+ <listitem>
+ <para>Create a working directory somewhere. Under your
+ VirtualBox installation directory, find the
+ <computeroutput>sdk/webservice/samples/java/axis/</computeroutput>
+ directory and copy the file
+ <computeroutput>clienttest.java</computeroutput> to your working
+ directory.</para>
+ </listitem>
+
+ <listitem>
+ <para>Open a terminal in your working directory. Execute the
+ following command:
+ <screen>java org.apache.axis.wsdl.WSDL2Java /path/to/vboxwebService.wsdl</screen></para>
+
+ <para>The <computeroutput>vboxwebService.wsdl</computeroutput>
+ file should be located in the
+ <computeroutput>sdk/webservice/</computeroutput>
+ directory.</para>
+
+ <para>If this fails, your Apache Axis may not be located on your
+ system classpath, and you may have to adjust the CLASSPATH
+ environment variable. Something like this:
+ <screen>export CLASSPATH="/path-to-axis-1_4/lib/*":$CLASSPATH</screen></para>
+
+ <para>Use the directory where the Axis JAR files are located.
+ Mind the quotes so that your shell passes the "*" character to
+ the java executable without expanding. Alternatively, add a
+ corresponding <computeroutput>-classpath</computeroutput>
+ argument to the "java" call above.</para>
+
+ <para>If the command executes successfully, you should see an
+ "org" directory with subdirectories containing Java source files
+ in your working directory. These classes represent the
+ interfaces that the VirtualBox web service offers, as described
+ by the WSDL file.</para>
+
+ <para>This is the bit that makes using web services so
+ attractive to client developers: if a language's toolkit
+ understands WSDL, it can generate large amounts of support code
+ automatically. Clients can then easily use this support code and
+ can be done with just a few lines of code.</para>
+ </listitem>
+
+ <listitem>
+ <para>Next, compile the
+ <computeroutput>clienttest.java</computeroutput>
+ source:<screen>javac clienttest.java </screen></para>
+
+ <para>This should yield a "clienttest.class" file.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:
+ <screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v argument
+ causes it to log all connections to the terminal. (See <xref
+ linkend="runvboxwebsrv"/> for details on how to run the
+ web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Back in the original terminal where you compiled the Java
+ source, run the resulting binary, which will then connect to the
+ web service:<screen>java clienttest</screen></para>
+
+ <para>The client sample will connect to the web service (on
+ localhost, but the code could be changed to connect remotely if
+ the web service was running on a different machine) and make a
+ number of method calls. It will output the version number of
+ your VirtualBox installation and a list of all virtual machines
+ that are currently registered (with a bit of seemingly random
+ data, which will be explained later).</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="raw-webservice-perl">
+ <title>Raw web service example for Perl</title>
+
+ <para>We also ship a small sample for Perl. It uses the SOAP::Lite
+ perl module to communicate with the VirtualBox web service.</para>
+
+ <para>The
+ <computeroutput>sdk/bindings/webservice/perl/lib/</computeroutput>
+ directory contains a pre-generated Perl module that allows for
+ communicating with the web service from Perl. You can generate such a
+ module yourself using the "stubmaker" tool that comes with SOAP::Lite,
+ but since that tool is slow as well as sometimes unreliable, we are
+ shipping a working module with the SDK for your convenience.</para>
+
+ <para>Perform the following steps:<orderedlist>
+ <listitem>
+ <para>If SOAP::Lite is not yet installed on your system, you
+ will need to install the package first. On Debian-based systems,
+ the package is called
+ <computeroutput>libsoap-lite-perl</computeroutput>; on Gentoo,
+ it's <computeroutput>dev-perl/SOAP-Lite</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Open a terminal in the
+ <computeroutput>sdk/bindings/webservice/perl/samples/</computeroutput>
+ directory.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:
+ <screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v argument
+ causes it to log all connections to the terminal. (See <xref
+ linkend="runvboxwebsrv"/> for details on how to run the
+ web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>In the first terminal with the Perl sample, run the
+ clienttest.pl script:
+ <screen>perl -I ../lib clienttest.pl</screen></para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Programming considerations for the raw web service</title>
+
+ <para>If you use the raw web service, you need to keep a number of
+ things in mind, or you will sooner or later run into issues that are
+ not immediately obvious. By contrast, the object-oriented client-side
+ libraries described in <xref linkend="glue"/> take care of these
+ things automatically and thus greatly simplify using the web
+ service.</para>
+
+ <sect3 id="rawws-conventions">
+ <title>Fundamental conventions</title>
+
+ <para>If you are familiar with other web services, you may find the
+ VirtualBox web service to behave a bit differently to accommodate
+ for the fact that VirtualBox web service more or less maps the
+ VirtualBox Main COM API. The following main differences had to be
+ taken care of:<itemizedlist>
+ <listitem>
+ <para>Web services, as expressed by WSDL, are not
+ object-oriented. Even worse, they are normally stateless (or,
+ in web services terminology, "loosely coupled"). Web service
+ operations are entirely procedural, and one cannot normally
+ make assumptions about the state of a web service between
+ function calls.</para>
+
+ <para>In particular, this normally means that you cannot work
+ on objects in one method call that were created by another
+ call.</para>
+ </listitem>
+
+ <listitem>
+ <para>By contrast, the VirtualBox Main API, being expressed in
+ COM, is object-oriented and works entirely on objects, which
+ are grouped into public interfaces, which in turn have
+ attributes and methods associated with them.</para>
+ </listitem>
+ </itemizedlist> For the VirtualBox web service, this results in
+ three fundamental conventions:<orderedlist>
+ <listitem>
+ <para>All <emphasis role="bold">function names</emphasis> in
+ the VirtualBox web service consist of an interface name and a
+ method name, joined together by an underscore. This is because
+ there are only functions ("operations") in WSDL, but no
+ classes, interfaces, or methods.</para>
+
+ <para>In addition, all calls to the VirtualBox web service
+ (except for logon, see below) take a <emphasis
+ role="bold">managed object reference</emphasis> as the first
+ argument, representing the object upon which the underlying
+ method is invoked. (Managed object references are explained in
+ detail below; see <xref
+ linkend="managed-object-references"/>.)</para>
+
+ <para>So, when one would normally code, in the pseudo-code of
+ an object-oriented language, to invoke a method upon an
+ object:<screen>IMachine machine;
+result = machine.getName();</screen></para>
+
+ <para>In the VirtualBox web service, this looks something like
+ this (again, pseudo-code):<screen>IMachineRef machine;
+result = IMachine_getName(machine);</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>To make the web service stateful, and objects persistent
+ between method calls, the VirtualBox web service introduces a
+ <emphasis role="bold">session manager</emphasis> (by way of the
+ <link linkend="IWebsessionManager">IWebsessionManager</link>
+ interface), which manages object references. Any client wishing
+ to interact with the web service must first log on to the
+ session manager and in turn receives a managed object reference
+ to an object that supports the
+ <link linkend="IVirtualBox">IVirtualBox</link>
+ interface (the basic interface in the Main API).</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>In other words, as opposed to other web services, <emphasis
+ role="bold">the VirtualBox web service is both object-oriented and
+ stateful.</emphasis></para>
+ </sect3>
+
+ <sect3>
+ <title>Example: A typical web service client session</title>
+
+ <para>A typical short web service session to retrieve the version
+ number of the VirtualBox web service (to be precise, the underlying
+ Main API version number) looks like this:<orderedlist>
+ <listitem>
+ <para>A client logs on to the web service by calling
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>
+ with a valid user name and password. See
+ <xref linkend="websrv_authenticate"/>
+ for details about how authentication works.</para>
+ </listitem>
+
+ <listitem>
+ <para>On the server side,
+ <computeroutput>vboxwebsrv</computeroutput> creates a session,
+ which persists until the client calls
+ <link linkend="IWebsessionManager__logoff">IWebsessionManager::logoff()</link>
+ or the session times out after a configurable period of
+ inactivity (see <xref linkend="vboxwebsrv-ref"/>).</para>
+
+ <para>For the new session, the web service creates an instance
+ of <link linkend="IVirtualBox">IVirtualBox</link>.
+ This interface is the most central one in the Main API and
+ allows access to all other interfaces, either through
+ attributes or method calls. For example, IVirtualBox contains
+ a list of all virtual machines that are currently registered
+ (as they would be listed on the left side of the VirtualBox
+ main program).</para>
+
+ <para>The web service then creates a managed object reference
+ for this instance of IVirtualBox and returns it to the calling
+ client, which receives it as the return value of the logon
+ call. Something like this:</para>
+
+ <screen>string oVirtualBox;
+oVirtualBox = webservice.IWebsessionManager_logon("user", "pass");</screen>
+
+ <para>(The managed object reference "oVirtualBox" is just a
+ string consisting of digits and dashes. However, it is a
+ string with a meaning and will be checked by the web service.
+ For details, see below. As hinted above,
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>
+ is the <emphasis>only</emphasis> operation provided by the web
+ service which does not take a managed object reference as the
+ first argument!)</para>
+ </listitem>
+
+ <listitem>
+ <para>The VirtualBox Main API documentation says that the
+ <computeroutput>IVirtualBox</computeroutput> interface has a
+ <link linkend="IVirtualBox__version">version</link>
+ attribute, which is a string. For each attribute, there is a
+ "get" and a "set" method in COM, which maps to according
+ operations in the web service. So, to retrieve the "version"
+ attribute of this <computeroutput>IVirtualBox</computeroutput>
+ object, the web service client does this:
+ <screen>string version;
+version = webservice.IVirtualBox_getVersion(oVirtualBox);
+
+print version;</screen></para>
+
+ <para>And it will print
+ "&VBOX_VERSION_MAJOR;.&VBOX_VERSION_MINOR;.&VBOX_VERSION_BUILD;".</para>
+ </listitem>
+
+ <listitem>
+ <para>The web service client calls
+ <link linkend="IWebsessionManager__logoff">IWebsessionManager::logoff()</link>
+ with the VirtualBox managed object reference. This will clean
+ up all allocated resources.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect3>
+
+ <sect3 id="managed-object-references">
+ <title>Managed object references</title>
+
+ <para>To a web service client, a managed object reference looks like
+ a string: two 64-bit hex numbers separated by a dash. This string,
+ however, represents a COM object that "lives" in the web service
+ process. The two 64-bit numbers encoded in the managed object
+ reference represent a session ID (which is the same for all objects
+ in the same web service session, i.e. for all objects after one
+ logon) and a unique object ID within that session.</para>
+
+ <para>Managed object references are created in two
+ situations:<orderedlist>
+ <listitem>
+ <para>When a client logs on, by calling
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>.</para>
+
+ <para>Upon logon, the websession manager creates one instance
+ of <link linkend="IVirtualBox">IVirtualBox</link>,
+ which can be used for directly performing calls to its
+ methods, or used as a parameter for calling some methods of
+ <link linkend="IWebsessionManager">IWebsessionManager</link>.
+ Creating Main API session objects is performed using
+ <link linkend="IWebsessionManager__getSessionObject">IWebsessionManager::getSessionObject()</link>.</para>
+
+ <para>(Technically, there is always only one
+ <link linkend="IVirtualBox">IVirtualBox</link> object, which
+ is shared between all websessions and clients, as it is a COM
+ singleton. However, each session receives its own managed
+ object reference to it.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Whenever a web service clients invokes an operation
+ whose COM implementation creates COM objects.</para>
+
+ <para>For example,
+ <link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>
+ creates a new instance of
+ <link linkend="IMachine">IMachine</link>;
+ the COM object returned by the COM method call is then wrapped
+ into a managed object reference by the web server, and this
+ reference is returned to the web service client.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Internally, in the web service process, each managed object
+ reference is simply a small data structure, containing a COM pointer
+ to the "real" COM object, the web session ID and the object ID. This
+ structure is allocated on creation and stored efficiently in hashes,
+ so that the web service can look up the COM object quickly whenever
+ a web service client wishes to make a method call. The random
+ session ID also ensures that one web service client cannot intercept
+ the objects of another.</para>
+
+ <para>Managed object references are not destroyed automatically and
+ must be released by explicitly calling
+ <link linkend="IManagedObjectRef__release">IManagedObjectRef::release()</link>.
+ This is important, as
+ otherwise hundreds or thousands of managed object references (and
+ corresponding COM objects, which can consume much more memory!) can
+ pile up in the web service process and eventually cause it to deny
+ service.</para>
+
+ <para>To reiterate: The underlying COM object, which the reference
+ points to, is only freed if the managed object reference is
+ released. It is therefore vital that web service clients properly
+ clean up after the managed object references that are returned to
+ them.</para>
+
+ <para>When a web service client calls
+ <link linkend="IWebsessionManager__logoff">IWebsessionManager::logoff()</link>,
+ all managed object references created during the session are
+ automatically freed. For short-lived sessions that do not create a
+ lot of objects, logging off may therefore be sufficient, although it
+ is certainly not "best practice".</para>
+ </sect3>
+
+ <sect3>
+ <title>Some more detail about web service operation</title>
+
+ <sect4 id="soap">
+ <title>SOAP messages</title>
+
+ <para>Whenever a client makes a call to a web service, this
+ involves a complicated procedure internally. These calls are
+ remote procedure calls. Each such procedure call typically
+ consists of two "message" being passed, where each message is a
+ plain-text HTTP request with a standard HTTP header and a special
+ XML document following. This XML document encodes the name of the
+ procedure to call and the argument names and values passed to
+ it.</para>
+
+ <para>To give you an idea of what such a message looks like,
+ assuming that a web service provides a procedure called
+ "SayHello", which takes a string "name" as an argument and returns
+ "Hello" with a space and that name appended, the request message
+ could look like this:</para>
+
+ <para><screen>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;SOAP-ENV:Envelope
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:test="http://test/"&gt;
+&lt;SOAP-ENV:Body&gt;
+ &lt;test:SayHello&gt;
+ &lt;name&gt;Peter&lt;/name&gt;
+ &lt;/test:SayHello&gt;
+ &lt;/SOAP-ENV:Body&gt;
+&lt;/SOAP-ENV:Envelope&gt;</screen>A similar message -- the "response" message
+ -- would be sent back from the web service to the client,
+ containing the return value "Hello Peter".</para>
+
+ <para>Most programming languages provide automatic support to
+ generate such messages whenever code in that programming language
+ makes such a request. In other words, these programming languages
+ allow for writing something like this (in pseudo-C++ code):</para>
+
+ <para><screen>webServiceClass service("localhost", 18083); // server and port
+string result = service.SayHello("Peter"); // invoke remote procedure</screen>
+ and would, for these two pseudo-lines, automatically perform these
+ steps:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>prepare a connection to a web service running on port
+ 18083 of "localhost";</para>
+ </listitem>
+
+ <listitem>
+ <para>for the <computeroutput>SayHello()</computeroutput>
+ function of the web service, generate a SOAP message like in
+ the above example by encoding all arguments of the remote
+ procedure call (which could involve all kinds of type
+ conversions and complex marshalling for arrays and
+ structures);</para>
+ </listitem>
+
+ <listitem>
+ <para>connect to the web service via HTTP and send that
+ message;</para>
+ </listitem>
+
+ <listitem>
+ <para>wait for the web service to send a response
+ message;</para>
+ </listitem>
+
+ <listitem>
+ <para>decode that response message and put the return value
+ of the remote procedure into the "result" variable.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4 id="wsdl">
+ <title>Service descriptions in WSDL</title>
+
+ <para>In the above explanations about SOAP, it was left open how
+ the programming language learns about how to translate function
+ calls in its own syntax into proper SOAP messages. In other words,
+ the programming language needs to know what operations the web
+ service supports and what types of arguments are required for the
+ operation's data in order to be able to properly serialize and
+ deserialize the data to and from the web service. For example, if
+ a web service operation expects a number in "double" floating
+ point format for a particular parameter, the programming language
+ cannot send to it a string instead.</para>
+
+ <para>For this, the Web Service Definition Language (WSDL) was
+ invented, another XML substandard that describes exactly what
+ operations the web service supports and, for each operation, which
+ parameters and types are needed with each request and response
+ message. WSDL descriptions can be incredibly verbose, and one of
+ the few good things that can be said about this standard is that
+ it is indeed supported by most programming languages.</para>
+
+ <para>So, if it is said that a programming language "supports" web
+ services, this typically means that a programming language has
+ support for parsing WSDL files and somehow integrating the remote
+ procedure calls into the native language syntax -- for example,
+ like in the Java sample shown in <xref
+ linkend="webservice-java-sample"/>.</para>
+
+ <para>For details about how programming languages support web
+ services, please refer to the documentation that comes with the
+ individual languages. Here are a few pointers:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>For <emphasis role="bold">C++, </emphasis> among many
+ others, the gSOAP toolkit is a good option. Parts of gSOAP are
+ also used in VirtualBox to implement the VirtualBox web
+ service.</para>
+ </listitem>
+
+ <listitem>
+ <para>For <emphasis role="bold">Java, </emphasis> there are
+ several implementations already described in this document
+ (see <xref linkend="glue-jax-ws"/> and <xref
+ linkend="webservice-java-sample"/>).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Perl</emphasis> supports WSDL via
+ the SOAP::Lite package. This in turn comes with a tool called
+ <computeroutput>stubmaker.pl</computeroutput> that allows you
+ to turn any WSDL file into a Perl package that you can import.
+ (You can also import any WSDL file "live" by having it parsed
+ every time the script runs, but that can take a while.) You
+ can then code (again, assuming the above example):
+ <screen>my $result = servicename-&gt;sayHello("Peter");</screen>
+ </para>
+
+ <para>A sample that uses SOAP::Lite was described in <xref
+ linkend="raw-webservice-perl"/>.</para>
+ </listitem>
+ </orderedlist>
+ </sect4>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="api_com">
+ <title>Using COM/XPCOM directly</title>
+
+ <para>If you do not require <emphasis>remote</emphasis> procedure calls
+ such as those offered by the VirtualBox web service, and if you know
+ Python or C++ as well as COM, you might find it preferable to program
+ VirtualBox's Main API directly via COM.</para>
+
+ <para>COM stands for "Component Object Model" and is a standard
+ originally introduced by Microsoft in the 1990s for Microsoft Windows.
+ It allows for organizing software in an object-oriented way and across
+ processes; code in one process may access objects that live in another
+ process.</para>
+
+ <para>COM has several advantages: it is language-neutral, meaning that
+ even though all of VirtualBox is internally written in C++, programs
+ written in other languages could communicate with it. COM also cleanly
+ separates interface from implementation, so that external programs need
+ not know anything about the messy and complicated details of VirtualBox
+ internals.</para>
+
+ <para>On a Windows host, all parts of VirtualBox will use the COM
+ functionality that is native to Windows. On other hosts (including
+ Linux), VirtualBox comes with a built-in implementation of XPCOM, as
+ originally created by the Mozilla project, which we have enhanced to
+ support interprocess communication on a level comparable to Microsoft
+ COM. Internally, VirtualBox has an abstraction layer that allows the
+ same VirtualBox code to work both with native COM as well as our XPCOM
+ implementation.</para>
+
+ <sect2 id="pycom">
+ <title>Python COM API</title>
+
+ <para>On Windows, Python scripts can use COM and VirtualBox interfaces
+ to control almost all aspects of virtual machine execution. As an
+ example, use the following commands to instantiate the VirtualBox
+ object and start a VM: <screen>
+ vbox = win32com.client.Dispatch("VirtualBox.VirtualBox")
+ session = win32com.client.Dispatch("VirtualBox.Session")
+ mach = vbox.findMachine("uuid or name of machine to start")
+ progress = mach.launchVMProcess(session, "gui", "")
+ progress.waitForCompletion(-1)
+ </screen> Also, see
+ <computeroutput>/bindings/glue/python/samples/vboxshell.py</computeroutput>
+ for more advanced usage scenarious. However, unless you have specific
+ requirements, we strongly recommend to use the generic glue layer
+ described in the next section to access MS COM objects.</para>
+ </sect2>
+
+ <sect2 id="glue-python">
+ <title>Common Python bindings layer</title>
+
+ <para>As different wrappers ultimately provide access to the same
+ underlying API, and to simplify porting and development of Python
+ application using the VirtualBox Main API, we developed a common glue
+ layer that abstracts out most platform-specific details from the
+ application and allows the developer to focus on application logic.
+ The VirtualBox installer automatically sets up this glue layer for the
+ system default Python install. See below for details on how to set up
+ the glue layer if you want to use a different Python
+ installation.</para>
+
+ <para>The minimum supported Python version is 2.6.</para>
+
+ <para>In this layer, the class
+ <computeroutput>VirtualBoxManager</computeroutput> hides most
+ platform-specific details. It can be used to access both the local
+ (COM) and the web service based API. The following code can be used by
+ an application to use the glue layer.</para>
+
+ <screen># This code assumes vboxapi.py from VirtualBox distribution
+# being in PYTHONPATH, or installed system-wide
+from vboxapi import VirtualBoxManager
+
+# This code initializes VirtualBox manager with default style
+# and parameters
+virtualBoxManager = VirtualBoxManager(None, None)
+
+# Alternatively, one can be more verbose, and initialize
+# glue with web service backend, and provide authentication
+# information
+virtualBoxManager = VirtualBoxManager("WEBSERVICE",
+ {'url':'http://myhost.com::18083/',
+ 'user':'me',
+ 'password':'secret'}) </screen>
+
+ <para>We supply the <computeroutput>VirtualBoxManager</computeroutput>
+ constructor with 2 arguments: style and parameters. Style defines
+ which bindings style to use (could be "MSCOM", "XPCOM" or
+ "WEBSERVICE"), and if set to <computeroutput>None</computeroutput>
+ defaults to usable platform bindings (MS COM on Windows, XPCOM on
+ other platforms). The second argument defines parameters, passed to
+ the platform-specific module, as we do in the second example, where we
+ pass username and password to be used to authenticate against the web
+ service.</para>
+
+ <para>After obtaining the
+ <computeroutput>VirtualBoxManager</computeroutput> instance, one can
+ perform operations on the IVirtualBox class. For example, the
+ following code will a start virtual machine by name or ID:</para>
+
+ <screen>from vboxapi import VirtualBoxManager
+mgr = VirtualBoxManager(None, None)
+vbox = mgr.getVirtualBox()
+name = "Linux"
+mach = vbox.findMachine(name)
+session = mgr.getSessionObject(vbox)
+progress = mach.launchVMProcess(session, "gui", "")
+progress.waitForCompletion(-1)
+mgr.closeMachineSession(session)
+ </screen>
+ <para>
+ Following code will print all registered machines and their log
+ folders
+ </para>
+ <screen>from vboxapi import VirtualBoxManager
+mgr = VirtualBoxManager(None, None)
+vbox = mgr.getVirtualBox()
+
+for m in mgr.getArray(vbox, 'machines'):
+ print "Machine '%s' logs in '%s'" %(m.name, m.logFolder)
+ </screen>
+
+ <para>Code above demonstrates cross-platform access to array properties
+ (certain limitations prevent one from using
+ <computeroutput>vbox.machines</computeroutput> to access a list of
+ available virtual machines in case of XPCOM), and a mechanism of
+ uniform session creation and closing
+ (<computeroutput>mgr.getSessionObject()</computeroutput>).</para>
+
+ <para>In case you want to use the glue layer with a different Python
+ installation, use these steps in a shell to add the necessary
+ files:</para>
+
+ <screen> # cd VBOX_INSTALL_PATH/sdk/installer
+ # PYTHON vboxapisetup.py install</screen>
+ </sect2>
+
+ <sect2 id="cppcom">
+ <title>C++ COM API</title>
+
+ <para>C++ is the language that VirtualBox itself is written in, so C++
+ is the most direct way to use the Main API -- but it is not
+ necessarily the easiest, as using COM and XPCOM has its own set of
+ complications.</para>
+
+ <para>VirtualBox ships with sample programs that demonstrate how to
+ use the Main API to implement a number of tasks on your host platform.
+ These samples can be found in the
+ <computeroutput>/bindings/xpcom/samples</computeroutput> directory for
+ Linux, Mac OS X and Solaris and
+ <computeroutput>/bindings/mscom/samples</computeroutput> for Windows.
+ The two samples are actually different, because the one for Windows
+ uses native COM, whereas the other uses our XPCOM implementation, as
+ described above.</para>
+
+ <para>Since COM and XPCOM are conceptually very similar but vary in
+ the implementation details, we have created a "glue" layer that
+ shields COM client code from these differences. All VirtualBox uses is
+ this glue layer, so the same code written once works on both Windows
+ hosts (with native COM) as well as on other hosts (with our XPCOM
+ implementation). It is recommended to always use this glue code
+ instead of using the COM and XPCOM APIs directly, as it is very easy
+ to make your code completely independent from the platform it is
+ running on.<!-- A third sample,
+ <computeroutput>tstVBoxAPIGlue.cpp</computeroutput>, illustrates how to
+ use the glue layer.
+--></para>
+
+ <para>In order to encapsulate platform differences between Microsoft
+ COM and XPCOM, the following items should be kept in mind when using
+ the glue layer:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para><emphasis role="bold">Attribute getters and
+ setters.</emphasis> COM has the notion of "attributes" in
+ interfaces, which roughly compare to C++ member variables in
+ classes. The difference is that for each attribute declared in
+ an interface, COM automatically provides a "get" method to
+ return the attribute's value. Unless the attribute has been
+ marked as "readonly", a "set" attribute is also provided.</para>
+
+ <para>To illustrate, the IVirtualBox interface has a "version"
+ attribute, which is read-only and of the "wstring" type (the
+ standard string type in COM). As a result, you can call the
+ "get" method for this attribute to retrieve the version number
+ of VirtualBox.</para>
+
+ <para>Unfortunately, the implementation differs between COM and
+ XPCOM. Microsoft COM names the "get" method like this:
+ <computeroutput>get_Attribute()</computeroutput>, whereas XPCOM
+ uses this syntax:
+ <computeroutput>GetAttribute()</computeroutput> (and accordingly
+ for "set" methods). To hide these differences, the VirtualBox
+ glue code provides the
+ <computeroutput>COMGETTER(attrib)</computeroutput> and
+ <computeroutput>COMSETTER(attrib)</computeroutput> macros. So,
+ <computeroutput>COMGETTER(version)()</computeroutput> (note, two
+ pairs of brackets) expands to
+ <computeroutput>get_Version()</computeroutput> on Windows and
+ <computeroutput>GetVersion()</computeroutput> on other
+ platforms.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Unicode conversions.</emphasis>
+ While the rest of the modern world has pretty much settled on
+ encoding strings in UTF-8, COM, unfortunately, uses UCS-16
+ encoding. This requires a lot of conversions, in particular
+ between the VirtualBox Main API and the Qt GUI, which, like the
+ rest of Qt, likes to use UTF-8.</para>
+
+ <para>To facilitate these conversions, VirtualBox provides the
+ <computeroutput>com::Bstr</computeroutput> and
+ <computeroutput>com::Utf8Str</computeroutput> classes, which
+ support all kinds of conversions back and forth.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">COM autopointers.</emphasis>
+ Possibly the greatest pain of using COM -- reference counting --
+ is alleviated by the
+ <computeroutput>ComPtr&lt;&gt;</computeroutput> template
+ provided by the <computeroutput>ptr.h</computeroutput> file in
+ the glue layer.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="event-queue">
+ <title>Event queue processing</title>
+
+ <para>Both VirtualBox client programs and frontends should
+ periodically perform processing of the main event queue, and do that
+ on the application's main thread. In case of a typical GUI Windows/Mac
+ OS application this happens automatically in the GUI's dispatch loop.
+ However, for CLI only application, the appropriate actions have to be
+ taken. For C++ applications, the VirtualBox SDK provided glue method
+ <screen>
+ int EventQueue::processEventQueue(uint32_t cMsTimeout)
+ </screen> can be used for both blocking and non-blocking operations.
+ For the Python bindings, a common layer provides the method <screen>
+ VirtualBoxManager.waitForEvents(ms)
+ </screen> with similar semantics.</para>
+
+ <para>Things get somewhat more complicated for situations where an
+ application using VirtualBox cannot directly control the main event
+ loop and the main event queue is separated from the event queue of the
+ programming librarly (for example in case of Qt on Unix platforms). In
+ such a case, the application developer is advised to use a
+ platform/toolkit specific event injection mechanism to force event
+ queue checks either based on periodical timer events delivered to the
+ main thread, or by using custom platform messages to notify the main
+ thread when events are available. See the VBoxSDL and Qt (VirtualBox)
+ frontends as examples.</para>
+ </sect2>
+
+ <sect2 id="vbcom">
+ <title>Visual Basic and Visual Basic Script (VBS) on Windows
+ hosts</title>
+
+ <para>On Windows hosts, one can control some of the VirtualBox Main
+ API functionality from VBS scripts, and pretty much everything from
+ Visual Basic programs.<footnote>
+ <para>The difference results from the way VBS treats COM
+ safearrays, which are used to keep lists in the Main API. VBS
+ expects every array element to be a
+ <computeroutput>VARIANT</computeroutput>, which is too strict a
+ limitation for any high performance API. We may lift this
+ restriction for interface APIs in a future version, or
+ alternatively provide conversion APIs.</para>
+ </footnote></para>
+
+ <para>VBS is scripting language available in any recent Windows
+ environment. As an example, the following VBS code will print
+ VirtualBox version: <screen>
+ set vb = CreateObject("VirtualBox.VirtualBox")
+ Wscript.Echo "VirtualBox version " &amp; vb.version
+ </screen> See
+ <computeroutput>bindings/mscom/vbs/sample/vboxinfo.vbs</computeroutput>
+ for the complete sample.</para>
+
+ <para>Visual Basic is a popular high level language capable of
+ accessing COM objects. The following VB code will iterate over all
+ available virtual machines:<screen>
+ Dim vb As VirtualBox.IVirtualBox
+
+ vb = CreateObject("VirtualBox.VirtualBox")
+ machines = ""
+ For Each m In vb.Machines
+ m = m &amp; " " &amp; m.Name
+ Next
+ </screen> See
+ <computeroutput>bindings/mscom/vb/sample/vboxinfo.vb</computeroutput>
+ for the complete sample.</para>
+ </sect2>
+
+ <sect2 id="cbinding">
+ <title>C binding to VirtualBox API</title>
+
+ <para>The VirtualBox API originally is designed as object oriented,
+ using XPCOM or COM as the middleware, which translates natively to C++.
+ This means that in order to use it from C there needs to be some
+ helper code to bridge the language differences and reduce the
+ differences between platforms.</para>
+
+ <sect3 id="capi_glue">
+ <title>Cross-platform C binding to VirtualBox API</title>
+
+ <para>Starting with version 4.3, VirtualBox offers a C binding
+ which allows using the same C client sources for all platforms,
+ covering Windows, Linux, Mac OS X and Solaris. It is the
+ preferred way to write API clients, even though the old style
+ is still available.</para>
+
+ </sect3>
+
+ <sect3 id="c-gettingstarted">
+ <title>Getting started</title>
+
+ <para>The following sections describe how to use the VirtualBox API
+ in a C program. The necessary files are included in the SDK, in the
+ directories <computeroutput>sdk/bindings/c/include</computeroutput>
+ and <computeroutput>sdk/bindings/c/glue</computeroutput>.</para>
+
+ <para>As part of the SDK, a sample program
+ <computeroutput>tstCAPIGlue.c</computeroutput> is provided in the
+ directory <computeroutput>sdk/bindings/c/samples</computeroutput>
+ which demonstrates
+ using the C binding to initialize the API, get handles for
+ VirtualBox and Session objects, make calls to list and start virtual
+ machines, monitor events, and uninitialize resources when done. The
+ sample program is trying to illustrate all relevant concepts, so it
+ is a great source of detail information. Among many other generally
+ useful code sequences it contains a function which shows how to
+ retrieve error details in C code if they are available from the API
+ call.</para>
+
+ <para>The sample program <computeroutput>tstCAPIGlue</computeroutput>
+ can be built using the provided
+ <computeroutput>Makefile</computeroutput> and can be run without
+ arguments.</para>
+
+ <para>It uses the VBoxCAPIGlue library (source code is in directory
+ <computeroutput>sdk/bindings/c/glue</computeroutput>, to be used in
+ your API client code) to open the C binding layer during runtime,
+ which is preferred to other means as it isolates the code which
+ locates the necessary dynamic library, using a known working way
+ which works on all platforms. If you encounter problems with this
+ glue code in <computeroutput>VBoxCAPIGlue.c</computeroutput>, let the
+ VirtualBox developers know, rather than inventing incompatible
+ solutions.</para>
+
+ <para>The following sections document the important concepts needed
+ to correctly use the C binding, as it is vital for developing API
+ client code which manages memory correctly, updates the reference
+ counters correctly, avoiding crashes and memory leaks. Often API
+ clients need to handle events, so the C API specifics are also
+ described below.</para>
+ </sect3>
+
+ <sect3 id="c-initialization">
+ <title>VirtualBox C API initialization</title>
+
+ <para>Just like in C++, the API and the underlying middleware needs
+ to be initialized before it can be used. The
+ <computeroutput>VBoxCAPI_v4_3.h</computeroutput> header provides the
+ interface to the C binding, but you can alternatively and more
+ conveniently also include
+ <computeroutput>VBoxCAPIGlue.h</computeroutput>,
+ as this avoids the VirtualBox version dependent header file name and
+ makes sure the global variable <code>g_pVBoxFuncs</code> contains a
+ pointer to the structure which contains the helper function pointers.
+ Here's how to initialize the C API:<screen>#include "VBoxCAPIGlue.h"
+...
+IVirtualBoxClient *vboxclient = NULL;
+IVirtualBox *vbox = NULL;
+ISession *session = NULL;
+HRESULT rc;
+ULONG revision;
+
+/*
+ * VBoxCGlueInit() loads the necessary dynamic library, handles errors
+ * (producing an error message hinting what went wrong) and gives you
+ * the pointer to the function table (g_pVBoxFuncs).
+ *
+ * Once you get the function table, then how and which functions
+ * to use is explained below.
+ *
+ * g_pVBoxFuncs-&gt;pfnClientInitialize does all the necessary startup
+ * action and provides us with pointers to an IVirtualBoxClient instance.
+ * It should be matched by a call to g_pVBoxFuncs-&gt;pfnClientUninitialize()
+ * when done.
+ */
+
+if (VBoxCGlueInit())
+{
+ fprintf(stderr, "s: FATAL: VBoxCGlueInit failed: %s\n",
+ argv[0], g_szVBoxErrMsg);
+ return EXIT_FAILURE;
+}
+
+g_pVBoxFuncs-&gt;pfnClientInitialize(NULL, &amp;vboxclient);
+if (!vboxclient)
+{
+ fprintf(stderr, "%s: FATAL: could not get VirtualBoxClient reference\n",
+ argv[0]);
+ return EXIT_FAILURE;
+}</screen></para>
+
+ <para>If <computeroutput>vboxclient</computeroutput> is still
+ <computeroutput>NULL</computeroutput> this means the initializationi
+ failed and the VirtualBox C API cannot be used.</para>
+
+ <para>It is possible to write C applications using multiple threads
+ which all use the VirtualBox API, as long as you're initializing
+ the C API in each thread which your application creates. This is done
+ with <code>g_pVBoxFuncs->pfnClientThreadInitialize()</code> and
+ likewise before the thread is terminated the API must be
+ uninitialized with
+ <code>g_pVBoxFuncs->pfnClientThreadUninitialize()</code>. You don't
+ have to use these functions in worker threads created by COM/XPCOM
+ (which you might observe if your code uses active event handling),
+ everything is initialized correctly already. On Windows the C
+ bindings create a marshaller which supports a wide range of COM
+ threading models, from STA to MTA, so you don't have to worry about
+ these details unless you plan to use active event handlers. See
+ the sample code how to get this to work reliably (in other words
+ think twice if passive event handling isn't the better solution after
+ you looked at the sample code).</para>
+ </sect3>
+
+ <sect3 id="c-invocation">
+ <title>C API attribute and method invocation</title>
+
+ <para>Method invocation is straightforward. It looks pretty much
+ like the C++ way, by using a macro which internally accesses the
+ vtable, and additionally needs to be passed a pointer to the objecti
+ as the first argument to serve as the
+ <computeroutput>this</computeroutput> pointer.</para>
+
+ <para>Using the C binding, all method invocations return a numeric
+ result code of type <code>HRESULT</code> (with a few exceptions
+ which normally are not relevant).</para>
+
+ <para>If an interface is specified as returning an object, a pointer
+ to a pointer to the appropriate object must be passed as the last
+ argument. The method will then store an object pointer in that
+ location.</para>
+
+ <para>Likewise, attributes (properties) can be queried or set using
+ method invocations, using specially named methods. For each
+ attribute there exists a getter method, the name of which is composed
+ of <computeroutput>get_</computeroutput> followed by the capitalized
+ attribute name. Unless the attribute is read-only, an analogous
+ <computeroutput>set_</computeroutput> method exists. Let's apply
+ these rules to get the <computeroutput>IVirtualBox</computeroutput>
+ reference, an <computeroutput>ISession</computeroutput> instance
+ reference and read the
+ <link linkend="IVirtualBox__revision">IVirtualBox::revision</link>
+ attribute:
+ <screen>rc = IVirtualBoxClient_get_VirtualBox(vboxclient, &amp;vbox);
+if (FAILED(rc) || !vbox)
+{
+ PrintErrorInfo(argv[0], "FATAL: could not get VirtualBox reference", rc);
+ return EXIT_FAILURE;
+}
+rc = IVirtualBoxClient_get_Session(vboxclient, &amp;session);
+if (FAILED(rc) || !session)
+{
+ PrintErrorInfo(argv[0], "FATAL: could not get Session reference", rc);
+ return EXIT_FAILURE;
+}
+
+rc = IVirtualBox_get_Revision(vbox, &amp;revision);
+if (SUCCEEDED(rc))
+{
+ printf("Revision: %u\n", revision);
+}</screen></para>
+
+ <para>The convenience macros for calling a method are named by
+ prepending the method name with the interface name (using
+ <code>_</code>as the separator).</para>
+
+ <para>So far only attribute getters were illustrated, but generic
+ method calls are straightforward, too:
+ <screen>IMachine *machine = NULL;
+BSTR vmname = ...;
+...
+/*
+ * Calling IMachine::findMachine(...)
+ */
+rc = IVirtualBox_FindMachine(vbox, vmname, &amp;machine);</screen></para>
+
+ <para>As a more complicated example of a method invocation, let's
+ call
+ <link linkend="IMachine__launchVMProcess">IMachine::launchVMProcess</link>
+ which returns an IProgress object. Note again that the method name is
+ capitalized:
+ <screen>IProgress *progress;
+...
+rc = IMachine_LaunchVMProcess(
+ machine, /* this */
+ session, /* arg 1 */
+ sessionType, /* arg 2 */
+ env, /* arg 3 */
+ &amp;progress /* Out */
+);</screen></para>
+
+ <para>All objects with their methods and attributes are documented
+ in <xref linkend="sdkref_classes"/>.</para>
+ </sect3>
+
+ <sect3 id="c-string-handling">
+ <title>String handling</title>
+
+ <para>When dealing with strings you have to be aware of a string's
+ encoding and ownership.</para>
+
+ <para>Internally, the API uses UTF-16 encoded strings. A set of
+ conversion functions is provided to convert other encodings to and
+ from UTF-16. The type of a UTF-16 character is
+ <computeroutput>BSTR</computeroutput> (or its constant counterpart
+ <computeroutput>CBSTR</computeroutput>), which is an array type,
+ represented by a pointer to the start of the zero-terminated string.
+ There are functions for converting between UTF-8 and UTF-16 strings
+ available through <code>g_pVBoxFuncs</code>:
+ <screen>int (*pfnUtf16ToUtf8)(CBSTR pwszString, char **ppszString);
+int (*pfnUtf8ToUtf16)(const char *pszString, BSTR *ppwszString);</screen></para>
+
+ <para>The ownership of a string determines who is responsible for
+ releasing resources associated with the string. Whenever the API
+ creates a string (essentially for output parameters), ownership is
+ transferred to the caller. To avoid resource leaks, the caller
+ should release resources once the string is no longer needed.
+ There are plenty of examples in the sample code.</para>
+ </sect3>
+
+ <sect3 id="c-safearray">
+ <title>Array handling</title>
+
+ <para>Arrays are handled somewhat similarly to strings, with the
+ additional information of the number of elements in the array. The
+ exact details of string passing depends on the platform middleware
+ (COM/XPCOM), and therefore the C binding offers helper functions to
+ gloss over these differences.</para>
+
+ <para>Passing arrays as input parameters to API methods is usually
+ done by the following sequence, calling a hypothetical
+ <code>IArrayDemo_PassArray</code> API method:
+ <screen>static const ULONG aElements[] = { 1, 2, 3, 4 };
+ULONG cElements = sizeof(aElements) / sizeof(aElements[0]);
+SAFEARRAY *psa = NULL;
+psa = g_pVBoxFuncs->pfnSafeArrayCreateVector(VT_I4, 0, cElements);
+g_pVBoxFuncs->pfnSafeArrayCopyInParamHelper(psa, aElements, sizeof(aElements));
+IArrayDemo_PassArray(pThis, ComSafeArrayAsInParam(psa));
+g_pVBoxFuncs->pfnSafeArrayDestroy(psa);</screen></para>
+
+ <para>Likewise, getting arrays results from output parameters is done
+ using helper functions which manage memory allocations as part of
+ their other functionality:
+ <screen>SAFEARRAY *psa = g_pVBoxFuncs->pfnSafeArrayOutParamAlloc();
+ULONG *pData;
+ULONG cElements;
+IArrayDemo_ReturnArray(pThis, ComSafeArrayAsOutTypeParam(psa, ULONG));
+g_pVBoxFuncs->pfnSafeArrayCopyOutParamHelper((void **)&amp;pData, &amp;cElements, VT_I4, psa);
+g_pVBoxFuncs->pfnSafeArrayDestroy(psa);</screen></para>
+
+ <para>This covers the necessary functionality for all array element
+ types except interface references. These need special helpers to
+ manage the reference counting correctly. The following code snippet
+ gets the list of VMs, and passes the first IMachine reference to
+ another API function (assuming that there is at least one element
+ in the array, to simplify the example):
+ <screen>SAFEARRAY psa = g_pVBoxFuncs->pfnSafeArrayOutParamAlloc();
+IMachine **machines = NULL;
+ULONG machineCnt = 0;
+ULONG i;
+IVirtualBox_get_Machines(virtualBox, ComSafeArrayAsOutIfaceParam(machinesSA, IMachine *));
+g_pVBoxFuncs->pfnSafeArrayCopyOutIfaceParamHelper((IUnknown ***)&amp;machines, &amp;machineCnt, machinesSA);
+g_pVBoxFuncs->pfnSafeArrayDestroy(machinesSA);
+/* Now "machines" contains the IMachine references, and machineCnt the
+ * number of elements in the array. */
+...
+SAFEARRAY *psa = g_pVBoxFuncs->pfnSafeArrayCreateVector(VT_IUNKNOWN, 0, 1);
+g_pVBoxFuncs->pfnSafeArrayCopyInParamHelper(psa, (void *)&amp;machines[0], sizeof(machines[0]));
+IVirtualBox_GetMachineStates(ComSafeArrayAsInParam(psa), ...);
+...
+g_pVBoxFuncs->pfnSafeArrayDestroy(psa);
+for (i = 0; i &lt; machineCnt; ++i)
+{
+ IMachine *machine = machines[i];
+ IMachine_Release(machine);
+}
+free(machines);</screen></para>
+
+ <para>Handling output parameters needs more special effort than
+ input parameters, thus only for the former there are special helpers,
+ and the latter is handled through the generic array support.</para>
+ </sect3>
+
+ <sect3 id="c-eventhandling">
+ <title>Event handling</title>
+
+ <para>The VirtualBox API offers two types of event handling, active
+ and passive, and consequently there is support for both with the
+ C API binding. Active event handling (based on asynchronous
+ callback invocation for event delivery) is more difficult, as it
+ requires the construction of valid C++ objects in C, which is
+ inherently platform and compiler dependent. Passive event handling
+ is much simpler, it relies on an event loop, fetching events and
+ triggering the necessary handlers explicitly in the API client code.
+ Both approaches depend on an event loop to make sure that events
+ get delivered in a timely manner, with differences what exactly needs
+ to be done.</para>
+
+ <para>The C API sample contains code for both event handling styles,
+ and one has to modify the appropriate <code>#define</code> to select
+ which style is actually used by the compiled program. It allows a
+ good comparison between the two variants, and the code sequences are
+ probably worth reusing without much change in other API clients
+ with only minor adaptions.</para>
+
+ <para>Active event handling needs to ensure that the following helper
+ function is called frequently enough in the primary thread:
+ <screen>g_pVBoxFuncs->pfnProcessEventQueue(cTimeoutMS);</screen></para>
+
+ <para>The actual event handler implementation is quite tedious, as
+ it has to implement a complete API interface. Especially on Windows
+ it is a lot of work to implement the complicated
+ <code>IDispatch</code> interface, requiring to load COM type
+ information and using it in the <code>IDispatch</code> method
+ implementation. Overall this is quite tedious compared to passive
+ event handling.</para>
+
+ <para>Passive event handling uses a similar event loop structure,
+ which requires calling the following function in a loop, and
+ processing the returned event appropriately:
+ <screen>rc = IEventSource_GetEvent(pEventSource, pListener, cTimeoutMS, &amp;pEvent);</screen></para>
+
+ <para>After processing the event it needs to be marked as processed
+ with the following method call:
+ <screen>rc = IEventSource_EventProcessed(pEventSource, pListener, pEvent);</screen></para>
+
+ <para>This is vital for vetoable events, as they would be stuck
+ otherwise, waiting whether the veto comes or not. It does not do any
+ harm for other event types, and in the end is cheaper than checking
+ if the event at hand is vetoable or not.</para>
+
+ <para>The general event handling concepts are described in the API
+ specification (see <xref linkend="events"/>), including how to
+ aggregate multiple event sources for processing in one event loop.
+ As mentioned, the sample illustrates the practical aspects of how to
+ use both types of event handling, active and passive, from a C
+ application. Additional hints are in the comments documenting
+ the helper methods in
+ <computeroutput>VBoxCAPI_v4_3.h</computeroutput>. The code complexity
+ of active event handling (and its inherenly platform/compiler
+ specific aspects) should be motivation to use passive event handling
+ whereever possible.</para>
+ </sect3>
+
+ <sect3 id="c-uninitialization">
+ <title>C API uninitialization</title>
+
+ <para>Uninitialization is performed by
+ <computeroutput>g_pVBoxFuncs-&gt;pfnClientUninitialize().</computeroutput>
+ If your program can exit from more than one place, it is a good idea
+ to install this function as an exit handler with Standard C's
+ <computeroutput>atexit()</computeroutput> just after calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnClientInitialize()</computeroutput>
+ , e.g. <screen>#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+
+...
+
+/*
+ * Make sure g_pVBoxFuncs-&gt;pfnClientUninitialize() is called at exit, no
+ * matter if we return from the initial call to main or call exit()
+ * somewhere else. Note that atexit registered functions are not
+ * called upon abnormal termination, i.e. when calling abort() or
+ * signal().
+ */
+
+if (atexit(g_pVBoxFuncs-&gt;pfnClientUninitialize()) != 0) {
+ fprintf(stderr, "failed to register g_pVBoxFuncs-&gt;pfnClientUninitialize()\n");
+ exit(EXIT_FAILURE);
+}</screen></para>
+
+ <para>Another idea would be to write your own <computeroutput>void
+ myexit(int status)</computeroutput> function, calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnClientUninitialize()</computeroutput>
+ followed by the real <computeroutput>exit()</computeroutput>, and
+ use it instead of <computeroutput>exit()</computeroutput> throughout
+ your program and at the end of
+ <computeroutput>main.</computeroutput></para>
+
+ <para>If you expect the program to be terminated by a signal (e.g.
+ user types CTRL-C sending SIGINT) you might want to install a signal
+ handler setting a flag noting that a signal was sent and then
+ calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnClientUninitialize()</computeroutput>
+ later on, <emphasis>not</emphasis> from the handler itself.</para>
+
+ <para>That said, if a client program forgets to call
+ <computeroutput>g_pVBoxFuncs-&gt;pfnClientUninitialize()</computeroutput>
+ before it terminates, there is a mechanism in place which will
+ eventually release references held by the client. On Windows it can
+ take quite a while, in the order of 6-7 minutes.</para>
+ </sect3>
+
+ <sect3 id="c-linking">
+ <title>Compiling and linking</title>
+
+ <para>A program using the C binding has to open the library during
+ runtime using the help of glue code provided and as shown in the
+ example <computeroutput>tstCAPIGlue.c</computeroutput>.
+ Compilation and linking can be achieved with a makefile fragment
+ similar to:<screen># Where is the SDK directory?
+PATH_SDK = ../../..
+CAPI_INC = -I$(PATH_SDK)/bindings/c/include
+ifeq ($(BUILD_PLATFORM),win)
+PLATFORM_INC = -I$(PATH_SDK)/bindings/mscom/include
+PLATFORM_LIB = $(PATH_SDK)/bindings/mscom/lib
+else
+PLATFORM_INC = -I$(PATH_SDK)/bindings/xpcom/include
+PLATFORM_LIB = $(PATH_SDK)/bindings/xpcom/lib
+endif
+GLUE_DIR = $(PATH_SDK)/bindings/c/glue
+GLUE_INC = -I$(GLUE_DIR)
+
+# Compile Glue Library
+VBoxCAPIGlue.o: $(GLUE_DIR)/VBoxCAPIGlue.c
+ $(CC) $(CFLAGS) $(CAPI_INC) $(PLATFORM_INC) $(GLUE_INC) -o $@ -c $&lt;
+
+# Compile interface ID list
+VirtualBox_i.o: $(PLATFORM_LIB)/VirtualBox_i.c
+ $(CC) $(CFLAGS) $(CAPI_INC) $(PLATFORM_INC) $(GLUE_INC) -o $@ -c $&lt;
+
+# Compile program code
+program.o: program.c
+ $(CC) $(CFLAGS) $(CAPI_INC) $(PLATFORM_INC) $(GLUE_INC) -o $@ -c $&lt;
+
+# Link program.
+program: program.o VBoxCAPICGlue.o VirtualBox_i.o
+ $(CC) -o $@ $^ -ldl -lpthread</screen></para>
+ </sect3>
+
+ <sect3 id="capi_conversion">
+ <title>Conversion of code using legacy C binding</title>
+
+ <para>This section aims to make the task of converting code using
+ the legacy C binding to the new style a breeze, by pointing out some
+ key steps.</para>
+
+ <para>One necessary change is adjusting your Makefile to reflect the
+ different include paths. See above. There are now 3 relevant include
+ directories, and most of it is pointing to the C binding directory.
+ The XPCOM include directory is still relevant for platforms where
+ the XPCOM middleware is used, but most of the include files live
+ elsewhere now, so it's good to have it last. Additionally the
+ <computeroutput>VirtualBox_i.c</computeroutput> file needs to be
+ compiled and linked to the program, it contains the IIDs relevant
+ for the VirtualBox API, making sure they are not replicated endlessly
+ if the code refers to them frequently.</para>
+
+ <para>The C API client code should include
+ <computeroutput>VBoxCAPIGlue.h</computeroutput> instead of
+ <computeroutput>VBoxXPCOMCGlue.h</computeroutput> or
+ <computeroutput>VBoxCAPI_v4_3.h</computeroutput>, as this makes sure
+ the correct macros and internal translations are selected.</para>
+
+ <para>All API method calls (anything mentioning <code>vtbl</code>)
+ should be rewritten using the convenience macros for calling methods,
+ as these hide the internal details, are generally easier to use and
+ shorter to type. You should remove as many as possible
+ <code>(nsISupports **)</code> or similar typecasts, as the new style
+ should use the correct type in most places, increasing the type
+ safety in case of an error in the source code.</para>
+
+ <para>To gloss over the platform differences, API client code should
+ no longer rely on XPCOM specific interface names such as
+ <code>nsISupports</code>, <code>nsIException</code> and
+ <code>nsIEventQueue</code>, and replace them by the platform
+ independent interface names <code>IUnknown</code> and
+ <code>IErrorInfo</code> for the first two respectively. Event queue
+ handling should be replaced by using the platform independent way
+ described in <xref linkend="c-eventhandling"/>.</para>
+
+ <para>Finally adjust the string and array handling to use the new
+ helpers, as these make sure the code works without changes with
+ both COM and XPCOM, which are significantly different in this area.
+ The code should be double checked if it uses the correct way to
+ manage memory, and is freeing it only after the last use.</para>
+ </sect3>
+
+ <sect3 id="xpcom_cbinding">
+ <title>Legacy C binding to VirtualBox API for XPCOM</title>
+
+ <note>
+ <para>This section applies to Linux, Mac OS X and Solaris
+ hosts only and describes deprecated use of the API from C.</para>
+ </note>
+
+ <para>Starting with version 2.2, VirtualBox offers a C binding for
+ its API which works only on platforms using XPCOM. Refer to the
+ old SDK documentation (included in the SDK packages for version 4.3.6
+ or earlier), it still applies unchanged. The fundamental concepts are
+ similar (but the syntactical details are quite different) to the
+ newer cross-platform C binding which should be used for all new code,
+ as the support for the old C binding will go away in a major release
+ after version 4.3.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter id="concepts">
+ <title>Basic VirtualBox concepts; some examples</title>
+
+ <para>The following explains some basic VirtualBox concepts such as the
+ VirtualBox object, sessions and how virtual machines are manipulated and
+ launched using the Main API. The coding examples use a pseudo-code style
+ closely related to the object-oriented web service (OOWS) for JAX-WS.
+ Depending on which environment you are using, you will need to adjust the
+ examples.</para>
+
+ <sect1>
+ <title>Obtaining basic machine information. Reading attributes</title>
+
+ <para>Any program using the Main API will first need access to the
+ global VirtualBox object (see
+ <link linkend="IVirtualBox">IVirtualBox</link>), from which all other
+ functionality of the API is derived. With the OOWS for JAX-WS, this is
+ returned from the
+ <link linkend="IWebsessionManager__logon">IWebsessionManager::logon()</link>
+ call.</para>
+
+ <para>To enumerate virtual machines, one would look at the "machines"
+ array attribute in the VirtualBox object (see
+ <link linkend="IVirtualBox__machines">IVirtualBox::machines</link>).
+ This array contains all virtual machines currently registered with the
+ host, each of them being an instance of
+ <link linkend="IMachine">IMachine</link>.
+ From each such instance, one can query additional information, such as
+ the UUID, the name, memory, operating system and more by looking at the
+ attributes; see the attributes list in
+ <link linkend="IMachine">IMachine</link> documentation.</para>
+
+ <para>As mentioned in the preceding chapters, depending on your
+ programming environment, attributes are mapped to corresponding "get"
+ and (if the attribute is not read-only) "set" methods. So when the
+ documentation says that IMachine has a
+ "<link linkend="IMachine__name">name</link>" attribute, this means you
+ need to code something
+ like the following to get the machine's name:
+ <screen>IMachine machine = ...;
+String name = machine.getName();</screen>
+ Boolean attribute getters can sometimes be called
+ <computeroutput>isAttribute()</computeroutput> due to JAX-WS naming
+ conventions.</para>
+ </sect1>
+
+ <sect1>
+ <title>Changing machine settings: Sessions</title>
+
+ <para>As said in the previous section, to read a machine's attribute,
+ one invokes the corresponding "get" method. One would think that to
+ change settings of a machine, it would suffice to call the corresponding
+ "set" method -- for example, to set a VM's memory to 1024 MB, one would
+ call <computeroutput>setMemorySize(1024)</computeroutput>. Try that, and
+ you will get an error: "The machine is not mutable."</para>
+
+ <para>So unfortunately, things are not that easy. VirtualBox is a
+ complicated environment in which multiple processes compete for possibly
+ the same resources, especially machine settings. As a result, machines
+ must be "locked" before they can either be modified or started. This is
+ to prevent multiple processes from making conflicting changes to a
+ machine: it should, for example, not be allowed to change the memory
+ size of a virtual machine while it is running. (You can't add more
+ memory to a real computer while it is running either, at least not to an
+ ordinary PC.) Also, two processes must not change settings at the same
+ time, or start a machine at the same time.</para>
+
+ <para>These requirements are implemented in the Main API by way of
+ "sessions", in particular, the <link linkend="ISession">ISession</link>
+ interface. Each process which talks to
+ VirtualBox needs its own instance of ISession. In the web service, you
+ can request the creation of such an object by calling
+ <link linkend="IWebsessionManager__getSessionObject">IWebsessionManager::getSessionObject()</link>.
+ More complex management tasks might need multiple instances of ISession,
+ and each call returns a new one.</para>
+
+ <para>This session object must then be used like a mutex semaphore in
+ common programming environments. Before you can change machine settings,
+ you must write-lock the machine by calling
+ <link linkend="IMachine__lockMachine">IMachine::lockMachine()</link>
+ with your process's session object.</para>
+
+ <para>After the machine has been locked, the
+ <link linkend="ISession__machine">ISession::machine</link> attribute
+ contains a copy of the original IMachine object upon which the session
+ was opened, but this copy is "mutable": you can invoke "set" methods on
+ it.</para>
+
+ <para>When done making the changes to the machine, you must call
+ <link linkend="IMachine__saveSettings">IMachine::saveSettings()</link>,
+ which will copy the changes you have made from your "mutable" machine
+ back to the real machine and write them out to the machine settings XML
+ file. This will make your changes permanent.</para>
+
+ <para>Finally, it is important to always unlock the machine again, by
+ calling
+ <link linkend="ISession__unlockMachine">ISession::unlockMachine()</link>.
+ Otherwise, when the calling process end, the machine will receive the
+ "aborted" state, which can lead to loss of data.</para>
+
+ <para>So, as an example, the sequence to change a machine's memory to
+ 1024 MB is something like this:<screen>IWebsessionManager mgr ...;
+IVirtualBox vbox = mgr.logon(user, pass);
+...
+IMachine machine = ...; // read-only machine
+ISession session = mgr.getSessionObject();
+machine.lockMachine(session, LockType.Write); // machine is now locked for writing
+IMachine mutable = session.getMachine(); // obtain the mutable machine copy
+mutable.setMemorySize(1024);
+mutable.saveSettings(); // write settings to XML
+session.unlockMachine();</screen></para>
+ </sect1>
+
+ <sect1>
+ <title>Launching virtual machines</title>
+
+ <para>To launch a virtual machine, you call
+ <link linkend="IMachine__launchVMProcess">IMachine::launchVMProcess()</link>.
+ In doing so, the caller instructs the VirtualBox engine to start a new
+ process with the virtual machine in it, since to the host, each virtual
+ machine looks like single process, even if it has hundreds of its own
+ processes inside. (This new VM process in turn obtains a write lock on
+ the machine, as described above, to prevent conflicting changes from
+ other processes; this is why opening another session will fail while the
+ VM is running.)</para>
+
+ <para>Starting a machine looks something like this:
+ <screen>IWebsessionManager mgr ...;
+IVirtualBox vbox = mgr.logon(user, pass);
+...
+IMachine machine = ...; // read-only machine
+ISession session = mgr.getSessionObject();
+IProgress prog = machine.launchVMProcess(session,
+ "gui", // session type
+ ""); // possibly environment setting
+prog.waitForCompletion(10000); // give the process 10 secs
+if (prog.getResultCode() != 0) // check success
+ System.out.println("Cannot launch VM!")</screen></para>
+
+ <para>The caller's session object can then be used as a sort of remote
+ control to the VM process that was launched. It contains a "console"
+ object (see <link linkend="ISession__console">ISession::console</link>)
+ with which the VM can be paused,
+ stopped, snapshotted or other things.</para>
+ </sect1>
+
+ <sect1 id="events">
+ <title>VirtualBox events</title>
+
+ <para>In VirtualBox, "events" provide a uniform mechanism to register
+ for and consume specific events. A VirtualBox client can register an
+ "event listener" (represented by the
+ <link linkend="IEventListener">IEventListener</link> interface), which
+ will then get notified by the server when an event (represented by the
+ <link linkend="IEvent">IEvent</link> interface) happens.</para>
+
+ <para>The IEvent interface is an abstract parent interface for all
+ events that can occur in VirtualBox. The actual events that the server
+ sends out are then of one of the specific subclasses, for example
+ <link linkend="IMachineStateChangedEvent">IMachineStateChangedEvent</link>
+ or
+ <link linkend="IMediumChangedEvent">IMediumChangedEvent</link>.</para>
+
+ <para>As an example, the VirtualBox GUI waits for machine events and can
+ thus update its display when the machine state changes or machine
+ settings are modified, even if this happens in another client. This is
+ how the GUI can automatically refresh its display even if you manipulate
+ a machine from another client, for example, from VBoxManage.</para>
+
+ <para>To register an event listener to listen to events, use code like
+ this:<screen>EventSource es = console.getEventSource();
+IEventListener listener = es.createListener();
+VBoxEventType aTypes[] = (VBoxEventType.OnMachineStateChanged);
+ // list of event types to listen for
+es.registerListener(listener, aTypes, false /* active */);
+ // register passive listener
+IEvent ev = es.getEvent(listener, 1000);
+ // wait up to one second for event to happen
+if (ev != null)
+{
+ // downcast to specific event interface (in this case we have only registered
+ // for one type, otherwise IEvent::type would tell us)
+ IMachineStateChangedEvent mcse = IMachineStateChangedEvent.queryInterface(ev);
+ ... // inspect and do something
+ es.eventProcessed(listener, ev);
+}
+...
+es.unregisterListener(listener); </screen></para>
+
+ <para>A graphical user interface would probably best start its own
+ thread to wait for events and then process these in a loop.</para>
+
+ <para>The events mechanism was introduced with VirtualBox 3.3 and
+ replaces various callback interfaces which were called for each event in
+ the interface. The callback mechanism was not compatible with scripting
+ languages, local Java bindings and remote web services as they do not
+ support callbacks. The new mechanism with events and event listeners
+ works with all of these.</para>
+
+ <para>To simplify developement of application using events, concept of
+ event aggregator was introduced. Essentially it's mechanism to aggregate
+ multiple event sources into single one, and then work with this single
+ aggregated event source instead of original sources. As an example, one
+ can evaluate demo recorder in VirtualBox Python shell, shipped with SDK
+ - it records mouse and keyboard events, represented as separate event
+ sources. Code is essentially like this:<screen>
+ listener = console.eventSource.createListener()
+ agg = console.eventSource.createAggregator([console.keyboard.eventSource, console.mouse.eventSource])
+ agg.registerListener(listener, [ctx['global'].constants.VBoxEventType_Any], False)
+ registered = True
+ end = time.time() + dur
+ while time.time() &lt; end:
+ ev = agg.getEvent(listener, 1000)
+ processEent(ev)
+ agg.unregisterListener(listener)</screen> Without using aggregators
+ consumer have to poll on both sources, or start multiple threads to
+ block on those sources.</para>
+ </sect1>
+ </chapter>
+
+ <chapter id="vboxshell">
+ <title>The VirtualBox shell</title>
+
+ <para>VirtualBox comes with an extensible shell, which allows you to
+ control your virtual machines from the command line. It is also a
+ nontrivial example of how to use the VirtualBox APIs from Python, for all
+ three COM/XPCOM/WS styles of the API.</para>
+
+ <para>You can easily extend this shell with your own commands. Create a
+ subdirectory named
+ <computeroutput>.config/VirtualBox/shexts</computeroutput> below your home
+ directory (respectively <computeroutput>.VirtualBox/shexts</computeroutput>
+ on a Windows system and
+ <computeroutput>Library/VirtualBox/shexts</computeroutput> on OS X) and put
+ a Python file implementing your shell extension commands in this directory.
+ This file must contain an array named
+ <computeroutput>commands</computeroutput> containing your command
+ definitions: <screen>
+ commands = {
+ 'cmd1': ['Command cmd1 help', cmd1],
+ 'cmd2': ['Command cmd2 help', cmd2]
+ }
+ </screen> For example, to create a command for creating hard drive
+ images, the following code can be used: <screen>
+ def createHdd(ctx,args):
+ # Show some meaningful error message on wrong input
+ if (len(args) &lt; 3):
+ print "usage: createHdd sizeM location type"
+ return 0
+
+ # Get arguments
+ size = int(args[1])
+ loc = args[2]
+ if len(args) &gt; 3:
+ format = args[3]
+ else:
+ # And provide some meaningful defaults
+ format = "vdi"
+
+ # Call VirtualBox API, using context's fields
+ hdd = ctx['vb'].createMedium(format, loc, ctx['global'].constants.AccessMode_ReadWrite, \
+ ctx['global'].constants.DeviceType_HardDisk)
+ # Access constants using ctx['global'].constants
+ progress = hdd.createBaseStorage(size, (ctx['global'].constants.MediumVariant_Standard, ))
+ # use standard progress bar mechanism
+ ctx['progressBar'](progress)
+
+
+ # Report errors
+ if not hdd.id:
+ print "cannot create disk (file %s exist?)" %(loc)
+ return 0
+
+ # Give user some feedback on success too
+ print "created HDD with id: %s" %(hdd.id)
+
+ # 0 means continue execution, other values mean exit from the interpreter
+ return 0
+
+ commands = {
+ 'myCreateHDD': ['Create virtual HDD, createHdd size location type', createHdd]
+ }
+ </screen> Just store the above text in the file
+ <computeroutput>createHdd</computeroutput> (or any other meaningful name)
+ in <computeroutput>.config/VirtualBox/shexts/</computeroutput>. Start the
+ VirtualBox shell, or just issue the
+ <computeroutput>reloadExts</computeroutput> command, if the shell is
+ already running. Your new command will now be available.</para>
+ </chapter>
+
+ <xi:include href="SDKRef_apiref.xml" xpointer="xpointer(/book/*)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <chapter id="cloud">
+ <title>Working with the Cloud</title>
+
+ <para>VirtualBox supports and goes towards the Oracle tendencies like "move to the Cloud".</para>
+
+ <sect1>
+ <title>OCI features</title>
+ <para>VirtualBox supports the Oracle Cloud Infrastructure (OCI). See the interfaces:
+ <link linkend="ICloudClient">ICloudClient</link>,
+ <link linkend="ICloudProvider">ICloudProvider</link>,
+ <link linkend="ICloudProfile">ICloudProfile</link>,
+ <link linkend="ICloudProviderManager">ICloudProviderManager</link>.
+ </para>
+ <para>Each cloud interface has own implementation to support OCI features. There are everal functions in the implementation
+ which should be explained in details because OCI requires some special data or settings.
+ </para>
+ <para>
+ Also see the enumeration <link linkend="VirtualSystemDescriptionType">VirtualSystemDescriptionType</link> for the possible values.
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Function ICloudClient::exportVM</title>
+ <para>
+ See the <link linkend="ICloudClient__exportVM">ICloudClient::exportVM</link>.
+ The function exports an existing virtual machine into OCI. The final result of this operation is creation a custom image
+ from the bootable image of VM. The Id of created image is returned in the parameter "description" (which is
+ <link linkend="IVirtualSystemDescription">IVirtualSystemDescription</link>) as an entry with the type
+ VirtualSystemDescriptionType::CloudImageId. The standard steps here are:
+ <itemizedlist>
+ <listitem>
+ <para>Upload VBox image to OCI Object Storage.</para>
+ </listitem>
+ <listitem>
+ <para>Create OCI custom image from the uploaded object.</para>
+ </listitem>
+ </itemizedlist>
+ Parameter "description" must contain all information and settings needed for creation a custom image in OCI.
+ At least next entries must be presented there before the call:
+ <itemizedlist>
+ <listitem>
+ <para>VirtualSystemDescriptionType::Name - Name of new instance in OCI.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::HardDiskImage - The local path or id of bootable VM image.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudBucket - A cloud bucket name where the exported image is uploaded.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudImageDisplayName - A name which is assigned to a new custom image in the OCI.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudKeepObject - Whether keep or delete an uploaded object after its usage.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudLaunchInstance - Whether launch or not a new instance.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Function ICloudClient::launchVM</title>
+ <para>
+ See the <link linkend="ICloudClient__launchVM">ICloudClient::launchVM</link>.
+ The function launches a new instance in OCI with a bootable volume previously created from a custom image in OCI or
+ as the source may be used an existing bootable volume which shouldn't be attached to any instance.
+ For launching instance from a custom image use the parameter VirtualSystemDescriptionType::CloudImageId.
+ For launching instance from a bootable volume use the parameter VirtualSystemDescriptionType::CloudBootVolumeId.
+ Only one of them must be presented otherwise the error will occur.
+ The final result of this operation is a running instance. The id of created instance is returned
+ in the parameter "description" (which is <link linkend="IVirtualSystemDescription">IVirtualSystemDescription</link>)
+ as an entry with the type VirtualSystemDescriptionType::CloudInstanceId. Parameter "description" must contain all information
+ and settings needed for creation a new instance in OCI. At least next entries must be presented there before the call:
+ <itemizedlist>
+ <listitem>
+ <para>VirtualSystemDescriptionType::Name - Name of new instance in OCI.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudOCISubnet - OCID of existing subnet in OCI which will be used by the instance.</para>
+ </listitem>
+ <listitem>
+ <para>
+ Use VirtualSystemDescriptionType::CloudImageId - OCID of custom image used as a bootable image for the instance
+ or
+ VirtualSystemDescriptionType::CloudBootVolumeId - OCID of existing and non-attached bootable volume used as a bootable volume for the instance.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Add VirtualSystemDescriptionType::CloudBootDiskSize - The size of instance bootable volume in GB,
+ If you use VirtualSystemDescriptionType::CloudImageId.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudInstanceShape - The shape of instance according to OCI documentation,
+ defines the number of CPUs and RAM memory.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudLaunchInstance - Whether launch or not a new instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudDomain - Availability domain in OCI where new instance is created.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudPublicIP - Whether the instance will have a public IP or not.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudPublicSSHKey - Public SSH key which is used to connect to an instance via SSH.
+ It may be one or more records with the type VirtualSystemDescriptionType::CloudPublicSSHKey in the VirtualSystemDescription.
+ But at least one should be presented otherwise user won't be able to connect to the instance via SSH.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Function ICloudClient::getInstanceInfo</title>
+ <para>
+ See the <link linkend="ICloudClient__getInstanceInfo">ICloudClient::getInstanceInfo</link>.
+ The function takes an instance id (parameter "uid"), finds the requested instance in OCI and gets back information
+ about the found instance in the parameter "description" (which is <link linkend="IVirtualSystemDescription">IVirtualSystemDescription</link>)
+ The entries with next types will be presented in the object:
+ <itemizedlist>
+ <listitem>
+ <para>VirtualSystemDescriptionType::Name - Displayed name of the instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudDomain - Availability domain in OCI.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudImageId - Name of custom image used for creation this instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudInstanceId - The OCID of the instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::OS - Guest OS type of the instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudBootDiskSize - Size of instance bootable image.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudInstanceState - The instance state according to OCI documentation.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudInstanceShape - The instance shape according to OCI documentation</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::Memory - RAM memory in GB allocated for the instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CPU - Number of virtual CPUs allocated for the instance.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Function ICloudClient::importInstance</title>
+ <para>
+ See the <link linkend="ICloudClient__importInstance">ICloudClient::importInstance</link>.
+ The API function imports an existing instance from the OCI to the local host.
+ The standard steps here are:
+ <itemizedlist>
+ <listitem>
+ <para>Create a custom image from an existing OCI instance.</para>
+ </listitem>
+ <listitem>
+ <para>Export the custom image to OCI object (the object is created in the OCI Object Storage).</para>
+ </listitem>
+ <listitem>
+ <para>Download the OCI object to the local host.</para>
+ </listitem>
+ </itemizedlist>
+ As the result of operation user will have a file with the suffix ".oci" on the local host. This file is a TAR archive which
+ contains a bootable instance image in QCOW2 format and a JSON file with some metadata related to
+ the imported instance. The function takes the parameter "description"
+ (which is <link linkend="IVirtualSystemDescription">IVirtualSystemDescription</link>)
+ Parameter "description" must contain all information and settings needed for successful operation result.
+ At least next entries must be presented there before the call:
+ <itemizedlist>
+ <listitem>
+ <para>VirtualSystemDescriptionType::Name is used for the several purposes:
+ <itemizedlist>
+ <listitem>
+ <para>As a custom image name. A custom image is created from an instance.</para>
+ </listitem>
+ <listitem>
+ <para>As OCI object name. An object is a file in OCI Object Storage. The object is created from the custom image.</para>
+ </listitem>
+ <listitem>
+ <para>Name of imported instance on the local host. Because the result of import is a file, the file will have this
+ name and extension ".oci".</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudInstanceId - The OCID of the existing instance.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualSystemDescriptionType::CloudBucket - a cloud bucket name in OCI Object Storage where created an OCI object
+ from a custom image.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="hgcm">
+ <title>Host-Guest Communication Manager</title>
+
+ <para>The VirtualBox Host-Guest Communication Manager (HGCM) allows a
+ guest application or a guest driver to call a host shared library. The
+ following features of VirtualBox are implemented using HGCM: <itemizedlist>
+ <listitem>
+ <para>Shared Folders</para>
+ </listitem>
+
+ <listitem>
+ <para>Shared Clipboard</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest configuration interface</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The shared library contains a so called HGCM service. The guest HGCM
+ clients establish connections to the service to call it. When calling a
+ HGCM service the client supplies a function code and a number of
+ parameters for the function.</para>
+
+ <sect1>
+ <title>Virtual hardware implementation</title>
+
+ <para>HGCM uses the VMM virtual PCI device to exchange data between the
+ guest and the host. The guest always acts as an initiator of requests. A
+ request is constructed in the guest physical memory, which must be
+ locked by the guest. The physical address is passed to the VMM device
+ using a 32-bit <computeroutput>out edx, eax</computeroutput>
+ instruction. The physical memory must be allocated below 4GB by 64-bit
+ guests.</para>
+
+ <para>The host parses the request header and data and queues the request
+ for a host HGCM service. The guest continues execution and usually waits
+ on a HGCM event semaphore.</para>
+
+ <para>When the request has been processed by the HGCM service, the VMM
+ device sets the completion flag in the request header, sets the HGCM
+ event and raises an IRQ for the guest. The IRQ handler signals the HGCM
+ event semaphore and all HGCM callers check the completion flag in the
+ corresponding request header. If the flag is set, the request is
+ considered completed.</para>
+ </sect1>
+
+ <sect1>
+ <title>Protocol specification</title>
+
+ <para>The HGCM protocol definitions are contained in the
+ <computeroutput>VBox/VBoxGuest.h</computeroutput></para>
+
+ <sect2>
+ <title>Request header</title>
+
+ <para>HGCM request structures contains a generic header
+ (VMMDevHGCMRequestHeader): <table>
+ <title>HGCM Request Generic Header</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>size</entry>
+
+ <entry>Size of the entire request.</entry>
+ </row>
+
+ <row>
+ <entry>version</entry>
+
+ <entry>Version of the header, must be set to
+ <computeroutput>0x10001</computeroutput>.</entry>
+ </row>
+
+ <row>
+ <entry>type</entry>
+
+ <entry>Type of the request.</entry>
+ </row>
+
+ <row>
+ <entry>rc</entry>
+
+ <entry>HGCM return code, which will be set by the VMM
+ device.</entry>
+ </row>
+
+ <row>
+ <entry>reserved1</entry>
+
+ <entry>A reserved field 1.</entry>
+ </row>
+
+ <row>
+ <entry>reserved2</entry>
+
+ <entry>A reserved field 2.</entry>
+ </row>
+
+ <row>
+ <entry>flags</entry>
+
+ <entry>HGCM flags, set by the VMM device.</entry>
+ </row>
+
+ <row>
+ <entry>result</entry>
+
+ <entry>The HGCM result code, set by the VMM device.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> <note>
+ <itemizedlist>
+ <listitem>
+ <para>All fields are 32-bit.</para>
+ </listitem>
+
+ <listitem>
+ <para>Fields from <computeroutput>size</computeroutput> to
+ <computeroutput>reserved2</computeroutput> are a standard VMM
+ device request header, which is used for other interfaces as
+ well.</para>
+ </listitem>
+ </itemizedlist>
+ </note></para>
+
+ <para>The <emphasis role="bold">type</emphasis> field indicates the
+ type of the HGCM request: <table>
+ <title>Request Types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (decimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMConnect
+ (<computeroutput>60</computeroutput>)</entry>
+
+ <entry>Connect to a HGCM service.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMDisconnect
+ (<computeroutput>61</computeroutput>)</entry>
+
+ <entry>Disconnect from the service.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCall32
+ (<computeroutput>62</computeroutput>)</entry>
+
+ <entry>Call a HGCM function using the 32-bit
+ interface.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCall64
+ (<computeroutput>63</computeroutput>)</entry>
+
+ <entry>Call a HGCM function using the 64-bit
+ interface.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCancel
+ (<computeroutput>64</computeroutput>)</entry>
+
+ <entry>Cancel a HGCM request currently being processed by a
+ host HGCM service.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The <emphasis role="bold">flags</emphasis> field may contain:
+ <table>
+ <title>Flags</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (hexadecimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VBOX_HGCM_REQ_DONE
+ (<computeroutput>0x00000001</computeroutput>)</entry>
+
+ <entry>The request has been processed by the host
+ service.</entry>
+ </row>
+
+ <row>
+ <entry>VBOX_HGCM_REQ_CANCELLED
+ (<computeroutput>0x00000002</computeroutput>)</entry>
+
+ <entry>This request was cancelled.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+
+ <sect2>
+ <title>Connect</title>
+
+ <para>The connection request must be issued by the guest HGCM client
+ before it can call the HGCM service (VMMDevHGCMConnect): <table>
+ <title>Connect request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMConnect
+ (<computeroutput>60</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>type</entry>
+
+ <entry>The type of the service location information (32
+ bit).</entry>
+ </row>
+
+ <row>
+ <entry>location</entry>
+
+ <entry>The service location information (128 bytes).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier assigned to the connecting
+ client by the HGCM subsystem (32-bit).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> The <emphasis role="bold">type</emphasis> field tells the
+ HGCM how to look for the requested service: <table>
+ <title>Location Information Types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (hexadecimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMLoc_LocalHost
+ (<computeroutput>0x1</computeroutput>)</entry>
+
+ <entry>The requested service is a shared library located on
+ the host and the location information contains the library
+ name.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMLoc_LocalHost_Existing
+ (<computeroutput>0x2</computeroutput>)</entry>
+
+ <entry>The requested service is a preloaded one and the
+ location information contains the service name.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> <note>
+ <para>Currently preloaded HGCM services are hard-coded in
+ VirtualBox: <itemizedlist>
+ <listitem>
+ <para>VBoxSharedFolders</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSharedClipboard</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxGuestPropSvc</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSharedOpenGL</para>
+ </listitem>
+ </itemizedlist></para>
+ </note> There is no difference between both types of HGCM services,
+ only the location mechanism is different.</para>
+
+ <para>The client identifier is returned by the host and must be used
+ in all subsequent requests by the client.</para>
+ </sect2>
+
+ <sect2>
+ <title>Disconnect</title>
+
+ <para>This request disconnects the client and makes the client
+ identifier invalid (VMMDevHGCMDisconnect): <table>
+ <title>Disconnect request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMDisconnect
+ (<computeroutput>61</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier previously returned by the
+ connect request (32-bit).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+
+ <sect2>
+ <title>Call32 and Call64</title>
+
+ <para>Calls the HGCM service entry point (VMMDevHGCMCall) using 32-bit
+ or 64-bit addresses: <table>
+ <title>Call request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ either VMMDevReq_HGCMCall32
+ (<computeroutput>62</computeroutput>) or
+ VMMDevReq_HGCMCall64
+ (<computeroutput>63</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier previously returned by the
+ connect request (32-bit).</entry>
+ </row>
+
+ <row>
+ <entry>function</entry>
+
+ <entry>The function code to be processed by the service (32
+ bit).</entry>
+ </row>
+
+ <row>
+ <entry>cParms</entry>
+
+ <entry>The number of following parameters (32-bit). This
+ value is 0 if the function requires no parameters.</entry>
+ </row>
+
+ <row>
+ <entry>parms</entry>
+
+ <entry>An array of parameter description structures
+ (HGCMFunctionParameter32 or
+ HGCMFunctionParameter64).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The 32-bit parameter description (HGCMFunctionParameter32)
+ consists of 32-bit type field and 8 bytes of an opaque value, so 12
+ bytes in total. The 64-bit variant (HGCMFunctionParameter64) consists
+ of the type and 12 bytes of a value, so 16 bytes in total.</para>
+
+ <para><table>
+ <title>Parameter types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Type</emphasis></entry>
+
+ <entry><emphasis role="bold">Format of the
+ value</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_32bit (1)</entry>
+
+ <entry>A 32-bit value.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_64bit (2)</entry>
+
+ <entry>A 64-bit value.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_PhysAddr (3)</entry>
+
+ <entry>A 32-bit size followed by a 32-bit or 64-bit guest
+ physical address.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr (4)</entry>
+
+ <entry>A 32-bit size followed by a 32-bit or 64-bit guest
+ linear address. The buffer is used both for guest to host
+ and for host to guest data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_In (5)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ used only for host to guest data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Out (6)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ used only for guest to host data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked (7)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ already locked by the guest.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked_In (1)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr_In but the buffer
+ is already locked by the guest.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked_Out (1)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr_Out but the buffer
+ is already locked by the guest.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The</para>
+ </sect2>
+
+ <sect2>
+ <title>Cancel</title>
+
+ <para>This request cancels a call request (VMMDevHGCMCancel): <table>
+ <title>Cancel request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMCancel
+ (<computeroutput>64</computeroutput>).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Guest software interface</title>
+
+ <para>The guest HGCM clients can call HGCM services from both drivers
+ and applications.</para>
+
+ <sect2>
+ <title>The guest driver interface</title>
+
+ <para>The driver interface is implemented in the VirtualBox guest
+ additions driver (VBoxGuest), which works with the VMM virtual device.
+ Drivers must use the VBox Guest Library (VBGL), which provides an API
+ for HGCM clients (<computeroutput>VBox/VBoxGuestLib.h</computeroutput>
+ and <computeroutput>VBox/VBoxGuest.h</computeroutput>).</para>
+
+ <para><screen>
+DECLR0VBGL(int) VbglR0HGCMConnect(VBGLHGCMHANDLE *pHandle, const char *pszServiceName, HGCMCLIENTID *pidClient);
+ </screen> Connects to the service: <screen>
+ VBoxGuestHGCMConnectInfo data;
+
+ memset(&amp;data, sizeof(VBoxGuestHGCMConnectInfo));
+
+ data.result = VINF_SUCCESS;
+ data.Loc.type = VMMDevHGCMLoc_LocalHost_Existing;
+ strcpy (data.Loc.u.host.achName, "VBoxSharedFolders");
+
+ rc = VbglHGCMConnect (&amp;handle, "VBoxSharedFolders"&amp;data);
+
+ if (RT_SUCCESS (rc))
+ {
+ rc = data.result;
+ }
+
+ if (RT_SUCCESS (rc))
+ {
+ /* Get the assigned client identifier. */
+ ulClientID = data.u32ClientID;
+ }
+ </screen></para>
+
+ <para><screen>
+DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData);
+ </screen> Disconnects from the service. <screen>
+ VBoxGuestHGCMDisconnectInfo data;
+
+ RtlZeroMemory (&amp;data, sizeof (VBoxGuestHGCMDisconnectInfo));
+
+ data.result = VINF_SUCCESS;
+ data.u32ClientID = ulClientID;
+
+ rc = VbglHGCMDisconnect (handle, &amp;data);
+ </screen></para>
+
+ <para><screen>
+DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData);
+ </screen> Calls a function in the service. <screen>
+typedef struct _VBoxSFRead
+{
+ VBoxGuestHGCMCallInfo callInfo;
+
+ /** pointer, in: SHFLROOT
+ * Root handle of the mapping which name is queried.
+ */
+ HGCMFunctionParameter root;
+
+ /** value64, in:
+ * SHFLHANDLE of object to read from.
+ */
+ HGCMFunctionParameter handle;
+
+ /** value64, in:
+ * Offset to read from.
+ */
+ HGCMFunctionParameter offset;
+
+ /** value64, in/out:
+ * Bytes to read/How many were read.
+ */
+ HGCMFunctionParameter cb;
+
+ /** pointer, out:
+ * Buffer to place data to.
+ */
+ HGCMFunctionParameter buffer;
+
+} VBoxSFRead;
+
+/** Number of parameters */
+#define SHFL_CPARMS_READ (5)
+
+...
+
+ VBoxSFRead data;
+
+ /* The call information. */
+ data.callInfo.result = VINF_SUCCESS; /* Will be returned by HGCM. */
+ data.callInfo.u32ClientID = ulClientID; /* Client identifier. */
+ data.callInfo.u32Function = SHFL_FN_READ; /* The function code. */
+ data.callInfo.cParms = SHFL_CPARMS_READ; /* Number of parameters. */
+
+ /* Initialize parameters. */
+ data.root.type = VMMDevHGCMParmType_32bit;
+ data.root.u.value32 = pMap-&gt;root;
+
+ data.handle.type = VMMDevHGCMParmType_64bit;
+ data.handle.u.value64 = hFile;
+
+ data.offset.type = VMMDevHGCMParmType_64bit;
+ data.offset.u.value64 = offset;
+
+ data.cb.type = VMMDevHGCMParmType_32bit;
+ data.cb.u.value32 = *pcbBuffer;
+
+ data.buffer.type = VMMDevHGCMParmType_LinAddr_Out;
+ data.buffer.u.Pointer.size = *pcbBuffer;
+ data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer;
+
+ rc = VbglHGCMCall (handle, &amp;data.callInfo, sizeof (data));
+
+ if (RT_SUCCESS (rc))
+ {
+ rc = data.callInfo.result;
+ *pcbBuffer = data.cb.u.value32; /* This is returned by the HGCM service. */
+ }
+ </screen></para>
+ </sect2>
+
+ <sect2>
+ <title>Guest application interface</title>
+
+ <para>Applications call the VirtualBox Guest Additions driver to
+ utilize the HGCM interface. There are IOCTL's which correspond to the
+ <computeroutput>Vbgl*</computeroutput> functions: <itemizedlist>
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_CONNECT</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_DISCONNECT</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_CALL</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>These IOCTL's get the same input buffer as
+ <computeroutput>VbglHGCM*</computeroutput> functions and the output
+ buffer has the same format as the input buffer. The same address can
+ be used as the input and output buffers.</para>
+
+ <para>For example see the guest part of shared clipboard, which runs
+ as an application and uses the HGCM interface.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>HGCM Service Implementation</title>
+
+ <para>The HGCM service is a shared library with a specific set of entry
+ points. The library must export the
+ <computeroutput>VBoxHGCMSvcLoad</computeroutput> entry point: <screen>
+extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad (VBOXHGCMSVCFNTABLE *ptable)
+ </screen></para>
+
+ <para>The service must check the
+ <computeroutput>ptable-&gt;cbSize</computeroutput> and
+ <computeroutput>ptable-&gt;u32Version</computeroutput> fields of the
+ input structure and fill the remaining fields with function pointers of
+ entry points and the size of the required client buffer size.</para>
+
+ <para>The HGCM service gets a dedicated thread, which calls service
+ entry points synchronously, that is the service will be called again
+ only when a previous call has returned. However, the guest calls can be
+ processed asynchronously. The service must call a completion callback
+ when the operation is actually completed. The callback can be issued
+ from another thread as well.</para>
+
+ <para>Service entry points are listed in the
+ <computeroutput>VBox/hgcmsvc.h</computeroutput> in the
+ <computeroutput>VBOXHGCMSVCFNTABLE</computeroutput> structure. <table>
+ <title>Service entry points</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Entry</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>pfnUnload</entry>
+
+ <entry>The service is being unloaded.</entry>
+ </row>
+
+ <row>
+ <entry>pfnConnect</entry>
+
+ <entry>A client <computeroutput>u32ClientID</computeroutput>
+ is connected to the service. The
+ <computeroutput>pvClient</computeroutput> parameter points to
+ an allocated memory buffer which can be used by the service to
+ store the client information.</entry>
+ </row>
+
+ <row>
+ <entry>pfnDisconnect</entry>
+
+ <entry>A client is being disconnected.</entry>
+ </row>
+
+ <row>
+ <entry>pfnCall</entry>
+
+ <entry>A guest client calls a service function. The
+ <computeroutput>callHandle</computeroutput> must be used in
+ the VBOXHGCMSVCHELPERS::pfnCallComplete callback when the call
+ has been processed.</entry>
+ </row>
+
+ <row>
+ <entry>pfnHostCall</entry>
+
+ <entry>Called by the VirtualBox host components to perform
+ functions which should be not accessible by the guest. Usually
+ this entry point is used by VirtualBox to configure the
+ service.</entry>
+ </row>
+
+ <row>
+ <entry>pfnSaveState</entry>
+
+ <entry>The VM state is being saved and the service must save
+ relevant information using the SSM API
+ (<computeroutput>VBox/ssm.h</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>pfnLoadState</entry>
+
+ <entry>The VM is being restored from the saved state and the
+ service must load the saved information and be able to
+ continue operations from the saved state.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect1>
+ </chapter>
+
+ <chapter id="rdpweb">
+ <title>RDP Web Control</title>
+
+ <para>The VirtualBox <emphasis>RDP Web Control</emphasis> (RDPWeb)
+ provides remote access to a running VM. RDPWeb is a RDP (Remote Desktop
+ Protocol) client based on Flash technology and can be used from a Web
+ browser with a Flash plugin.</para>
+
+ <sect1>
+ <title>RDPWeb features</title>
+
+ <para>RDPWeb is embedded into a Web page and can connect to VRDP server
+ in order to displays the VM screen and pass keyboard and mouse events to
+ the VM.</para>
+ </sect1>
+
+ <sect1>
+ <title>RDPWeb reference</title>
+
+ <para>RDPWeb consists of two required components:<itemizedlist>
+ <listitem>
+ <para>Flash movie
+ <computeroutput>RDPClientUI.swf</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>JavaScript helpers
+ <computeroutput>webclient.js</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The VirtualBox SDK contains sample HTML code
+ including:<itemizedlist>
+ <listitem>
+ <para>JavaScript library for embedding Flash content
+ <computeroutput>SWFObject.js</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>Sample HTML page
+ <computeroutput>webclient3.html</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <sect2>
+ <title>RDPWeb functions</title>
+
+ <para><computeroutput>RDPClientUI.swf</computeroutput> and
+ <computeroutput>webclient.js</computeroutput> work with each other.
+ JavaScript code is responsible for a proper SWF initialization,
+ delivering mouse events to the SWF and processing resize requests from
+ the SWF. On the other hand, the SWF contains a few JavaScript callable
+ methods, which are used both from
+ <computeroutput>webclient.js</computeroutput> and the user HTML
+ page.</para>
+
+ <sect3>
+ <title>JavaScript functions</title>
+
+ <para><computeroutput>webclient.js</computeroutput> contains helper
+ functions. In the following table ElementId refers to an HTML
+ element name or attribute, and Element to the HTML element itself.
+ HTML code<programlisting>
+ &lt;div id="FlashRDP"&gt;
+ &lt;/div&gt;
+</programlisting> would have ElementId equal to FlashRDP and Element equal to
+ the div element.</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <programlisting>RDPWebClient.embedSWF(SWFFileName, ElementId)</programlisting>
+
+ <para>Uses SWFObject library to replace the HTML element with
+ the Flash movie.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.isRDPWebControlById(ElementId)</programlisting>
+
+ <para>Returns true if the given id refers to a RDPWeb Flash
+ element.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.isRDPWebControlByElement(Element)</programlisting>
+
+ <para>Returns true if the given element is a RDPWeb Flash
+ element.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.getFlashById(ElementId)</programlisting>
+
+ <para>Returns an element, which is referenced by the given id.
+ This function will try to resolve any element, event if it is
+ not a Flash movie.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect3>
+
+ <sect3>
+ <title>Flash methods callable from JavaScript</title>
+
+ <para><computeroutput>RDPWebClienUI.swf</computeroutput> methods can
+ be called directly from JavaScript code on a HTML page.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>getProperty(Name)</para>
+ </listitem>
+
+ <listitem>
+ <para>setProperty(Name)</para>
+ </listitem>
+
+ <listitem>
+ <para>connect()</para>
+ </listitem>
+
+ <listitem>
+ <para>disconnect()</para>
+ </listitem>
+
+ <listitem>
+ <para>keyboardSendCAD()</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Flash JavaScript callbacks</title>
+
+ <para><computeroutput>RDPWebClienUI.swf</computeroutput> calls
+ JavaScript functions provided by the HTML page.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Embedding RDPWeb in an HTML page</title>
+
+ <para>It is necessary to include
+ <computeroutput>webclient.js</computeroutput> helper script. If
+ SWFObject library is used, the
+ <computeroutput>swfobject.js</computeroutput> must be also included
+ and RDPWeb flash content can be embedded to a Web page using dynamic
+ HTML. The HTML must include a "placeholder", which consists of 2
+ <computeroutput>div</computeroutput> elements.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>RDPWeb change log</title>
+
+ <sect2>
+ <title>Version 1.2.28</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>keyboardLayout</computeroutput>,
+ <computeroutput>keyboardLayouts</computeroutput>,
+ <computeroutput>UUID</computeroutput> properties.</para>
+ </listitem>
+
+ <listitem>
+ <para>Support for German keyboard layout on the client.</para>
+ </listitem>
+
+ <listitem>
+ <para>Rebranding to Oracle.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Version 1.1.26</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>webclient.js</computeroutput> is a part of
+ the distribution package.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>lastError</computeroutput> property.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>keyboardSendScancodes</computeroutput> and
+ <computeroutput>keyboardSendCAD</computeroutput> methods.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Version 1.0.24</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Initial release.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter id="dnd">
+ <title>Drag and Drop</title>
+
+ <para>Since VirtualBox 4.2 it's possible to transfer files from host to the
+ Linux guests by dragging files, directories or text from the host into the
+ guest's screen. This is called <emphasis>drag and drop
+ (DnD)</emphasis>.</para>
+
+ <para>In version 5.0 support for Windows guests has been added, as well as
+ the ability to transfer data the other way around, that is, from the guest
+ to the host.</para>
+
+ <note><para>Currently only the VirtualBox Manager frontend supports drag and
+ drop.</para></note>
+
+ <para>This chapter will show how to use the required interfaces provided
+ by VirtualBox for adding drag and drop functionality to third-party
+ frontends.</para>
+
+ <sect1>
+ <title>Basic concepts</title>
+
+ <para>In order to use the interfaces provided by VirtualBox, some basic
+ concepts needs to be understood first: To successfully initiate a
+ drag and drop operation at least two sides needs to be involved, a
+ <emphasis>source</emphasis> and a <emphasis>target</emphasis>:</para>
+
+ <para>The <emphasis>source</emphasis> is the side which provides the
+ data, e.g. is the origin of data. This data can be stored within the
+ source directly or can be retrieved on-demand by the source itself. Other
+ interfaces don't care where the data from this source actually came
+ from.</para>
+
+ <para>The <emphasis>target</emphasis> on the other hand is the side which
+ provides the source a visual representation where the user can drop the
+ data the source offers. This representation can be a window (or just a
+ certain part of it), for example.</para>
+
+ <para>The source and the target have abstract interfaces called
+ <link linkend="IDnDSource">IDnDSource</link> and
+ <link linkend="IDnDTarget">IDnDTarget</link>. VirtualBox also
+ provides implementations of both interfaces, called
+ <link linkend="IGuestDnDSource">IGuestDnDSource</link> and
+ <link linkend="IGuestDnDTarget">IGuestDnDTarget</link>. Both
+ implementations are also used in the VirtualBox Manager frontend.</para>
+ </sect1>
+
+ <sect1>
+ <title>Supported formats</title>
+
+ <para>As the target needs to perform specific actions depending on the
+ data the source provided, the target first needs to know what type of
+ data it actually is going to retrieve. It might be that the source offers
+ data the target cannot (or intentionally does not want to)
+ support.</para>
+
+ <para>VirtualBox handles those data types by providing so-called
+ <emphasis>MIME types</emphasis> -- these MIME types were originally
+ defined in
+ <ulink url="https://tools.ietf.org/html/rfc2046">RFC 2046</ulink> and
+ are also called <emphasis>Content-types</emphasis>.
+ <link linkend="IGuestDnDSource">IGuestDnDSource</link> and
+ <link linkend="IGuestDnDTarget">IGuestDnDTarget</link> support
+ the following MIME types by default:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">text/uri-list</emphasis> - A list of
+ URIs (Uniform Resource Identifier, see
+ <ulink url="https://tools.ietf.org/html/rfc3986">RFC 3986</ulink>)
+ pointing to the file and/or directory paths already transferred
+ from the source to the target.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">text/plain;charset=utf-8</emphasis> and
+ <emphasis role="bold">UTF8_STRING</emphasis> - text in UTF-8
+ format.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">text/plain, TEXT</emphasis>
+ and <emphasis role="bold">STRING</emphasis> - plain ASCII text,
+ depending on the source's active ANSI page (if any).</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>If, for whatever reason, a certain default format should not be
+ supported or a new format should be registered,
+ <link linkend="IDnDSource">IDnDSource</link> and
+ <link linkend="IDnDTarget">IDnDTarget</link> have methods derived from
+ <link linkend="IDnDBase">IDnDBase</link> which provide adding,
+ removing and enumerating specific formats.
+ <note><para>Registering new or removing default formats on the guest side
+ currently is not implemented.</para></note></para>
+ </sect1>
+
+ </chapter>
+
+ <chapter id="vbox-auth">
+ <title>VirtualBox external authentication modules</title>
+
+ <para>VirtualBox supports arbitrary external modules to perform
+ authentication. The module is used when the authentication method is set
+ to "external" for a particular VM VRDE access and the library was
+ specified with <computeroutput>VBoxManage setproperty
+ vrdeauthlibrary</computeroutput>. Web service also use the authentication
+ module which was specified with <computeroutput>VBoxManage setproperty
+ websrvauthlibrary</computeroutput>.</para>
+
+ <para>This library will be loaded by the VM or web service process on
+ demand, i.e. when the first remote desktop connection is made by a client
+ or when a client that wants to use the web service logs on.</para>
+
+ <para>External authentication is the most flexible as the external handler
+ can both choose to grant access to everyone (like the "null"
+ authentication method would) and delegate the request to the guest
+ authentication component. When delegating the request to the guest
+ component, the handler will still be called afterwards with the option to
+ override the result.</para>
+
+ <para>An authentication library is required to implement exactly one entry
+ point:</para>
+
+ <screen>#include "VBoxAuth.h"
+
+/**
+ * Authentication library entry point.
+ *
+ * Parameters:
+ *
+ * szCaller The name of the component which calls the library (UTF8).
+ * pUuid Pointer to the UUID of the accessed virtual machine. Can be NULL.
+ * guestJudgement Result of the guest authentication.
+ * szUser User name passed in by the client (UTF8).
+ * szPassword Password passed in by the client (UTF8).
+ * szDomain Domain passed in by the client (UTF8).
+ * fLogon Boolean flag. Indicates whether the entry point is called
+ * for a client logon or the client disconnect.
+ * clientId Server side unique identifier of the client.
+ *
+ * Return code:
+ *
+ * AuthResultAccessDenied Client access has been denied.
+ * AuthResultAccessGranted Client has the right to use the
+ * virtual machine.
+ * AuthResultDelegateToGuest Guest operating system must
+ * authenticate the client and the
+ * library must be called again with
+ * the result of the guest
+ * authentication.
+ *
+ * Note: When 'fLogon' is 0, only pszCaller, pUuid and clientId are valid and the return
+ * code is ignored.
+ */
+AuthResult AUTHCALL AuthEntry(
+ const char *szCaller,
+ PAUTHUUID pUuid,
+ AuthGuestJudgement guestJudgement,
+ const char *szUser,
+ const char *szPassword
+ const char *szDomain
+ int fLogon,
+ unsigned clientId)
+{
+ /* Process request against your authentication source of choice. */
+ // if (authSucceeded(...))
+ // return AuthResultAccessGranted;
+ return AuthResultAccessDenied;
+}</screen>
+
+ <para>A note regarding the UUID implementation of the
+ <computeroutput>pUuid</computeroutput> argument: VirtualBox uses a
+ consistent binary representation of UUIDs on all platforms. For this
+ reason the integer fields comprising the UUID are stored as little endian
+ values. If you want to pass such UUIDs to code which assumes that the
+ integer fields are big endian (often also called network byte order), you
+ need to adjust the contents of the UUID to e.g. achieve the same string
+ representation. The required changes are:<itemizedlist>
+ <listitem>
+ <para>reverse the order of byte 0, 1, 2 and 3</para>
+ </listitem>
+
+ <listitem>
+ <para>reverse the order of byte 4 and 5</para>
+ </listitem>
+
+ <listitem>
+ <para>reverse the order of byte 6 and 7.</para>
+ </listitem>
+ </itemizedlist>Using this conversion you will get identical results when
+ converting the binary UUID to the string representation.</para>
+
+ <para>The <computeroutput>guestJudgement</computeroutput> argument
+ contains information about the guest authentication status. For the first
+ call, it is always set to
+ <computeroutput>AuthGuestNotAsked</computeroutput>. In case the
+ <computeroutput>AuthEntry</computeroutput> function returns
+ <computeroutput>AuthResultDelegateToGuest</computeroutput>, a guest
+ authentication will be attempted and another call to the
+ <computeroutput>AuthEntry</computeroutput> is made with its result. This
+ can be either granted / denied or no judgement (the guest component chose
+ for whatever reason to not make a decision). In case there is a problem
+ with the guest authentication module (e.g. the Additions are not installed
+ or not running or the guest did not respond within a timeout), the "not
+ reacted" status will be returned.</para>
+ </chapter>
+
+ <chapter id="javaapi">
+ <title>Using Java API</title>
+
+ <sect1>
+ <title>Introduction</title>
+
+ <para>VirtualBox can be controlled by a Java API, both locally
+ (COM/XPCOM) and from remote (SOAP) clients. As with the Python bindings,
+ a generic glue layer tries to hide all platform differences, allowing
+ for source and binary compatibility on different platforms.</para>
+ </sect1>
+
+ <sect1>
+ <title>Requirements</title>
+
+ <para>To use the Java bindings, there are certain requirements depending
+ on the platform. First of all, you need JDK 1.5 (Java 5) or later. Also
+ please make sure that the version of the VirtualBox API .jar file
+ exactly matches the version of VirtualBox you use. To avoid confusion,
+ the VirtualBox API provides versioning in the Java package name, e.g.
+ the package is named <computeroutput>org.virtualbox_3_2</computeroutput>
+ for VirtualBox version 3.2. <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">XPCOM</emphasis> - for all platforms,
+ but Microsoft Windows. A Java bridge based on JavaXPCOM is shipped
+ with VirtualBox. The classpath must contain
+ <computeroutput>vboxjxpcom.jar</computeroutput> and the
+ <computeroutput>vbox.home</computeroutput> property must be set to
+ location where the VirtualBox binaries are. Please make sure that
+ the JVM bitness matches bitness of VirtualBox you use as the XPCOM
+ bridge relies on native libraries.</para>
+
+ <para>Start your application like this: <programlisting>
+ java -cp vboxjxpcom.jar -Dvbox.home=/opt/virtualbox MyProgram
+ </programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">COM</emphasis> - for Microsoft
+ Windows. We rely on <computeroutput>Jacob</computeroutput> - a
+ generic Java to COM bridge - which has to be installed seperately.
+ See <ulink
+ url="http://sourceforge.net/projects/jacob-project/">http://sourceforge.net/projects/jacob-project/</ulink>
+ for installation instructions. Also, the VirtualBox provided
+ <computeroutput>vboxjmscom.jar</computeroutput> must be in the
+ class path.</para>
+
+ <para>Start your application like this:
+ <programlisting>java -cp vboxjmscom.jar;c:\jacob\jacob.jar -Djava.library.path=c:\jacob MyProgram</programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">SOAP</emphasis> - all platforms. Java
+ 6 is required, as it comes with builtin support for SOAP via the
+ JAX-WS library. Also, the VirtualBox provided
+ <computeroutput>vbojws.jar</computeroutput> must be in the class
+ path. In the SOAP case it's possible to create several
+ VirtualBoxManager instances to communicate with multiple
+ VirtualBox hosts.</para>
+
+ <para>Start your application like this: <programlisting>
+ java -cp vboxjws.jar MyProgram
+ </programlisting></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Exception handling is also generalized by the generic glue layer,
+ so that all methods could throw
+ <computeroutput>VBoxException</computeroutput> containing human-readable
+ text message (see <computeroutput>getMessage()</computeroutput> method)
+ along with wrapped original exception (see
+ <computeroutput>getWrapped()</computeroutput> method).</para>
+ </sect1>
+
+ <sect1>
+ <title>Example</title>
+
+ <para>This example shows a simple use case of the Java API. Differences
+ for SOAP vs. local version are minimal, and limited to the connection
+ setup phase (see <computeroutput>ws</computeroutput> variable). In the
+ SOAP case it's possible to create several VirtualBoxManager instances to
+ communicate with multiple VirtualBox hosts. <programlisting>
+ import org.virtualbox_4_3.*;
+ ....
+ VirtualBoxManager mgr = VirtualBoxManager.createInstance(null);
+ boolean ws = false; // or true, if we need the SOAP version
+ if (ws)
+ {
+ String url = "http://myhost:18034";
+ String user = "test";
+ String passwd = "test";
+ mgr.connect(url, user, passwd);
+ }
+ IVirtualBox vbox = mgr.getVBox();
+ System.out.println("VirtualBox version: " + vbox.getVersion() + "\n");
+ // get first VM name
+ String m = vbox.getMachines().get(0).getName();
+ System.out.println("\nAttempting to start VM '" + m + "'");
+ // start it
+ mgr.startVm(m, null, 7000);
+
+ if (ws)
+ mgr.disconnect();
+
+ mgr.cleanup();
+ </programlisting> For more a complete example, see
+ <computeroutput>TestVBox.java</computeroutput>, shipped with the
+ SDK. It contains exception handling and error printing code, which
+ is important for reliable larger scale projects.</para>
+
+ <para>It is good practice in long-running API clients to process the
+ system events every now and then in the main thread (does not work
+ in other threads). As a rule of thumb it makes sense to process them
+ every few 100msec to every few seconds). This is done by
+ calling<programlisting>
+ mgr.waitForEvents(0);
+ </programlisting>
+ This avoids that a large number of system events accumulate, which can
+ need a significant amount of memory, and as they also play a role in
+ object cleanup it helps freeing additional memory in a timely manner
+ which is used by the API implementation itself. Java's garbage collection
+ approach already needs more memory due to the delayed freeing of memory
+ used by no longer accessible objects, and not processing the system
+ events exacerbates the memory usage. The
+ <computeroutput>TestVBox.java</computeroutput> example code sprinkles
+ such lines over the code to achieve the desired effect. In multi-threaded
+ applications it can be called from the main thread periodically.
+ Sometimes it's possible to use the non-zero timeout variant of the
+ method, which then waits the specified number of milliseconds for
+ events, processing them immediately as they arrive. It achieves better
+ runtime behavior than separate sleeping/processing.</para>
+ </sect1>
+ </chapter>
+
+ <chapter>
+ <title>License information</title>
+
+ <para>The sample code files shipped with the SDK are generally licensed
+ liberally to make it easy for anyone to use this code for their own
+ application code.</para>
+
+ <para>The Java files under
+ <computeroutput>bindings/webservice/java/jax-ws/</computeroutput> (library
+ files for the object-oriented web service) are, by contrast, licensed
+ under the GNU Lesser General Public License (LGPL) V2.1.</para>
+
+ <para>See
+ <computeroutput>sdk/bindings/webservice/java/jax-ws/src/COPYING.LIB</computeroutput>
+ for the full text of the LGPL 2.1.</para>
+
+ <para>When in doubt, please refer to the individual source code files
+ shipped with this SDK.</para>
+ </chapter>
+
+ <chapter>
+ <title>Main API change log</title>
+
+ <para>Generally, VirtualBox will maintain API compatibility within a major
+ release; a major release occurs when the first or the second of the three
+ version components of VirtualBox change (that is, in the x.y.z scheme, a
+ major release is one where x or y change, but not when only z
+ changes).</para>
+
+ <para>In other words, updates like those from 2.0.0 to 2.0.2 will not come
+ with API breakages.</para>
+
+ <para>Migration between major releases most likely will lead to API
+ breakage, so please make sure you updated code accordingly. The OOWS Java
+ wrappers enforce that mechanism by putting VirtualBox classes into
+ version-specific packages such as
+ <computeroutput>org.virtualbox_2_2</computeroutput>. This approach allows
+ for connecting to multiple VirtualBox versions simultaneously from the
+ same Java application.</para>
+
+ <para>The following sections list incompatible changes that the Main API
+ underwent since the original release of this SDK Reference with VirtualBox
+ 2.0. A change is deemed "incompatible" only if it breaks existing client
+ code (e.g. changes in method parameter lists, renamed or removed
+ interfaces and similar). In other words, the list does not contain new
+ interfaces, methods or attributes or other changes that do not affect
+ existing client code.</para>
+
+ <sect1>
+ <title>Incompatible API changes with version 6.1</title>
+
+ <itemizedlist>
+
+ <listitem><para>Split off the graphics adapter part of
+ <link linkend="IMachine">IMachine</link> into
+ <link linkend="IGraphicsAdapter">IGraphicsAdapter</link>.
+ This moved 5 attributes.</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 6.0</title>
+
+ <itemizedlist>
+
+ <listitem><para>Video recording APIs were changed as follows:
+ <itemizedlist>
+ <listitem><para>All attributes which were living in <link linkend="IMachine">IMachine</link> before
+ have been moved to an own, dedicated interface named <link linkend="IRecordingSettings">IRecordingSettings</link>.
+ This new interface can be accessed via the new <link linkend="IMachine__recordingSettings">IMachine::recordingSettings</link>
+ attribute. This should emphasize that recording is not limited to video capturing as such.</para>
+ </listitem>
+
+ <listitem><para>For further flexibility all specific per-VM-screen settings have been moved to a new interface
+ called <link linkend="IRecordingScreenSettings">IRecordingScreenSettings</link>. Such settings now exist per configured
+ VM display and can be retrieved via the <link linkend="IRecordingSettings__screens">IRecordingSettings::screens</link>
+ attribute or the <link linkend="IRecordingSettings__getScreenSettings">IRecordingSettings::getScreenSettings</link>
+ method.
+ <note><para>For now all screen settings will share the same settings, e.g. different settings on a per-screen basis
+ is not implemented yet.</para></note>
+ </para>
+ </listitem>
+
+ <listitem><para>The event <computeroutput>IVideoCaptureChangedEvent</computeroutput> was renamed into
+ <link linkend="IRecordingChangedEvent">IRecordingChangedEvent</link>.</para>
+ </listitem>
+
+ </itemizedlist>
+ </para></listitem>
+
+ <listitem><para>Guest Control APIs were changed as follows:
+ <itemizedlist>
+ <listitem><para><link linkend="IGuest__createSession">IGuest::createSession()</link>,
+ <link linkend="IGuestSession__processCreate">IGuestSession::processCreate()</link>,
+ <link linkend="IGuestSession__processCreateEx">IGuestSession::processCreateEx()</link>,
+ <link linkend="IGuestSession__directoryOpen">IGuestSession::directoryOpen()</link> and
+ <link linkend="IGuestSession__fileOpen">IGuestSession::fileOpen()</link> now will
+ return the new error code VBOX_E_MAXIMUM_REACHED if the limit for the according object
+ group has been reached.</para>
+ </listitem>
+
+ <listitem><para>The enumerations FileOpenExFlags, FsObjMoveFlags and DirectoryCopyFlags have
+ been renamed to <link linkend="FileOpenExFlag">FileOpenExFlag</link>,
+ <link linkend="FsObjMoveFlag">FsObjMoveFlag</link> and <link linkend="DirectoryCopyFlag">DirectoryCopyFlag</link>
+ accordingly to match the rest of the API.</para>
+ </listitem>
+
+ <listitem>
+ <para>The following methods have been implemented:
+ <computeroutput>IGuestSession::directoryCopyFromGuest()</computeroutput> and
+ <computeroutput>IGuestSession::directoryCopyToGuest()</computeroutput>.
+ </para>
+
+ <para>The following attributes have been implemented:
+ <computeroutput>IGuestFsObjInfo::accessTime</computeroutput>,
+ <computeroutput>IGuestFsObjInfo::birthTime</computeroutput>,
+ <computeroutput>IGuestFsObjInfo::changeTime</computeroutput> and
+ <computeroutput>IGuestFsObjInfo::modificationTime</computeroutput>.
+ </para>
+
+ </listitem>
+ </itemizedlist>
+ </para></listitem>
+
+ <listitem><para>The webservice version of the <link linkend="ISharedFolder">ISharedFolder</link>
+ interface was changed from a struct to a managed object. This causes incompatiblities on the
+ protocol level as the shared folder attributes are not returned in the responses of
+ <link linkend="IVirtualBox__sharedFolders">IVirtualBox::getSharedFolders</link> and
+ <link linkend="IMachine__sharedFolders">IMachine::getSharedFolders</link> anymore. They
+ return object UUIDs instead which need be wrapped by stub objects. The change is not visible when
+ using the appropriate client bindings from the most recent VirtualBox SDK.
+ </para></listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 5.x</title>
+
+ <itemizedlist>
+ <listitem><para>ProcessCreateFlag::NoProfile has been renamed to
+ <link linkend="ProcessCreateFlag__Profile">ProcessCreateFlag::Profile</link>,
+ whereas the semantics also has been changed: ProcessCreateFlag::NoProfile
+ explicitly <emphasis role="bold">did not</emphasis> utilize the guest user's profile data,
+ which in turn <link linkend="ProcessCreateFlag__Profile">ProcessCreateFlag::Profile</link>
+ explicitly <emphasis role="bold">does now</emphasis>.</para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 5.0</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The methods for saving state, adopting a saved state file,
+ discarding a saved state, taking a snapshot, restoring
+ a snapshot and deleting a snapshot have been moved from
+ <computeroutput>IConsole</computeroutput> to
+ <computeroutput>IMachine</computeroutput>. This straightens out the
+ logical placement of methods and was necessary to resolve a
+ long-standing issue, preventing 32-bit API clients from invoking
+ those operations in the case where no VM is running.
+ <itemizedlist>
+ <listitem><para><link linkend="IMachine__saveState">IMachine::saveState()</link>
+ replaces
+ <computeroutput>IConsole::saveState()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__adoptSavedState">IMachine::adoptSavedState()</link>
+ replaces
+ <computeroutput>IConsole::adoptSavedState()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__discardSavedState">IMachine::discardSavedState()</link>
+ replaces
+ <computeroutput>IConsole::discardSavedState()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__takeSnapshot">IMachine::takeSnapshot()</link>
+ replaces
+ <computeroutput>IConsole::takeSnapshot()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__deleteSnapshot">IMachine::deleteSnapshot()</link>
+ replaces
+ <computeroutput>IConsole::deleteSnapshot()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__deleteSnapshotAndAllChildren">IMachine::deleteSnapshotAndAllChildren()</link>
+ replaces
+ <computeroutput>IConsole::deleteSnapshotAndAllChildren()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__deleteSnapshotRange">IMachine::deleteSnapshotRange()</link>
+ replaces
+ <computeroutput>IConsole::deleteSnapshotRange()</computeroutput></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="IMachine__restoreSnapshot">IMachine::restoreSnapshot()</link>
+ replaces
+ <computeroutput>IConsole::restoreSnapshot()</computeroutput></para>
+ </listitem>
+ </itemizedlist>
+ Small adjustments to the parameter lists have been made to reduce
+ the number of API calls when taking online snapshots (no longer
+ needs explicit pausing), and taking a snapshot also returns now
+ the snapshot id (useful for finding the right snapshot if there
+ are non-unique snapshot names).</para>
+ </listitem>
+
+ <listitem>
+ <para>Two new machine states have been introduced to allow proper
+ distinction between saving state and taking a snapshot.
+ <link linkend="MachineState__Saving">MachineState::Saving</link>
+ now is used exclusively while the VM's state is being saved, without
+ any overlaps with snapshot functionality. The new state
+ <link linkend="MachineState__Snapshotting">MachineState::Snapshotting</link>
+ is used when an offline snapshot is taken and likewise the new state
+ <link linkend="MachineState__OnlineSnapshotting">MachineState::OnlineSnapshotting</link>
+ is used when an online snapshot is taken.</para>
+ </listitem>
+
+ <listitem>
+ <para>A new event has been introduced, which signals when a snapshot
+ has been restored:
+ <link linkend="ISnapshotRestoredEvent">ISnapshotRestoredEvent</link>.
+ Previously the event
+ <link linkend="ISnapshotDeletedEvent">ISnapshotDeletedEvent</link>
+ was signalled, which isn't logical (but could be distinguished from
+ actual deletion by the fact that the snapshot was still
+ there).</para>
+ </listitem>
+
+ <listitem>
+ <para>The method
+ <link linkend="IVirtualBox__createMedium">IVirtualBox::createMedium()</link>
+ replaces
+ <computeroutput>VirtualBox::createHardDisk()</computeroutput>.
+ Adjusting existing code needs adding two parameters with
+ value <computeroutput>AccessMode_ReadWrite</computeroutput>
+ and <computeroutput>DeviceType_HardDisk</computeroutput>
+ respectively. The new method supports creating floppy and
+ DVD images, and (less obviously) further API functionality
+ such as cloning floppy images.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method
+ <link linkend="IMachine__getStorageControllerByInstance">IMachine::getStorageControllerByInstance()</link>
+ now has an additional parameter (first parameter), for specifying the
+ storage bus which the storage controller must be using. The method
+ was not useful before, as the instance numbers are only unique for a
+ specfic storage bus.</para>
+ </listitem>
+
+ <listitem>
+ <para>The attribute
+ <computeroutput>IMachine::sessionType</computeroutput> has been
+ renamed to
+ <link linkend="IMachine__sessionName">IMachine::sessionName()</link>.
+ This cleans up the confusing terminology (as the session type is
+ something different).</para>
+ </listitem>
+
+ <listitem>
+ <para>The attribute
+ <computeroutput>IMachine::guestPropertyNotificationPatterns</computeroutput>
+ has been removed. In practice it was not usable because it is too
+ global and didn't distinguish between API clients.</para>
+ </listitem>
+
+ <listitem><para>Drag and drop APIs were changed as follows:<itemizedlist>
+
+ <listitem>
+ <para>Methods for providing host to guest drag and drop
+ functionality, such as
+ <computeroutput>IGuest::dragHGEnter</computeroutput>,
+ <computeroutput>IGuest::dragHGMove()</computeroutput>,
+ <computeroutput>IGuest::dragHGLeave()</computeroutput>,
+ <computeroutput>IGuest::dragHGDrop()</computeroutput> and
+ <computeroutput>IGuest::dragHGPutData()</computeroutput>,
+ have been moved to an abstract base class called
+ <link linkend="IDnDTarget">IDnDTarget</link>.
+ VirtualBox implements this base class in the
+ <link linkend="IGuestDnDTarget">IGuestDnDTarget</link>
+ interface. The implementation can be used by using the
+ <link linkend="IGuest__dnDTarget">IGuest::dnDTarget()</link>
+ method.</para>
+ <para>Methods for providing guest to host drag and drop
+ functionality, such as
+ <computeroutput>IGuest::dragGHPending()</computeroutput>,
+ <computeroutput>IGuest::dragGHDropped()</computeroutput> and
+ <computeroutput>IGuest::dragGHGetData()</computeroutput>,
+ have been moved to an abstract base class called
+ <link linkend="IDnDSource">IDnDSource</link>.
+ VirtualBox implements this base class in the
+ <link linkend="IGuestDnDSource">IGuestDnDSource</link>
+ interface. The implementation can be used by using the
+ <link linkend="IGuest__dnDSource">IGuest::dnDSource()</link>
+ method.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>DragAndDropAction</computeroutput>
+ enumeration has been renamed to
+ <link linkend="DnDAction">DnDAction</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>DragAndDropMode</computeroutput>
+ enumeration has been renamed to
+ <link linkend="DnDMode">DnDMode</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The attribute
+ <computeroutput>IMachine::dragAndDropMode</computeroutput>
+ has been renamed to
+ <link linkend="IMachine__dnDMode">IMachine::dnDMode()</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The event
+ <computeroutput>IDragAndDropModeChangedEvent</computeroutput>
+ has been renamed to
+ <link linkend="IDnDModeChangedEvent">IDnDModeChangedEvent</link>.</para>
+ </listitem>
+
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem><para>IDisplay and IFramebuffer interfaces were changed to
+ allow IFramebuffer object to reside in a separate frontend
+ process:<itemizedlist>
+
+ <listitem><para>
+ IDisplay::ResizeCompleted() has been removed, because the
+ IFramebuffer object does not provide the screen memory anymore.
+ </para></listitem>
+
+ <listitem><para>
+ IDisplay::SetFramebuffer() has been replaced with
+ IDisplay::AttachFramebuffer() and IDisplay::DetachFramebuffer().
+ </para></listitem>
+
+ <listitem><para>
+ IDisplay::GetFramebuffer() has been replaced with
+ IDisplay::QueryFramebuffer().
+ </para></listitem>
+
+ <listitem><para>
+ IDisplay::GetScreenResolution() has a new output parameter
+ <computeroutput>guestMonitorStatus</computeroutput>
+ which tells whether the monitor is enabled in the guest.
+ </para></listitem>
+
+ <listitem><para>
+ IDisplay::TakeScreenShot() and IDisplay::TakeScreenShotToArray()
+ have a new parameter
+ <computeroutput>bitmapFormat</computeroutput>. As a consequence of
+ this, IDisplay::TakeScreenShotPNGToArray() has been removed.
+ </para></listitem>
+
+ <listitem><para>
+ IFramebuffer::RequestResize() has been replaced with
+ IFramebuffer::NotifyChange().
+ </para></listitem>
+
+ <listitem><para>
+ IFramebuffer::NotifyUpdateImage() added to support IFramebuffer
+ objects in a different process.
+ </para></listitem>
+
+ <listitem><para>
+ IFramebuffer::Lock(), IFramebuffer::Unlock(),
+ IFramebuffer::Address(), IFramebuffer::UsesGuestVRAM() have been
+ removed because the IFramebuffer object does not provide the screen
+ memory anymore.
+ </para></listitem>
+
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem><para>IGuestSession, IGuestFile and IGuestProcess interfaces
+ were changed as follows:
+ <itemizedlist>
+ <listitem>
+ <para>Replaced IGuestSession::directoryQueryInfo and
+ IGuestSession::fileQueryInfo with a new
+ <link linkend="IGuestSession__fsObjQueryInfo">IGuestSession::fsObjQueryInfo</link>
+ method that works on any type of file system object.</para>
+ </listitem>
+ <listitem>
+ <para>Replaced IGuestSession::fileRemove,
+ IGuestSession::symlinkRemoveDirectory and
+ IGuestSession::symlinkRemoveFile with a new
+ <link linkend="IGuestSession__fsObjRemove">IGuestSession::fsObjRemove</link>
+ method that works on any type of file system object except
+ directories. (fileRemove also worked on any type of object
+ too, though that was not the intent of the method.)</para>
+ </listitem>
+ <listitem>
+ <para>Replaced IGuestSession::directoryRename and
+ IGuestSession::directoryRename with a new
+ <link linkend="IGuestSession__fsObjRename">IGuestSession::fsObjRename</link>
+ method that works on any type of file system object.
+ (directoryRename and fileRename may already have worked for
+ any kind of object, but that was never the intent of the
+ methods.)</para>
+ </listitem>
+ <listitem>
+ <para>Replaced the unimplemented IGuestSession::directorySetACL
+ and IGuestSession::fileSetACL with a new
+ <link linkend="IGuestSession__fsObjSetACL">IGuestSession::fsObjSetACL</link>
+ method that works on all type of file system object. Also
+ added a UNIX-style mode parameter as an alternative to the
+ ACL.</para>
+ </listitem>
+ <listitem>
+ <para>Replaced IGuestSession::fileRemove,
+ IGuestSession::symlinkRemoveDirectory and
+ IGuestSession::symlinkRemoveFile with a new
+ <link linkend="IGuestSession__fsObjRemove">IGuestSession::fsObjRemove</link>
+ method that works on any type of file system object except
+ directories (fileRemove also worked on any type of object,
+ though that was not the intent of the method.)</para>
+ </listitem>
+ <listitem>
+ <para>Renamed IGuestSession::copyTo to
+ <link linkend="IGuestSession__fileCopyToGuest">IGuestSession::fileCopyToGuest</link>.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed IGuestSession::copyFrom to
+ <link linkend="IGuestSession__fileCopyFromGuest">IGuestSession::fileCopyFromGuest</link>.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed the CopyFileFlag enum to
+ <link linkend="FileCopyFlag">FileCopyFlag</link>.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed the IGuestSession::environment attribute to
+ <link linkend="IGuestSession__environmentChanges">IGuestSession::environmentChanges</link>
+ to better reflect what it does.</para>
+ </listitem>
+ <listitem>
+ <para>Changed the
+ <link linkend="IProcess__environment">IGuestProcess::environment</link>
+ to a stub returning E_NOTIMPL since it wasn't doing what was
+ advertised (returned changes, not the actual environment).</para>
+ </listitem>
+ <listitem>
+ <para>Renamed IGuestSession::environmentSet to
+ <link linkend="IGuestSession__environmentScheduleSet">IGuestSession::environmentScheduleSet</link>
+ to better reflect what it does.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed IGuestSession::environmentUnset to
+ <link linkend="IGuestSession__environmentScheduleUnset">IGuestSession::environmentScheduleUnset</link>
+ to better reflect what it does.</para>
+ </listitem>
+ <listitem>
+ <para>Removed IGuestSession::environmentGet it was only getting
+ changes while giving the impression it was actual environment
+ variables, and it did not represent scheduled unset
+ operations.</para>
+ </listitem>
+ <listitem>
+ <para>Removed IGuestSession::environmentClear as it duplicates
+ assigning an empty array to the
+ <link linkend="IGuestSession__environmentChanges">IGuestSession::environmentChanges</link>
+ (formerly known as IGuestSession::environment).</para>
+ </listitem>
+ <listitem>
+ <para>Changed the
+ <link linkend="IGuestSession__processCreate">IGuestSession::processCreate</link>
+ and
+ <link linkend="IGuestSession__processCreateEx">IGuestSession::processCreateEx</link>
+ methods to accept arguments starting with argument zero (argv[0])
+ instead of argument one (argv[1]). (Not yet implemented on the
+ guest additions side, so argv[0] will probably be ignored for a
+ short while.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Added a followSymlink parameter to the following methods:
+ <itemizedlist>
+ <listitem><para><link linkend="IGuestSession__directoryExists">IGuestSession::directoryExists</link></para></listitem>
+ <listitem><para><link linkend="IGuestSession__fileExists">IGuestSession::fileExists</link></para></listitem>
+ <listitem><para><link linkend="IGuestSession__fileQuerySize">IGuestSession::fileQuerySize</link></para></listitem>
+ </itemizedlist></para>
+ </listitem>
+ <listitem>
+ <para>The parameters to the
+ <link linkend="IGuestSession__fileOpen">IGuestSession::fileOpen</link>
+ and
+ <link linkend="IGuestSession__fileOpenEx">IGuestSession::fileOpenEx</link>
+ methods were altered:<itemizedlist>
+ <listitem><para>The openMode string parameter was replaced by
+ the enum
+ <link linkend="FileAccessMode">FileAccessMode</link>
+ and renamed to accessMode.</para></listitem>
+ <listitem><para>The disposition string parameter was replaced
+ by the enum
+ <link linkend="FileOpenAction">FileOpenAction</link>
+ and renamed to openAction.</para></listitem>
+ <listitem><para>The unimplemented sharingMode string parameter
+ was replaced by the enum
+ <link linkend="FileSharingMode">FileSharingMode</link>
+ (fileOpenEx only).</para></listitem>
+ <listitem><para>Added a flags parameter taking a list of
+ <link linkend="FileOpenExFlag">FileOpenExFlag</link> values
+ (fileOpenEx only).</para></listitem>
+ <listitem><para>Removed the offset parameter (fileOpenEx
+ only).</para></listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IFile__seek">IGuestFile::seek</link> now
+ returns the new offset.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed the FileSeekType enum used by
+ <link linkend="IFile__seek">IGuestFile::seek</link>
+ to <link linkend="FileSeekOrigin">FileSeekOrigin</link> and
+ added the missing End value and renaming the Set to
+ Begin.</para>
+ </listitem>
+ <listitem>
+ <para>Extended the unimplemented
+ <link linkend="IFile__setACL">IGuestFile::setACL</link>
+ method with a UNIX-style mode parameter as an alternative to
+ the ACL.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed the IFile::openMode attribute to
+ <link linkend="IFile__accessMode">IFile::accessMode</link>
+ and change the type from string to
+ <link linkend="FileAccessMode">FileAccessMode</link> to reflect
+ the changes to the fileOpen methods.</para>
+ </listitem>
+ <listitem>
+ <para>Renamed the IGuestFile::disposition attribute to
+ <link linkend="IFile__openAction">IFile::openAction</link> and
+ change the type from string to
+ <link linkend="FileOpenAction">FileOpenAction</link> to reflect
+ the changes to the fileOpen methods.</para>
+ </listitem>
+
+ <!-- Non-incompatible things worth mentioning (stubbed methods/attrs aren't worth it). -->
+ <listitem>
+ <para>Added
+ <link linkend="IGuestSession__pathStyle">IGuestSession::pathStyle</link>
+ attribute.</para>
+ </listitem>
+ <listitem>
+ <para>Added
+ <link linkend="IGuestSession__fsObjExists">IGuestSession::fsObjExists</link>
+ attribute.</para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem><para>
+ IConsole::GetDeviceActivity() returns information about multiple
+ devices.
+ </para></listitem>
+
+ <listitem><para>
+ IMachine::ReadSavedThumbnailToArray() has a new parameter
+ <computeroutput>bitmapFormat</computeroutput>. As a consequence of
+ this, IMachine::ReadSavedThumbnailPNGToArray() has been removed.
+ </para></listitem>
+
+ <listitem><para>
+ IMachine::QuerySavedScreenshotPNGSize() has been renamed to
+ IMachine::QuerySavedScreenshotInfo() which also returns
+ an array of available screenshot formats.
+ </para></listitem>
+
+ <listitem><para>
+ IMachine::ReadSavedScreenshotPNGToArray() has been renamed to
+ IMachine::ReadSavedScreenshotToArray() which has a new parameter
+ <computeroutput>bitmapFormat</computeroutput>.
+ </para></listitem>
+
+ <listitem><para>
+ IMachine::QuerySavedThumbnailSize() has been removed.
+ </para></listitem>
+
+ <listitem>
+ <para>The method
+ <link linkend="IWebsessionManager__getSessionObject">IWebsessionManager::getSessionObject()</link>
+ now returns a new <link linkend="ISession">ISession</link> instance
+ for every invocation. This puts the behavior in line with other
+ binding styles, which never forced the equivalent of establishing
+ another connection and logging in again to get another
+ instance.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.3</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The explicit medium locking methods
+ <link linkend="IMedium__lockRead">IMedium::lockRead()</link>
+ and <link linkend="IMedium__lockWrite">IMedium::lockWrite()</link>
+ have been redesigned. They return a lock token object reference
+ now, and calling the
+ <link linkend="IToken__abandon">IToken::abandon()</link> method (or
+ letting the reference count to this object drop to 0) will unlock
+ it. This eliminates the rather common problem that an API client
+ crash left behind locks, and also improves the safety (API clients
+ can't release locks they didn't obtain).</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list of
+ <link linkend="IAppliance__write">IAppliance::write()</link>
+ has been changed slightly, to allow multiple flags to be
+ passed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IMachine::delete</computeroutput>
+ has been renamed to
+ <link linkend="IMachine__deleteConfig">IMachine::deleteConfig()</link>,
+ to improve API client binding compatibility.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IMachine::export</computeroutput>
+ has been renamed to
+ <link linkend="IMachine__exportTo">IMachine::exportTo()</link>,
+ to improve API client binding compatibility.</para>
+ </listitem>
+
+ <listitem>
+ <para>For
+ <link linkend="IMachine__launchVMProcess">IMachine::launchVMProcess()</link>
+ the meaning of the <computeroutput>type</computeroutput> parameter
+ has changed slightly. Empty string now means that the per-VM or
+ global default frontend is launched. Most callers of this method
+ should use the empty string now, unless they really want to override
+ the default and launch a particular frontend.</para>
+ </listitem>
+
+ <listitem>
+ <para>Medium management APIs were changed as follows:<itemizedlist>
+
+ <listitem>
+ <para>The type of attribute
+ <link linkend="IMedium__variant">IMedium::variant()</link>
+ changed from <computeroutput>unsigned long</computeroutput>
+ to <computeroutput>safe-array MediumVariant</computeroutput>.
+ It is an array of flags instead of a set of flags which were
+ stored inside one variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IMedium__cloneTo">IMedium::cloneTo()</link>
+ was modified. The type of parameter variant was changed from
+ unsigned long to safe-array MediumVariant.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IMedium__createBaseStorage">IMedium::createBaseStorage()</link>
+ was modified. The type of parameter variant was changed from
+ unsigned long to safe-array MediumVariant.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IMedium__createDiffStorage">IMedium::createDiffStorage()</link>
+ was modified. The type of parameter variant was changed from
+ unsigned long to safe-array MediumVariant.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IMedium__cloneToBase">IMedium::cloneToBase()</link>
+ was modified. The type of parameter variant was changed from
+ unsigned long to safe-array MediumVariant.
+ </para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>The type of attribute
+ <link linkend="IMediumFormat__capabilities">IMediumFormat::capabilities()</link>
+ changed from <computeroutput>unsigned long</computeroutput> to
+ <computeroutput>safe-array MediumFormatCapabilities</computeroutput>.
+ It is an array of flags instead of a set of flags which were stored
+ inside one variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The attribute
+ <link linkend="IMedium__logicalSize">IMedium::logicalSize()</link>
+ now returns the logical size of exactly this medium object (whether
+ it is a base or diff image). The old behavior was no longer
+ acceptable, as each image can have a different capacity.</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest control APIs - such as
+ <link linkend="IGuest">IGuest</link>,
+ <link linkend="IGuestSession">IGuestSession</link>,
+ <link linkend="IGuestProcess">IGuestProcess</link> and so on - now
+ emit own events to provide clients much finer control and the ability
+ to write own frontends for guest operations. The event
+ <link linkend="IGuestSessionEvent">IGuestSessionEvent</link> acts as
+ an abstract base class for all guest control events. Certain guest
+ events contain a
+ <link linkend="IVirtualBoxErrorInfo">IVirtualBoxErrorInfo</link>
+ member to provide more information in case of an error happened on
+ the guest side.</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest control sessions on the guest started by
+ <link linkend="IGuest__createSession">IGuest::createSession()</link>
+ now are dedicated guest processes to provide more safety and
+ performance for certain operations. Also, the
+ <link linkend="IGuest__createSession">IGuest::createSession()</link>
+ call does not wait for the guest session being created anymore due
+ to the dedicated guest session processes just mentioned. This also
+ will enable webservice clients to handle guest session creation
+ more gracefully. To wait for a guest session being started, use the
+ newly added attribute
+ <link linkend="IGuestSession__status">IGuestSession::status()</link>
+ to query the current guest session status.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <link linkend="IGuestFile">IGuestFile</link>
+ APIs are now implemented to provide native guest file access from
+ the host.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IGuest__updateGuestAdditions">IMedium::updateGuestAdditions()</link>
+ was modified. It now supports specifying optional command line
+ arguments for the Guest Additions installer performing the actual
+ update on the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>A new event
+ <link linkend="IGuestUserStateChangedEvent">IGuestUserStateChangedEvent</link>
+ was introduced to provide guest user status updates to the host via
+ event listeners. To use this event there needs to be at least the 4.3
+ Guest Additions installed on the guest. At the moment only the states
+ "Idle" and "InUse" of the
+ <link linkend="GuestUserState">GuestUserState</link> enumeration arei
+ supported on Windows guests, starting at Windows 2000 SP2.</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The attribute
+ <link linkend="IGuestSession__protocolVersion">IGuestSession::protocolVersion</link>
+ was added to provide a convenient way to lookup the guest session's
+ protocol version it uses to communicate with the installed Guest
+ Additions on the guest. Older Guest Additions will set the protocol
+ version to 1, whereas Guest Additions 4.3 will set the protocol
+ version to 2. This might change in the future as new features
+ arise.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IDisplay::getScreenResolution</computeroutput>
+ has been extended to return the display position in the guest.</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <link linkend="IUSBController">IUSBController</link>
+ class is not a singleton of
+ <link linkend="IMachine">IMachine</link> anymore but
+ <link linkend="IMachine">IMachine</link> contains a list of USB
+ controllers present in the VM. The USB device filter handling was
+ moved to
+ <link linkend="IUSBDeviceFilters">IUSBDeviceFilters</link>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Guest control APIs for executing guest processes, working with
+ guest files or directories have been moved to the newly introduced
+ <link linkend="IGuestSession">IGuestSession</link> interface which
+ can be created by calling
+ <link linkend="IGuest__createSession">IGuest::createSession()</link>.</para>
+
+ <para>A guest session will act as a
+ guest user's impersonation so that the guest credentials only have to
+ be provided when creating a new guest session. There can be up to 32
+ guest sessions at once per VM, each session serving up to 2048 guest
+ processes running or files opened.</para>
+
+ <para>Instead of working with process or directory handles before
+ version 4.2, there now are the dedicated interfaces
+ <link linkend="IGuestProcess">IGuestProcess</link>,
+ <link linkend="IGuestDirectory">IGuestDirectory</link> and
+ <link linkend="IGuestFile">IGuestFile</link>. To retrieve more
+ information of a file system object the new interface
+ <link linkend="IGuestFsObjInfo">IGuestFsObjInfo</link> has been
+ introduced.</para>
+
+ <para>Even though the guest control API was changed it is backwards
+ compatible so that it can be used with older installed Guest
+ Additions. However, to use upcoming features like process termination
+ or waiting for input / output new Guest Additions must be installed
+ when these features got implemented.</para>
+
+ <para>The following limitations apply:
+ <itemizedlist>
+ <listitem><para>The <link linkend="IGuestFile">IGuestFile</link>
+ interface is not fully implemented yet.</para>
+ </listitem>
+ <listitem><para>The symbolic link APIs
+ <link linkend="IGuestSession__symlinkCreate">IGuestSession::symlinkCreate()</link>,
+ <link linkend="IGuestSession__symlinkExists">IGuestSession::symlinkExists()</link>,
+ <link linkend="IGuestSession__symlinkRead">IGuestSession::symlinkRead()</link>,
+ IGuestSession::symlinkRemoveDirectory() and
+ IGuestSession::symlinkRemoveFile() are not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>The directory APIs
+ <link linkend="IGuestSession__directoryRemove">IGuestSession::directoryRemove()</link>,
+ <link linkend="IGuestSession__directoryRemoveRecursive">IGuestSession::directoryRemoveRecursive()</link>,
+ IGuestSession::directoryRename() and
+ IGuestSession::directorySetACL() are not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>The temporary file creation API
+ <link linkend="IGuestSession__fileCreateTemp">IGuestSession::fileCreateTemp()</link>
+ is not implemented yet.</para>
+ </listitem>
+ <listitem><para>Guest process termination via
+ <link linkend="IProcess__terminate">IProcess::terminate()</link>
+ is not implemented yet.</para>
+ </listitem>
+ <listitem><para>Waiting for guest process output via
+ <link linkend="ProcessWaitForFlag__StdOut">ProcessWaitForFlag::StdOut</link>
+ and
+ <link linkend="ProcessWaitForFlag__StdErr">ProcessWaitForFlag::StdErr</link>
+ is not implemented yet.</para>
+ <para>To wait for process output,
+ <link linkend="IProcess__read">IProcess::read()</link> with
+ appropriate flags still can be used to periodically check for
+ new output data to arrive. Note that
+ <link linkend="ProcessCreateFlag__WaitForStdOut">ProcessCreateFlag::WaitForStdOut</link>
+ and / or
+ <link linkend="ProcessCreateFlag__WaitForStdErr">ProcessCreateFlag::WaitForStdErr</link>
+ need to be specified when creating a guest process via
+ <link linkend="IGuestSession__processCreate">IGuestSession::processCreate()</link>
+ or
+ <link linkend="IGuestSession__processCreateEx">IGuestSession::processCreateEx()</link>.</para>
+ </listitem>
+ <listitem>
+ <para>ACL (Access Control List) handling in general is not
+ implemented yet.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The <link linkend="LockType">LockType</link>
+ enumeration now has an additional value
+ <computeroutput>VM</computeroutput> which tells
+ <link linkend="IMachine__lockMachine">IMachine::lockMachine()</link>
+ to create a full-blown object structure for running a VM. This was
+ the previous behavior with <computeroutput>Write</computeroutput>,
+ which now only creates the minimal object structure to save time and
+ resources (at the moment the Console object is still created, but all
+ sub-objects such as Display, Keyboard, Mouse, Guest are not.</para>
+ </listitem>
+
+ <listitem>
+ <para>Machines can be put in groups (actually an array of groups).
+ The primary group affects the default placement of files belonging
+ to a VM.
+ <link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>
+ and
+ <link linkend="IVirtualBox__composeMachineFilename">IVirtualBox::composeMachineFilename()</link>
+ have been adjusted accordingly, the former taking an array of groups
+ as an additional parameter and the latter taking a group as an
+ additional parameter. The create option handling has been changed for
+ those two methods, too.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IVirtualBox::findMedium() has been removed, since
+ it provides a subset of the functionality of
+ <link linkend="IVirtualBox__openMedium">IVirtualBox::openMedium()</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The use of acronyms in API enumeration, interface, attribute
+ and method names has been made much more consistent, previously they
+ sometimes were lowercase and sometimes mixed case. They are now
+ consistently all caps:<table>
+ <title>Renamed identifiers in VirtualBox 4.2</title>
+
+ <tgroup cols="2" style="verywide">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Old name</emphasis></entry>
+
+ <entry><emphasis role="bold">New name</emphasis></entry>
+ </row>
+ <row>
+ <entry>PointingHidType</entry>
+ <entry><link linkend="PointingHIDType">PointingHIDType</link></entry>
+ </row>
+ <row>
+ <entry>KeyboardHidType</entry>
+ <entry><link linkend="KeyboardHIDType">KeyboardHIDType</link></entry>
+ </row>
+ <row>
+ <entry>IPciAddress</entry>
+ <entry><link linkend="IPCIAddress">IPCIAddress</link></entry>
+ </row>
+ <row>
+ <entry>IPciDeviceAttachment</entry>
+ <entry><link linkend="IPCIDeviceAttachment">IPCIDeviceAttachment</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::pointingHidType</entry>
+ <entry><link linkend="IMachine__pointingHIDType">IMachine::pointingHIDType</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::keyboardHidType</entry>
+ <entry><link linkend="IMachine__keyboardHIDType">IMachine::keyboardHIDType</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::hpetEnabled</entry>
+ <entry><link linkend="IMachine__HPETEnabled">IMachine::HPETEnabled</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::sessionPid</entry>
+ <entry><link linkend="IMachine__sessionPID">IMachine::sessionPID</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::ioCacheEnabled</entry>
+ <entry><link linkend="IMachine__IOCacheEnabled">IMachine::IOCacheEnabled</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::ioCacheSize</entry>
+ <entry><link linkend="IMachine__IOCacheSize">IMachine::IOCacheSize</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::pciDeviceAssignments</entry>
+ <entry><link linkend="IMachine__PCIDeviceAssignments">IMachine::PCIDeviceAssignments</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::attachHostPciDevice()</entry>
+ <entry><link linkend="IMachine__attachHostPCIDevice">IMachine::attachHostPCIDevice</link></entry>
+ </row>
+ <row>
+ <entry>IMachine::detachHostPciDevice()</entry>
+ <entry><link linkend="IMachine__detachHostPCIDevice">IMachine::detachHostPCIDevice()</link></entry>
+ </row>
+ <row>
+ <entry>IConsole::attachedPciDevices</entry>
+ <entry><link linkend="IConsole__attachedPCIDevices">IConsole::attachedPCIDevices</link></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::dhcpEnabled</entry>
+ <entry><link linkend="IHostNetworkInterface__DHCPEnabled">IHostNetworkInterface::DHCPEnabled</link></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableStaticIpConfig()</entry>
+ <entry><link linkend="IHostNetworkInterface__enableStaticIPConfig">IHostNetworkInterface::enableStaticIPConfig()</link></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableStaticIpConfigV6()</entry>
+ <entry><link linkend="IHostNetworkInterface__enableStaticIPConfigV6">IHostNetworkInterface::enableStaticIPConfigV6()</link></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableDynamicIpConfig()</entry>
+ <entry><link linkend="IHostNetworkInterface__enableDynamicIPConfig">IHostNetworkInterface::enableDynamicIPConfig()</link></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::dhcpRediscover()</entry>
+ <entry><link linkend="IHostNetworkInterface__DHCPRediscover">IHostNetworkInterface::DHCPRediscover()</link></entry>
+ </row>
+ <row>
+ <entry>IHost::Acceleration3DAvailable</entry>
+ <entry><link linkend="IHost__acceleration3DAvailable">IHost::acceleration3DAvailable</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedPae</entry>
+ <entry><link linkend="IGuestOSType__recommendedPAE">IGuestOSType::recommendedPAE</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedDvdStorageController</entry>
+ <entry><link linkend="IGuestOSType__recommendedDVDStorageController">IGuestOSType::recommendedDVDStorageController</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedDvdStorageBus</entry>
+ <entry><link linkend="IGuestOSType__recommendedDVDStorageBus">IGuestOSType::recommendedDVDStorageBus</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHdStorageController</entry>
+ <entry><link linkend="IGuestOSType__recommendedHDStorageController">IGuestOSType::recommendedHDStorageController</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHdStorageBus</entry>
+ <entry><link linkend="IGuestOSType__recommendedHDStorageBus">IGuestOSType::recommendedHDStorageBus</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsbHid</entry>
+ <entry><link linkend="IGuestOSType__recommendedUSBHID">IGuestOSType::recommendedUSBHID</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHpet</entry>
+ <entry><link linkend="IGuestOSType__recommendedHPET">IGuestOSType::recommendedHPET</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsbTablet</entry>
+ <entry><link linkend="IGuestOSType__recommendedUSBTablet">IGuestOSType::recommendedUSBTablet</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedRtcUseUtc</entry>
+ <entry><link linkend="IGuestOSType__recommendedRTCUseUTC">IGuestOSType::recommendedRTCUseUTC</link></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsb</entry>
+ <entry><link linkend="IGuestOSType__recommendedUSB">IGuestOSType::recommendedUSB</link></entry>
+ </row>
+ <row>
+ <entry>INetworkAdapter::natDriver</entry>
+ <entry><link linkend="INetworkAdapter__NATEngine">INetworkAdapter::NATEngine</link></entry>
+ </row>
+ <row>
+ <entry>IUSBController::enabledEhci</entry>
+ <entry>IUSBController::enabledEHCI"</entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpPrefix</entry>
+ <entry><link linkend="INATEngine__TFTPPrefix">INATEngine::TFTPPrefix</link></entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpBootFile</entry>
+ <entry><link linkend="INATEngine__TFTPBootFile">INATEngine::TFTPBootFile</link></entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpNextServer</entry>
+ <entry><link linkend="INATEngine__TFTPNextServer">INATEngine::TFTPNextServer</link></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsPassDomain</entry>
+ <entry><link linkend="INATEngine__DNSPassDomain">INATEngine::DNSPassDomain</link></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsProxy</entry>
+ <entry><link linkend="INATEngine__DNSProxy">INATEngine::DNSProxy</link></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsUseHostResolver</entry>
+ <entry><link linkend="INATEngine__DNSUseHostResolver">INATEngine::DNSUseHostResolver</link></entry>
+ </row>
+ <row>
+ <entry>VBoxEventType::OnHostPciDevicePlug</entry>
+ <entry><link linkend="VBoxEventType__OnHostPCIDevicePlug">VBoxEventType::OnHostPCIDevicePlug</link></entry>
+ </row>
+ <row>
+ <entry>ICPUChangedEvent::cpu</entry>
+ <entry><link linkend="ICPUChangedEvent__CPU">ICPUChangedEvent::CPU</link></entry>
+ </row>
+ <row>
+ <entry>INATRedirectEvent::hostIp</entry>
+ <entry><link linkend="INATRedirectEvent__hostIP">INATRedirectEvent::hostIP</link></entry>
+ </row>
+ <row>
+ <entry>INATRedirectEvent::guestIp</entry>
+ <entry><link linkend="INATRedirectEvent__guestIP">INATRedirectEvent::guestIP</link></entry>
+ </row>
+ <row>
+ <entry>IHostPciDevicePlugEvent</entry>
+ <entry><link linkend="IHostPCIDevicePlugEvent">IHostPCIDevicePlugEvent</link></entry>
+ </row>
+ </tbody>
+ </tgroup></table></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The method
+ <link linkend="IAppliance__importMachines">IAppliance::importMachines()</link>
+ has one more parameter now, which allows to configure the import
+ process in more detail.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The method
+ <link linkend="IVirtualBox__openMedium">IVirtualBox::openMedium()</link>
+ has one more parameter now, which allows resolving duplicate medium
+ UUIDs without the need for external tools.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <link linkend="INetworkAdapter">INetworkAdapter</link>
+ interface has been cleaned up. The various methods to activate an
+ attachment type have been replaced by the
+ <link linkend="INetworkAdapter__attachmentType">INetworkAdapter::attachmentType</link>
+ setter.</para>
+ <para>Additionally each attachment mode now has its own attribute,
+ which means that host only networks no longer share the settings with
+ bridged interfaces.</para>
+ <para>To allow introducing new network attachment implementations
+ without making API changes, the concept of a generic network
+ attachment driver has been introduced, which is configurable through
+ key/value properties.</para>
+ </listitem>
+
+ <listitem>
+ <para>This version introduces the guest facilities concept. A guest
+ facility either represents a module or feature the guest is running
+ or offering, which is defined by
+ <link linkend="AdditionsFacilityType">AdditionsFacilityType</link>.
+ Each facility is member of a
+ <link linkend="AdditionsFacilityClass">AdditionsFacilityClass</link>
+ and has a current status indicated by
+ <link linkend="AdditionsFacilityStatus">AdditionsFacilityStatus</link>,
+ together with a timestamp (in ms) of the last status update.</para>
+ <para>To address the above concept, the following changes were made:
+ <itemizedlist>
+ <listitem>
+ <para>
+ In the <link linkend="IGuest">IGuest</link> interface, the
+ following were removed:
+ <itemizedlist>
+ <listitem>
+ <para>the
+ <computeroutput>supportsSeamless</computeroutput>
+ attribute;</para>
+ </listitem>
+ <listitem>
+ <para>the
+ <computeroutput>supportsGraphics</computeroutput>
+ attribute;</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The function
+ <link linkend="IGuest__getFacilityStatus">IGuest::getFacilityStatus()</link>
+ was added. It quickly provides a facility's status without
+ the need to get the facility collection with
+ <link linkend="IGuest__facilities">IGuest::facilities</link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The attribute
+ <link linkend="IGuest__facilities">IGuest::facilities</link>
+ was added to provide an easy to access collection of all
+ currently known guest facilities, that is, it contains all
+ facilies where at least one status update was made since the
+ guest was started.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The interface
+ <link linkend="IAdditionsFacility">IAdditionsFacility</link>
+ was added to represent a single facility returned by
+ <link linkend="IGuest__facilities">IGuest::facilities</link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link linkend="AdditionsFacilityStatus">AdditionsFacilityStatus</link>
+ was added to represent a facility's overall status.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link linkend="AdditionsFacilityType">AdditionsFacilityType</link> and
+ <link linkend="AdditionsFacilityClass">AdditionsFacilityClass</link> were
+ added to represent the facility's type and class.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.0</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>A new Java glue layer replacing the previous OOWS JAX-WS
+ bindings was introduced. The new library allows for uniform code
+ targeting both local (COM/XPCOM) and remote (SOAP) transports. Now,
+ instead of <computeroutput>IWebsessionManager</computeroutput>, the
+ new class <computeroutput>VirtualBoxManager</computeroutput> must be
+ used. See <xref linkend="javaapi"/> for details.</para>
+ </listitem>
+
+ <listitem>
+ <para>The confusingly named and impractical session APIs were
+ changed. In existing client code, the following changes need to be
+ made:<itemizedlist>
+ <listitem>
+ <para>Replace any
+ <computeroutput>IVirtualBox::openSession(uuidMachine,
+ ...)</computeroutput> API call with the machine's
+ <link linkend="IMachine__lockMachine">IMachine::lockMachine()</link>
+ call and a
+ <computeroutput>LockType.Write</computeroutput> argument. The
+ functionality is unchanged, but instead of "opening a direct
+ session on a machine" all documentation now refers to
+ "obtaining a write lock on a machine for the client
+ session".</para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, replace any
+ <computeroutput>IVirtualBox::openExistingSession(uuidMachine,
+ ...)</computeroutput> call with the machine's
+ <link linkend="IMachine__lockMachine">IMachine::lockMachine()</link>
+ call and a <computeroutput>LockType.Shared</computeroutput>
+ argument. Whereas it was previously impossible to connect a
+ client session to a running VM process in a race-free manner,
+ the new API will atomically either write-lock the machine for
+ the current session or establish a remote link to an existing
+ session. Existing client code which tried calling both
+ <computeroutput>openSession()</computeroutput> and
+ <computeroutput>openExistingSession()</computeroutput> can now
+ use this one call instead.</para>
+ </listitem>
+
+ <listitem>
+ <para>Third, replace any
+ <computeroutput>IVirtualBox::openRemoteSession(uuidMachine,
+ ...)</computeroutput> call with the machine's
+ <link linkend="IMachine__launchVMProcess">IMachine::launchVMProcess()</link>
+ call. The functionality is unchanged.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <link linkend="SessionState">SessionState</link> enum
+ was adjusted accordingly: "Open" is now "Locked", "Closed" is
+ now "Unlocked", "Closing" is now "Unlocking".</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Virtual machines created with VirtualBox 4.0 or later no
+ longer register their media in the global media registry in the
+ <computeroutput>VirtualBox.xml</computeroutput> file. Instead, such
+ machines list all their media in their own machine XML files. As a
+ result, a number of media-related APIs had to be modified again.
+ <itemizedlist>
+ <listitem>
+ <para>Neither
+ <computeroutput>IVirtualBox::createHardDisk()</computeroutput>
+ nor
+ <link linkend="IVirtualBox__openMedium">IVirtualBox::openMedium()</link>
+ register media automatically any more.</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__attachDevice">IMachine::attachDevice()</link>
+ and
+ <link linkend="IMachine__mountMedium">IMachine::mountMedium()</link>
+ now take an IMedium object instead of a UUID as an argument. It
+ is these two calls which add media to a registry now (either a
+ machine registry for machines created with VirtualBox 4.0 or
+ later or the global registry otherwise). As a consequence, if a
+ medium is opened but never attached to a machine, it is no
+ longer added to any registry any more.</para>
+ </listitem>
+
+ <listitem>
+ <para>To reduce code duplication, the APIs
+ IVirtualBox::findHardDisk(), getHardDisk(), findDVDImage(),
+ getDVDImage(), findFloppyImage() and getFloppyImage() have all
+ been merged into IVirtualBox::findMedium(), and
+ IVirtualBox::openHardDisk(), openDVDImage() and
+ openFloppyImage() have all been merged into
+ <link linkend="IVirtualBox__openMedium">IVirtualBox::openMedium()</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The rare use case of changing the UUID and parent UUID
+ of a medium previously handled by
+ <computeroutput>openHardDisk()</computeroutput> is now in a
+ separate IMedium::setIDs method.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>ISystemProperties::get/setDefaultHardDiskFolder()</computeroutput>
+ have been removed since disk images are now by default placed
+ in each machine's folder.</para>
+ </listitem>
+
+ <listitem>
+ <para>The
+ <link linkend="ISystemProperties__infoVDSize">ISystemProperties::infoVDSize</link>
+ attribute replaces the
+ <computeroutput>getMaxVDISize()</computeroutput>
+ API call; this now uses bytes instead of megabytes.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Machine management APIs were enhanced as follows:<itemizedlist>
+ <listitem>
+ <para><link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>
+ is no longer restricted to creating machines in the default
+ "Machines" folder, but can now create machines at arbitrary
+ locations. For this to work, the parameter list had to be
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para>The long-deprecated
+ <computeroutput>IVirtualBox::createLegacyMachine()</computeroutput>
+ API has been removed.</para>
+ </listitem>
+
+ <listitem>
+ <para>To reduce code duplication and for consistency with the
+ aforementioned media APIs,
+ <computeroutput>IVirtualBox::getMachine()</computeroutput> has
+ been merged with
+ <link linkend="IVirtualBox__findMachine">IVirtualBox::findMachine()</link>,
+ and
+ <computeroutput>IMachine::getSnapshot()</computeroutput> has
+ been merged with
+ <link linkend="IMachine__findSnapshot">IMachine::findSnapshot()</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVirtualBox::unregisterMachine()</computeroutput>
+ was replaced with
+ <link linkend="IMachine__unregister">IMachine::unregister()</link>
+ with additional functionality for cleaning up machine
+ files.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IMachine::deleteSettings</computeroutput>
+ has been replaced by IMachine::delete, which allows specifying
+ which disk images are to be deleted as part of the deletion,
+ and because it can take a while it also returns a
+ <computeroutput>IProgress</computeroutput> object reference,
+ so that the completion of the asynchronous activities can be
+ monitored.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IConsole::forgetSavedState</computeroutput>
+ has been renamed to
+ <computeroutput>IConsole::discardSavedState()</computeroutput>.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>All event callbacks APIs were replaced with a new, generic
+ event mechanism that can be used both locally (COM, XPCOM) and
+ remotely (web services). Also, the new mechanism is usable from
+ scripting languages and a local Java. See
+ <link linkend="IEvent">events</link> for details. The new concept
+ will require changes to all clients that used event callbacks.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>additionsActive()</computeroutput> was replaced
+ with
+ <link linkend="IGuest__additionsRunLevel">additionsRunLevel()</link>
+ and
+ <link linkend="IGuest__getAdditionsStatus">getAdditionsStatus()</link>
+ in order to support a more detailed status of the current Guest
+ Additions loading/readiness state.
+ <link linkend="IGuest__additionsVersion">IGuest::additionsVersion()</link>
+ no longer returns the Guest Additions interface version but the
+ installed Guest Additions version and revision in form of
+ <computeroutput>3.3.0r12345</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>To address shared folders auto-mounting support, the following
+ APIs were extended to require an additional
+ <computeroutput>automount</computeroutput> parameter: <itemizedlist>
+ <listitem>
+ <para><link linkend="IVirtualBox__createSharedFolder">IVirtualBox::createSharedFolder()</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__createSharedFolder">IMachine::createSharedFolder()</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IConsole__createSharedFolder">IConsole::createSharedFolder()</link></para>
+ </listitem>
+ </itemizedlist> Also, a new property named
+ <computeroutput>autoMount</computeroutput> was added to the
+ <link linkend="ISharedFolder">ISharedFolder</link>
+ interface.</para>
+ </listitem>
+
+ <listitem>
+ <para>The appliance (OVF) APIs were enhanced as
+ follows:<itemizedlist>
+ <listitem>
+ <para><computeroutput>IMachine::export</computeroutput>
+ received an extra parameter
+ <computeroutput>location</computeroutput>, which is used to
+ decide for the disk naming.</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IAppliance__write">IAppliance::write()</link>
+ received an extra parameter
+ <computeroutput>manifest</computeroutput>, which can suppress
+ creating the manifest file on export.</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IVFSExplorer__entryList">IVFSExplorer::entryList()</link>
+ received two extra parameters
+ <computeroutput>sizes</computeroutput> and
+ <computeroutput>modes</computeroutput>, which contains the
+ sizes (in bytes) and the file access modes (in octal form) of
+ the returned files.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Support for remote desktop access to virtual machines has been
+ cleaned up to allow third party implementations of the remote
+ desktop server. This is called the VirtualBox Remote Desktop
+ Extension (VRDE) and can be added to VirtualBox by installing the
+ corresponding extension package; see the VirtualBox User Manual for
+ details.</para>
+
+ <para>The following API changes were made to support the VRDE
+ interface: <itemizedlist>
+ <listitem>
+ <para><computeroutput>IVRDPServer</computeroutput> has been
+ renamed to
+ <link linkend="IVRDEServer">IVRDEServer</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IRemoteDisplayInfo</computeroutput> has
+ been renamed to
+ <link linkend="IVRDEServerInfo">IVRDEServerInfo</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__VRDEServer">IMachine::VRDEServer</link>
+ replaces
+ <computeroutput>VRDPServer.</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IConsole__VRDEServerInfo">IConsole::VRDEServerInfo</link>
+ replaces
+ <computeroutput>RemoteDisplayInfo</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="ISystemProperties__VRDEAuthLibrary">ISystemProperties::VRDEAuthLibrary</link>
+ replaces
+ <computeroutput>RemoteDisplayAuthLibrary</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The following methods have been implemented in
+ <computeroutput>IVRDEServer</computeroutput> to support
+ generic VRDE properties: <itemizedlist>
+ <listitem>
+ <para><link linkend="IVRDEServer__setVRDEProperty">IVRDEServer::setVRDEProperty</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IVRDEServer__getVRDEProperty">IVRDEServer::getVRDEProperty</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IVRDEServer__VRDEProperties">IVRDEServer::VRDEProperties</link></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>A few implementation-specific attributes of the old
+ <computeroutput>IVRDPServer</computeroutput> interface have
+ been removed and replaced with properties: <itemizedlist>
+ <listitem>
+ <para><computeroutput>IVRDPServer::Ports</computeroutput>
+ has been replaced with the
+ <computeroutput>"TCP/Ports"</computeroutput> property.
+ The property value is a string, which contains a
+ comma-separated list of ports or ranges of ports. Use a
+ dash between two port numbers to specify a range.
+ Example:
+ <computeroutput>"5000,5010-5012"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::NetAddress</computeroutput>
+ has been replaced with the
+ <computeroutput>"TCP/Address"</computeroutput> property.
+ The property value is an IP address string. Example:
+ <computeroutput>"127.0.0.1"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::VideoChannel</computeroutput>
+ has been replaced with the
+ <computeroutput>"VideoChannel/Enabled"</computeroutput>
+ property. The property value is either
+ <computeroutput>"true"</computeroutput> or
+ <computeroutput>"false"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::VideoChannelQuality</computeroutput>
+ has been replaced with the
+ <computeroutput>"VideoChannel/Quality"</computeroutput>
+ property. The property value is a string which contain a
+ decimal number in range 10..100. Invalid values are
+ ignored and the quality is set to the default value 75.
+ Example: <computeroutput>"50"</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>The VirtualBox external authentication module interface has
+ been updated and made more generic. Because of that,
+ <computeroutput>VRDPAuthType</computeroutput> enumeration has been
+ renamed to <link linkend="AuthType">AuthType</link>.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The following interfaces were renamed for consistency:
+ <itemizedlist>
+ <listitem>
+ <para>IMachine::getCpuProperty() is now
+ <link linkend="IMachine__getCPUProperty">IMachine::getCPUProperty()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::setCpuProperty() is now
+ <link linkend="IMachine__setCPUProperty">IMachine::setCPUProperty()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::getCpuIdLeaf() is now
+ <link linkend="IMachine__getCPUIDLeaf">IMachine::getCPUIDLeaf()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::setCpuIdLeaf() is now
+ <link linkend="IMachine__setCPUIDLeaf">IMachine::setCPUIDLeaf()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::removeCpuIdLeaf() is now
+ <link linkend="IMachine__removeCPUIDLeaf">IMachine::removeCPUIDLeaf()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::removeAllCpuIdLeafs() is now
+ <link linkend="IMachine__removeAllCPUIDLeaves">IMachine::removeAllCPUIDLeaves()</link>;</para>
+ </listitem>
+
+ <listitem>
+ <para>the CpuPropertyType enum is now
+ <link linkend="CPUPropertyType">CPUPropertyType</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>IVirtualBoxCallback::onSnapshotDiscarded() is now
+ IVirtualBoxCallback::onSnapshotDeleted.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>When creating a VM configuration with
+ <link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>
+ it is now possible to ignore existing configuration files which would
+ previously have caused a failure. For this the
+ <computeroutput>override</computeroutput> parameter was added.</para>
+ </listitem>
+
+ <listitem>
+ <para>Deleting snapshots via
+ <computeroutput>IConsole::deleteSnapshot()</computeroutput> is now
+ possible while the associated VM is running in almost all cases.
+ The API is unchanged, but client code that verifies machine states
+ to determine whether snapshots can be deleted may need to be
+ adjusted.</para>
+ </listitem>
+
+ <listitem>
+ <para>The IoBackendType enumeration was replaced with a boolean flag
+ (see
+ <link linkend="IStorageController__useHostIOCache">IStorageController::useHostIOCache</link>).</para>
+ </listitem>
+
+ <listitem>
+ <para>To address multi-monitor support, the following APIs were
+ extended to require an additional
+ <computeroutput>screenId</computeroutput> parameter: <itemizedlist>
+ <listitem>
+ <para>IMachine::querySavedThumbnailSize()</para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__readSavedThumbnailToArray">IMachine::readSavedThumbnailToArray()</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__querySavedScreenshotInfo">IMachine::querySavedScreenshotPNGSize()</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IMachine__readSavedScreenshotToArray">IMachine::readSavedScreenshotPNGToArray()</link></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>shape</computeroutput> parameter of
+ IConsoleCallback::onMousePointerShapeChange was changed from a
+ implementation-specific pointer to a safearray, enabling scripting
+ languages to process pointer shapes.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Due to the new flexibility in medium attachments that was
+ introduced with version 3.1 (in particular, full flexibility with
+ attaching CD/DVD drives to arbitrary controllers), we seized the
+ opportunity to rework all interfaces dealing with storage media to
+ make the API more flexible as well as logical. The
+ <link linkend="IStorageController">IStorageController</link>,
+ <link linkend="IMedium">IMedium</link>,
+ <link linkend="IMediumAttachment">IMediumAttachment</link> and
+ <link linkend="IMachine">IMachine</link> interfaces were
+ affected the most. Existing code using them to configure storage and
+ media needs to be carefully checked.</para>
+
+ <para>All media (hard disks, floppies and CDs/DVDs) are now
+ uniformly handled through the <link linkend="IMedium">IMedium</link>
+ interface. The device-specific interfaces
+ (<code>IHardDisk</code>, <code>IDVDImage</code>,
+ <code>IHostDVDDrive</code>, <code>IFloppyImage</code> and
+ <code>IHostFloppyDrive</code>) have been merged into IMedium; CD/DVD
+ and floppy media no longer need special treatment. The device type
+ of a medium determines in which context it can be used. Some
+ functionality was moved to the other storage-related
+ interfaces.</para>
+
+ <para><code>IMachine::attachHardDisk</code> and similar methods have
+ been renamed and generalized to deal with any type of drive and
+ medium.
+ <link linkend="IMachine__attachDevice">IMachine::attachDevice()</link>
+ is the API method for adding any drive to a storage controller. The
+ floppy and DVD/CD drives are no longer handled specially, and that
+ means you can have more than one of them. As before, drives can only
+ be changed while the VM is powered off. Mounting (or unmounting)
+ removable media at runtime is possible with
+ <link linkend="IMachine__mountMedium">IMachine::mountMedium()</link>.</para>
+
+ <para>Newly created virtual machines have no storage controllers
+ associated with them. Even the IDE Controller needs to be created
+ explicitly. The floppy controller is now visible as a separate
+ controller, with a new storage bus type. For each storage bus type
+ you can query the device types which can be attached, so that it is
+ not necessary to hardcode any attachment rules.</para>
+
+ <para>This required matching changes e.g. in the callback interfaces
+ (the medium specific change notification was replaced by a generic
+ medium change notification) and removing associated enums (e.g.
+ <code>DriveState</code>). In many places the incorrect use of the
+ plural form "media" was replaced by "medium", to improve
+ consistency.</para>
+ </listitem>
+
+ <listitem>
+ <para>Reading the
+ <link linkend="IMedium__state">IMedium::state</link> attribute no
+ longer automatically performs an accessibility check; a new method
+ <link linkend="IMedium__refreshState">IMedium::refreshState()</link>
+ does this. The attribute only returns the state now.</para>
+ </listitem>
+
+ <listitem>
+ <para>There were substantial changes related to snapshots, triggered
+ by the "branched snapshots" functionality introduced with version
+ 3.1. IConsole::discardSnapshot was renamed to
+ <computeroutput>IConsole::deleteSnapshot()</computeroutput>.
+ IConsole::discardCurrentState and
+ IConsole::discardCurrentSnapshotAndState were removed; corresponding
+ new functionality is in
+ <computeroutput>IConsole::restoreSnapshot()</computeroutput>.
+ Also, when <computeroutput>IConsole::takeSnapshot()</computeroutput>
+ is called on a running virtual machine, a live snapshot will be
+ created. The old behavior was to temporarily pause the virtual
+ machine while creating an online snapshot.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>IVRDPServer</computeroutput>,
+ <computeroutput>IRemoteDisplayInfo"</computeroutput> and
+ <computeroutput>IConsoleCallback</computeroutput> interfaces were
+ changed to reflect VRDP server ability to bind to one of available
+ ports from a list of ports.</para>
+
+ <para>The <computeroutput>IVRDPServer::port</computeroutput>
+ attribute has been replaced with
+ <computeroutput>IVRDPServer::ports</computeroutput>, which is a
+ comma-separated list of ports or ranges of ports.</para>
+
+ <para>An <computeroutput>IRemoteDisplayInfo::port"</computeroutput>
+ attribute has been added for querying the actual port VRDP server
+ listens on.</para>
+
+ <para>An IConsoleCallback::onRemoteDisplayInfoChange() notification
+ callback has been added.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter lists for the following functions were
+ modified:<itemizedlist>
+ <listitem>
+ <para><link linkend="IHost__removeHostOnlyNetworkInterface">IHost::removeHostOnlyNetworkInterface()</link></para>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IHost__removeUSBDeviceFilter">IHost::removeUSBDeviceFilter()</link></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>In the OOWS bindings for JAX-WS, the behavior of structures
+ changed: for one, we implemented natural structures field access so
+ you can just call a "get" method to obtain a field. Secondly,
+ setters in structures were disabled as they have no expected effect
+ and were at best misleading.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.0</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>In the object-oriented web service bindings for JAX-WS, proper
+ inheritance has been introduced for some classes, so explicit
+ casting is no longer needed to call methods from a parent class. In
+ particular, IHardDisk and other classes now properly derive from
+ <link linkend="IMedium">IMedium</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>All object identifiers (machines, snapshots, disks, etc)
+ switched from GUIDs to strings (now still having string
+ representation of GUIDs inside). As a result, no particular internal
+ structure can be assumed for object identifiers; instead, they
+ should be treated as opaque unique handles. This change mostly
+ affects Java and C++ programs; for other languages, GUIDs are
+ transparently converted to strings.</para>
+ </listitem>
+
+ <listitem>
+ <para>The uses of NULL strings have been changed greatly. All out
+ parameters now use empty strings to signal a null value. For in
+ parameters both the old NULL and empty string is allowed. This
+ change was necessary to support more client bindings, especially
+ using the web service API. Many of them either have no special NULL
+ value or have trouble dealing with it correctly in the respective
+ library code.</para>
+ </listitem>
+
+ <listitem>
+ <para>Accidentally, the <code>TSBool</code> interface still appeared
+ in 3.0.0, and was removed in 3.0.2. This is an SDK bug, do not use
+ the SDK for VirtualBox 3.0.0 for developing clients.</para>
+ </listitem>
+
+ <listitem>
+ <para>The type of
+ <link linkend="IVirtualBoxErrorInfo__resultCode">IVirtualBoxErrorInfo::resultCode</link>
+ changed from
+ <computeroutput>result</computeroutput> to
+ <computeroutput>long</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list of IVirtualBox::openHardDisk was
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IConsole::discardSavedState was renamed to
+ IConsole::forgetSavedState, and a parameter was added.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IConsole::powerDownAsync was renamed to
+ <link linkend="IConsole__powerDown">IConsole::powerDown</link>,
+ and the previous method with that name was deleted. So effectively a
+ parameter was added.</para>
+ </listitem>
+
+ <listitem>
+ <para>In the
+ <link linkend="IFramebuffer">IFramebuffer</link> interface, the
+ following were removed:<itemizedlist>
+ <listitem>
+ <para>the <computeroutput>operationSupported</computeroutput>
+ attribute;</para>
+
+ <para>(as a result, the
+ <computeroutput>FramebufferAccelerationOperation</computeroutput>
+ enum was no longer needed and removed as well);</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>solidFill()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>copyScreenBits()</computeroutput>
+ method.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>In the <link linkend="IDisplay">IDisplay</link>
+ interface, the following were removed:<itemizedlist>
+ <listitem>
+ <para>the
+ <computeroutput>setupInternalFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>lockFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>unlockFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the
+ <computeroutput>registerExternalFramebuffer()</computeroutput>
+ method.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 2.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Added explicit version number into JAX-WS Java package names,
+ such as <computeroutput>org.virtualbox_2_2</computeroutput>,
+ allowing connect to multiple VirtualBox clients from single Java
+ application.</para>
+ </listitem>
+
+ <listitem>
+ <para>The interfaces having a "2" suffix attached to them with
+ version 2.1 were renamed again to have that suffix removed. This
+ time around, this change involves only the name, there are no
+ functional differences.</para>
+
+ <para>As a result, IDVDImage2 is now IDVDImage; IHardDisk2 is now
+ IHardDisk; IHardDisk2Attachment is now IHardDiskAttachment.</para>
+
+ <para>Consequentially, all related methods and attributes that had a
+ "2" suffix have been renamed; for example, IMachine::attachHardDisk2
+ now becomes IMachine::attachHardDisk().</para>
+ </listitem>
+
+ <listitem>
+ <para>IVirtualBox::openHardDisk has an extra parameter for opening a
+ disk read/write or read-only.</para>
+ </listitem>
+
+ <listitem>
+ <para>The remaining collections were replaced by more performant
+ safe-arrays. This affects the following collections:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>IGuestOSTypeCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostDVDDriveCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostFloppyDriveCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostUSBDeviceCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostUSBDeviceFilterCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IProgressCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>ISharedFolderCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>ISnapshotCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IUSBDeviceCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IUSBDeviceFilterCollection</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>Since "Host Interface Networking" was renamed to "bridged
+ networking" and host-only networking was introduced, all associated
+ interfaces needed renaming as well. In detail:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The HostNetworkInterfaceType enum has been renamed to
+ <link linkend="HostNetworkInterfaceMediumType">HostNetworkInterfaceMediumType</link></para>
+ </listitem>
+
+ <listitem>
+ <para>The IHostNetworkInterface::type attribute has been renamed
+ to
+ <link linkend="IHostNetworkInterface__mediumType">IHostNetworkInterface::mediumType</link></para>
+ </listitem>
+
+ <listitem>
+ <para>INetworkAdapter::attachToHostInterface() has been renamed
+ to INetworkAdapter::attachToBridgedInterface</para>
+ </listitem>
+
+ <listitem>
+ <para>In the IHost interface, createHostNetworkInterface() has
+ been renamed to
+ <link linkend="IHost__createHostOnlyNetworkInterface">createHostOnlyNetworkInterface()</link></para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, removeHostNetworkInterface() has been renamed
+ to
+ <link linkend="IHost__removeHostOnlyNetworkInterface">removeHostOnlyNetworkInterface()</link></para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 2.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>With VirtualBox 2.1, error codes were added to many error
+ infos that give the caller a machine-readable (numeric) feedback in
+ addition to the error string that has always been available. This is
+ an ongoing process, and future versions of this SDK reference will
+ document the error codes for each method call.</para>
+ </listitem>
+
+ <listitem>
+ <para>The hard disk and other media interfaces were completely
+ redesigned. This was necessary to account for the support of VMDK,
+ VHD and other image types; since backwards compatibility had to be
+ broken anyway, we seized the moment to redesign the interfaces in a
+ more logical way.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Previously, the old IHardDisk interface had several
+ derivatives called IVirtualDiskImage, IVMDKImage, IVHDImage,
+ IISCSIHardDisk and ICustomHardDisk for the various disk formats
+ supported by VirtualBox. The new IHardDisk2 interface that comes
+ with version 2.1 now supports all hard disk image formats
+ itself.</para>
+ </listitem>
+
+ <listitem>
+ <para>IHardDiskFormat is a new interface to describe the
+ available back-ends for hard disk images (e.g. VDI, VMDK, VHD or
+ iSCSI). The IHardDisk2::format attribute can be used to find out
+ the back-end that is in use for a particular hard disk image.
+ ISystemProperties::hardDiskFormats[] contains a list of all
+ back-ends supported by the system.
+ <link linkend="ISystemProperties__defaultHardDiskFormat">ISystemProperties::defaultHardDiskFormat</link>
+ contains the default system format.</para>
+ </listitem>
+
+ <listitem>
+ <para>In addition, the new
+ <link linkend="IMedium">IMedium</link> interface is a generic
+ interface for hard disk, DVD and floppy images that contains the
+ attributes and methods shared between them. It can be considered
+ a parent class of the more specific interfaces for those images,
+ which are now IHardDisk2, IDVDImage2 and IFloppyImage2.</para>
+
+ <para>In each case, the "2" versions of these interfaces replace
+ the earlier versions that did not have the "2" suffix.
+ Previously, the IDVDImage and IFloppyImage interfaces were
+ entirely unrelated to IHardDisk.</para>
+ </listitem>
+
+ <listitem>
+ <para>As a result, all parts of the API that previously
+ referenced IHardDisk, IDVDImage or IFloppyImage or any of the
+ old subclasses are gone and will have replacements that use
+ IHardDisk2, IDVDImage2 and IFloppyImage2; see, for example,
+ IMachine::attachHardDisk2.</para>
+ </listitem>
+
+ <listitem>
+ <para>In particular, the IVirtualBox::hardDisks2 array replaces
+ the earlier IVirtualBox::hardDisks collection.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para><link linkend="IGuestOSType">IGuestOSType</link> was
+ extended to group operating systems into families and for 64-bit
+ support.</para>
+ </listitem>
+
+ <listitem>
+ <para>The
+ <link linkend="IHostNetworkInterface">IHostNetworkInterface</link>
+ interface was completely rewritten to account for the changes in how
+ Host Interface Networking is now implemented in VirtualBox
+ 2.1.</para>
+ </listitem>
+
+ <listitem>
+ <para>The IVirtualBox::machines2[] array replaces the former
+ IVirtualBox::machines collection.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added
+ <link linkend="IHost__getProcessorFeature">IHost::getProcessorFeature()</link>
+ and <link linkend="ProcessorFeature">ProcessorFeature</link>
+ enumeration.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for
+ <link linkend="IVirtualBox__createMachine">IVirtualBox::createMachine()</link>
+ was modified.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added IMachine::pushGuestProperty.</para>
+ </listitem>
+
+ <listitem>
+ <para>New attributes in IMachine: accelerate3DEnabled,
+ HWVirtExVPIDEnabled,
+ <computeroutput>IMachine::guestPropertyNotificationPatterns</computeroutput>,
+ <link linkend="IMachine__CPUCount">CPUCount</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added
+ <link linkend="IConsole__powerUpPaused">IConsole::powerUpPaused()</link>
+ and
+ <link linkend="IConsole__getGuestEnteredACPIMode">IConsole::getGuestEnteredACPIMode()</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Removed ResourceUsage enumeration.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ </chapter>
+</book>
+<!-- vim: set shiftwidth=2 tabstop=2 expandtab: -->
diff --git a/doc/manual/en_US/UserManual.xml b/doc/manual/en_US/UserManual.xml
new file mode 100644
index 00000000..278faed6
--- /dev/null
+++ b/doc/manual/en_US/UserManual.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book 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;
+]>
+<book id="VBOXU" lang="en">
+
+<!-- VBox bookinfo section -->
+
+ <bookinfo>
+
+ <title>&VBOX_PRODUCT;</title>
+
+ <subtitle>User Manual</subtitle>
+
+ <edition>Version &VBOX_VERSION_STRING;</edition>
+
+ <corpauthor>&VBOX_VENDOR;</corpauthor>
+
+ <address>http://www.virtualbox.org</address>
+
+ <copyright>
+
+ <year>2004-&VBOX_C_YEAR;</year>
+
+ <holder>&VBOX_VENDOR;</holder>
+
+ </copyright>
+
+ </bookinfo>
+
+ <xi:include href="user_Preface.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Introduction.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Installation.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_BasicConcepts.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_GuestAdditions.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Storage.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Networking.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Frontends.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_VBoxManage.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_AdvancedTopics.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Technical.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_VirtualBoxAPI.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Troubleshooting.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Security.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_KnownIssues.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_ChangeLog.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_ThirdParty.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_PrivacyPolicy.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Glossary.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</book>
diff --git a/doc/manual/en_US/images/clone-vm.png b/doc/manual/en_US/images/clone-vm.png
new file mode 100644
index 00000000..35af34c6
--- /dev/null
+++ b/doc/manual/en_US/images/clone-vm.png
Binary files differ
diff --git a/doc/manual/en_US/images/cloud-profile-manager.png b/doc/manual/en_US/images/cloud-profile-manager.png
new file mode 100644
index 00000000..d88070e9
--- /dev/null
+++ b/doc/manual/en_US/images/cloud-profile-manager.png
Binary files differ
diff --git a/doc/manual/en_US/images/create-vdi-1.png b/doc/manual/en_US/images/create-vdi-1.png
new file mode 100644
index 00000000..9bf79988
--- /dev/null
+++ b/doc/manual/en_US/images/create-vdi-1.png
Binary files differ
diff --git a/doc/manual/en_US/images/create-vm-1.png b/doc/manual/en_US/images/create-vm-1.png
new file mode 100644
index 00000000..f42fc398
--- /dev/null
+++ b/doc/manual/en_US/images/create-vm-1.png
Binary files differ
diff --git a/doc/manual/en_US/images/create-vm-2.png b/doc/manual/en_US/images/create-vm-2.png
new file mode 100644
index 00000000..f643acaa
--- /dev/null
+++ b/doc/manual/en_US/images/create-vm-2.png
Binary files differ
diff --git a/doc/manual/en_US/images/dnd-modes.png b/doc/manual/en_US/images/dnd-modes.png
new file mode 100644
index 00000000..f88f02c6
--- /dev/null
+++ b/doc/manual/en_US/images/dnd-modes.png
Binary files differ
diff --git a/doc/manual/en_US/images/export-appliance-oci.png b/doc/manual/en_US/images/export-appliance-oci.png
new file mode 100644
index 00000000..aea7b6b7
--- /dev/null
+++ b/doc/manual/en_US/images/export-appliance-oci.png
Binary files differ
diff --git a/doc/manual/en_US/images/guest-fm.png b/doc/manual/en_US/images/guest-fm.png
new file mode 100644
index 00000000..bfe24233
--- /dev/null
+++ b/doc/manual/en_US/images/guest-fm.png
Binary files differ
diff --git a/doc/manual/en_US/images/import-instance.png b/doc/manual/en_US/images/import-instance.png
new file mode 100644
index 00000000..7170ab15
--- /dev/null
+++ b/doc/manual/en_US/images/import-instance.png
Binary files differ
diff --git a/doc/manual/en_US/images/newcloudvm.png b/doc/manual/en_US/images/newcloudvm.png
new file mode 100644
index 00000000..d267a914
--- /dev/null
+++ b/doc/manual/en_US/images/newcloudvm.png
Binary files differ
diff --git a/doc/manual/en_US/images/ovf-import.png b/doc/manual/en_US/images/ovf-import.png
new file mode 100644
index 00000000..e484fffa
--- /dev/null
+++ b/doc/manual/en_US/images/ovf-import.png
Binary files differ
diff --git a/doc/manual/en_US/images/seamless.png b/doc/manual/en_US/images/seamless.png
new file mode 100644
index 00000000..7239300d
--- /dev/null
+++ b/doc/manual/en_US/images/seamless.png
Binary files differ
diff --git a/doc/manual/en_US/images/snapshots-1.png b/doc/manual/en_US/images/snapshots-1.png
new file mode 100644
index 00000000..aafb6e8e
--- /dev/null
+++ b/doc/manual/en_US/images/snapshots-1.png
Binary files differ
diff --git a/doc/manual/en_US/images/softkeybd.png b/doc/manual/en_US/images/softkeybd.png
new file mode 100644
index 00000000..f3f36483
--- /dev/null
+++ b/doc/manual/en_US/images/softkeybd.png
Binary files differ
diff --git a/doc/manual/en_US/images/upload-key.png b/doc/manual/en_US/images/upload-key.png
new file mode 100644
index 00000000..cae44e44
--- /dev/null
+++ b/doc/manual/en_US/images/upload-key.png
Binary files differ
diff --git a/doc/manual/en_US/images/vbox-components.png b/doc/manual/en_US/images/vbox-components.png
new file mode 100644
index 00000000..ed1326dc
--- /dev/null
+++ b/doc/manual/en_US/images/vbox-components.png
Binary files differ
diff --git a/doc/manual/en_US/images/vbox-sdl.png b/doc/manual/en_US/images/vbox-sdl.png
new file mode 100644
index 00000000..2c5b9fb3
--- /dev/null
+++ b/doc/manual/en_US/images/vbox-sdl.png
Binary files differ
diff --git a/doc/manual/en_US/images/vboxlogo.png b/doc/manual/en_US/images/vboxlogo.png
new file mode 100644
index 00000000..1394b447
--- /dev/null
+++ b/doc/manual/en_US/images/vboxlogo.png
Binary files differ
diff --git a/doc/manual/en_US/images/virtual-disk-manager.png b/doc/manual/en_US/images/virtual-disk-manager.png
new file mode 100644
index 00000000..1648907c
--- /dev/null
+++ b/doc/manual/en_US/images/virtual-disk-manager.png
Binary files differ
diff --git a/doc/manual/en_US/images/virtual-disk-manager2.png b/doc/manual/en_US/images/virtual-disk-manager2.png
new file mode 100644
index 00000000..030043ba
--- /dev/null
+++ b/doc/manual/en_US/images/virtual-disk-manager2.png
Binary files differ
diff --git a/doc/manual/en_US/images/virtualbox-main-empty.png b/doc/manual/en_US/images/virtualbox-main-empty.png
new file mode 100644
index 00000000..7871d3cd
--- /dev/null
+++ b/doc/manual/en_US/images/virtualbox-main-empty.png
Binary files differ
diff --git a/doc/manual/en_US/images/virtualbox-main.png b/doc/manual/en_US/images/virtualbox-main.png
new file mode 100644
index 00000000..fade285c
--- /dev/null
+++ b/doc/manual/en_US/images/virtualbox-main.png
Binary files differ
diff --git a/doc/manual/en_US/images/vm-close.png b/doc/manual/en_US/images/vm-close.png
new file mode 100644
index 00000000..b23cfa25
--- /dev/null
+++ b/doc/manual/en_US/images/vm-close.png
Binary files differ
diff --git a/doc/manual/en_US/images/vm-groups.png b/doc/manual/en_US/images/vm-groups.png
new file mode 100644
index 00000000..02752eef
--- /dev/null
+++ b/doc/manual/en_US/images/vm-groups.png
Binary files differ
diff --git a/doc/manual/en_US/images/vm-hostkey.png b/doc/manual/en_US/images/vm-hostkey.png
new file mode 100644
index 00000000..7c36c0ca
--- /dev/null
+++ b/doc/manual/en_US/images/vm-hostkey.png
Binary files differ
diff --git a/doc/manual/en_US/images/vm-settings-harddisk.png b/doc/manual/en_US/images/vm-settings-harddisk.png
new file mode 100644
index 00000000..1ae354ef
--- /dev/null
+++ b/doc/manual/en_US/images/vm-settings-harddisk.png
Binary files differ
diff --git a/doc/manual/en_US/images/vm-vista-running.png b/doc/manual/en_US/images/vm-vista-running.png
new file mode 100644
index 00000000..79f04b09
--- /dev/null
+++ b/doc/manual/en_US/images/vm-vista-running.png
Binary files differ
diff --git a/doc/manual/en_US/man_VBoxHeadless.xml b/doc/manual/en_US/man_VBoxHeadless.xml
new file mode 100644
index 00000000..a8497a3e
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxHeadless.xml
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxHeadless
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="man_vboxheadless" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxHeadless</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxHeadless</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxHeadless</refname>
+ <refpurpose>&product-name; remote desktop server</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-vboxheadless">
+ <command>VBoxHeadless</command>
+ <arg>--startvm=<group>
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group></arg>
+ <arg>--vrde=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ <arg choice="plain">config</arg>
+ </group></arg>
+ <arg>--vrdeproperty=<replaceable>prop-name</replaceable>=[<replaceable>prop-value</replaceable>]</arg>
+ <arg>--settingspw=[<replaceable>password</replaceable>]</arg>
+ <arg>--settingspwfile=<replaceable>password-file</replaceable></arg>
+ <arg>--start-paused=<replaceable>vmname</replaceable></arg>
+ <arg>--capture</arg>
+ <arg>--width=<replaceable>width</replaceable></arg>
+ <arg>--height=<replaceable>height</replaceable></arg>
+ <arg>--bitrate=<replaceable>bit-rate</replaceable></arg>
+ <arg>--filename=<replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxHeadless</command> command is an alternate front
+ end that enables you to remotely manage virtual machines (VMs).
+ The front end is a CLI rather than the VirtualBox Manager
+ graphical user interface (GUI).
+ </para>
+ <para>
+ For information about using this command, see
+ <xref linkend="vboxheadless" />.
+ </para>
+ <refsect2 id="vboxmanage-vboxheadless-command-options">
+ <title>Command Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>--startvm=<replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM to start.
+ </para><para>
+ Use the <command>VBoxManage list vms</command> command to
+ obtain VM information.
+ </para><para>
+ The short versions of this option are <option>-s</option>
+ and <option>-startvm</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrde=on | off | config</option></term>
+ <listitem><para>
+ Specifies how to use the VRDP server. The default value is
+ <literal>config</literal>. Valid values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>on</literal> enables the VRDP server.
+ </para><screen>VBoxHeadless --startvm=<replaceable>vmname</replaceable> --vrde=on</screen></listitem>
+ <listitem><para>
+ <literal>off</literal> disables the VRDP server.
+ </para><screen>VBoxHeadless --startvm=<replaceable>vmname</replaceable> --vrde=off</screen></listitem>
+ <listitem><para>
+ <literal>config</literal> enables the VRDP server
+ depending on the VM configuration.
+ </para><screen>VBoxHeadless --startvm=<replaceable>vmname</replaceable> --vrde=config</screen></listitem>
+ </itemizedlist><para>
+ The short version of this option is <option>-v</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=<replaceable>prop-name</replaceable>=<replaceable>prop-value</replaceable></option></term>
+ <listitem><para>
+ Specifies a value for one of the following properties:
+ </para><itemizedlist>
+ <listitem><para>
+ The <literal>TCP/Ports</literal> property value is a
+ comma-separated list of ports to which the VRDE server
+ can bind. Use a hyphen (<literal>-</literal>) between
+ two port numbers to specify a range of ports.
+ </para></listitem>
+ <listitem><para>
+ The <literal>TCP/Address</literal> property value is
+ the interface IP address to which to bind the VRDE
+ server.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--settingspw=[<replaceable>password</replaceable>]</option></term>
+ <listitem><para>
+ Specifies a settings password to access encrypted
+ settings. If you do not specify the password on the
+ command line, <command>VBoxHeadless</command> prompts you
+ for the password.
+ </para><remark>
+ This design does not conform to Oracle's security
+ guidelines. You should not be able to specify a password
+ on the command line because the password can be seen in a
+ process listing.
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--settingspwfile=<replaceable>password-file</replaceable></option></term>
+ <listitem><para>
+ Specifies the file that contains the settings password.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--start-paused=<replaceable>vmname</replaceable></option></term>
+ <listitem><para>
+ Starts the specified VM in the paused state.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--capture</option></term>
+ <listitem><para>
+ Records the VM screen output to a file. In addition to
+ this option, you must use the <option>--filename</option>
+ option to specify the name of the file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--width=<replaceable>width</replaceable></option></term>
+ <listitem><para>
+ Specifies the frame width of the recording in pixels. This
+ option is associated with the <option>--capture</option>
+ option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--height=<replaceable>height</replaceable></option></term>
+ <listitem><para>
+ Specifies the frame height of the recording in pixels.
+ This option is associated with the
+ <option>--capture</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bitrate=<replaceable>bit-rate</replaceable></option></term>
+ <listitem><para>
+ Specifies the bit rate of the recording in kilobits per
+ second. This option is associated with the
+ <option>--capture</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--filename=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the file in which to store the
+ recording. The codec used is based on the file extension
+ that you choose. You must specify this option if you use
+ the <option>--capture</option> option.
+ </para><remark>
+ Where can we get information about the file extensions
+ that are supported?
+ </remark></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command starts the <literal>ol7u4</literal> VM:
+ </para>
+<screen>$ VBoxHeadless --startvm "ol7u4"</screen>
+ <para>
+ The following command starts the <literal>ol7u6</literal> VM in
+ the Paused state.
+ </para>
+<screen>$ VBoxHeadless --startvm "ol7u6" --start-paused</screen>
+ <para>
+ The following command starts the <literal>ol7u6</literal> VM and
+ records the session. The recording is saved to the
+ <filename>ol7u6-recording</filename> WebM file.
+ </para>
+<screen>$ VBoxHeadless --startvm "ol7u6" --capture --filename ol7u6-recording.webm</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-startvm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-adoptstate.xml b/doc/manual/en_US/man_VBoxManage-adoptstate.xml
new file mode 100644
index 00000000..0463c953
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-adoptstate.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage adoptstate
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-adoptstate" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage adoptstate</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-adoptstate</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-adoptstate</refname>
+ <refpurpose>change a virtual machine's state based on a saved state file</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-adoptstate">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage adoptstate</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>state-filename</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage adoptstate</command> command enables you
+ to change the state of a virtual machine (VM) to a state described
+ in a saved state file (<filename>.sav</filename>). This action is
+ referred to as a VM <emphasis>adopting</emphasis> a saved state
+ file. The saved state file must be separate from the VM
+ configuration.
+ </para>
+ <para>
+ When you start the VM after adopting the saved state, the VM
+ restores its state from the saved state file.
+ </para>
+ <para>
+ Only use this command for custom deployments.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>state-filename</replaceable></term>
+ <listitem><para>
+ Specifies the name of the saved state file.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command starts a VM called <literal>vm2</literal>
+ using a saved state file called <filename>mystate.sav</filename>.
+ </para>
+<screen>$ VBoxManage adoptstate vm2 /home/user/mystate.sav</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-discardstate"/>
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-bandwidthctl.xml b/doc/manual/en_US/man_VBoxManage-bandwidthctl.xml
new file mode 100644
index 00000000..4daf9cbc
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-bandwidthctl.xml
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage bandwidthctl
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-bandwidthctl" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage bandwidthctl</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-bandwidthctl</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-bandwidthctl</refname>
+ <refpurpose>manage bandwidth groups</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-bandwidthctl-add">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage bandwidthctl</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">add</arg>
+ <arg choice="req"><replaceable>bandwidth-group-name</replaceable></arg>
+ <arg choice="req">--limit=<replaceable>bandwidth-limit</replaceable>[k|m|g|K|M|G]</arg>
+ <arg choice="req">--type=disk|network</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-bandwidthctl-list">
+ <command>VBoxManage bandwidthctl</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">list</arg>
+ <arg>--machinereadable</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-bandwidthctl-remove">
+ <command>VBoxManage bandwidthctl</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">remove</arg>
+ <arg choice="req"><replaceable>bandwidth-group-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-bandwidthctl-set">
+ <command>VBoxManage bandwidthctl</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">set</arg>
+ <arg choice="req"><replaceable>bandwidth-group-name</replaceable></arg>
+ <arg choice="req">--limit=<replaceable>bandwidth-limit</replaceable>[k|m|g|K|M|G]</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage bandwidthctl</command> command enables you
+ to manage bandwidth groups for virtual machines (VMs). A bandwidth
+ group specifies the bandwidth limit for the disks or for the
+ network adapters of a VM.
+ </para>
+ <para>
+ Note that a network bandwidth limit applies only to the outbound
+ traffic from the VM. The inbound traffic is unlimited.
+ </para>
+ <refsect2 id="vboxmanage-bandwidthctl-add">
+ <title>Create a Bandwidth Group</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage bandwidthctl add</command> command
+ creates a bandwidth group for the specified VM. You must specify
+ whether the bandwidth group is for disks or for networks, and
+ specify the bandwidth limit.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or the
+ name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option><replaceable>bandwidth-group-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the bandwidth group.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--type=disk|network</option></term>
+ <listitem><para>
+ Specifies the type of the bandwidth group:
+ <literal>disk</literal> and <literal>network</literal>.
+ For more information, see
+ <xref linkend="storage-bandwidth-limit" /> or
+ <xref linkend="network_bandwidth_limit" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--limit=<replaceable>bandwidth-limit</replaceable>[k|m|g|K|M|G]</option></term>
+ <listitem><para>
+ Specifies the bandwidth limit for a bandwidth group. The
+ default unit is megabytes per second. You can modify this
+ value while the VM is running.
+ </para><para>
+ You can change the unit by appending one of the following
+ unit specifiers to the bandwidth limit:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>k</literal> &ndash; kilobits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>m</literal> &ndash; megabits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>g</literal> &ndash; gigabits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>K</literal> &ndash; kilobytes per second
+ </para></listitem>
+ <listitem><para>
+ <literal>M</literal> &ndash; megabytes per second
+ </para></listitem>
+ <listitem><para>
+ <literal>G</literal> &ndash; gigabytes per second
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-bandwidthctl-list">
+ <title>List Bandwidth Groups</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage bandwidthctl list</command> command
+ lists the all the bandwidth groups that have been defined for
+ the specified VM. Use the <option>--machinereadable</option>
+ option to produce the output in a machine-readable format, which
+ uses name-value pairs.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or the name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--machinereadable</option></term>
+ <listitem><para>
+ Outputs the information about the bandwidth groups in
+ name-value pairs.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-bandwidthctl-remove">
+ <title>Remove a Bandwidth Group</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage bandwidthctl remove</command> command
+ removes a bandwidth group.
+ </para>
+ <note>
+ <para>
+ To successfully remove a bandwidth group, ensure that it is
+ not referenced by any disk or adapter in the running VM.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or the name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option><replaceable>bandwidth-group-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the bandwidth group.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-bandwidthctl-set">
+ <title>Modify the Bandwidth Limit of a Bandwidth Group</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage bandwidthctl set</command> command
+ modifies the bandwidth limit for a bandwidth group.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or the name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option><replaceable>bandwidth-group-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the bandwidth group.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--limit=<replaceable>bandwidth-limit</replaceable>[k|m|g|K|M|G]</option></term>
+ <listitem><para>
+ Specifies the bandwidth limit for a bandwidth group. The
+ default unit is megabytes per second. You can modify this
+ value while the VM is running.
+ </para><para>
+ You can change the unit by appending one of the following
+ unit specifiers to the bandwidth limit:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>k</literal> &ndash; kilobits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>m</literal> &ndash; megabits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>g</literal> &ndash; gigabits per second
+ </para></listitem>
+ <listitem><para>
+ <literal>K</literal> &ndash; kilobytes per second
+ </para></listitem>
+ <listitem><para>
+ <literal>M</literal> &ndash; megabytes per second
+ </para></listitem>
+ <listitem><para>
+ <literal>G</literal> &ndash; gigabytes per second
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example shows how to use the <command>VBoxManage
+ bandwidthctl</command> command to create the
+ <literal>Literal</literal> bandwidth group and set the limit to 20
+ Mbps. Then use the <command>VBoxManage modifyvm</command> command
+ to assign this bandwidth group to the first and second adapters of
+ the <literal>vm1</literal> VM.
+ </para>
+<screen>$ VBoxManage bandwidthctl "vm1" add Limit --type network --limit 20m
+$ VBoxManage modifyvm "vm1" --nicbandwidthgroup1 Limit
+$ VBoxManage modifyvm "vm1" --nicbandwidthgroup2 Limit</screen>
+ <para>
+ You can dynamically modify the limit of a bandwidth group while
+ the VM is running. The following example shows how to modify the
+ limit for the <literal>Limit</literal> bandwidth group from 20
+ Mbps to 100 kbps:
+ </para>
+<screen>$ VBoxManage bandwidthctl "vm1" set Limit --limit 100k</screen>
+ <para>
+ The following command disables shaping for all adapters in the
+ <literal>Limit</literal> bandwidth group by specifying a limit of
+ zero (<literal>0</literal>):
+ </para>
+<screen>$ VBoxManage bandwidthctl "vm1" set Limit --limit 0</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-checkmediumpwd.xml b/doc/manual/en_US/man_VBoxManage-checkmediumpwd.xml
new file mode 100644
index 00000000..0edceb7b
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-checkmediumpwd.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage checkmediumpwd
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-checkmediumpwd" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage checkmediumpwd</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-checkmediumpwd</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-checkmediumpwd</refname>
+ <refpurpose>check encryption password on a DEK-encrypted medium or a disk image</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-checkmediumpwd">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage checkmediumpwd</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>password-file</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage checkmediumpwd</command> command checks
+ the current encryption password on a DEK-encrypted medium or a
+ disk image. See <xref linkend="diskencryption-encryption" />.
+ </para>
+ <para>
+ The command response indicates if the specified password is
+ correct.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or the
+ absolute path name of the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>password-file</replaceable></term>
+ <listitem><para>
+ Specifies the password identifier to check. The password
+ identifier can be the absolute path name of a password file
+ on the host OS or the dash character (<literal>-</literal>)
+ to prompt you for the password on the command line.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following example checks the encryption password for the
+ <filename>ol7u4-1.vdi</filename> disk image. The password
+ identifier is a file called <filename>pwfile</filename>.
+ </para>
+ <para>
+ The command returns a message indicating that the specified
+ password is correct.
+ </para>
+<screen>$ VBoxManage checkmediumpwd "$HOME/VirtualBox VMs/ol7u4/ol7u4-1.vdi" /home/user/pwfile
+ The given password is correct</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-encryptmedium" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-clonemedium.xml b/doc/manual/en_US/man_VBoxManage-clonemedium.xml
new file mode 100644
index 00000000..be5a1da5
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-clonemedium.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage clonemedium
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-clonemedium" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage clonemedium</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-clonemedium</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-clonemedium</refname>
+ <refpurpose>create a clone of a medium</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-clonemedium">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage clonemedium</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>source-medium</replaceable></arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>target-medium</replaceable></arg>
+ </group>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <arg>--existing</arg>
+ <arg>--format=<group choice="plain">
+ <arg choice="plain">VDI</arg>
+ <arg choice="plain">VMDK</arg>
+ <arg choice="plain">VHD</arg>
+ <arg choice="plain">RAW</arg>
+ <arg choice="plain"><replaceable>other</replaceable></arg>
+ </group></arg>
+ <arg>--variant=Standard,Fixed,Split2G,Stream,ESX</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage clonemedium</command> command enables you
+ to clone an existing medium (virtual disk, DVD, or floppy), which
+ is typically an image file. Only the Universally Unique Identifier
+ (UUID) differs between the original image and the cloned image.
+ </para>
+ <para>
+ You can use the Virtual Media Manager to transfer the cloned image
+ to another host system or reimport it into &product-name;. See
+ <xref linkend="vdis" /> and <xref linkend="cloningvdis" />.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>source-medium</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or the absolute or relative file name of
+ the source medium to clone. You can specify the UUID of the
+ medium only if it is registered. Use the <command>VBoxManage
+ list hdds</command> command to list registered images.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>target-medium</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or the absolute or relative file name of
+ the target (clone) medium. You can specify the UUID of the
+ target medium only if it is registered. Use the
+ <command>VBoxManage list hdds</command> command to list
+ registered images.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>disk</literal> | <literal>dvd</literal> | <literal>floppy</literal></term>
+ <listitem><para>
+ Specifies the type of the medium to clone. Valid values are
+ <literal>disk</literal>, <literal>dvd</literal>, and
+ <literal>floppy</literal>. The default value is
+ <literal>disk</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--existing</option></term>
+ <listitem><para>
+ Performs the clone operation by overwriting an existing
+ target medium. The result is that only the portion of the
+ source medium that fits into the existing target medium is
+ copied.
+ </para><para>
+ If the target medium is smaller than the source, only the
+ portion of the source medium up to the size of the target
+ medium is copied.
+ </para><para>
+ If the target medium is larger than the source, the
+ remaining part of the target medium is unchanged.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--format</option></term>
+ <listitem><para>
+ Specifies the file format of the target medium if it differs
+ from the format of the source medium. Valid values are
+ <literal>VDI</literal>, <literal>VMDK</literal>,
+ <literal>VHD</literal>, <literal>RAW</literal>, and
+ <replaceable>other</replaceable>.
+ </para><remark>
+ What file formats can <replaceable>other</replaceable> be?
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--variant=Standard,Fixed,Split2G,Stream,ESX</option></term>
+ <listitem><para>
+ Specifies the file format variant for the target medium,
+ which is a comma-separated list of variants. Following are
+ the valid values:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Standard</literal> is the default disk image
+ type, which has a dynamically allocated file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Fixed</literal> uses a disk image that has a
+ fixed file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Split2G</literal> indicates that the disk image
+ is split into 2GB segments. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>Stream</literal> optimizes the disk image for
+ downloading. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>ESX</literal> is used for some VMWare products.
+ This value is for VMDK only.
+ </para></listitem>
+ </itemizedlist><para>
+ Note that not all variant combinations are valid. Specifying
+ incompatible variant values in the list will produce an
+ error message.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, you
+ can use the <command>clonevdi</command> and
+ <command>clonehd</command> commands instead of the
+ <command>clonemedium</command> command.
+ </para>
+ </note>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a clone of the
+ <filename>disk01.vdi</filename> disk image file. The clone is
+ called <filename>disk02.vdi</filename>.
+ </para>
+<screen>$ VBoxManage clonemedium disk01.vdi disk02.vdi</screen>
+ <para>
+ The following command creates a clone of the
+ <filename>disk01.vdi</filename> disk image file. The clone is in
+ VMDK format and is called <filename>disk02.vmdk</filename>.
+ </para>
+<screen>$ VBoxManage clonemedium disk01.vdi disk02.vmdk --format VMDK</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-clonevm.xml b/doc/manual/en_US/man_VBoxManage-clonevm.xml
new file mode 100644
index 00000000..9ec0f0e1
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-clonevm.xml
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage clonevm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-clonevm" lang="en">
+ <refentryinfo>
+ <pubdate>February 2019</pubdate>
+ <title>VBoxManage clonevm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-clonevm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-clonevm</refname>
+ <refpurpose>create a clone of an existing &product-name; virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-clonevm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage clonevm</command>
+ <arg choice="req"><replaceable>vmname|uuid</replaceable></arg>
+
+ <arg>--basefolder=<replaceable>basefolder</replaceable></arg>
+
+ <arg rep="repeat">--groups=<replaceable>group</replaceable>,</arg>
+
+ <group choice='opt'>
+ <arg choice='plain'>--mode=machine</arg>
+ <arg choice='plain'>--mode=machinechildren</arg>
+ <arg choice='plain'>--mode=all</arg>
+ </group>
+
+ <arg>--name=<replaceable>name</replaceable></arg>
+
+ <arg rep="repeat">--options=<replaceable>option</replaceable>,</arg>
+
+ <arg>--register</arg>
+
+ <arg>--snapshot=<replaceable>snapshot-name</replaceable></arg>
+
+ <arg>--uuid=<replaceable>uuid</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage clonevm</command> command creates a clone
+ of an existing virtual machine (VM). The clone can be a full copy
+ of the VM or a linked copy of a VM.
+ </para>
+ <para>
+ You must specify the name or the universal unique identifier
+ (UUID) of the VM you want to clone.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>Command Operand and Options</title>
+ <para>
+ The following list describes the operand and the options that you
+ can use with the <command>VBoxManage clonevm</command> command:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>vmname|uuid</replaceable></term>
+ <listitem><para>
+ Specifies the name or UUID of the VM to clone.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--basefolder=<replaceable>basefolder</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the folder in which to save the
+ configuration for the new VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--groups=<replaceable>group</replaceable>,...</option></term>
+ <listitem><para>
+ Assigns the clone to the specified group or groups. If you
+ specify more than one group, separate each group name with a
+ comma.
+ </para><para>
+ Note that each group is identified by a group ID that starts
+ with a slash character (<computeroutput>/</computeroutput>)
+ so that groups can be nested. By default, a clone is always
+ assigned membership to the
+ <computeroutput>/</computeroutput> group.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mode=machine|machineandchildren|all</option></term>
+ <listitem><para>
+ Specifies which of the following cloning modes to use:
+ </para><itemizedlist>
+ <listitem><para>
+ <computeroutput>machine</computeroutput> mode clones the
+ current state of the existing VM without any snapshots.
+ This is the default mode.
+ </para></listitem>
+ <listitem><para>
+ <computeroutput>machineandchildren</computeroutput> mode
+ clones the snapshot specified by by the
+ <option>--snapshot</option> option and all child
+ snapshots.
+ </para></listitem>
+ <listitem><para>
+ <computeroutput>all</computeroutput> mode clones all
+ snapshots and the current state of the existing VM.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--name=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies a new name for the new VM. The default value is
+ <computeroutput><replaceable>original-name</replaceable>
+ Clone</computeroutput> where
+ <replaceable>original-name</replaceable> is the original
+ name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--options=<replaceable>option</replaceable>,...</option></term>
+ <listitem><para>
+ Specifies how to create the new clone.</para>
+ <para>The <option>--options</option> argument can be used multiple
+ times to enable multiple options, or the options can be given as a
+ comma separated list. The options are case insensitive.</para>
+ <para>The following options (case-insensitive) are recognized:</para>
+ <variablelist>
+ <varlistentry>
+ <term><option>Link</option></term>
+ <listitem><para>
+ Creates a linked clone from a snapshot only.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>KeepAllMACs</option></term>
+ <listitem><para>
+ Specifies that the new clone reuses the MAC addresses
+ of each virtual network card from the existing VM.
+ </para><para>
+ If you do not specify this option or the
+ <option>--options=keepnatmacs</option> option, the
+ default behavior is to reinitialize the MAC addresses
+ of each virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>KeepNATMACs</option></term>
+ <listitem><para>
+ Specifies that the new clone reuses the MAC addresses
+ of each virtual network card from the existing VM when
+ the network type is NAT.
+ </para><para>
+ If you do not specify this option or the
+ <option>KeepAllMACs</option> option, the
+ default behavior is to reinitialize the MAC addresses
+ of each virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>KeepDiskNames</option></term>
+ <listitem><para>
+ Specifies that the new clone reuses the disk image
+ names from the existing VM. By default, disk images
+ are renamed.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>KeepHwUUIDs</option></term>
+ <listitem><para>
+ Specifies that the new clone reuses the hardware IDs
+ from the existing VM. By default, new UUIDs are used.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--register</option></term>
+ <listitem><para>
+ Automatically registers the new clone in this &product-name;
+ installation. You can manually register the new VM later by
+ using the <command>VBoxManage registervm</command> command.
+ See <xref linkend="vboxmanage-registervm" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--snapshot=<replaceable>snapshot-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the snapshot on which to base the new VM. By
+ default, the clone is created from the current state of the
+ specified VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Specifies the UUID for the new VM. Ensure that this ID is
+ unique for the &product-name; instance if you decide to
+ register this new VM. By default, &product-name; provides a
+ new UUID.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <para>
+ The following command creates and registers an exact clone of the
+ <computeroutput>ol7</computeroutput> VM. The clone is called
+ <computeroutput>ol7-dev-001</computeroutput>.
+ </para>
+ <para>
+ The new clone includes all of the source VM's snapshots. The new
+ VM also reuses all network interface MAC addresses, disk names,
+ and UUIDs from the source VM.
+ </para>
+<screen>
+$ VBoxManage clonevm ol7 --name="ol7-dev-001" --register --mode=all \
+ --options=keepallmacs --options=keepdisknames --options=keephwuuids
+</screen>
+ <para>
+ The following command creates and registers a clone of the
+ <computeroutput>Snapshot 1</computeroutput> snapshot of the
+ <computeroutput>ol7</computeroutput> VM. The clone is called
+ <computeroutput>ol7-dev-002</computeroutput>.
+ </para>
+<screen>
+$ VBoxManage clonevm ol7 --name="ol7-dev-002" --register --snapshot="Snapshot 1"
+</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-registervm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-closemedium.xml b/doc/manual/en_US/man_VBoxManage-closemedium.xml
new file mode 100644
index 00000000..55000965
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-closemedium.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage closemedium
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-closemedium" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage closemedium</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-closemedium</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-closemedium</refname>
+ <refpurpose>remove a hard disk, DVD, or floppy image from the media registry</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-closemedium">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage closemedium</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg>--delete</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage closemedium</command> command removes a
+ hard disk, DVD, or floppy image from the list of known media used
+ by &product-name;. The image is then unavailable for selection in
+ the Virtual Media Manager.
+ </para>
+ <para>
+ To use this command, the image must not be attached to any VMs.
+ </para>
+ <para>
+ Optionally, you can request that the image be deleted.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>disk|dvd|floppy</term>
+ <listitem><para>
+ Specifies the type of medium. Valid values are
+ <literal>disk</literal> (hard drive),
+ <literal>dvd</literal>, or <literal>floppy</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--delete</option></term>
+ <listitem><para>
+ Deletes the image file.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command removes the disk image file called
+ <filename>disk01.vdi</filename> from the registry.
+ </para>
+<screen>$ VBoxManage closemedium disk01.vdi</screen>
+ <para>
+ The following command removes the disk image file called
+ <filename>disk01.vdi</filename> from the registry and deletes the
+ image file.
+ </para>
+<screen>$ VBoxManage closemedium disk01.vdi --delete</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-cloud.xml b/doc/manual/en_US/man_VBoxManage-cloud.xml
new file mode 100644
index 00000000..c8652d49
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-cloud.xml
@@ -0,0 +1,623 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage cloud
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-cloud" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2021-03-01 11:20:37 +0100 (Mon, 01 Mar 2021) $</pubdate>
+ <title>VBoxManage cloud</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-cloud</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-cloud</refname>
+ <refpurpose>Manage the cloud entities</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <!-- Cloud list commands -->
+ <cmdsynopsis id="synopsis-vboxmanage-cloudlist-instances"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">list</arg>
+ <arg choice="plain">instances</arg>
+ <arg>--state=<replaceable>string</replaceable></arg>
+ <arg>--compartment-id=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudlist-images">
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">list</arg>
+ <arg choice="plain">images</arg>
+ <arg choice="req">--compartment-id=<replaceable>string</replaceable></arg>
+ <arg>--state=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+
+ <!-- Cloud instance commands -->
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-create" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">create</arg>
+ <arg choice="req" rep="norepeat">--domain-name=<replaceable>name</replaceable></arg>
+ <group choice="req">
+ <arg choice="req" rep="norepeat">--image-id=<replaceable>id</replaceable></arg>
+ <arg choice="req" rep="norepeat">--boot-volume-id=<replaceable>id</replaceable></arg>
+ </group>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--shape=<replaceable>type</replaceable></arg>
+ <arg choice="req" rep="norepeat">--subnet=<replaceable>id</replaceable></arg>
+ <arg rep="norepeat">--boot-disk-size=<replaceable>size in GB</replaceable></arg>
+ <arg rep="norepeat">--publicip=<replaceable>true/false</replaceable></arg>
+ <arg rep="norepeat">--privateip=<replaceable>IP address</replaceable></arg>
+ <arg rep="repeat">--public-ssh-key=<replaceable>key string</replaceable></arg>
+ <arg rep="norepeat">--launch-mode=<replaceable>NATIVE/EMULATED/PARAVIRTUALIZED</replaceable></arg>
+ <arg rep="norepeat">--cloud-init-script-path=<replaceable>path to a script</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-info" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">info</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-terminate" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">terminate</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-start" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">start</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-pause" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">pause</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+
+ <!-- Cloud image commands -->
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-create" sepchar=" "> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">create</arg>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--instance-id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-info" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">info</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-delete" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">delete</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-import" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">import</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-export" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">export</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+
+ <!-- Cloud network commands -->
+ <cmdsynopsis id="synopsis-vboxmanage-cloud-network-setup"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">network setup</arg>
+ <arg choice="req">--local-gateway-iso=<replaceable>path</replaceable></arg>
+ <arg>--gateway-os-name=<replaceable>string</replaceable></arg>
+ <arg>--gateway-os-version=<replaceable>string</replaceable></arg>
+ <arg>--gateway-shape=<replaceable>string</replaceable></arg>
+ <arg>--tunnel-network-name=<replaceable>string</replaceable></arg>
+ <arg>--tunnel-network-range=<replaceable>string</replaceable></arg>
+ <arg>--guest-additions-iso=<replaceable>path</replaceable></arg>
+ <arg>--proxy=<replaceable>string</replaceable></arg>
+ <arg>--compartment-id=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloud-network-create">
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">network create</arg>
+ <arg choice="req">--name=<replaceable>string</replaceable></arg>
+ <arg choice="req">--network-id=<replaceable>string</replaceable></arg>
+ <group>
+ <arg choice="plain">--enable</arg>
+ <arg choice="plain">--disable</arg>
+ </group>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloud-network-update">
+ <command>VBoxManage cloud network update</command>
+ <arg choice="req">--name=<replaceable>string</replaceable></arg>
+ <arg>--network-id=<replaceable>string</replaceable></arg>
+ <group>
+ <arg choice="plain">--enable</arg>
+ <arg choice="plain">--disable</arg>
+ </group>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloud-network-delete">
+ <command>VBoxManage cloud</command>
+ <arg choice="plain">network delete</arg>
+ <arg choice="req">--name=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloud-network-info">
+ <command>VBoxManage cloud</command>
+ <arg choice="plain">network info</arg>
+ <arg choice="req">--name=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <!-- Cloud commands common options -->
+ <refsect2 id="vboxmanage-cloud-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The word "cloud" is an umbrella for all commands related to the interconnection with the Cloud.
+ The next common options must be placed between the "cloud" and the following sub-commands:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--provider=<replaceable>name</replaceable></term>
+ <listitem><para>Short cloud provider name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<replaceable>name</replaceable></term>
+ <listitem><para>Cloud profile name. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <!-- Cloud list commands -->
+ <refsect2 id="vboxmanage-cloudlist-instances">
+ <title>cloud list instances</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays the list of the instances for a specified compartment.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>--state<replaceable>"running/paused/terminated"</replaceable></term>
+ <listitem>
+ <para>The state of cloud instance. The possible states are "running/paused/terminated" at moment.
+ If the state isn't provided the list of instances with all possible states is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment-id</option></term>
+ <listitem>
+ <para>A compartment is the logical container used to organize and isolate cloud resources.
+ The different cloud providers can have the different names for this entity.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudlist-images">
+ <title>cloud list images</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays the list of the images for a specified compartment.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>--state<replaceable>"available/disabled/deleted"</replaceable></term>
+ <listitem>
+ <para>The state of cloud image. The possible states are "available/disabled/deleted" at moment.
+ If the state isn't provided the list of images with all possible states is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment-id</option></term>
+ <listitem>
+ <para>A compartment is the logical container used to organize and isolate cloud resources.
+ The different cloud providers can have the different names for this entity.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <!-- Cloud instance commands -->
+ <refsect2 id="vboxmanage-cloudinstance-create">
+ <title>cloud instance create</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Creates new instance in the Cloud.
+ There are two standard ways to create an instance in the Cloud:
+ 1. Create an instance from an existing custom image.
+ 2. Create an instance from an existing bootable volume. This bootable volume shouldn't be attached to any instance.
+ For the 1st approach next parameters are required: image-id and boot-disk-size.
+ For the 2nd approach next parameters are required: boot-volume-id;
+ The rest parameters are common for both cases:
+ display-name, launch-mode, subnet-id, publicIP, privateIP, shape, domain.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--domain-name</option></term><listitem><para>Cloud domain where new instance is created.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--image-id</option></term><listitem><para>Unique identifier which fully identifies a custom image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--boot-volume-id</option></term><listitem><para>Unique identifier which fully identifies a boot volume in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new instance in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--shape</option></term><listitem><para> The shape of instance, defines the number of CPUs and RAM memory.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--subnet</option></term><listitem><para> Unique identifier which fully identifies an existing subnet in the Cloud which will be used by the instance.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--boot-disk-size</option></term><listitem><para> The size of bootable image in GB. Default is 50GB.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--publicip</option></term><listitem><para>Whether the instance will have a public IP or not.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--privateip</option></term><listitem><para>Private IP address for the created instance.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--public-ssh-key</option></term>
+ <listitem>
+ <para>Public SSH key used to connect to the instance via SSH.
+ This parameter may be repeated if you plan to use more than one key as:
+ "--public-ssh-key=firstSSHKey --public-ssh-key=secondSSHKey".
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--launch-mode</option></term><listitem><para>The most known values here may be EMULATED, NATIVE, PARAVIRTUALIZED. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloud-init-script-path</option></term><listitem><para>Absolute path to the user cloud-init script.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-info">
+ <title>cloud instance info</title>
+ <para>
+ Display information about a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-terminate">
+ <title>cloud instance termination</title>
+ <para>
+ Delete a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-start">
+ <title>cloud instance start</title>
+ <para>
+ Start a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-pause">
+ <title>cloud instance pause</title>
+ <para>
+ Pause a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+
+ <!-- Cloud image commands -->
+ <refsect2 id="vboxmanage-cloudimage-create">
+ <title>cloud image create</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Creates new image in the Cloud.
+ There are two standard ways to create an image in the Cloud:
+ 1. Create an image from an object in the Cloud Storage;
+ 2. Create an image from an existing cloud instance.
+ For the 1st approach next parameters are required:
+ bucket-name - cloud bucket name where an object is located;
+ object-name - name of object in the bucket;
+ display-name - name for new image in the Cloud.
+ For the 2d approach next parameters are required:
+ instance-id - Id of instance in the Cloud;
+ display-name - name for new image in the Cloud.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where an object is located.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term><listitem><para>Name of object in the bucket.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--instance-id</option></term><listitem><para>Unique identifier which fully identifies the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-info">
+ <title>cloud image info</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Display information about a cloud image with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-delete">
+ <title>cloud image delete</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Delete an image with a specified id from the Cloud.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-import">
+ <title>cloud image import</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Import an image with a specified id from the Cloud to a local host.
+ The result is an object in the local "temp" folder on the local host.
+ Possible approach may have two general steps:
+ 1. Create an object from an image in the Cloud Storage;
+ 2. Download the object to the local host.
+ So the next parameters may be required:
+ bucket-name - cloud bucket name where the object will be created;
+ object-name - name of object in the bucket. if parameter "object-name" is absent a displayed image name is used.
+ If the first step isn't needed only the parameter "id" is required.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where an object will be created.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term>
+ <listitem>
+ <para>
+ Name of created object in the bucket. The downloaded object will have this name.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-export">
+ <title>cloud image export</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Export an existing VBox image with a specified uuid from a local host to the Cloud.
+ The result is new image in the Cloud.
+ Possible approach may have two general steps:
+ 1. Upload VBox image to the Cloud Storage;
+ 2. Create an image from the uploaded object.
+ So the next parameters may be required:
+ bucket-name -cloud bucket name where the object will be uploaded;
+ object-name - name of object in the bucket. If parameter "object-name" is absent the image id is used;
+ display-name - name for new image in the Cloud.
+ If the first step isn't needed the parameters "id" and "display-name" are required only.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier of the image in the VirtualBox.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where the image (object) will be uploaded.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term><listitem><para>Name of object in the bucket.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+
+ <!-- Cloud network commands -->
+ <refsect2 id="vboxmanage-cloud-network-setup">
+ <title>cloud network setup</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Set up a cloud network environment for the specified cloud profile.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--local-gateway-iso</option></term><listitem><para>The local path to an installation media for a local gateway.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--gateway-os-name</option></term><listitem><para>The name of OS to use for a cloud gateway.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--gateway-os-version</option></term><listitem><para>The version of OS to use for a cloud gateway.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--gateway-shape</option></term><listitem><para>The instance shape to use for a cloud gateway. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tunnel-network-name</option></term><listitem><para>The name of VCN/subnet to use for tunneling.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tunnel-network-range</option></term><listitem><para>The IP address range to use for tunneling. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--guest-additions-iso</option></term><listitem><para>The local path to an installation media for VirtualBox guest additions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--proxy</option></term><listitem><para>The proxy URL to be used in local gateway installation.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment-id</option></term><listitem><para>The compartment to create the tunnel network in.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloud-network-create">
+ <title>cloud network create</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Create a new cloud network descriptor associated with an existing cloud subnet.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--name</option></term><listitem><para>The name to assign to the cloud network descriptor.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--network-id</option></term><listitem><para>The unique identifier of an existing subnet in the cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--enable</option>, --disable</term>
+ <listitem><para>Whether to enable the network descriptor or disable it. If not specified,
+ the network will be enabled.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloud-network-update">
+ <title>cloud network update</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Modify an existing cloud network descriptor.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--name</option></term><listitem><para>The name of an existing cloud network descriptor.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--network-id</option></term><listitem><para>The unique identifier of an existing subnet in the cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--enable</option>, --disable</term>
+ <listitem><para>Whether to enable the network descriptor or disable it.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloud-network-delete">
+ <title>cloud network delete</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Delete an existing cloud network descriptor.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--name</option></term><listitem><para>The name of an existing cloud network descriptor.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloud-network-info">
+ <title>cloud network info</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Display information about a cloud network descriptor.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--name</option></term><listitem><para>The name of an existing cloud network descriptor.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-cloudimage.xml b/doc/manual/en_US/man_VBoxManage-cloudimage.xml
new file mode 100644
index 00000000..5b3e831e
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-cloudimage.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage cloud image
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<refentry id="vboxmanage-cloudimage" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage cloud image</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-cloudimage</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-cloudimage</refname>
+ <refpurpose>Manage the cloud images</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-create" sepchar=" "> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">create</arg>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--instance-id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-info" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">info</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-delete" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">delete</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-import" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">import</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudimage-export" sepchar=" ">
+ <command>VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">image</arg>
+ <arg choice="plain" rep="norepeat">export</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--bucket-name=<replaceable>name</replaceable></arg>
+ <arg rep="norepeat">--object-name=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-cloudimage-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>cloudimage</command> implement the standard operations for a cloud image
+ like create/delete/show/import/export. The next common options must be placed between the "cloud" and the following sub-commands:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--provider=<replaceable>name</replaceable></term>
+ <listitem><para>Short cloud provider name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<replaceable>name</replaceable></term>
+ <listitem><para>Cloud profile name. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-create">
+ <title>cloud image create</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Creates new image in the Cloud.
+ There are two standard ways to create an image in the Cloud:
+ 1. Create an image from an object in the Cloud Storage;
+ 2. Create an image from an existing cloud instance.
+ For the 1st approach next parameters are required:
+ bucket-name - cloud bucket name where an object is located;
+ object-name - name of object in the bucket;
+ display-name - name for new image in the Cloud.
+ For the 2d approach next parameters are required:
+ instance-id - Id of instance in the Cloud;
+ display-name - name for new image in the Cloud.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where an object is located.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term><listitem><para>Name of object in the bucket.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--instance-id</option></term><listitem><para>Unique identifier which fully identifies the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-info">
+ <title>cloud image info</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Display information about a cloud image with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-delete">
+ <title>cloud image delete</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Delete an image with a specified id from the Cloud.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-import">
+ <title>cloud image import</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Import an image with a specified id from the Cloud to a local host.
+ The result is an object in the local "temp" folder on the local host.
+ Possible approach may have two general steps:
+ 1. Create an object from an image in the Cloud Storage;
+ 2. Download the object to the local host.
+ So the next parameters may be required:
+ bucket-name - cloud bucket name where the object will be created;
+ object-name - name of object in the bucket. if parameter "object-name" is absent a displayed image name is used.
+ If the first step isn't needed only the parameter "id" is required.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identifies the image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where an object will be created.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term>
+ <listitem>
+ <para>
+ Name of created object in the bucket. The downloaded object will have this name.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudimage-export">
+ <title>cloud image export</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Export an existing VBox image with a specified uuid from a local host to the Cloud.
+ The result is new image in the Cloud.
+ Possible approach may have two general steps:
+ 1. Upload VBox image to the Cloud Storage;
+ 2. Create an image from the uploaded object.
+ So the next parameters may be required:
+ bucket-name -cloud bucket name where the object will be uploaded;
+ object-name - name of object in the bucket. If parameter "object-name" is absent the image id is used;
+ display-name - name for new image in the Cloud.
+ If the first step isn't needed the parameters "id" and "display-name" are required only.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier of the image in the VirtualBox.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bucket-name</option></term><listitem><para>Cloud bucket name where the image (object) will be uploaded.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--object-name</option></term><listitem><para>Name of object in the bucket.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-cloudinstance.xml b/doc/manual/en_US/man_VBoxManage-cloudinstance.xml
new file mode 100644
index 00000000..a03e228d
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-cloudinstance.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage cloud instance
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<refentry id="vboxmanage-cloudinstance" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage cloud instance</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-cloudinstance</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-cloudinstance</refname>
+ <refpurpose>Manage the cloud instances</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-create" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">create</arg>
+ <arg choice="req" rep="norepeat">--domain-name=<replaceable>name</replaceable></arg>
+ <group choice="req">
+ <arg choice="req" rep="norepeat">--image-id=<replaceable>id</replaceable></arg>
+ <arg choice="req" rep="norepeat">--boot-volume-id=<replaceable>id</replaceable></arg>
+ </group>
+ <arg choice="req" rep="norepeat">--display-name=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--shape=<replaceable>type</replaceable></arg>
+ <arg choice="req" rep="norepeat">--subnet=<replaceable>id</replaceable></arg>
+ <arg rep="norepeat">--boot-disk-size=<replaceable>size in GB</replaceable></arg>
+ <arg rep="norepeat">--publicip=<replaceable>true/false</replaceable></arg>
+ <arg rep="norepeat">--privateip=<replaceable>IP address</replaceable></arg>
+ <arg rep="repeat">--public-ssh-key=<replaceable>key string</replaceable></arg>
+ <arg rep="norepeat">--launch-mode=<replaceable>NATIVE/EMULATED/PARAVIRTUALIZED</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-info" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">info</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-terminate" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">terminate</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-start" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">start</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudinstance-pause" sepchar=" ">
+ <command moreinfo="none">VBoxManage cloud</command>
+ <arg choice="req" rep="norepeat">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req" rep="norepeat">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain" rep="norepeat">instance</arg>
+ <arg choice="plain" rep="norepeat">pause</arg>
+ <arg choice="req" rep="norepeat">--id=<replaceable>unique id</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-cloudinstance-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>cloudinstance</command> implement the standard operations for a cloud instance
+ like start/pause/show/terminate. The next common options must be placed between the "cloud" and the following sub-commands:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--provider=<replaceable>name</replaceable></term>
+ <listitem><para>Short cloud provider name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<replaceable>name</replaceable></term>
+ <listitem><para>Cloud profile name. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-create">
+ <title>cloud instance create</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Creates new instance in the Cloud.
+ There are two standard ways to create an instance in the Cloud:
+ 1. Create an instance from an existing custom image.
+ 2. Create an instance from an existing bootable volume. This bootable volume shouldn't be attached to any instance.
+ For the 1st approach next parameters are required: image-id and boot-disk-size.
+ For the 2nd approach next parameters are required: boot-volume-id;
+ The rest parameters are common for both cases:
+ display-name, launch-mode, subnet-id, publicIP, privateIP, shape, domain.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--domain-name</option></term><listitem><para>Cloud domain where new instance is created.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--image-id</option></term><listitem><para>Unique identifier which fully identifies a custom image in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--boot-volume-id</option></term><listitem><para>Unique identifier which fully identifies a boot volume in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--display-name</option></term><listitem><para>Name for new instance in the Cloud.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--shape</option></term><listitem><para> The shape of instance, defines the number of CPUs and RAM memory.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--subnet</option></term><listitem><para> Unique identifier which fully identifies an existing subnet in the Cloud which will be used by the instance.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--boot-disk-size</option></term><listitem><para> The size of bootable image in GB. Default is 50GB.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--publicip</option></term><listitem><para>Whether the instance will have a public IP or not.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--privateip</option></term><listitem><para>Private IP address for the created instance.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--public-ssh-key</option></term>
+ <listitem>
+ <para>Public SSH key used to connect to the instance via SSH.
+ This parameter may be repeated if you plan to use more than one key as:
+ "--public-ssh-key=firstSSHKey --public-ssh-key=secondSSHKey".
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--launch-mode</option></term><listitem><para>The most known values here may be EMULATED, NATIVE, PARAVIRTUALIZED. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-info">
+ <title>cloud instance info</title>
+ <para>
+ Display information about a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-terminate">
+ <title>cloud instance termination</title>
+ <para>
+ Delete a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-start">
+ <title>cloud instance start</title>
+ <para>
+ Start a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudinstance-pause">
+ <title>cloud instance pause</title>
+ <para>
+ Pause a cloud instance with a specified id.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--id</option></term><listitem><para>Unique identifier which fully identify the instance in the Cloud.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-cloudlist.xml b/doc/manual/en_US/man_VBoxManage-cloudlist.xml
new file mode 100644
index 00000000..6fb004bf
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-cloudlist.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage cloud list
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+
+<refentry id="vboxmanage-cloudlist" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage cloud list</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-cloudlist</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-cloudlist</refname>
+ <refpurpose>The cloud list command gives information about some standard entities in the every Cloud
+ and which can be represented by the list like the list of instances/disk images/networks and etc</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudlist-instances"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">list</arg>
+ <arg choice="plain">instances</arg>
+ <arg>--state=<replaceable>string</replaceable></arg>
+ <arg>--compartment-id=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudlist-images">
+ <command>VBoxManage cloud</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">list</arg>
+ <arg choice="plain">images</arg>
+ <arg>--state=<replaceable>string</replaceable></arg>
+ <arg>--compartment-id=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <refsect2 id="vboxmanage-cloud-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The word "cloud" is an umbrella for all commands related to the interconnection with the Cloud.
+ The following common options must be placed between the "cloud" and the following command, in our case "list":</para>
+ <variablelist>
+ <varlistentry>
+ <term>--provider=<replaceable>name</replaceable></term>
+ <listitem><para>Short cloud provider name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<replaceable>name</replaceable></term>
+ <listitem><para>Cloud profile name. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudlist-instances">
+ <title>cloud list instances</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays the list of the instances for a specified compartment.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>--state<replaceable>"running/paused/terminated"</replaceable></term>
+ <listitem>
+ <para>The state of cloud instance. The possible states are "running/paused/terminated" at moment.
+ If the state isn't provided the list of instances with all possible states is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment-id</option></term>
+ <listitem>
+ <para>A compartment is the logical container used to organize and isolate cloud resources.
+ The different cloud providers can have the different names for this entity.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudlist-images">
+ <title>cloud list images</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays the list of the images for a specified compartment.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>--state<replaceable>"available/disabled/deleted"</replaceable></term>
+ <listitem>
+ <para>The state of cloud image. The possible states are "available/disabled/deleted" at moment.
+ If the state isn't provided the list of images with all possible states is returned.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment-id</option></term>
+ <listitem>
+ <para>A compartment is the logical container used to organize and isolate cloud resources.
+ The different cloud providers can have the different names for this entity.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-cloudprofile.xml b/doc/manual/en_US/man_VBoxManage-cloudprofile.xml
new file mode 100644
index 00000000..bcf92ca0
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-cloudprofile.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage cloudprofile
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-cloudprofile" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage cloudprofile</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-cloudprofile</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-cloudprofile</refname>
+ <refpurpose>Manage the cloud profiles</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudprofile-add"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage cloudprofile</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">add</arg>
+ <arg>--clouduser=<replaceable>unique id</replaceable></arg>
+ <arg>--fingerprint=<replaceable>MD5 string</replaceable></arg>
+ <arg>--keyfile=<replaceable>path</replaceable></arg>
+ <arg>--passphrase=<replaceable>string</replaceable></arg>
+ <arg>--tenancy=<replaceable>unique id</replaceable></arg>
+ <arg>--compartment=<replaceable>unique id</replaceable></arg>
+ <arg>--region=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudprofile-update">
+ <command>VBoxManage cloudprofile</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">update</arg>
+ <arg>--clouduser=<replaceable>unique id</replaceable></arg>
+ <arg>--fingerprint=<replaceable>MD5 string</replaceable></arg>
+ <arg>--keyfile=<replaceable>path</replaceable></arg>
+ <arg>--passphrase=<replaceable>string</replaceable></arg>
+ <arg>--tenancy=<replaceable>unique id</replaceable></arg>
+ <arg>--compartment=<replaceable>unique id</replaceable></arg>
+ <arg>--region=<replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudprofile-delete">
+ <command>VBoxManage cloudprofile</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">delete</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-cloudprofile-show">
+ <command>VBoxManage cloudprofile</command>
+ <arg choice="req">--provider=<replaceable>name</replaceable></arg>
+ <arg choice="req">--profile=<replaceable>name</replaceable></arg>
+ <arg choice="plain">show</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-cloudprofile-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>cloudprofile</command> implement the standard CRUD operations for a cloud profile.
+ The next common options must be placed between the "cloud" and the following sub-commands:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--provider=<replaceable>name</replaceable></term>
+ <listitem><para>Short cloud provider name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--profile=<replaceable>name</replaceable></term>
+ <listitem><para>Cloud profile name. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudprofile-add">
+ <title>cloudprofile add</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Add new cloud profile for a specified cloud provider.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--clouduser</option></term><listitem><para>The name which fully identifies the user in the specified cloud provider.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--fingerprint</option></term><listitem><para>Fingerprint for the key pair being used.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--keyfile</option></term><listitem><para>Full path and filename of the private key. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passphrase</option></term><listitem><para>Passphrase used for the key, if it is encrypted.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tenancy</option></term><listitem><para>ID of your tenancy. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment</option></term><listitem><para>ID of your compartment.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--region</option></term><listitem><para>Region name. Region is where you plan to deploy an application.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudprofile-show">
+ <title>cloudprofile show</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Display information about a cloud profile for a specified cloud provider.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudprofile-update">
+ <title>cloudprofile update</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Modify a cloud profile for the specified cloud provider.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--clouduser</option></term><listitem><para>The name which fully identifies the user in the specified cloud provider.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--fingerprint</option></term><listitem><para>Fingerprint for the key pair being used.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--keyfile</option></term><listitem><para>Full path and filename of the private key. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passphrase</option></term><listitem><para>Passphrase used for the key, if it is encrypted.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tenancy</option></term><listitem><para>ID of your tenancy. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compartment</option></term><listitem><para>ID of your compartment.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--region</option></term><listitem><para>Region name. Region is where you plan to deploy an application.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-cloudprofile-delete">
+ <title>cloudprofile delete</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Delete a cloud profile for a specified cloud provider.
+ </para>
+ </refsect2>
+
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-controlvm.xml b/doc/manual/en_US/man_VBoxManage-controlvm.xml
new file mode 100644
index 00000000..4b5c0745
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-controlvm.xml
@@ -0,0 +1,2081 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage controlvm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-controlvm" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage controlvm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-controlvm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-controlvm</refname>
+ <refpurpose>change state and settings for a running virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-pause">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">pause</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-resume">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">resume</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-reset">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">reset</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-poweroff">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">poweroff</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-savestate">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">savestate</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-acpipowerbutton">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">acpipowerbutton</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-acpisleepbutton">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">acpisleepbutton</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-keyboardputscancode">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">keyboardputscancode</arg>
+ <arg choice="req"><replaceable>hex</replaceable></arg>
+ <arg rep="repeat"><replaceable>hex</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-keyboardputstring">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">keyboardputstring</arg>
+ <arg choice="req"><replaceable>string</replaceable></arg>
+ <arg rep="repeat"><replaceable>string</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-keyboardputfile">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">keyboardputfile</arg>
+ <arg choice="req"><replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-setlinkstate">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">setlinkstate<replaceable>N</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-nic">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">nic<replaceable>N</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">null</arg>
+ <arg choice="plain">nat</arg>
+ <arg choice="plain">bridged</arg>
+ <arg choice="plain">intnet</arg>
+ <arg choice="plain">hostonly</arg>
+ <arg choice="plain">generic</arg>
+ <arg choice="plain">natnetwork</arg>
+ </group>
+ <arg><replaceable>device-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-nictrace">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">nictrace<replaceable>N</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-nictracefile">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">nictracefile<replaceable>N</replaceable></arg>
+ <arg choice="req"><replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-nicproperty">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">nicproperty<replaceable>N</replaceable></arg>
+ <arg choice="req"><replaceable>prop-name</replaceable>=<arg><replaceable>prop-value</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-nicpromisc">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">nicpromisc<replaceable>N</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">deny</arg>
+ <arg choice="plain">allow-vms</arg>
+ <arg choice="plain">allow-all</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-natpf">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">natpf<replaceable>N</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">[<replaceable>rulename</replaceable>]<arg choice="plain">,tcp</arg></arg>
+ <arg choice="plain">udp,<arg><replaceable>host-IP</replaceable></arg>,<arg choice="plain"><replaceable>hostport</replaceable>,</arg><arg><replaceable>guest-IP</replaceable></arg>,<arg choice="plain"><replaceable>guestport</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-natpf-delete">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">natpf<replaceable>N</replaceable> delete</arg>
+
+ <arg choice="req"><replaceable>rulename</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-guestmemoryballoon">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">guestmemoryballoon</arg>
+ <arg choice="req"><replaceable>balloon-size</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-usbattach">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">usbattach</arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>address</replaceable></arg>
+ </group>
+ <arg>--capturefile=<replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-usbdetach">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">usbdetach</arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>address</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-audioin">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">audioin</arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-audioout">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">audioout</arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-clipboard">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">clipboard</arg>
+ <group choice="req">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">hosttoguest</arg>
+ <arg choice="plain">guesttohost</arg>
+ <arg choice="plain">bidirectional</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-draganddrop">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">draganddrop</arg>
+ <group choice="req">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">hosttoguest</arg>
+ <arg choice="plain">guesttohost</arg>
+ <arg choice="plain">bidirectional</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-vrde">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">vrde</arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-vrdeport">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">vrdeport</arg>
+ <arg choice="req"><replaceable>port</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-vrdeproperty">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">vrdeproperty</arg>
+ <arg choice="req"><replaceable>prop-name</replaceable>=<arg><replaceable>prop-value</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-vrdevideochannelquality">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">vrdevideochannelquality</arg>
+ <arg choice="req"><replaceable>percentage</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-setvideomodehint">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">setvideomodehint</arg>
+ <arg choice="req"><replaceable>xres</replaceable></arg>
+ <arg choice="req"><replaceable>yres</replaceable></arg>
+ <arg choice="req"><replaceable>bpp</replaceable></arg>
+ <arg><arg><replaceable>display</replaceable></arg><group>
+ <arg choice="plain">enabled:yes | no</arg>
+ <arg><replaceable>x-origin</replaceable>&nbsp;<replaceable>y-origin</replaceable></arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-setscreenlayout">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">setscreenlayout</arg>
+ <arg choice="req"><replaceable>display</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">primary <replaceable>x-origin</replaceable>&nbsp;<replaceable>y-origin</replaceable>&nbsp;<replaceable>x-resolution</replaceable>&nbsp;<replaceable>y-resolution</replaceable>&nbsp;<replaceable>bpp</replaceable></arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-screenshotpng">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">screenshotpng</arg>
+ <arg choice="req"><replaceable>filename</replaceable></arg>
+ <arg><replaceable>display</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recording">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording</arg>
+ <group choice="req">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingscreens">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording screens</arg>
+ <group choice="req">
+ <arg choice="plain">all</arg>
+ <arg choice="plain">none</arg>
+ <arg choice="plain"><replaceable>screen</replaceable>,[<replaceable>screen</replaceable>...]</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingfilename">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording filename</arg>
+ <arg choice="req">filename</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingvideores">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording videores</arg>
+ <arg choice="req"><replaceable>width</replaceable>x<replaceable>height</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingvideorate">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording videorate</arg>
+ <arg choice="req"><replaceable>rate</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingvideofps">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording videofps</arg>
+ <arg choice="req"><replaceable>fps</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingmaxtime">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording maxtime</arg>
+ <arg choice="req"><replaceable>sec</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-recordingmaxfilesize">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">recording maxfilesize</arg>
+ <arg choice="req"><replaceable>MB</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-setcredentials">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">setcredentials</arg>
+ <arg choice="req"><replaceable>username</replaceable></arg>
+ <arg choice="plain">--passwordfile=<group choice="req">
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ <arg choice="plain"><replaceable>password</replaceable></arg>
+ </group></arg>
+ <arg choice="req"><replaceable>domain-name</replaceable></arg>
+ <arg choice="plain">--allowlocallogon=<group choice="req">
+ <arg choice="plain">yes</arg>
+ <arg choice="plain">no</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-teleport">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">teleport</arg>
+ <arg choice="req">--host=<replaceable>host-name</replaceable></arg>
+ <arg choice="req">--port=<replaceable>port-name</replaceable></arg>
+ <arg>--maxdowntime=<replaceable>msec</replaceable></arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>filename</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-plugcpu">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">plugcpu</arg>
+ <arg choice="req"><replaceable>ID</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-unplugcpu">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">unplugcpu</arg>
+ <arg choice="req"><replaceable>ID</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-cpuexecutioncap">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">cpuexecutioncap</arg>
+ <arg choice="req"><replaceable>num</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-vmprocesspriority">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">vm-process-priority</arg>
+ <group choice="req">
+ <arg choice="plain">default</arg>
+ <arg choice="plain">flat</arg>
+ <arg choice="plain">low</arg>
+ <arg choice="plain">normal</arg>
+ <arg choice="plain">high</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-webcam-attach">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">webcam attach</arg>
+ <arg><replaceable>pathname</replaceable><arg><replaceable>settings</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-webcam-detach">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">webcam detach</arg>
+ <arg><replaceable>pathname</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-webcam-list">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">webcam list</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-addencpassword">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">addencpassword</arg>
+ <arg choice="req"><replaceable>ID</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>password-file</replaceable></arg>
+ <arg choice="plain">-</arg>
+ </group>
+ <arg>--removeonsuspend=<group choice="plain">
+ <arg choice="plain">yes</arg>
+ <arg choice="plain">no</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-removeencpassword">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">removeencpassword</arg>
+ <arg choice="req"><replaceable>ID</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-removeallencpasswords">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">removeallencpasswords</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-controlvm-changeuartmode">
+ <command>VBoxManage controlvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">changeuartmode<replaceable>N</replaceable></arg>
+ <group choice="plain">
+ <arg choice="plain">disconnected</arg>
+ <arg choice="plain">server <replaceable>pipe-name</replaceable></arg>
+ <arg choice="plain">client <replaceable>pipe-name</replaceable></arg>
+ <arg choice="plain">tcpserver <replaceable>port</replaceable></arg>
+ <arg choice="plain">tcpclient <replaceable>hostname</replaceable>:<replaceable>port</replaceable></arg>
+ <arg choice="plain">file <replaceable>filename</replaceable></arg>
+ <arg choice="plain"><replaceable>device-name</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage controlvm</command> command enables you to
+ change the state of a running virtual machine (VM). The following
+ sections describe the subcommands that you can use:
+ </para>
+ <refsect2 id="vboxmanage-controlvm-pause">
+ <title>Pause a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> pause</command> command
+ temporarily stops the execution of a VM. When paused, the VM's
+ state is not permanently changed.
+ </para>
+ <para>
+ The VM window appears as gray and the title bar of the window
+ indicates that the VM is currently Paused. This action is
+ equivalent to selecting <emphasis role="bold">Pause</emphasis>
+ from the <emphasis role="bold">Machine</emphasis> menu of the
+ GUI.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-resume">
+ <title>Resume a Paused Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> resume</command> command
+ restarts the execution of a paused VM. This action is equivalent
+ to selecting <emphasis role="bold">Resume</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-reset">
+ <title>Reset a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> reset</command> command
+ performs a cold reset the VM. This command has the same effect
+ on a VM as pressing the Reset button on a physical computer.
+ </para>
+ <para>
+ The cold reboot immediately restarts and reboots the guest
+ operating system (OS). The state of the VM is not saved prior to
+ the reset, so data might be lost. This action is equivalent to
+ selecting <emphasis role="bold">Reset</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-poweroff">
+ <title>Power Off a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> poweroff</command> command
+ powers off the VM. This command has the same effect on a VM as
+ pulling the power cable on a physical computer.
+ </para>
+ <para>
+ The state of the VM is not saved prior to poweroff, so data
+ might be lost. This action is equivalent to selecting
+ <emphasis role="bold">Close</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI or to
+ clicking the VM window's Close button, and then selecting
+ <emphasis role="bold">Power Off the Machine</emphasis>.
+ </para>
+ <para>
+ When in the powered off state, you can restart the VM. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-savestate">
+ <title>Save the State of a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> savestate</command> command
+ saves the current state of the VM to disk and then stops the VM.
+ </para>
+ <para>
+ This action is equivalent to selecting
+ <emphasis role="bold">Close</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI or to
+ clicking the VM window's Close button, and then selecting
+ <emphasis role="bold">Save the Machine State</emphasis>.
+ </para>
+ <para>
+ When in the powered off state, you can restart the VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-acpipowerbutton">
+ <title>Send an APCI Shutdown Signal to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> acpipowerbutton</command>
+ command sends an ACPI shutdown signal to the VM. This command
+ has the same effect on a VM as pressing the Power button on a
+ physical computer.
+ </para>
+ <para>
+ So long as the VM runs a guest OS that provides ACPI support,
+ this command triggers a proper shutdown mechanism from within
+ the VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-acpisleepbutton">
+ <title>Send an APCI Sleep Signal to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> acpisleepbutton</command>
+ command sends an ACPI sleep signal to the VM.
+ </para>
+ <para>
+ So long as the VM runs a guest OS that provides ACPI support,
+ this command triggers a proper sleep mechanism from within the
+ VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-keyboardputscancode">
+ <title>Send Keyboard Scancodes to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> keyboardputscancode</command>
+ command sends keyboard scancode commands to the VM.
+ </para>
+ <para>
+ For information about keyboard scancodes, see
+ <ulink url="http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html" />.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-keyboardputstring">
+ <title>Send Keyboard Strings to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> keyboardputstring</command>
+ command sends keyboard strings to the VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-keyboardputfile">
+ <title>Send a File to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> keyboardputfile</command>
+ command sends a file to the VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-teleport">
+ <title>Configure a Virtual Machine Target for Teleporting</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> teleport</command> command
+ initiates a teleporting operation between the specified VM and
+ the specified host system. See <xref linkend="teleporting" />.
+ </para>
+ <para>
+ If you specify a password, it must match the password you
+ specified when you issued the <command>VBoxManage
+ modifyvm</command> command for the target machine.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--host=<replaceable>hostname</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port=<replaceable>port</replaceable></option></term>
+ <listitem><para>
+ Specifies the port on the VM that should listen for a
+ teleporting request from other VMs. The port number can be
+ any free TCP/IP port number, such as
+ <literal>6000</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--maxdowntime=<replaceable>msec</replaceable></option></term>
+ <listitem><para>
+ Specifies the maximum downtime, in milliseconds, for the
+ teleporting target VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--password=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the password that the source machine uses for
+ the teleporting request. The request succeeds only if the
+ source machine specifies the same password.
+ </para><remark>
+ This design does not conform to Oracle's security
+ guidelines. You should not be able to specify a password
+ on the command line because the password can be seen in a
+ process listing.
+ </remark><para>
+ The <option>--password</option> is mutually exclusive with
+ the <option>--passwordfile</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passwordfile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the file from which to obtain the password that
+ the source machine uses for the teleporting request. The
+ request succeeds only if the source machine specifies the
+ same password.
+ </para><para>
+ When you specify a file name of <literal>stdin</literal>,
+ you can read the password from standard input.
+ </para><para>
+ The <option>--passwordfile</option> is mutually exclusive
+ with the <option>--password</option> option.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-setlinkstate">
+ <title>Set the Link State for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ <command>VBoxManage controlvm <replaceable>vmname</replaceable>
+ setlinkstate<replaceable>N</replaceable></command> command
+ enables you to connect or disconnect the virtual network cable
+ from the network interface instance
+ (<replaceable>N</replaceable>). Valid values are
+ <literal>on</literal> and <literal>off</literal>. The default
+ value is <literal>on</literal>.
+ </para>
+ <para>
+ Before connecting the virtual network cable, use the
+ <command>VBoxManage controlvm
+ nictracefile<replaceable>N</replaceable></command> command at
+ runtime to specify the name of the file in which to log the
+ trace. Otherwise, use the <command>VBoxManage modifyvm
+ --nictracefile<replaceable>N</replaceable>=<replaceable>filename</replaceable></command>
+ command to specify the name of the file.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-nic">
+ <title>Set the Type of Networking to Use for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nic<replaceable>N</replaceable></command> command specifies the
+ type of networking to use on the specified VM's virtual network
+ card. <replaceable>N</replaceable> numbering begins with
+ <literal>1</literal>.
+ </para>
+ <para>
+ The following valid network types are also described in
+ <xref linkend="networkingmodes" />:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <literal>null</literal> specifies that the VM is is not
+ connected to the host system.
+ </para></listitem>
+ <listitem><para>
+ <literal>nat</literal> specifies that the VM uses network
+ address translation (NAT).
+ </para></listitem>
+ <listitem><para>
+ <literal>bridged</literal> specifies that the VM uses
+ bridged networking.
+ </para></listitem>
+ <listitem><para>
+ <literal>intnet</literal> specifies that the VM communicates
+ with other VMs by using internal networking.
+ </para></listitem>
+ <listitem><para>
+ <literal>hostonly</literal> specifies that the VM uses
+ host-only networking.
+ </para></listitem>
+ <listitem><para>
+ <literal>natnetwork</literal> specifies that the VM uses NAT
+ networking.
+ </para></listitem>
+ <listitem><para>
+ <literal>generic</literal> specifies that the VM has access
+ to rarely used submodes
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-nictrace">
+ <title>Trace the Network Traffic of a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nictrace<replaceable>N</replaceable></command> command enables
+ you to trace the network traffic on the specified virtual
+ network card (<replaceable>N</replaceable>).
+ <replaceable>N</replaceable> numbering begins with
+ <literal>1</literal>. Valid values are <literal>on</literal> and
+ <literal>off</literal>. The default value is
+ <literal>off</literal>.
+ </para>
+ <para>
+ When set to <literal>on</literal>, use the same value of
+ <replaceable>N</replaceable> for the <command>VBoxManage
+ controlvm <replaceable>vmname</replaceable>
+ nictracefile<replaceable>N</replaceable></command> command that
+ you use to specify the path name to the log file in which to
+ write trace output.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-nictracefile">
+ <title>Specify the Network Traffic Trace Log File for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nictracefile<replaceable>N</replaceable></command> command
+ enables you to specify the name of the network traffic trace log
+ file for the specified virtual network card
+ (<replaceable>N</replaceable>). <replaceable>N</replaceable>
+ numbering begins with <literal>1</literal>. Ensure that you use
+ the same value of <replaceable>N</replaceable> as you used for
+ the <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nic<replaceable>N</replaceable></command> and
+ <command>VBoxManage controlvm <replaceable>vmname</replaceable>
+ nictrace<replaceable>N</replaceable></command> commands.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-nicpromisc">
+ <title>Specify the Promiscuous Mode to Use for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nicpromisc<replaceable>N</replaceable></command> command enables
+ you to specify how to handle promiscuous mode for a bridged
+ network. The default value of <literal>deny</literal> hides any
+ traffic that is not intended for this VM. The
+ <literal>allow-vms</literal> value hides all host traffic from
+ this VM but enables the VM to see traffic to and from other VMs.
+ The <literal>allow-all</literal> value removes this restriction
+ completely.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-nicproperty">
+ <title>Specify the Network Backend Property Values for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ nicproperty<replaceable>N</replaceable>
+ <replaceable>prop-name</replaceable>="<replaceable>prop-value</replaceable>"</command>
+ command, in combination with <literal>nicgenericdrv</literal>,
+ enables you to pass property values to rarely-used network
+ backends.
+ </para>
+ <para>
+ Those properties are backend engine-specific, and are different
+ between UDP Tunnel and the VDE backend drivers. See
+ <xref linkend="network_udp_tunnel" />.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-natpf">
+ <title>Specify a NAT Port Forwarding Rule for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ natpf<replaceable>N</replaceable></command> command specifies a
+ NAT port-forwarding rule. See <xref linkend="natforward"/>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-natpf-delete">
+ <title>Delete a NAT Port Forwarding Rule for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ natpf<replaceable>N</replaceable> delete</command> deletes the
+ specified NAT port-forwarding rule. See
+ <xref linkend="natforward"/>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-guestmemoryballoon">
+ <title>Change Size of a Virtual Machine's Guest Memory Balloon</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> guestmemoryballoon</command>
+ command changes the size of the guest memory balloon. The guest
+ memory balloon is the memory allocated by the &product-name;
+ Guest Additions from the guest OS and returned to the hypervisor
+ for reuse by other VMs. The value you specify is in megabytes.
+ See <xref linkend="guestadd-balloon" />.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-usbattach">
+ <title>Make a Host System USB Device Visible to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> usbattach</command> command
+ dynamically attaches a host USB device to the VM, which makes it
+ visible. You do not need to create a filter.
+ </para>
+ <para>
+ Specify a USB device by its Universally Unique Identifier (UUID)
+ or by its address on the host system. Use the
+ <command>VBoxManage list usbhost</command> command to obtain
+ information about USB devices on the host system.
+ </para>
+ <para>
+ Use the <option>--capturefile</option> option to specify the
+ absolute path of a file in which to write logging data.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-usbdetach">
+ <title>Make a Host System USB Device Invisible to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> usbdetach</command> command
+ dynamically detaches a host USB device from the VM, which makes
+ it invisible. You do not need to create a filter.
+ </para>
+ <para>
+ Specify a USB device by its UUID or by its address on the host
+ system. Use the <command>VBoxManage list usbhost</command>
+ command to obtain information about USB devices on the host
+ system.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-audioin">
+ <title>Enable or Disable Audio Capture From the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> audioin</command> command
+ specifies whether to enable or disable audio capture from the
+ host system. Valid values are <literal>on</literal>, which
+ enables audio capture and <literal>off</literal>, which disables
+ audio capture. The default value is <literal>off</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-audioout">
+ <title>Enable or Disable Audio Playback From a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> audioout</command> command
+ specifies whether to enable or disable audio playback from the
+ guest VM. Valid values are <literal>on</literal>, which enables
+ audio playback and <literal>off</literal>, which disables audio
+ playback. The default value is <literal>off</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-clipboard">
+ <title>Specify How to Share The Host OS or Guest OS Clipboard</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> clipboard</command> command
+ specifies how to share the guest or host OS's clipboard with the
+ host system or VM. Valid values are <literal>disabled</literal>,
+ <literal>hosttoguest</literal>, <literal>guesttohost</literal>,
+ and <literal>bidirectional</literal>. The default value is
+ <literal>disabled</literal>. See
+ <xref linkend="generalsettings" />.
+ </para>
+ <para>
+ This feature requires that the &product-name; Guest Additions
+ are installed in the VM.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-draganddrop">
+ <title>Set the Drag and Drop Mode Between the Host System and a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> draganddrop</command> command
+ specifies the current drag and drop mode to use between the host
+ system and the VM. Valid values are <literal>disabled</literal>,
+ <literal>hosttoguest</literal>, <literal>guesttohost</literal>,
+ and <literal>bidirectional</literal>. The default value is
+ <literal>disabled</literal>. See
+ <xref linkend="guestadd-dnd" />.
+ </para>
+ <para>
+ This feature requires that the &product-name; Guest Additions
+ are installed in the VM.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-vrde">
+ <title>Enable or Disable the VRDE Server</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> vrde</command> command enables
+ or disables the VirtualBox Remote Desktop Extension (VRDE)
+ server, if installed. Valid values are <literal>on</literal> and
+ <literal>off</literal>. The default value is
+ <literal>off</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-vrdeport">
+ <title>Specify VRDE Server Ports</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> vrdeport</command> command
+ specifies the port or range of ports to which the VRDE server
+ can bind. The default value is <literal>default</literal> or
+ <literal>0</literal>, which is the standard RDP port,
+ <literal>3389</literal>.
+ </para>
+ <para>
+ Also see the <option>--vrdeport</option> option description in
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-vrdeproperty">
+ <title>Specify VRDE Server Port Numbers and IP Addresses</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> vrdeproperty</command> command
+ specifies the port numbers and IP address on the VM to which the
+ VRDE server can bind.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <literal>TCP/Ports</literal> specifies a port or a range of
+ ports to which the VRDE server can bind. The default value
+ is <literal>default</literal> or <literal>0</literal>, which
+ is the standard RDP port, <literal>3389</literal>.
+ </para><para>
+ Also see the <option>--vrdeport</option> option description
+ in <xref linkend="vboxmanage-modifyvm" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>TCP/Address</literal> specifies the IP address of
+ the host network interface to which the VRDE server binds.
+ When specified, the server accepts to connect only on the
+ specified host network interface.
+ </para><para>
+ Also see the <option>--vrdeaddress</option> option
+ description in <xref linkend="vboxmanage-modifyvm" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>VideoChannel/Enabled</literal> specifies whether to
+ enable the VirtualBox Remote Desktop Protocol (VRDP) video
+ channel. Valid values are <literal>1</literal> to enable the
+ video channel and <literal>0</literal> to disable the video
+ channel. The default value is <literal>off</literal>. See
+ <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>VideoChannel/Quality</literal> specifies the JPEG
+ compression level on the VRDE server video channel. Valid
+ values are between 10% and 100%, inclusive. Lower values
+ mean lower quality but higher compression. The default value
+ is <literal>100</literal>. See
+ <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>VideoChannel/DownscaleProtection</literal>
+ specifies whether to enable the video channel downscale
+ protection feature. Specify <literal>1</literal> to enable
+ the feature. This feature is disabled by default.
+ </para><para>
+ When enabled, if the video's size equals the shadow buffer
+ size, the video is shown in full-screen mode. If the video's
+ size is between full-screen mode and the downscale
+ threshold, the video is not shown as it might be an
+ application window that is unreadable when downscaled. When
+ disabled, the downscale protection feature always attempts
+ to show videos.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableDisplay</literal> specifies whether
+ to disable the VRDE server display feature. Valid values are
+ <literal>1</literal> to disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ The default value is null. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableInput</literal> specifies whether to
+ disable the VRDE server input feature. Valid values are
+ <literal>1</literal> to disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ The default value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableAudio</literal> specifies whether to
+ disable the VRDE server audio feature. Valid values are
+ <literal>1</literal> to disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ The default value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableUSB</literal> specifies whether to
+ disable the VRDE server USB feature. Valid values are
+ <literal>1</literal> to disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ The default value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableClipboard</literal> specifies whether
+ to disable the VRDE clipboard feature. Valid values are
+ <literal>1</literal> to disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ To reenable the feature, use
+ <literal>Client/DisableClipboard=</literal>. The default
+ value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableUpstreamAudio</literal> specifies
+ whether to disable the VRDE upstream audio feature. Valid
+ values are <literal>1</literal> to disable the feature and
+ null (<literal>&ldquo;&rdquo;</literal>) to enable the
+ feature. To reenable the feature, use
+ <literal>Client/DisableUpstreamAudio=</literal>. The default
+ value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Client/DisableRDPDR</literal> specifies whether to
+ disable the RDP Device Redirection For Smart Cards feature
+ on the VRDE server. Valid values are <literal>1</literal> to
+ disable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to enable the feature.
+ The default value is <literal>1</literal>. See
+ <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>H3DRedirect/Enabled</literal> specifies whether to
+ enable the VRDE server 3D redirection feature. Valid values
+ are <literal>1</literal> to enable the feature and null
+ (<literal>&ldquo;&rdquo;</literal>) to disable the feature.
+ See <xref linkend="vrde-customization"/>.
+ </para></listitem>
+ <listitem><para>
+ <literal>Security/Method</literal> specifies the security
+ method to use for a connection. See
+ <xref linkend="vrde-crypt" />.
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Negotiate</literal> accepts both enhanced (TLS)
+ and standard RDP security connections. The security
+ method is negotiated with the client. This is the
+ default value.
+ </para></listitem>
+ <listitem><para>
+ <literal>RDP</literal> accepts only standard RDP
+ security connections.
+ </para></listitem>
+ <listitem><para>
+ <literal>TLS</literal> accepts only enhanced RDP
+ security connections. The client must support TLS.
+ </para></listitem>
+ </itemizedlist></listitem>
+ <listitem><para>
+ <literal>Security/ServerCertificate</literal> specifies the
+ absolute path of the server certificate to use for a
+ connection. See <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>Security/ServerPrivateKey</literal> specifies the
+ absolute path of the server private key. See
+ <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>Security/CACertificate</literal> specifies the
+ absolute path of the CA self-signed certificate. See
+ <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>Audio/RateCorrectionMode</literal> specifies the
+ rate correction mode to use.
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_VOID</literal> indicates that
+ no mode is specified. Use this value to unset any audio
+ mode that is already set.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_RC</literal> specifies to use
+ the rate correction mode.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_LPF</literal> specifies to use
+ the low pass filter mode.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_CS</literal> specifies to use
+ the client sync mode to prevent underflow or overflow of
+ the client queue.
+ </para></listitem>
+ </itemizedlist></listitem>
+ <listitem><para>
+ <literal>Audio/LogPath</literal> specifies the absolute path
+ of the audio log file.
+ </para></listitem>
+ </itemizedlist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-vrdevideochannelquality">
+ <title>Specify the Image Quality for VRDP Video Redirection</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ vrdevideochannelquality</command> command sets the image
+ quality, as a JPEG compression level value, for video
+ redirection. Valid values are between 10% and 100%, inclusive.
+ Lower values mean lower quality but higher compression. See
+ <xref linkend="vrde-videochannel" />.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-setvideomodehint">
+ <title>Specify the Video Mode for the Guest VM</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> setvideomodehint</command>
+ command specifies the video mode for the guest VM to use. You
+ must have the &product-name; Guest Additions installed. Note
+ that this feature does not work for all guest systems.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-setscreenlayout">
+ <title>Specify the Screen Layout for a Display on the Guest VM</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> setscreenlayout</command>
+ command can be used to configure multiscreen displays. The
+ specified screen on the guest VM can be enabled or disabled, or
+ a custom screen layout can be configured.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-screenshotpng">
+ <title>Take a Screen Shot of the Virtual Machine Display</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> screenshotpng</command>
+ command takes a screenshot of the guest display and saves it as
+ PNG in the specified file.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <replaceable>filename</replaceable> specifies the name of
+ the PNG file to create.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>display</replaceable> specifies the display
+ number for the screen shot. For a single monitor guest
+ display, this is <literal>0</literal>.
+ </para></listitem>
+ </itemizedlist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recording">
+ <title>Enable or Disable the Recording of a Virtual Machine Session</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording</command> command
+ enables or disables the recording of a VM session into a
+ WebM/VP8 file. Valid values are <literal>on</literal>, which
+ begins recording when the VM session starts and
+ <literal>off</literal>, which disables recording. The default
+ value is <literal>off</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingscreens">
+ <title>Specify the Virtual Machine Screens to Record</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording screens</command>
+ command enables you to specify which VM screens to record. The
+ recording for each screen that you specify is saved to its own
+ file in the machine folder. You cannot modify this setting while
+ recording is enabled.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <literal>all</literal> specifies that you record all VM
+ screens.
+ </para></listitem>
+ <listitem><para>
+ <literal>none</literal> specifies that you do not record any
+ VM screens.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>screen-ID</replaceable> specifies one or more
+ VM screens to record.
+ </para></listitem>
+ </itemizedlist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingfilename">
+ <title>Specify the File in Which to Save Virtual Machine Recording</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording filename</command>
+ command specifies the file in which to save the recording. You
+ cannot modify this setting while recording is enabled.
+ </para>
+ <para>
+ The default setting is to store a recording in the machine
+ folder, using the VM name as the file name, with a
+ <filename>webm</filename> file name extension.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingvideores">
+ <title>Specify the Resolution of the Recorded Video</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ <command>VBoxManage controlvm <replaceable>vmname</replaceable>
+ recording videores</command> command specifies the resolution of
+ the recorded video in pixels. You cannot modify this setting
+ while recording is enabled.
+ </para>
+ <para>
+ Use the Settings tool to view the video recording settings,
+ which are based on the resolution (frame size). See the Frame
+ Size field on the Recording tab of the Display page to view the
+ default value.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <para>
+ Specify the resolution as
+ <replaceable>width</replaceable><literal>x</literal><replaceable>height</replaceable>:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <replaceable>width</replaceable> specifies the width in
+ pixels.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>height</replaceable> specifies the height in
+ pixels.
+ </para></listitem>
+ </itemizedlist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingvideorate">
+ <title>Specify the Bit Rate of the Video</title>
+ <remark role="help-copy-synopsis"/>
+<!-- @todo r=andy Clarify rate. -->
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording videorate</command>
+ command specifies the bit rate,
+ <replaceable>bit-rate</replaceable>, of the video in kilobits
+ per second. Increasing this value improves the appearance of the
+ video at the cost of an increased file size. You cannot modify
+ this setting while recording is enabled.
+ </para>
+ <para>
+ Use the Settings tool to view the video recording settings,
+ which are based on the frame size. See the Video Quality field
+ on the Recording tab of the Display page to view the default
+ value.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingvideofps">
+ <title>Specify the Maximum Frequency of the Video</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording videofps</command>
+ command specifies the maximum frequency of the video to record.
+ Video frequency is measured in frames per second (FPS). The
+ recording skips any frames that have a frequency higher than the
+ specified maximum. Increasing the frequency reduces the number
+ of skipped frames and increases the file size. You cannot modify
+ this setting while recording is enabled.
+ </para>
+ <para>
+ Use the Settings tool to view the video recording settings,
+ which are based on the frame size. See the Frame Rate field on
+ the Recording tab of the Display page to view the default value.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingmaxtime">
+ <title>Specify the Maximum Amount of Time to Record Video</title>
+ <remark role="help-copy-synopsis"/>
+<!-- @todo r=andy Clarify time format. -->
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording maxtime</command>
+ command specifies the maximum amount time to record in seconds.
+ The recording stops after the specified number of seconds
+ elapses. If this value is zero, the recording continues until
+ you stop the recording.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-recordingmaxfilesize">
+ <title>Specify the Maximum Size of the Recorded Video</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> recording
+ maxfilesize</command> command specifies the maximum size of the
+ recorded video file in megabytes. The recording stops when the
+ file reaches the specified size. If this value is zero, the
+ recording continues until you stop the recording. You cannot
+ modify this setting while recording is enabled.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-setcredentials">
+ <title>Specify Credentials for Remote Logins on Windows Virtual Machines</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>setcredentials</command> command enables you to
+ specify the credentials for remotely logging in to Windows VMs.
+ See <xref linkend="autologon" />.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <replaceable>username</replaceable> specifies the user name
+ with which to log in to the Windows VM.
+ </para></listitem>
+ <listitem><para>
+ <option>--passwordfile=<replaceable>filename</replaceable></option>
+ specifies the file from which to obtain the password for
+ <replaceable>username</replaceable>.
+ </para><para>
+ The <option>--passwordfile</option> is mutually exclusive
+ with the <option>--password</option> option.
+ </para></listitem>
+ <listitem><para>
+ <option>--password=<replaceable>password</replaceable></option>
+ specifies the password for
+ <replaceable>username</replaceable>.
+ </para><remark>
+ This design does not conform to Oracle's security
+ guidelines. You should not be able to specify a password on
+ the command line because the password can be seen in a
+ process listing.
+ </remark><para>
+ The <option>--password</option> is mutually exclusive with
+ the <option>--passwordfile</option> option.
+ </para></listitem>
+ <listitem><para>
+ <option>--allowlocallogin</option> specifies whether to
+ enable or disable local logins. Valid values are
+ <literal>on</literal> to enable local logins and
+ <literal>off</literal> to disable local logins.
+ </para></listitem>
+ </itemizedlist>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-plugcpu">
+ <title>Add a Virtual CPU to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> plugcpu</command> command adds
+ a virtual CPU to the specified VM if CPU hot-plugging is
+ enabled. <replaceable>ID</replaceable> specifies the index of
+ the virtual CPU to be added and must be a number from 0 to the
+ maximum number of CPUs configured.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-unplugcpu">
+ <title>Remove a Virtual CPU From a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> unplugcpu</command> command
+ removes a virtual CPU from the specified VM if CPU hot-plugging
+ is enabled. <replaceable>ID</replaceable> specifies the index of
+ the virtual CPU to be removed and must be a number from 0 to the
+ maximum number of CPUs configured. You cannot remove CPU 0.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-cpuexecutioncap">
+ <title>Set the Maximum Amount of Physical CPU Time Used by a Virtual CPU</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> cpuexecutioncap</command>
+ command specifies how the maximum amount of physical CPU time
+ used by a virtual CPU. Valid values are a percentage between
+ <literal>1</literal> and <literal>100</literal>. A value of
+ <literal>50</literal> specifies that a single virtual CPU can
+ use up to 50% of a physical CPU. The default value is
+ <literal>100</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-vmprocesspriority">
+ <title>Change the Priority of a VM Process</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> vm-process-priority</command>
+ command specifies the priority scheme of the VM process to use
+ when starting the specified VM and while the VM runs.
+ </para>
+ <para>
+ Valid values are <literal>default</literal>,
+ <literal>flat</literal>, <literal>low</literal>,
+ <literal>normal</literal>, and <literal>high</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-webcam-attach">
+ <title>Attach a Webcam to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> webcam attach</command>
+ command attaches a webcam to a running VM. Specify the webcam as
+ the absolute path of the webcam on the host OS or as an alias.
+ Use the <command>VBoxManage list webcams</command> command to
+ obtain the webcam alias.
+ </para>
+ <para>
+ Note that the <literal>.0</literal> alias is the default video
+ input device on the host OS. <literal>.1</literal> is the first
+ video input device, <literal>.2</literal> is the second video
+ input device, and so on. The order of the devices is specific to
+ the host system.
+ </para>
+ <para>
+ You can specify optional settings in the form of
+ semi-colon-separated (<literal>;</literal>) name-value pairs.
+ These properties enable you to configure the emulated webcam
+ device.
+ </para>
+ <para>
+ The following settings are supported:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>MaxFramerate</literal></term>
+ <listitem><para>
+ Specifies the highest rate at which to send video frames
+ to the VM. The rate is in frames per second. Higher frame
+ rates increase CPU load, so you can use this setting to
+ reduce CPU load. The default value is <literal>no maximum
+ limit</literal>. This value enables the VM to use any
+ frame rate supported by the webcam.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>MaxPayloadTransferSize</literal></term>
+ <listitem><para>
+ Specifies the maximum number of bytes that the VM receives
+ from the emulated webcam in one buffer. The default
+ setting is <literal>3060</literal> bytes, which is used by
+ some webcams. If the VM is able to use larger buffers,
+ higher values might reduce CPU load slightly. Note that
+ some guest OSes might not suppport higher
+ <literal>MaxPayloadTransferSize</literal> values.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-webcam-detach">
+ <title>Detach a Webcam From a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> webcam detach</command>
+ command detaches a webcam from a running VM. Specify the webcam
+ as the absolute path of the webcam on the host OS or as an
+ alias. Use the <command>VBoxManage list webcams</command> to
+ obtain the webcam alias.
+ </para>
+ <para>
+ When a webcam device is detached from the host, the host OS
+ determines how the emulated webcam behaves.
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">Windows hosts:</emphasis> The emulated
+ webcam device is detached from the VM automatically.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Mac OS X hosts that run at least OS X
+ 10.7:</emphasis> The emulated webcam device remains attached
+ to the VM and you must detach it manually by using the
+ <command>VBoxManage controlvm webcam detach</command>
+ command.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Linux hosts:</emphasis> The emulated
+ webcam device is detached from the VM automatically only if
+ the webcam is actively streaming video. If the emulated
+ webcam is inactive, manually detach it by using the
+ <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> webcam detach</command>
+ command.
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-webcam-list">
+ <title>List the Webcams Attached to a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> webcam list</command> command
+ lists webcams that are attached to the running VM. The output
+ shows a list of absolute paths or aliases that attached the
+ webcams to the VM by using the <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> webcam attach</command>
+ command.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-addencpassword">
+ <title>Set an Encryption Password for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> addencpassword</command>
+ command provides the <replaceable>vmname</replaceable> encrypted
+ VM with the encryption password to enable a headless start.
+ Specify the absolute path of a password file on the host system.
+ If <replaceable>filename</replaceable> is <literal>-</literal>,
+ <command>VBoxManage</command> prompts for the encryption
+ password.
+ </para>
+ <para>
+ Use the <option>--removeonsuspend</option> option to specify
+ whether to save the passsword or clear it from VM memory when
+ the VM is suspended.
+ </para>
+ <para>
+ If the VM is suspended and the password is cleared, use the
+ <command>VBoxManage controlvm <replaceable>vmname</replaceable>
+ addencpassword</command> to provide the password to resume
+ execution on the VM. Use this feature when you do not want to
+ store the password in VM memory while the VM is suspended by a
+ host suspend event.
+ </para>
+ <note>
+ <para>
+ You can encrypt data stored on hard disk images used by the
+ VM. &product-name; uses the AES algorithm in XTS mode and
+ supports 128-bit or 256-bit data encryption keys (DEK). The
+ encrypted DEK is stored in the medium properties and is
+ decrypted during VM startup when you provide the encryption
+ password.
+ </para>
+ </note>
+ <para>
+ Use the <command>VBoxManage encryptmedium</command> command to
+ create a DEK encrypted medium. See
+ <xref linkend="diskencryption-encryption" />.
+ </para>
+ <para>
+ The &product-name; GUI prompts you for the encryption password
+ when you start an encrypted VM.
+ </para>
+ <para>
+ Use the following command to perform a headless start of an
+ encrypted VM:
+ </para>
+<screen>
+ $ VBoxManage startvm <replaceable>vmname</replaceable> --type headless
+ </screen>
+ <para>
+ Then, use the following command to provide the encryption
+ password:
+ </para>
+<screen>
+ $ VBoxManage <replaceable>vmname</replaceable> controlvm addencpassword <replaceable>vmname</replaceable> -
+ Password: <replaceable>encryption-password</replaceable>
+ </screen>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-removeencpassword">
+ <title>Disable an Encryption Password for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> removeencpassword</command>
+ command disables a specific encryption password for all
+ encrypted media attached to the VM.
+ </para>
+ <para>
+ <replaceable>ID</replaceable> is the password identifier for the
+ encryption password that you want to disable.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-removeallencpasswords">
+ <title>Disable All Encryption Passwords for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable>
+ removeallencpasswords</command> command disables all encryption
+ passwords for all encrypted media attached to the VM.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-controlvm-changeuartmode">
+ <title>Change the Connection Mode for a Virtual Serial Port on a Virtual
+ Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage controlvm
+ <replaceable>vmname</replaceable> changeuartmode</command>
+ command changes the connection mode for the specified virtual
+ serial port. Valid serial port values are integers that start
+ from <literal>1</literal>.
+ </para>
+ <para>
+ This subcommand does not affect the VM's running state directly.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>disconnected</term>
+ <listitem><para>
+ Disconnects the device.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>server <replaceable>pipe-name</replaceable></term>
+ <listitem><para>
+ Specifies the pipe name of the server.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>client <replaceable>pipe-name</replaceable></term>
+ <listitem><para>
+ Specifies the pipe name of the client.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tcpserver <replaceable>port</replaceable></term>
+ <listitem><para>
+ Specifies the port number of the TCP server.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tcpclient <replaceable>hostname</replaceable>:<replaceable>port</replaceable></term>
+ <listitem><para>
+ Specifies the host name and port number of the TCP client.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>file <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the name of the file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>device-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the device.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command temporarily stops the execution of the
+ <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage controlvm ol7 pause</screen>
+ <para>
+ The following command configures shared clipboard operation for
+ the <filename>ol7</filename> VM. Copying of clipboard data is
+ allowed in both directions between the host and guest.
+ </para>
+<screen>$ VBoxManage controlvm ol7 clipboard bidirectional</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-modifyvm" />,
+ <xref linkend="vboxmanage-startvm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-convertfromraw.xml b/doc/manual/en_US/man_VBoxManage-convertfromraw.xml
new file mode 100644
index 00000000..ac94d0cc
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-convertfromraw.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage convertfromraw
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-convertfromraw" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage convertfromraw</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-convertfromraw</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-convertfromraw</refname>
+ <refpurpose>convert a raw disk image to a virtual disk image</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-convertfromraw-file">
+ <command>VBoxManage convertfromraw</command>
+ <arg choice="req"><replaceable>inputfile</replaceable></arg>
+ <arg choice="req"><replaceable>outputfile</replaceable></arg>
+ <arg>--format=<group choice="plain">
+ <arg choice="plain">VDI</arg>
+ <arg choice="plain">VMDK</arg>
+ <arg choice="plain">VHD</arg>
+ </group></arg>
+ <arg>--uuid=<replaceable>uuid</replaceable></arg>
+ <arg>--variant=Standard,Fixed,Split2G,Stream,ESX</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-convertfromraw-stdin">
+ <command>VBoxManage convertfromraw stdin</command>
+ <arg choice="req"><replaceable>outputfile</replaceable></arg>
+ <arg>--format=<group choice="plain">
+ <arg choice="plain">VDI</arg>
+ <arg choice="plain">VMDK</arg>
+ <arg choice="plain">VHD</arg>
+ </group></arg>
+ <arg>--uuid=<replaceable>uuid</replaceable></arg>
+ <arg>--variant=Standard,Fixed,Split2G,Stream,ESX</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage convertfromraw</command> command enables
+ you to convert a raw disk image to an &product-name; virtual disk
+ image (VDI).
+ </para>
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, you
+ can use the <command>VBoxManage convertdd</command> command
+ instead of the <command>VBoxManage convertfromraw</command>
+ command.
+ </para>
+ </note>
+ <refsect2 id="vboxmanage-convertfromraw-file">
+ <title>Convert a Raw Disk File to a Virtual Disk Image File</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage convertfromraw</command> command
+ converts the specified raw disk image input file to an
+ &product-name; VDI file.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>inputfile</replaceable></term>
+ <listitem><para>
+ Specifies the name of the raw disk image file to convert.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>outputfile</replaceable></term>
+ <listitem><para>
+ Specifies the name of the file in which to write the VDI
+ output.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--format=VDI | VMDK | VHD</option></term>
+ <listitem><para>
+ Specifies the format of the disk image to create. Valid
+ values are <literal>VDI</literal>,
+ <literal>VMDK</literal>, and <literal>VHD</literal>. The
+ default format is <literal>VDI</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) of the
+ output file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--variant=Standard,Fixed,Split2G,Stream,ESX</option></term>
+ <listitem><para>
+ Specifies any required file format variants for the output
+ file. This is a comma-separated list of variant values.
+ Following are the valid values:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Standard</literal> is the default disk image
+ type, which has a dynamically allocated file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Fixed</literal> uses a disk image that has a
+ fixed file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Split2G</literal> indicates that the disk
+ image is split into 2GB segments. This value is for
+ VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>Stream</literal> optimizes the disk image for
+ downloading. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>ESX</literal> is used for some VMWare
+ products. This value is for VMDK only.
+ </para></listitem>
+ </itemizedlist><para>
+ Note that not all variant combinations are valid.
+ Specifying incompatible variant values in the list will
+ produce an error message.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-convertfromraw-stdin">
+ <title>Convert Raw Data From Standard Input to a Virtual Disk Image File</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage convertfromraw stdin</command> command
+ reads the content of the disk image from standard input.
+ Consider using this form of the command in a pipe sequence.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>outputfile</replaceable></term>
+ <listitem><para>
+ Specifies the name of the file in which to write the VDI
+ output.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--format=VDI | VMDK | VHD</option></term>
+ <listitem><para>
+ Specifies the format of the disk image to create. Valid
+ values are <literal>VDI</literal>,
+ <literal>VMDK</literal>, and <literal>VHD</literal>. The
+ default format is <literal>VDI</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Specifies the UUID of the output file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--variant=Standard,Fixed,Split2G,Stream,ESX</option></term>
+ <listitem><para>
+ Specifies any required file format variants for the output
+ file. This is a comma-separated list of variant values.
+ Following are the valid values:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Standard</literal> is the default disk image
+ type, which has a dynamically allocated file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Fixed</literal> uses a disk image that has a
+ fixed file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Split2G</literal> indicates that the disk
+ image is split into 2GB segments. This value is for
+ VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>Stream</literal> optimizes the disk image for
+ downloading. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>ESX</literal> is used for some VMWare
+ products. This value is for VMDK only.
+ </para></listitem>
+ </itemizedlist><para>
+ Note that not all variant combinations are valid.
+ Specifying incompatible variant values in the list will
+ produce an error message.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command converts the raw disk image input file
+ <filename>disk01.raw</filename>. The output file is a VDI disk
+ image called <filename>disk02.vdi</filename>.
+ </para>
+<screen>$ VBoxManage convertfromraw disk01.raw disk02.vdi</screen>
+ <para>
+ The following command converts the raw disk image input file
+ <filename>disk01.raw</filename>. The output file is a VMDK disk
+ image called <filename>disk02.vmdk</filename>.
+ </para>
+<screen>$ VBoxManage convertfromraw disk01.raw disk02.vmdk --format VMDK</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-createmedium.xml b/doc/manual/en_US/man_VBoxManage-createmedium.xml
new file mode 100644
index 00000000..1d457061
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-createmedium.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage createmedium
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-createmedium" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage createmedium</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-createmedium</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-createmedium</refname>
+ <refpurpose>create a new medium</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-createmedium">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage createmedium</command>
+ <group>
+ <arg choice="plain"><replaceable>disk</replaceable></arg>
+ <arg choice="plain"><replaceable>dvd</replaceable></arg>
+ <arg choice="plain"><replaceable>floppy</replaceable></arg>
+ </group>
+ <arg choice="req">--filename=<replaceable>filename</replaceable></arg>
+ <group choice="opt">
+ <arg choice="plain">--size=<replaceable>megabytes</replaceable></arg>
+ <arg choice="plain">--sizebyte=<replaceable>bytes</replaceable></arg>
+ </group>
+ <arg>--diffparent=<group choice="plain">
+ <arg choice="plain"><replaceable>UUID</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group></arg>
+ <arg>--format=<group choice="plain">
+ <arg choice="plain"><replaceable>VDI</replaceable></arg>
+ <arg choice="plain"><replaceable>VMDK</replaceable></arg>
+ <arg choice="plain"><replaceable>VHD</replaceable></arg>
+ </group></arg>
+ <arg>--variant Standard,Fixed,Split2G,Stream,ESX,Formatted</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage createmedium</command> command creates a
+ new medium, such as a disk image file.
+ </para>
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, you
+ can use the <command>createvdi</command> and
+ <command>createhd</command> commands instead of the
+ <command>createmedium</command> command.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term>disk | dvd | floppy</term>
+ <listitem><para>
+ Specifies the media type. The default value is
+ <literal>disk</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--filename=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path name to a file on the host file
+ system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--size=<replaceable>megabytes</replaceable></option></term>
+ <listitem><para>
+ Specifies the image capacity in one megabyte units.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--sizebyte=<replaceable>bytes</replaceable></option></term>
+ <listitem><para>
+ Specifies the image capacity in one byte units.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--diffparent=<replaceable>UUID</replaceable> | <replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of a differencing image parent file on
+ the host file system.
+ </para><para>
+ Use this file to share a base box disk image among VMs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--format=VDI | VMDK | VHD</option></term>
+ <listitem><para>
+ Specifies the file format of the output file. Valid formats
+ are <literal>VDI</literal>, <literal>VMDK</literal>, and
+ <literal>VHD</literal>. The default format is
+ <literal>VDI</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--variant=Standard,Fixed,Split2G,Stream,ESX, Formatted</option></term>
+ <listitem><para>
+ Specifies the file format variant for the target medium,
+ which is a comma-separated list of variants. Following are
+ the valid values:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Standard</literal> is the default disk image
+ type, which has a dynamically allocated file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Fixed</literal> uses a disk image that has a
+ fixed file size.
+ </para></listitem>
+ <listitem><para>
+ <literal>Split2G</literal> indicates that the disk image
+ is split into 2GB segments. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>Stream</literal> optimizes the disk image for
+ downloading. This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>ESX</literal> is used for some VMWare products.
+ This value is for VMDK only.
+ </para></listitem>
+ <listitem><para>
+ <literal>Formatted</literal>
+ </para><para>
+ For floppy images only. Formats the medium
+ automatically.
+ </para></listitem>
+ </itemizedlist><para>
+ Note that not all variant combinations are valid. Specifying
+ incompatible variant values in the list will produce an
+ error message.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a new disk image file called
+ <filename>disk01.vdi</filename>. The file size is 1024 megabytes.
+ </para>
+<screen>$ VBoxManage createmedium --filename disk01.vdi --size 1024</screen>
+ <para>
+ The following command creates a new floppy disk image file called
+ <filename>floppy01.vdi</filename>. The file size is 1 megabyte.
+ </para>
+<screen>$ VBoxManage createmedium floppy --filename floppy01.img --size 1</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-createvm.xml b/doc/manual/en_US/man_VBoxManage-createvm.xml
new file mode 100644
index 00000000..bcfbbcd6
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-createvm.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage createvm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-createvm" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage createvm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-createvm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-createvm</refname>
+ <refpurpose>create a new virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-createvm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage createvm</command>
+ <arg choice="req">--name=<replaceable>name</replaceable></arg>
+ <arg>--basefolder=<replaceable>basefolder</replaceable></arg>
+ <arg>--default</arg>
+ <arg>--group=<replaceable>group-ID</replaceable>, ...</arg>
+ <arg>--ostype=<replaceable>ostype</replaceable></arg>
+ <arg>--register</arg>
+ <arg>--uuid=<replaceable>uuid</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage createvm</command> command creates a new
+ XML virtual machine (VM) definition file.
+ </para>
+ <para>
+ You must specify the name of the VM by using <option>--name
+ <replaceable>name</replaceable></option>. This name is used by
+ default as the name of the settings file that has the
+ <filename>.vbox</filename> extension and the machine folder, which
+ is a subfolder of the <filename>$HOME/VirtualBox VMs</filename>
+ directory.
+ </para>
+ <para>
+ Ensure that the VM name conforms to the host OS file name
+ requirements. If you later rename the VM, the file and folder
+ names will be updated to match the new name automatically.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>Command Options</title>
+ <para>
+ In addition to specifying the name or UUID of the VM, which is
+ required, you can specify any of the following options:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--basefolder=<replaceable>basefolder</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the folder in which to save the
+ machine configuration file for the new VM.
+ </para><para>
+ Note that the names of the file and the folder do not change
+ if you rename the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--default</option></term>
+ <listitem><para>
+ Applies a default hardware configuration for the specified
+ guest OS. By default, the VM is created with minimal
+ hardware.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--group=<replaceable>group-ID</replaceable>, ...</option></term>
+ <listitem><para>
+ Assigns the VM to the specified groups. If you specify more
+ than one group, separate each group name with a comma.
+ </para><para>
+ Note that each group is identified by a group ID that starts
+ with a slash character (<literal>/</literal>) so that groups
+ can be nested. By default, a VM is always assigned
+ membership to the <literal>/</literal> group.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ostype=<replaceable>ostype</replaceable></option></term>
+ <listitem><para>
+ Specifies the guest OS to run in the VM. Run the
+ <command>VBoxManage list ostypes</command> command to see
+ the available OS types.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--register</option></term>
+ <listitem><para>
+ Registers the VM with your &product-name; installation. By
+ default, the <command>VBoxManage createvm</command> command
+ creates only the XML configuration for the VM but does not
+ register the VM. If you do not register the VM at creation,
+ you can run the <command>VBoxManage registervm</command>
+ command after you create the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) of the
+ VM. Ensure that this UUID is unique within the
+ &product-name; namespace of the host or of its VM group
+ memberships if you decide to register the VM. By default,
+ &product-name; command provides the UUID.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a VM called <literal>vm2</literal>
+ where you plan to run a 64-bit version of Oracle Linux.
+ </para>
+<screen>$ VBoxManage createvm --name "vm2" --ostype "Oracle_64"</screen>
+ <para>
+ The following command creates and registers a VM called
+ <literal>vm3</literal>.
+ </para>
+<screen>$ VBoxManage createvm --name "vm3" --register</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-registervm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-debugvm.xml b/doc/manual/en_US/man_VBoxManage-debugvm.xml
new file mode 100644
index 00000000..eaa7cbd1
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-debugvm.xml
@@ -0,0 +1,615 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage debugvm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-debugvm" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage debugvm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-debugvm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-debugvm</refname>
+ <refpurpose>introspection and guest debugging</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-dumpvmcore">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">dumpvmcore</arg>
+ <arg>--filename=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-info">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">info</arg>
+ <arg choice="req"><replaceable>item</replaceable></arg>
+ <arg rep="repeat"><replaceable>args</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-injectnmi">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">injectnmi</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-log">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">log</arg>
+ <group><arg>--release</arg><arg>--debug</arg></group>
+ <arg rep="repeat"><replaceable>group-settings</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-logdest">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">logdest</arg>
+ <group><arg>--release</arg><arg>--debug</arg></group>
+ <arg rep="repeat"><replaceable>destinations</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-logflags">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">logflags</arg>
+ <group><arg>--release</arg><arg>--debug</arg></group>
+ <arg rep="repeat"><replaceable>flags</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-osdetect">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">osdetect</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-osinfo">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">osinfo</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-osdmesg">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">osdmesg</arg>
+ <arg>--lines=<replaceable>lines</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-getregisters">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">getregisters</arg>
+ <arg>--cpu=<replaceable>id</replaceable></arg>
+ <arg rep="repeat"><replaceable>reg-set.reg-name</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-setregisters">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">setregisters</arg>
+ <arg>--cpu=<replaceable>id</replaceable></arg>
+ <arg rep="repeat"><replaceable>reg-set.reg-name=value</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-show">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">show</arg>
+ <group><arg>--human-readable</arg><arg>--sh-export</arg><arg>--sh-eval</arg><arg>--cmd-set</arg></group>
+ <arg rep="repeat"><replaceable>settings-item</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-stack">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">stack</arg>
+ <arg>--cpu=<replaceable>id</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-debugvm-statistics">
+ <command>VBoxManage debugvm</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="plain">statistics</arg>
+ <arg>--reset</arg>
+ <arg>--descriptions</arg>
+ <arg>--pattern=<replaceable>pattern</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>Description</title>
+
+ <para>The "debugvm" commands are for experts who want to tinker with the
+ exact details of virtual machine execution. Like the VM debugger
+ described in <xref linkend="ts_debugger" />, these commands are only useful if you are
+ very familiar with the details of the PC architecture and how to debug
+ software.</para>
+
+ <refsect2 id="vboxmanage-debugvm-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>debugvm</command> all operate on a running virtual
+ machine:</para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid|vmname</replaceable></term>
+ <listitem><para>Either the UUID or the name (case sensitive) of a VM.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-dumpvmcore">
+ <title>debugvm dumpvmcore</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Creates a system dump file of the specified VM. This file will have
+ the standard ELF core format (with custom sections); see
+ <xref linkend="ts_guest-core-format" />.
+ </para>
+ <para>
+ This corresponds to the <command>writecore</command> command in the debugger.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--filename=<replaceable>filename</replaceable></option></term>
+ <listitem><para>The name of the output file.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-info">
+ <title>debugvm info</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays info items relating to the VMM, device emulations and
+ associated drivers.
+ </para>
+ <para>
+ This corresponds to the <command>info</command> command in the debugger.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>info</replaceable></term>
+ <listitem>
+ <para>Name of the info item to display. The special name
+ <option>help</option> will list all the available info items and
+ hints about optional arguments.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>args</replaceable></term>
+ <listitem>
+ <para>Optional argument string for the info item handler. Most info items
+ does not take any extra arguments. Arguments not recognized are generally
+ ignored.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-injectnmi">
+ <title>debugvm injectnmi</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Causes a non-maskable interrupt (NMI) to be injected into the guest. This
+ might be useful for certain debugging scenarios. What happens exactly is
+ dependent on the guest operating system, but an NMI can crash the whole
+ guest operating system. Do not use unless you know what you're doing.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-log">
+ <title>debugvm log</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Changes the group settings for either debug (<option>--debug</option>)
+ or release (<option>--release</option>) logger of the VM process.
+ </para>
+ <para>
+ The <replaceable>group-settings</replaceable> are typically strings on the form
+ <computeroutput>em.e.f.l</computeroutput>, <computeroutput>hm=~0</computeroutput>
+ and <computeroutput>-em.f</computeroutput>. Basic wildcards are supported for
+ group matching. The <computeroutput>all</computeroutput> group is an alias for
+ all the groups.
+ </para>
+ <para>
+ Please do keep in mind that the group settings are applied as modifications
+ to the current ones.
+ </para>
+ <para>
+ This corresponds to the <command>log</command> command in the debugger.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-logdest">
+ <title>debugvm logdest</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Changes the destination settings for either debug (<option>--debug</option>)
+ or release (<option>--release</option>) logger of the VM process. For details
+ on the destination format, the best source is src/VBox/Runtime/common/log/log.cpp.
+ </para>
+ <para>
+ The <replaceable>destinations</replaceable> is one or more mnemonics, optionally
+ prefixed by "no" to disable them. Some of them take values after a ":" or "="
+ separator. Multiple mnemonics can be separated by space or given as separate
+ arguments on the command line.
+ </para>
+ <para>
+ List of available destination:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>file[=<replaceable>file</replaceable>], nofile</option></term>
+ <listitem><para>Specifies a log file. It no filname is given, one will be
+ generated based on the current UTC time and VM process name and placed in
+ the current directory of the VM process. Note that this will currently not
+ have any effect if the log file has already been opened.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>dir=<replaceable>directory</replaceable>, nodir</option></term>
+ <listitem><para>Specifies the output directory for log files. Note that this
+ will currently not have any effect if the log file has already been opened.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>history=<replaceable>count</replaceable>, nohistory</option></term>
+ <listitem><para>A non-zero value enables log historization, with the value
+ specifying how many old log files to keep.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>histsize=<replaceable>bytes</replaceable></option></term>
+ <listitem><para>The max size of a log file before it is historized. Default is infinite.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>histtime=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>The max age (in seconds) of a log file before it is historized. Default is infinite.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>ringbuffer, noringbuffer</option></term>
+ <listitem><para>Only log to the log buffer until an explicit flush (e.g. via an assertion)
+ occurs. This is fast and saves diskspace.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>stdout, nostdout</option></term>
+ <listitem><para>Write the log content to standard output.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>stdout, nostdout</option></term>
+ <listitem><para>Write the log content to standard error.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>debugger, nodebugger</option></term>
+ <listitem><para>Write the log content to the debugger, if supported by the host OS.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>com, nocom</option></term>
+ <listitem><para>Writes logging to the COM port. This is only applicable for raw-mode and ring-0 logging.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>user, nouser</option></term>
+ <listitem><para>Custom destination which has no meaning to VM processes..</para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ This corresponds to the <command>logdest</command> command in the debugger.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-logflags">
+ <title>debugvm logflags</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Changes the flags on either debug (<option>--debug</option>) or release
+ (<option>--release</option>) logger of the VM process. Please note that the
+ modifications are applied onto the existing changes, they are not replacing them.
+ </para>
+ <para>
+ The <replaceable>flags</replaceable> are a list of flag mnemonics, optionally
+ prefixed by a "no", "!", "~" or "-" to negate their meaning. The "+" prefix
+ can be used to undo previous negation or use as a separator, though better use
+ whitespace or separate arguments for that.
+ </para>
+ <para>
+ List of log flag mnemonics, with their counter form where applicable
+ (asterisk indicates defaults):
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>enabled*, disabled</option></term>
+ <listitem><para>Enables or disables logging.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>buffered, unbuffered*</option></term>
+ <listitem><para>Enabling buffering of log output before it hits the destinations.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>writethrough(/writethru)</option></term>
+ <listitem><para>Whether to open the destination file with writethru buffering settings or not.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>flush</option></term>
+ <listitem><para>Enables flushing of the output file (to disk) after each log statement.</para></listitem>
+ </varlistentry>
+ <!-- Prefixes -->
+ <varlistentry>
+ <term><option>lockcnts</option></term>
+ <listitem><para>Prefix each log line with lock counts for the current thread.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>cpuid</option></term>
+ <listitem><para>Prefix each log line with the ID of the current CPU.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>pid</option></term>
+ <listitem><para>Prefix each log line with the current process ID.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>flagno</option></term>
+ <listitem><para>Prefix each log line with the numberic flags corresponding to the log statement.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>flag</option></term>
+ <listitem><para>Prefix each log line with the flag mnemonics corresponding to the log statement.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>groupno</option></term>
+ <listitem><para>Prefix each log line with the log group number for the log statement producing it.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>group</option></term>
+ <listitem><para>Prefix each log line with the log group name for the log statement producing it.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>tid</option></term>
+ <listitem><para>Prefix each log line with the current thread identifier.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>thread</option></term>
+ <listitem><para>Prefix each log line with the current thread name.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>time</option></term>
+ <listitem><para>Prefix each log line with the current UTC wall time.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>timeprog</option></term>
+ <listitem><para>Prefix each log line with the current monotonic time since the start of the program.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>msprog</option></term>
+ <listitem><para>Prefix each log line with the current monotonic timestamp value in milliseconds since the start of the program.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>ts</option></term>
+ <listitem><para>Prefix each log line with the current monotonic timestamp value in nanoseconds.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>tsc</option></term>
+ <listitem><para>Prefix each log line with the current CPU timestamp counter (TSC) value.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>rel, abs*</option></term>
+ <listitem><para>Selects the whether <computeroutput>ts</computeroutput> and
+ <computeroutput>tsc</computeroutput> prefixes should be displayed as relative to the
+ previous log line or as absolute time.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>hex*, dec</option></term>
+ <listitem><para>Selects the whether the <computeroutput>ts</computeroutput> and
+ <computeroutput>tsc</computeroutput> prefixes should be formatted as hexadecimal
+ or decimal.</para></listitem>
+ </varlistentry>
+
+ <!-- Suffixes and weird stuff. -->
+ <varlistentry>
+ <term><option>custom</option></term>
+ <listitem><para>Custom log prefix, has by default no meaning for VM processes.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>usecrlf, uself*</option></term>
+ <listitem><para>Output with DOS style (CRLF) or just UNIX style (LF) line endings.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>overwrite*, append</option></term>
+ <listitem><para>Overwrite the destination file or append to it.</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ This corresponds to the <command>logflags</command> command in the debugger.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-osdetect">
+ <title>debugvm osdetect</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Make the VMM's debugger facility (re)-detect the guest operating system (OS).
+ This will first load all debugger plug-ins.
+ </para>
+ <para>
+ This corresponds to the <command>detect</command> command in the debugger.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-osinfo">
+ <title>debugvm osinfo</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays information about the guest operating system (OS) previously
+ detected by the VMM's debugger facility.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-osdmesg">
+ <title>debugvm osdmesg</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays the guest OS kernel log, if detected and supported.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--lines=<replaceable>lines</replaceable></option></term>
+ <listitem><para>Number of lines of the log to display, counting from
+ the end. The default is infinite.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-getregisters">
+ <title>debugvm getregisters</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Retrieves register values for guest CPUs and emulated devices.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>reg-set.reg-name</replaceable></term>
+ <listitem>
+ <para>One of more registers, each having one of the following forms:</para>
+ <orderedlist>
+ <listitem><para>register-set.register-name.sub-field</para></listitem>
+ <listitem><para>register-set.register-name</para></listitem>
+ <listitem><para>cpu-register-name.sub-field</para></listitem>
+ <listitem><para>cpu-register-name</para></listitem>
+ <listitem><para>all</para></listitem>
+ </orderedlist>
+ <para>The <replaceable>all</replaceable> form will cause all registers
+ to be shown (no sub-fields). The registers names are case-insensitive.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpu=<replaceable>id</replaceable></option></term>
+ <listitem><para>Selects the CPU register set when specifying just a
+ CPU register (3rd and 4th form). The default is 0.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-setregisters">
+ <title>debugvm setregisters</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Changes register values for guest CPUs and emulated devices.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>reg-set.reg-name=value</replaceable></term>
+ <listitem>
+ <para>One of more register assignment, each having one of the following forms:</para>
+ <orderedlist>
+ <listitem><para>register-set.register-name.sub-field=value</para></listitem>
+ <listitem><para>register-set.register-name=value</para></listitem>
+ <listitem><para>cpu-register-name.sub-field=value</para></listitem>
+ <listitem><para>cpu-register-name=value</para></listitem>
+ </orderedlist>
+ <para>The value format should be in the same style as what
+ <command>getregisters</command> displays, with the exception that
+ both octal and decimal can be used instead of hexadecimal.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpu=<replaceable>id</replaceable></option></term>
+ <listitem><para>Selects the CPU register set when specifying just a
+ CPU register (3rd and 4th form). The default is 0.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-show">
+ <title>debugvm show</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Shows logging settings for the VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--human-readable</option></term>
+ <listitem><para>Selects human readable output.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--sh-export</option></term>
+ <listitem><para>Selects output format as bourne shell style <command>export</command> commands.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--sh-eval</option></term>
+ <listitem><para>Selects output format as bourne shell style <command>eval</command> command input.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cmd-set</option></term>
+ <listitem><para>Selects output format as DOS style <command>SET</command> commands.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>settings-item</replaceable></term>
+ <listitem>
+ <para>What to display. One or more of the following:</para>
+ <itemizedlist>
+ <listitem><para>logdbg-settings - debug log settings.</para></listitem>
+ <listitem><para>logrel-settings - release log settings.</para></listitem>
+ <listitem><para>log-settings - alias for both debug and release log settings.</para></listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-stack">
+ <title>debugvm stack</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Unwinds the guest CPU stacks to the best of our ability. It is
+ recommended to first run the <command>osdetect</command> command, as this
+ gives both symbols and perhaps unwind information.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--cpu=<replaceable>id</replaceable></option></term>
+ <listitem><para>Selects a single guest CPU to display the stack for. The default is all CPUs.</para> </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect2>
+
+ <refsect2 id="vboxmanage-debugvm-statistics">
+ <title>debugvm statistics</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Displays or resets VMM statistics.
+ </para>
+ <para>
+ Retrieves register values for guest CPUs and emulated devices.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--pattern=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>DOS/NT-style wildcards patterns for selecting statistics. Multiple
+ patterns can be specified by using the '|' (pipe) character as separator.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--reset</option></term>
+ <listitem><para>Select reset instead of display mode.</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect2>
+
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml b/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml
new file mode 100644
index 00000000..73f32a0e
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Manually generated from src/VBox/Main/idl/VirtualBox.xidl by 'kmk dhcpoptions'.
+ DO NOT EDIT!
+
+
+ Copyright (C) 2019-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+ <variablelist>
+ <varlistentry>
+ <term>1 - SubnetMask</term>
+ <listitem><para>IPv4 netmask. Set to the value of the --netmask option by default.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>2 - TimeOffset</term>
+ <listitem><para>UTC offset in seconds (32-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>3 - Routers</term>
+ <listitem><para>Space separated list of IPv4 router addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>4 - TimeServers</term>
+ <listitem><para>Space separated list of IPv4 time server (RFC 868) addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>5 - NameServers</term>
+ <listitem><para>Space separated list of IPv4 name server (IEN 116) addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>6 - DomainNameServers</term>
+ <listitem><para>Space separated list of IPv4 DNS addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>7 - LogServers</term>
+ <listitem><para>Space separated list of IPv4 log server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>8 - CookieServers</term>
+ <listitem><para>Space separated list of IPv4 cookie server (RFC 865) addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>9 - LPRServers</term>
+ <listitem><para>Space separated list of IPv4 line printer server (RFC 1179) addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>10 - ImpressServers</term>
+ <listitem><para>Space separated list of IPv4 imagen impress server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>11 - ResourseLocationServers</term>
+ <listitem><para>Space separated list of IPv4 resource location (RFC 887) addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>12 - HostName</term>
+ <listitem><para>The client name. See RFC 1035 for character limits. </para></listitem>
+ </varlistentry> <varlistentry>
+ <term>13 - BootFileSize</term>
+ <listitem><para>Number of 512 byte blocks making up the boot file (16-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>14 - MeritDumpFile</term>
+ <listitem><para>Client core file.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>15 - DomainName</term>
+ <listitem><para>Domain name for the client.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>16 - SwapServer</term>
+ <listitem><para>IPv4 address of the swap server that the client should use.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>17 - RootPath</term>
+ <listitem><para>The path to the root disk the client should use.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>18 - ExtensionPath</term>
+ <listitem><para>Path to a file containing additional DHCP options (RFC2123).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>19 - IPForwarding</term>
+ <listitem><para>Whether IP forwarding should be enabled by the client (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>20 - OptNonLocalSourceRouting</term>
+ <listitem><para>Whether non-local datagrams should be forwarded by the client (boolean)</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>21 - PolicyFilter</term>
+ <listitem><para>List of IPv4 addresses and masks paris controlling non-local source routing.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>22 - MaxDgramReassemblySize</term>
+ <listitem><para>The maximum datagram size the client should reassemble (16-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>23 - DefaultIPTTL</term>
+ <listitem><para>The default time-to-leave on outgoing (IP) datagrams (8-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>24 - PathMTUAgingTimeout</term>
+ <listitem><para>RFC1191 path MTU discovery timeout value in seconds (32-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>25 - PathMTUPlateauTable</term>
+ <listitem><para>RFC1191 path MTU discovery size table, sorted in ascending order (list of 16-bit decimal values).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>26 - InterfaceMTU</term>
+ <listitem><para>The MTU size for the interface (16-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>27 - AllSubnetsAreLocal</term>
+ <listitem><para>Indicates whether the MTU size is the same for all subnets (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>28 - BroadcastAddress</term>
+ <listitem><para>Broadcast address (RFC1122) for the client to use (IPv4 address).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>29 - PerformMaskDiscovery</term>
+ <listitem><para>Whether to perform subnet mask discovery via ICMP (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>30 - MaskSupplier</term>
+ <listitem><para>Whether to respond to subnet mask requests via ICMP (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>31 - PerformRouterDiscovery</term>
+ <listitem><para>Whether to perform router discovery (RFC1256) (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>32 - RouterSolicitationAddress</term>
+ <listitem><para>Where to send router solicitation requests (RFC1256) (IPv4 address).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>33 - StaticRoute</term>
+ <listitem><para>List of network and router address pairs addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>34 - TrailerEncapsulation</term>
+ <listitem><para>Whether to negotiate the use of trailers for ARP (RTF893) (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>35 - ARPCacheTimeout</term>
+ <listitem><para>The timeout in seconds for ARP cache entries (32-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>36 - EthernetEncapsulation</term>
+ <listitem><para>Whether to use IEEE 802.3 (RTF1042) rather than of v2 (RFC894) ethernet encapsulation (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>37 - TCPDefaultTTL</term>
+ <listitem><para>Default time-to-live for TCP sends (non-zero 8-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>38 - TCPKeepaliveInterval</term>
+ <listitem><para>The interface in seconds between TCP keepalive messages (32-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>39 - TCPKeepaliveGarbage</term>
+ <listitem><para>Whether to include a byte of garbage in TCP keepalive messages for backward compatibility (boolean).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>40 - NISDomain</term>
+ <listitem><para>The NIS (Sun Network Information Services) domain name (string).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>41 - NISServers</term>
+ <listitem><para>Space separated list of IPv4 NIS server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>42 - NTPServers</term>
+ <listitem><para>Space separated list of IPv4 NTP (RFC1035) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>43 - VendorSpecificInfo</term>
+ <listitem><para>Vendor specific information. Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>44 - NetBIOSNameServers</term>
+ <listitem><para>Space separated list of IPv4 NetBIOS name server (NBNS) addresses (RFC1001,RFC1002).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>45 - NetBIOSDatagramServers</term>
+ <listitem><para>Space separated list of IPv4 NetBIOS datagram distribution server (NBDD) addresses (RFC1001,RFC1002).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>46 - NetBIOSNodeType</term>
+ <listitem><para>NetBIOS node type (RFC1001,RFC1002): 1=B-node, 2=P-node, 4=M-node, and 8=H-node (8-bit decimal value).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>47 - NetBIOSScope</term>
+ <listitem><para>NetBIOS scope (RFC1001,RFC1002). Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>48 - XWindowsFontServers</term>
+ <listitem><para>Space separated list of IPv4 X windows font server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>49 - XWindowsDisplayManager</term>
+ <listitem><para>Space separated list of IPv4 X windows display manager addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>62 - NetWareIPDomainName</term>
+ <listitem><para>Netware IP domain name (RFC2242) (string).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>63 - NetWareIPInformation</term>
+ <listitem><para>Netware IP information (RFC2242). Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>64 - NISPlusDomain</term>
+ <listitem><para>The NIS+ domain name (string).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>65 - NISPlusServers</term>
+ <listitem><para>Space separated list of IPv4 NIS+ server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>66 - TFTPServerName</term>
+ <listitem><para>TFTP server name (string).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>67 - BootfileName</term>
+ <listitem><para>Bootfile name (string).</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>68 - MobileIPHomeAgents</term>
+ <listitem><para>Space separated list of IPv4 mobile IP agent addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>69 - SMTPServers</term>
+ <listitem><para>Space separated list of IPv4 simple mail transport protocol (SMPT) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>70 - POP3Servers</term>
+ <listitem><para>Space separated list of IPv4 post office protocol 3 (POP3) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>71 - NNTPServers</term>
+ <listitem><para>Space separated list of IPv4 network news transport protocol (NTTP) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>72 - WWWServers</term>
+ <listitem><para>Space separated list of default IPv4 world wide web (WWW) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>73 - FingerServers</term>
+ <listitem><para>Space separated list of default IPv4 finger server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>74 - IRCServers</term>
+ <listitem><para>Space separated list of default IPv4 internet relay chat (IRC) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>75 - StreetTalkServers</term>
+ <listitem><para>Space separated list of IPv4 StreetTalk server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>76 - STDAServers</term>
+ <listitem><para>Space separated list of IPv4 StreetTalk directory assistance (STDA) server addresses.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>78 - SLPDirectoryAgent</term>
+ <listitem><para>Addresses of one or more service location protocol (SLP) directory agent, and an indicator of whether their use is mandatory. Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>79 - SLPServiceScope</term>
+ <listitem><para>List of service scopes for the service location protocol (SLP) and whether using the list is mandator. Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry> <varlistentry>
+ <term>119 - DomainSearch</term>
+ <listitem><para>Domain search list, see RFC3397 and section 4.1.4 in RFC1035 for encoding. Only accessible using --set-opt-hex.</para></listitem>
+ </varlistentry>
+ </variablelist>
diff --git a/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl b/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl
new file mode 100644
index 00000000..ac5bd090
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-dhcpserver-dhcpoptions.xsl
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<!--
+ Stylesheet that extracts the DHCP option descriptions from
+ VirtualBox.xidl for cut & paste into man_VBoxManage-dhcpserver.xml.
+
+
+ Copyright (C) 2019-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+
+ <xsl:output method="text" version="1.0" encoding="utf-8" indent="yes"/>
+ <xsl:strip-space elements="*"/>
+
+
+<!-- Default operation is to supress output -->
+<xsl:template match="node()|@*">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!--
+The work.
+-->
+<xsl:template mode="emit" match="link[@to='IDHCPServer::networkMask']">
+ <xsl:text>the value of the --netmask option</xsl:text>
+</xsl:template>
+
+<xsl:template mode="emit" match="link[@to='DHCPOptionEncoding::Hex']">
+ <xsl:text>--set-opt-hex</xsl:text>
+</xsl:template>
+
+<xsl:template match="desc" mode="emit">
+ <xsl:apply-templates mode="emit"/>
+</xsl:template>
+
+<xsl:template match="/idl/library/application/enum[@name='DHCPOption']/const">
+ <!-- <xsl:message><xsl:text>debug: </xsl:text><xsl:call-template name="get-node-path"/></xsl:message> -->
+ <xsl:text> &lt;varlistentry&gt;
+ &lt;term&gt;</xsl:text><xsl:value-of select="concat(@value,' - ',@name)"/><xsl:text>&lt;/term&gt;
+ &lt;listitem&gt;&lt;para&gt;</xsl:text>
+ <xsl:apply-templates mode="emit"/>
+ <xsl:text>&lt;/para&gt;&lt;/listitem&gt;
+ &lt;/varlistentry&gt;</xsl:text>
+</xsl:template>
+
+<xsl:template match="/">
+ <xsl:text>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!--
+ Manually generated from src/VBox/Main/idl/VirtualBox.xidl by 'kmk dhcpoptions'.
+ DO NOT EDIT!
+
+
+ Copyright (C) 2019-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+--&gt;
+
+ &lt;variablelist&gt;
+</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>
+ &lt;/variablelist&gt;
+</xsl:text>
+</xsl:template>
+
+
+<!--
+ Debug/Diagnostics: Return the path to the specified node (by default the current).
+ -->
+<xsl:template name="get-node-path">
+ <xsl:param name="Node" select="."/>
+ <xsl:for-each select="$Node">
+ <xsl:for-each select="ancestor-or-self::node()">
+ <xsl:choose>
+ <xsl:when test="name(.) = ''">
+ <xsl:text>text()</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('/', name(.))"/>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:text>[@id=</xsl:text>
+ <xsl:value-of select="@id"/>
+ <xsl:text>]</xsl:text>
+ </xsl:when>
+ <xsl:when test="position() > 1">
+ <xsl:text>[</xsl:text><xsl:value-of select="position()"/><xsl:text>]</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/en_US/man_VBoxManage-dhcpserver.xml b/doc/manual/en_US/man_VBoxManage-dhcpserver.xml
new file mode 100644
index 00000000..3d502a64
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-dhcpserver.xml
@@ -0,0 +1,564 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage dhcpserver
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-dhcpserver" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage dhcpserver</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-dhcpserver</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-dhcpserver</refname>
+ <refpurpose>DHCP server management</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-dhcpserver-add">
+ <command>VBoxManage dhcpserver add</command>
+ <group choice="req">
+ <arg choice="plain">--network=<replaceable>netname</replaceable></arg>
+ <arg choice="plain">--interface=<replaceable>ifname</replaceable></arg>
+ </group>
+ <arg choice="req">--server-ip=<replaceable>address</replaceable></arg>
+ <arg choice="req">--netmask=<replaceable>mask</replaceable></arg>
+ <arg choice="req">--lower-ip=<replaceable>address</replaceable></arg>
+ <arg choice="req">--upper-ip=<replaceable>address</replaceable></arg>
+ <group choice="req">
+ <arg choice="plain">--enable</arg>
+ <arg choice="plain">--disable</arg>
+ </group>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="opt">--global</arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--group=<replaceable>name</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-mac=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-mac=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-mac-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-mac-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-vendor=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-vendor=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-vendor-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-vendor-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-user=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-user=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-user-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-user-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--vm=<replaceable>name|uuid</replaceable></arg>
+ <arg choice="opt">--nic=<replaceable>1-N</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--mac-address=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-dhcpserver-modify">
+ <command>VBoxManage dhcpserver modify</command>
+ <group choice="req">
+ <arg choice="plain">--network=<replaceable>netname</replaceable></arg>
+ <arg choice="plain">--interface=<replaceable>ifname</replaceable></arg>
+ </group>
+ <arg choice="opt">--server-ip=<replaceable>address</replaceable></arg>
+ <arg choice="opt">--lower-ip=<replaceable>address</replaceable></arg>
+ <arg choice="opt">--upper-ip=<replaceable>address</replaceable></arg>
+ <arg choice="opt">--netmask=<replaceable>mask</replaceable></arg>
+ <group choice="opt">
+ <arg choice="plain">--enable</arg>
+ <arg choice="plain">--disable</arg>
+ </group>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="opt">--global</arg>
+ <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unforce-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unsupress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--remove-config</arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--group=<replaceable>name</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unforce-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unsupress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-mac=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-mac=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-mac=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-mac-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-mac-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-mac-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-vendor=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-vendor=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-vendor=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-vendor-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-vendor-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-vendor-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-user=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-user=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-user=<replaceable>string</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-user-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--incl-user-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt" rep="repeat">--excl-user-wild=<replaceable>pattern</replaceable></arg>
+ <arg choice="opt">--zap-conditions</arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--remove-config</arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--vm=<replaceable>name|uuid</replaceable></arg>
+ <arg choice="opt">--nic=<replaceable>1-N</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unforce-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unsupress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+ <arg choice="opt">--remove-config</arg>
+ </arg>
+ <sbr/>
+ <arg choice="opt" rep="repeat">
+ <arg choice="req">--mac-address=<replaceable>address</replaceable></arg>
+ <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+ <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+ <arg choice="opt" rep="repeat">--force-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unforce-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--supress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt" rep="repeat">--unsupress-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+ <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+ <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+ <arg choice="opt">--remove-config</arg>
+ </arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-dhcpserver-remove">
+ <command>VBoxManage dhcpserver remove</command>
+ <group choice="req">
+ <arg choice="plain">--network=<replaceable>netname</replaceable></arg>
+ <arg choice="plain">--interface=<replaceable>ifname</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-dhcpserver-restart">
+ <command>VBoxManage dhcpserver restart</command>
+ <group choice="req">
+ <arg choice="plain">--network=<replaceable>netname</replaceable></arg>
+ <arg choice="plain">--interface=<replaceable>ifname</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-dhcpserver-findlease">
+ <command>VBoxManage dhcpserver findlease</command>
+ <group choice="req">
+ <arg choice="plain">--network=<replaceable>netname</replaceable></arg>
+ <arg choice="plain">--interface=<replaceable>ifname</replaceable></arg>
+ </group>
+ <arg choice="req">--mac-address=<replaceable>mac</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>
+ The <command>dhcpserver</command> commands enable you to control the DHCP
+ server that is built into VirtualBox. You may find this useful when
+ using internal or host-only networking. Theoretically, you can also
+ enable it for a bridged network, but that may cause conflicts with other
+ DHCP servers in your physical network.
+ </para>
+
+ <refsect2 id="vboxmanage-dhcpserver-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>dhcpserver</command> all operate on an
+ internal network that can be identified via its name or in the host-only
+ case via the host-only interface name:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--network=<replaceable>netname</replaceable></term>
+ <listitem><para>The internal network name. This is the same as you
+ would use as value to the <command>VBoxManage modifyvm --intnet</command>
+ option when configuring a VM for internal networking. Or you see as
+ VBoxNetworkName in the output from
+ <command>VBoxManage list intnets</command>,
+ <command>VBoxManage list natnets</command>, or
+ <command>VBoxManage list hostonlyifs</command>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--interface=<replaceable>ifname</replaceable></term>
+ <listitem><para>The host only interface name. This would be same value
+ as you would use for the <command>VBoxManage modifyvm --hostonlyadapter</command>
+ option when configuring a VM to use a host-only network. The value
+ can also be found in the Name row in <command>VBoxManage list hostonlyifs</command>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-add">
+ <title>dhcpserver add</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Adds a new DHCP server to a network or host-only interface.
+ </para>
+ <para>
+ Options configuring the DHCP server core:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--server-ip=<replaceable>address</replaceable></option></term>
+ <listitem><para>The IP address the DHCP server should use.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--lower-ip=<replaceable>address</replaceable></option>, <option>--upper-ip=<replaceable>address</replaceable></option></term>
+ <listitem><para>The IP address range for the DHCP server to manage. This
+ should not include the address of the DHCP server itself, but it must be
+ in the same network as it. The boundraries are inclusive, so both the
+ lower and upper addresses will be handed out to clients.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--netmask=<replaceable>mask</replaceable></option></term>
+ <listitem><para>The network mask. Typically 255.255.255.0.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--enable</option>, --disable</term>
+ <listitem><para>Whether to enable the DHCP server or disable it. If not specified,
+ the server will be created in disabled state and no IP addresses handed out.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Options selecting the scope:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--global</option></term>
+ <listitem><para>Set the configuration scope to global. Any subsequent
+ <option>--set-opt</option> options will be apply to all the DHCP clients.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vm=<replaceable>vmname|uuid</replaceable></option></term>
+ <listitem><para>Set the configuration scope to the first NIC of the specified VM. Any
+ subsequent <option>--set-opt</option> options will apply just to that interface,
+ nothing else.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nic=<replaceable>1-N</replaceable></option></term>
+ <listitem><para>Set the configuration scope to a NIC other than first of
+ the VM specified the in <option>--vm</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mac-address=<replaceable>address</replaceable></option></term>
+ <listitem><para>Set the configuration scope to the specified MAC address.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--group=<replaceable>name</replaceable></option></term>
+ <listitem><para>Set the configuration scope to the specified group.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Options configuring the currently selected scope:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--set-opt=<replaceable>dhcp-opt-no value</replaceable></option></term>
+ <listitem><para>Adds the specified DHCP option number (0-255) and value. The
+ value format is option specific (typically human readable) and will be
+ validated by the API and the DHCP server.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></option></term>
+ <listitem><para>Adds the specified DHCP option number (0-255) and value. The option value
+ is specified as a raw series of hex bytes, optionally separated by colons. No validation
+ is performed on these by the API or the DHCP server, they will be pass as specified to the
+ client.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--force-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
+ <listitem><para>Forces the specified DHCP option number (0-255) onto to be
+ sent to the client whether it requested it or not (provided the option is
+ configured with a value at some level).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--suppress-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
+ <listitem><para>Prevents the specified DHCP option number (0-255) from being
+ sent to the client when present in this or a high configuration scope.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--min-lease-time=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>Sets the minimum lease time for the current scope in seconds.
+ Zero means taking the value from a higher option level or use default.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--default-lease-time=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>Sets the default lease time for the current scope in seconds.
+ Zero means taking the value from a higher option level or use default.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--max-lease-time=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>Sets the maximum lease time for the current scope in seconds.
+ Zero means taking the value from a higher option level or use default.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--fixed-address=<replaceable>address</replaceable></option></term>
+ <listitem><para>Fixed address assignment for a <option>--vm</option> or
+ <option>--mac-address</option> configuration scope. Any empty
+ <replaceable>address</replaceable> turns it back to dynamic address assignment.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ Options configuring group membership conditions (excludes overrides includes):
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--incl-mac=<replaceable>address</replaceable></option></term>
+ <listitem><para>Include the specific MAC address in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-mac=<replaceable>address</replaceable></option></term>
+ <listitem><para>Exclude the specific MAC address from the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--incl-mac-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Include the specific MAC address pattern in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-mac-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Exclude the specific MAC address pattern from the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--incl-vendor=<replaceable>string</replaceable></option></term>
+ <listitem><para>Include the specific vendor class ID in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-vendor=<replaceable>string</replaceable></option></term>
+ <listitem><para>Exclude the specific vendor class ID from the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--incl-vendor-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Include the specific vendor class ID pattern in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-vendor-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Exclude the specific vendor class ID pattern from the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--incl-user=<replaceable>string</replaceable></option></term>
+ <listitem><para>Include the specific user class ID in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-user=<replaceable>string</replaceable></option></term>
+ <listitem><para>Exclude the specific user class ID from the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--incl-user-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Include the specific user class ID pattern in the group.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--excl-user-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Exclude the specific user class ID pattern from the group.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-modify">
+ <title>dhcpserver modify</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ This modifies an existing DHCP server configuration. It takes the same
+ options as the <command>add</command> command with the addition of the following
+ on scope configuration:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--del-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
+ <listitem><para>Counterpart to <option>--set-opt</option> that will cause the specified
+ DHCP option number (0-255) to be deleted from the server settings. Like with
+ <option>--set-opt</option> the scope of the deletion is governed by the
+ <option>--global</option>, <option>--vm</option>, <option>--mac-address</option>
+ and <option>--group</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--unforce-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
+ <listitem><para>Removes the specified DHCP option number (0-255) from the forced
+ option list (i.e. the reverse of <option>--force-opt</option>). Like with
+ <option>--set-opt</option> the scope of the deletion is governed by the
+ <option>--global</option>, <option>--vm</option>, <option>--mac-address</option>
+ and <option>--group</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--unsuppress-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
+ <listitem><para>Removes the specified DHCP option number (0-255) from the supressed
+ option list (i.e. the reverse of <option>--suppress-opt</option>). Like with
+ <option>--set-opt</option> the scope of the deletion is governed by the
+ <option>--global</option>, <option>--vm</option>, <option>--mac-address</option>
+ and <option>--group</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--remove-config</option></term>
+ <listitem><para>Removes the configuration currently being scoped. The
+ <option>--global</option> scope is not removable. The configuration scope will
+ change to <option>--global</option> after this option.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ And the addition of these group membership condition options:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--del-mac=<replaceable>address</replaceable></option></term>
+ <listitem><para>Delete the specific MAC address from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--del-mac-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Delete the specific MAC address pattern from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--del-vendor=<replaceable>string</replaceable></option></term>
+ <listitem><para>Delete the specific vendor class ID from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--del-vendor-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Delete the specific vendor class ID pattern from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--del-user=<replaceable>string</replaceable></option></term>
+ <listitem><para>Delete the specific user class ID pattern from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--del-user-wild=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>Delete the specific user class ID pattern from the group conditions.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--zap-conditions</option></term>
+ <listitem><para>Deletes all the group conditions.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-remove">
+ <title>dhcpserver remove</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Removes the specified DHCP server.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-restart">
+ <title>dhcpserver restart</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Restarts the specified DHCP server. The DHCP server must be running.
+ </para>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-findlease">
+ <title>dhcpserver findlease</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Performs a lease database lookup. This is mainly for getting the IP
+ address of a running VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--mac-address=<replaceable>mac</replaceable></option></term>
+ <listitem><para>The MAC address to lookup in the lease database.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-dhcpserver-dhcpoptions">
+ <title>Common DHCP Options:</title>
+ <remark role="help-scope" condition="DHCPSERVER_ADD|DHCPSERVER_MODIFY"/>
+ <!-- The following file is generated from src/VBox/Main/idl/VirtualBox.xidl: -->
+ <xi:include href="man_VBoxManage-dhcpserver-dhcpoptions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ </refsect2>
+
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-discardstate.xml b/doc/manual/en_US/man_VBoxManage-discardstate.xml
new file mode 100644
index 00000000..cebad719
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-discardstate.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage discardstate
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-discardstate" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage discardstate</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-discardstate</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-discardstate</refname>
+ <refpurpose>discard the saved state of a virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-discardstate">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage discardstate</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage discardstate</command> command discards
+ the saved state of a virtual machine (VM) that is not currently
+ running. This command causes the VM's operating system to restart
+ the next time you start the VM.
+ </para>
+ <note>
+ <para>
+ Where possible, avoid performing this action. The effects of
+ this command are equivalent to unplugging the power cable on a
+ physical machine.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command discards the saved state file for the VM
+ called <filename>vm2</filename>. When you next start the VM, the
+ VM's operating system is restarted.
+ </para>
+<screen>$ VBoxManage discardstate vm2</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-adoptstate"/>
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-encryptmedium.xml b/doc/manual/en_US/man_VBoxManage-encryptmedium.xml
new file mode 100644
index 00000000..090f76ed
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-encryptmedium.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage encryptmedium
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-encryptmedium" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage encryptmedium</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-encryptmedium</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-encryptmedium</refname>
+ <refpurpose>manage a DEK-encrypted medium or image</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-encryptmedium">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage encryptmedium</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg>--cipher=<replaceable>cipher-ID</replaceable></arg>
+ <arg>--newpassword=<replaceable>password</replaceable></arg>
+ <arg>--newpasswordid=<replaceable>password-ID</replaceable></arg>
+ <arg>--oldpassword=<replaceable>password</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage encryptmedium</command> command enables
+ you to create and manage a DEK-encrypted medium or image. You can
+ encrypt an image, decrypt an image, and change the encryption
+ password of an image. See
+ <xref linkend="diskencryption-encryption" />.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or the
+ absolute path name of the medium or image to encrypt.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--newpassword=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the new encryption password.
+ <replaceable>password</replaceable> is either the absolute
+ path name of a password file on the host operating system or
+ <literal>-</literal>, which prompts you for the password.
+ </para><para>
+ You must use the <option>--newpasswordid</option> option
+ with this <option>--newpassword</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--oldpassword=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the original encryption password.
+ <replaceable>password</replaceable> is either the absolute
+ path name of a password file on the host operating system or
+ <literal>-</literal>, which prompts you for the original
+ password.
+ </para><para>
+ This option enables you to gain access to an encrypted
+ medium or image to do the following:
+ </para><itemizedlist>
+ <listitem><para>
+ Decrypt an encrypted image by using this option by
+ itself.
+ </para></listitem>
+ <listitem><para>
+ Change the password of the encrypted image by using the
+ <option>--newpassword</option> option.
+ </para></listitem>
+ <listitem><para>
+ Change the encryption cipher of the image by using the
+ <option>--cipher</option> option.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cipher=<replaceable>cipher-ID</replaceable></option></term>
+ <listitem><para>
+ Specifies the cipher to use for encryption. Valid values are
+ <literal>AES-XTS128-PLAIN64</literal> or
+ <literal>AES-XTS256-PLAIN64</literal>.
+ </para><para>
+ This option enables you to set up or change encryption on
+ the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--newpasswordid=<replaceable>password-ID</replaceable></option></term>
+ <listitem><para>
+ Specifies a new password identifier that is used for correct
+ identification when supplying multiple passwords during VM
+ startup.
+ </para><para>
+ If you use the same password and password identifier when
+ encrypting multiple images, you need to supply the password
+ only one time during VM startup.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example shows how to encrypt the
+ <filename>ol7u4-1.vdi</filename> image by using the
+ <literal>AES-XTS128-PLAIN64</literal> cipher, specifying a
+ password identifier of <literal>1001</literal>, and using the
+ <filename>$HOME/pwfile</filename> password file:
+ </para>
+<screen>$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-1.vdi" \
+ --cipher="AES-XTS128-PLAIN64" --newpasswordid="1001" --newpassword=$HOME/pwfile</screen>
+ <para>
+ The following example shows how to decrypt an encrypted image
+ called <filename>ol7u4-2.vdi</filename>:
+ </para>
+<screen>$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-2.vdi" \
+ --oldpassword=-
+ Password: <replaceable>original-password</replaceable></screen>
+ <para>
+ The following example shows how to change the password for an
+ encrypted image called <filename>ol7u4-3.vdi</filename>. The
+ command reads the original password from the
+ <filename>$HOME/pwfile.orig</filename> file, reads the new
+ password from the <filename>$HOME/pwfile</filename> file, and
+ assigns a password identifier of <literal>1001</literal>.
+ </para>
+<screen>$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-3.vdi" \
+ --oldpassword=$HOME/pwfile.orig --newpassword=$HOME/pwfile --newpasswordid="1001"</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-export.xml b/doc/manual/en_US/man_VBoxManage-export.xml
new file mode 100644
index 00000000..3c6e6781
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-export.xml
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage export
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-export" lang="en">
+ <refentryinfo>
+ <pubdate>November 2019</pubdate>
+ <title>VBoxManage export</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-export</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-export</refname>
+ <refpurpose>export a virtual machine to a virtual appliance or to a cloud service</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-export-ovf">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage export</command>
+ <arg choice="req"><replaceable>machines</replaceable></arg>
+ <arg choice="req">--output=<replaceable>name</replaceable></arg>
+ <group>
+ <arg choice="plain">--legacy09</arg>
+ <arg choice="plain">--ovf09</arg>
+ <arg choice="plain">--ovf10</arg>
+ <arg choice="plain">--ovf20</arg>
+ <arg choice="plain">--opc10</arg>
+ </group>
+ <arg>--manifest</arg>
+ <arg>--iso</arg>
+ <arg>--options=<group choice="plain">
+ <arg choice="plain">manifest</arg>
+ <arg choice="plain">iso</arg>
+ <arg choice="plain">nomacs</arg>
+ <arg choice="plain">nomacsbutnat</arg>
+ </group></arg>
+ <arg>--vsys=<replaceable>virtual-system-number</replaceable></arg>
+ <arg>--description=<replaceable>description-info</replaceable></arg>
+ <arg>--eula=<replaceable>license-text</replaceable></arg>
+ <arg>--eulafile=<replaceable>filename</replaceable></arg>
+ <arg>--product=<replaceable>product-name</replaceable></arg>
+ <arg>--producturl=<replaceable>product-URL</replaceable></arg>
+ <arg>--vendor=<replaceable>vendor-name</replaceable></arg>
+ <arg>--vendorurl=<replaceable>vendor-URL</replaceable></arg>
+ <arg>--version=<replaceable>version-info</replaceable></arg>
+ <arg>--vmname=<replaceable>vmname</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-export-cloud">
+ <command>VBoxManage export</command>
+ <arg choice="req"><replaceable>machine</replaceable></arg>
+ <arg choice="req">--output=<replaceable>cloud-service-provider</replaceable></arg>
+ <arg>--vmname=<replaceable>vmname</replaceable></arg>
+ <arg>--cloud=<replaceable>virtual-system-number</replaceable></arg>
+ <arg>--cloudprofile=<replaceable>cloud-profile-name</replaceable></arg>
+ <arg>--cloudshape=<replaceable>cloud-shape-name</replaceable></arg>
+ <arg>--clouddomain=<replaceable>cloud-domain</replaceable></arg>
+ <arg>--clouddisksize=<replaceable>disk-size-in-GB</replaceable></arg>
+ <arg>--cloudbucket=<replaceable>bucket-name</replaceable></arg>
+ <arg>--cloudocivcn=<replaceable>OCI-VCN-ID</replaceable></arg>
+ <arg>--cloudocisubnet=<replaceable>OCI-subnet-ID</replaceable></arg>
+ <arg>--cloudkeepobject=<group choice="plain">
+ <arg choice="plain">true</arg>
+ <arg choice="plain">false</arg>
+ </group></arg>
+ <arg>--cloudlaunchinstance=<group choice="plain">
+ <arg choice="plain">true</arg>
+ <arg choice="plain">false</arg>
+ </group></arg>
+ <arg>--cloudlaunchmode=<group choice="plain">
+ <arg choice="plain">EMULATED</arg>
+ <arg choice="plain">PARAVIRTUALIZED</arg>
+ </group></arg>
+ <arg>--cloudpublicip=<group choice="plain">
+ <arg choice="plain">true</arg>
+ <arg choice="plain">false</arg>
+ </group></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage export</command> command enables you to
+ export one or more virtual machines (VMs) from &product-name;. You
+ can export the VM to one of the following:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">Virtual appliance in OVF
+ format.</emphasis> Includes the copying of its virtual disk
+ images to compressed VMDK.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Cloud service such as &oci;.</emphasis>
+ Exports a single VM in VMDK format.
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ For more information about exporting VMs from &product-name;, see
+ <xref linkend="ovf" />
+ </para>
+ <refsect2 id="vboxmanage-export-ovf">
+ <title>Export a Virtual Machine to an OVF Virtual Appliance</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage export</command> command enables you to
+ export a VM as a virtual appliance in OVF format.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>machines</replaceable></term>
+ <listitem><para>
+ Specifies a comma-separated list of one or more machines
+ to export to the same OVF file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--output=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the target OVF file. The file can be OVF, OVA,
+ or a ZIP file compressed with the <command>gzip</command>
+ command. Because the directory that contains the target
+ OVF file will also store the exported disk images in the
+ compressed VMDK format, ensure that this directory has
+ sufficient disk space in which to store the images.
+ </para><para>
+ The short form of this option is <option>-o</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--legacy09</option></term>
+ <listitem><para>
+ Exports in OVF 0.9 legacy mode if the virtualization
+ product is not fully compatible with the OVF 1.0 standard.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ovf09</option></term>
+ <listitem><para>
+ Exports in OVF 0.9 format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ovf10</option></term>
+ <listitem><para>
+ Exports in OVF 1.0 format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ovf20</option></term>
+ <listitem><para>
+ Exports in OVF 2.0 format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--opc10</option></term>
+ <listitem><para>
+ Exports in &oci; format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--manifest</option></term>
+ <listitem><para>
+ Creates a manifest of the exported files.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--iso</option></term>
+ <listitem><para>
+ Creates an ISO file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--options=<replaceable>argument</replaceable></option></term>
+ <listitem><para>
+ Specifies information to control the exact content of the
+ appliance file. Specify one or more comma-separated
+ arguments:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>manifest</literal></term>
+ <listitem><para>
+ Produces a manifest file that detects corrupted
+ appliances on import.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>iso</literal></term>
+ <listitem><para>
+ Exports DVD images in an ISO file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>nomacs</literal></term>
+ <listitem><para>
+ Excludes all MAC addresses.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>nomacsbutnat</literal></term>
+ <listitem><para>
+ Excludes all MAC addresses except for those in a NAT
+ network.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--description=<replaceable>description-info</replaceable></option></term>
+ <listitem><para>
+ Specifies a description of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--eula=<replaceable>license-text</replaceable></option></term>
+ <listitem><para>
+ Specifies end-user license text.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--eulafile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies an end-user license file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--product=<replaceable>product-name</replaceable></option></term>
+ <listitem><para>
+ Specifies a product name.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--producturl=<replaceable>product-URL</replaceable></option></term>
+ <listitem><para>
+ Specifies a product URL.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vendor=<replaceable>vendor-name</replaceable></option></term>
+ <listitem><para>
+ Specifies a vendor name.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vendorurl=<replaceable>vendor-URL</replaceable></option></term>
+ <listitem><para>
+ Specifies a vendor URL.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--version=<replaceable>version-info</replaceable></option></term>
+ <listitem><para>
+ Specifies version information.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vmname=<replaceable>vmname</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the exported VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vsys=<replaceable>virtual-system-number</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of the virtual system.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-export-cloud">
+ <title>Export a Virtual Machine to &oci;</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage export</command> command enables you to
+ export a VM to a cloud service provider such as &oci;. By
+ default, the exported disk image is converted into stream VMDK
+ format. This ensures compatibility with &oci;.
+ </para>
+ <para>
+ Some of the following options are configuration settings for the
+ VM instance. As a result, specify an Oracle Cloud Identifier
+ (OCID) for a resource. Use the &oci; Console to view OCIDs.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--output=<replaceable>cloud-service-provider</replaceable></option></term>
+ <listitem><para>
+ Specifies the short name of the cloud service provider to
+ which you export the VM. For &oci;, specify
+ <literal>OCI://</literal>.
+ </para><para>
+ The short form of this option is <option>-o</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloud=<replaceable>number-of-virtual-system</replaceable></option></term>
+ <listitem><para>
+ Specifies a number that identifies the VM to export.
+ Numbering starts at <literal>0</literal> for the first VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vmname=<replaceable>vmname</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the exported VM, which is used as
+ the VM instance name in &oci;.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudprofile=<replaceable>cloud-profile-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the cloud profile to use to connect to the cloud
+ service provider. The cloud profile contains your &oci;
+ account details, such as your user OCID and the
+ fingerprint for your public key.
+ </para><para>
+ To use a cloud profile, you must have the required
+ permissions on &oci;.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudshape=<replaceable>cloud-shape-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the shape used by the VM instance. The shape
+ defines the number of CPUs and the amount of memory that
+ is allocated to the VM instance. Ensure that the shape is
+ compatible with the exported image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--clouddomain=<replaceable>cloud-domain</replaceable></option></term>
+ <listitem><para>
+ Specifies the availability domain to use for the VM
+ instance. Enter the full name of the availability domain.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--clouddisksize=<replaceable>disk-size-in-GB</replaceable></option></term>
+ <listitem><para>
+ Specifies the amount of disk space, in gigabytes, to use
+ for the exported disk image. Valid values are from 50 GB
+ to 300 GB.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudbucket=<replaceable>bucket-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the bucket in which to store uploaded files. In
+ &oci;, a bucket is a logical container for storing
+ objects.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudocivcn=<replaceable>OCI-VCN-ID</replaceable></option></term>
+ <listitem><para>
+ Specifies the OCID of the virtual cloud network (VCN) to
+ use for the VM instance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudocisubnet=<replaceable>OCI-subnet-ID</replaceable></option></term>
+ <listitem><para>
+ Specifies the OCID of the VCN subnet to use for the VM
+ instance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudkeepobject=true | false</option></term>
+ <listitem><para>
+ Specifies whether to store the exported disk image in
+ Oracle Object Storage.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudlaunchinstance=true | false</option></term>
+ <listitem><para>
+ Specifies whether to start the VM instance after the
+ export to &oci; completes.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudlaunchinstance=EMULATED | PARAVIRTUALIZED</option></term>
+ <listitem><para>
+ Specifies the launch mode used for the instance.
+ Paravirtualized mode gives improved performance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cloudpublicip=true | false</option></term>
+ <listitem><para>
+ Specifies whether to enable a public IP address for the VM
+ instance.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Example</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example shows how to export the
+ <literal>myVM</literal> VM to &oci;. The command's option
+ arguments describe the configuration of the
+ <literal>myVM_Cloud</literal> VM in &oci;.
+ </para>
+<screen># VBoxManage export myVM --output=OCI:// --cloud=0 --vmname=myVM_Cloud \
+--cloudprofile="standard user" --cloudbucket=myBucket \
+--cloudshape=VM.Standard2.1 --clouddomain=US-ASHBURN-AD-1 --clouddisksize=50 \
+--cloudocivcn=ocid1.vcn.oc1.iad.aaaa... --cloudocisubnet=ocid1.subnet.oc1.iad.aaaa... \
+--cloudkeepobject=true --cloudlaunchinstance=true --cloudpublicip=true</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-extpack.xml b/doc/manual/en_US/man_VBoxManage-extpack.xml
new file mode 100644
index 00000000..a22d2ec8
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-extpack.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage extpack
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-extpack" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-04-07 12:00:46 +0200 (Tue, 07 Apr 2020) $</pubdate>
+ <title>VBoxManage extpack</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-extpack</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-extpack</refname>
+ <refpurpose>extension package management</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-extpack-install"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage extpack install</command>
+ <arg>--replace</arg>
+ <arg>--accept-license=<replaceable>sha256</replaceable></arg>
+ <arg choice="req"><replaceable>tarball</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-extpack-uninstall">
+ <command>VBoxManage extpack uninstall</command>
+ <arg>--force</arg>
+ <arg choice="req"><replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-extpack-cleanup">
+ <command>VBoxManage extpack cleanup</command>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-extpack-install">
+ <title>extpack install</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Installs a new extension pack on the system. This command will fail if an older
+ version of the same extension pack is already installed. The
+ <option>--replace</option> option can be used to uninstall any
+ old package before the new one is installed.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--replace</option></term><listitem><para>Uninstall existing extension pack version.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--accept-license=<replaceable>sha256</replaceable></option></term>
+ <listitem>
+ <para>Accept the license text with the given SHA-256 hash value.</para>
+ <para>VBoxManage will display the SHA-256 value when performing a manual
+ installation. The hash can of course be calculated by looking inside
+ the extension pack and using sha256sum or similar on the license file.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>tarball</replaceable></term>
+ <listitem>
+ <para>The file containing the extension pack to be installed.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-extpack-uninstall">
+ <title>extpack uninstall</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Uninstalls an extension pack from the system. The subcommand will also succeed
+ in the case where the specified extension pack is not present on the system.
+ You can use <computeroutput>VBoxManage list extpacks</computeroutput> to show
+ the names of the extension packs which are currently installed.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--force</option></term>
+ <listitem>
+ <para>Overrides most refusals to uninstall an extension pack</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>name</replaceable></term>
+ <listitem>
+ <para>The name of the extension pack to be uninstalled.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-extpack-cleanup">
+ <title>extpack cleanup</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Used to remove temporary files and directories that may have been left behind
+ if a previous install or uninstall command failed.
+ </para>
+ </refsect2>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="EXTPACK_UNINSTALL,EXTPACK"/>
+ <para>
+ How to list extension packs:
+<screen>$ VBoxManage list extpacks
+Extension Packs: 1
+Pack no. 0: Oracle VM VirtualBox Extension Pack
+Version: 4.1.12
+Revision: 77218
+Edition:
+Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
+VRDE Module: VBoxVRDP
+Usable: true
+Why unusable:</screen></para>
+
+ <para>How to remove an extension pack:
+<screen>$ VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
+0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
+Successfully uninstalled "Oracle VM VirtualBox Extension Pack".</screen></para>
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-getextradata.xml b/doc/manual/en_US/man_VBoxManage-getextradata.xml
new file mode 100644
index 00000000..dadae599
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-getextradata.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage getextradata
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-getextradata" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage getextradata</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-getextradata</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-getextradata</refname>
+ <refpurpose>view keyword values that are associated with a virtual machine or
+ configuration</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-getextradata">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage getextradata</command>
+ <group choice="req">
+ <arg choice="plain">global</arg>
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <group choice="plain">
+ <arg choice="req"><replaceable>keyword</replaceable></arg>
+ <arg choice="opt">enumerate</arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage getextradata</command> command enables you
+ to retrieve keyword data that is associated with a virtual machine
+ (VM) or with an &product-name; configuration.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>global</literal></term>
+ <listitem><para>
+ Specifies to retrieve information about the configuration
+ rather than a VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>enumerate</literal></term>
+ <listitem><para>
+ Shows all keyword values for the specified VM or
+ configuration.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>keyword</replaceable></term>
+ <listitem><para>
+ Specifies the keyword for which to retrieve its value.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command retrieves the <literal>installdate</literal>
+ keyword value for the <literal>Fedora5</literal> VM:
+ </para>
+<screen>$ VBoxManage getextradata Fedora5 installdate
+VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
+(C) 2005-2019 Oracle Corporation
+All rights reserved.
+
+Value: 2006.01.01</screen>
+ <para>
+ The following command retrieves the information for all keywords
+ of the <literal>OracleLinux7u4</literal> VM:
+ </para>
+<screen>$ VBoxManage getextradata OracleLinux7u4 enumerate
+Key: GUI/LastCloseAction, Value: PowerOff
+Key: GUI/LastGuestSizeHint, Value: 1048,696
+Key: GUI/LastNormalWindowPosition, Value: 851,286,1048,738</screen>
+ <para>
+ The following command retrieves the information for all keywords
+ in the configuration:
+ </para>
+<screen>$ VBoxManage getextradata global enumerate
+Key: GUI/Details/Elements, Value: general,system,preview,display,storage,audio,network,usb,sharedFolders,description
+Key: GUI/DetailsPageBoxes, Value: general,system,preview,display,storage,audio,network,usb,sharedFolders,description
+Key: GUI/GroupDefinitions/, Value: m=43349dd8-2aa3-41b8-988f-0e255ce68090,m=9ebcd81e-5231-48ce-a27d-28218757f3fe,m=c690e8b1-93a0-4c95-9cd7-6437fff93251,m=f7c1e10d-3722-4891-887e-07b3c4104946
+Key: GUI/HideDescriptionForWizards, Value: NewVM
+Key: GUI/LastItemSelected, Value: m=ol7u4
+Key: GUI/LastWindowPosition, Value: 951,510,960,520
+Key: GUI/RecentFolderCD, Value: C:/Users/user1
+Key: GUI/RecentListCD, Value: C:\Users\user1\V1.iso,C:\Users\user1\V2.iso,C:\Users\user1\V3.iso
+Key: GUI/SplitterSizes, Value: 318,637
+Key: GUI/SuppressMessages, Value: remindAboutMouseIntegration,remindAboutAutoCapture
+Key: GUI/Toolbar/MachineTools/Order, Value: Details
+Key: GUI/Tools/LastItemsSelected, Value: Welcome,Details
+Key: GUI/UpdateCheckCount, Value: 71
+Key: GUI/UpdateDate, Value: 1 d, 2019-04-10, stable, 5.2.22
+Key: GUI/VirtualMediaManager/Details/Expanded, Value: true</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-setextradata" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-guestcontrol.xml b/doc/manual/en_US/man_VBoxManage-guestcontrol.xml
new file mode 100644
index 00000000..1973463c
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-guestcontrol.xml
@@ -0,0 +1,1319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage guestcontrol
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-guestcontrol" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage guestcontrol</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-guestcontrol</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-guestcontrol</refname>
+ <refpurpose>control a virtual machine from the host system</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-run">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">run</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--dos2unix</arg>
+ <arg>--exe=<replaceable>filename</replaceable></arg>
+ <arg>--ignore-orphaned-processes</arg>
+ <group>
+ <arg choice="plain">--no-wait-stderr</arg>
+ <arg choice="plain">--wait-stderr</arg>
+ </group>
+ <group>
+ <arg choice="plain">--no-wait-stdout</arg>
+ <arg choice="plain">--wait-stdout</arg>
+ </group>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--profile</arg>
+ <arg>--putenv=<replaceable>var-name</replaceable>=[<replaceable>value</replaceable>]</arg>
+ <arg>--quiet</arg>
+ <arg>--timeout=<replaceable>msec</replaceable></arg>
+ <arg>--unix2dos</arg>
+ <arg>--unquoted-args</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req">-- <replaceable>program/arg0</replaceable> <arg rep="repeat"><replaceable>argument</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-start">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">start</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--exe=<replaceable>filename</replaceable></arg>
+ <arg>--ignore-orphaned-processes</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--profile</arg>
+ <arg>--putenv=<replaceable>var-name</replaceable>=[<replaceable>value</replaceable>]</arg>
+ <arg>--quiet</arg>
+ <arg>--timeout=<replaceable>msec</replaceable></arg>
+ <arg>--unquoted-args</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req">-- <replaceable>program/arg0</replaceable> <arg rep="repeat"><replaceable>argument</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-copyfrom-hostdest">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">copyfrom</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--follow</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--recursive</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>guest-source0</replaceable></arg>
+ <arg choice="plain"><replaceable>guest-source1</replaceable> [...]</arg>
+ <arg choice="req"><replaceable>host-destination</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-copyfrom-hostdestdir">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">copyfrom</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--follow</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--recursive</arg>
+ <arg>--target-directory=<replaceable>host-destination-dir</replaceable></arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>guest-source0</replaceable></arg>
+ <arg choice="plain"><replaceable>guest-source1</replaceable> [...]</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-copyto-hostdest">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">copyto</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--follow</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--recursive</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>host-source0</replaceable></arg>
+ <arg choice="plain"><replaceable>host-source1</replaceable> [...]</arg>
+ <arg choice="req"><replaceable>guest-destination</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-copyto-hostdestdir">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">copyto</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--follow</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--recursive</arg>
+ <arg>--target-directory=<replaceable>guest-destination-dir</replaceable></arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>host-source0</replaceable></arg>
+ <arg choice="plain"><replaceable>host-source1</replaceable> [...]</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-mkdir">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">mkdir</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--mode=<replaceable>mode</replaceable></arg>
+ <arg>--parents</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req" rep="repeat"><replaceable>guest-directory</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-rmdir">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">rmdir</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--recursive</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req" rep="repeat"><replaceable>guest-directory</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-rm">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">rm</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--force</arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req" rep="repeat"><replaceable>guest-directory</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-mv">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">mv</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req" rep="repeat"><replaceable>source</replaceable></arg>
+ <arg choice="req"><replaceable>destination-directory</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-mktemp">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">mktemp</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <arg>--mode=<replaceable>mode</replaceable></arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--secure</arg>
+ <arg>--tmpdir=<replaceable>directory-name</replaceable></arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>template-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-stat">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">stat</arg>
+ <arg>--domain=<replaceable>domainname</replaceable></arg>
+ <group>
+ <arg choice="plain">--passwordfile=<replaceable>password-file</replaceable></arg>
+ <arg choice="plain">--password=<replaceable>password</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ <arg>--verbose</arg>
+ <arg choice="req"><replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-list">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">list</arg>
+ <group choice="req">
+ <arg choice="plain">all</arg>
+ <arg choice="plain">files</arg>
+ <arg choice="plain">processes</arg>
+ <arg choice="plain">sessions</arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--verbose</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-closeprocess">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">closeprocess</arg>
+ <group>
+ <arg choice="plain">--session-id=<replaceable>ID</replaceable></arg>
+ <arg choice="plain">--session-name=<replaceable>name-or-pattern</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--verbose</arg>
+ <arg choice="req" rep="repeat"><replaceable>PID</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-closesession">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">closesession</arg>
+ <group>
+ <arg choice="plain">--all</arg>
+ <arg choice="plain">--session-id=<replaceable>ID</replaceable></arg>
+ <arg choice="plain">--session-name=<replaceable>name-or-pattern</replaceable></arg>
+ </group>
+ <arg>--quiet</arg>
+ <arg>--verbose</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-updatega">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">updatega</arg>
+ <arg>--quiet</arg>
+ <arg>--verbose</arg>
+ <arg>--source=<replaceable>guest-additions.ISO</replaceable></arg>
+ <arg>--wait-start</arg>
+ <arg>-- <arg rep="repeat"><replaceable>argument</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestcontrol-watch">
+ <command>VBoxManage guestcontrol</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="plain">watch</arg>
+ <arg>--quiet</arg>
+ <arg>--verbose</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage guestcontrol</command> command enables you
+ to control a guest virtual machine (VM) from the host system. See
+ <xref linkend="guestadd-guestcontrol" />.
+ </para>
+ <refsect2>
+ <title>Common Options and Operands</title>
+ <para>
+ The following options can be used by any of the
+ <command>VBoxManage guestcontrol</command> subcommands:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--quiet</option></term>
+ <listitem><para>
+ Specifies that the command produce quieter output.
+ </para><para>
+ The short form of this option is <option>-q</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--verbose</option></term>
+ <listitem><para>
+ Specifies that the command produce more detailed output.
+ </para><para>
+ The short form of this option is <option>-v</option>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ Some of the <command>VBoxManage guestcontrol</command>
+ subcommands require that you provide guest credentials for
+ authentication. The subcommands are:
+ <command>copyfrom</command>, <command>copyto</command>,
+ <command>mkdir</command>, <command>mktemp</command>,
+ <command>mv</command>, <command>rmdir</command>,
+ <command>rm</command>, <command>run</command>,
+ <command>start</command>, and <command>stat</command>.
+ </para>
+ <para>
+ While you cannot perform anonymous executions, a user account
+ password is optional and depends on the guest's OS security
+ policy. If a user account does not have an associated password,
+ specify an empty password. On OSes such as Windows, you might
+ need to adjust the security policy to permit user accounts with
+ an empty password. In additional, global domain rules might
+ apply and therefore cannot be changed.
+ </para>
+ <para>
+ The following options are used for authentication on the guest
+ VM:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--domain=<replaceable>domainname</replaceable></option></term>
+ <listitem><para>
+ Specifies the user domain for Windows guest VMs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--password=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the password for the specified user. If you do
+ not specify a password on the command line or if the
+ password file is empty, the specified user has a null
+ password.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passwordfile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to a file on the guest OS that
+ contains the password for the specified user. If the
+ password file is empty or if you do not specify a password
+ on the command line, the specified user has a null
+ password.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--username=<replaceable>username</replaceable></option></term>
+ <listitem><para>
+ Specifies an existing user on the guest OS that runs the
+ process. If unspecified, the host user runs the process.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2>
+ <title>Guest Process Restrictions</title>
+ <para>
+ By default, you can run up to five guest processes
+ simultaneously. If a new guest process starts and would exceed
+ this limit, the oldest not-running guest process is discarded to
+ run the new process. You cannot retrieve output from a discarded
+ guest process. If all five guest processes are active and
+ running, attempting to start a new guest process fails.
+ </para>
+ <para>
+ You can modify the guest process execution limit in two ways:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ Use the <command>VBoxManage setproperty</command> command to
+ update the
+ <literal>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</literal>
+ guest property value.
+ </para></listitem>
+ <listitem><para>
+ Use the <command>VBoxService</command> command and specify
+ the
+ <option>--control-procs-max-kept=<replaceable>value</replaceable></option>
+ option.
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ After you change the limit, you must restart the guest OS.
+ </para>
+ <para>
+ You can serve an unlimited number guest processes by specifing a
+ value of <literal>0</literal>, however this action is not
+ recommended.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-run">
+ <title>Run a Command on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> run</command> command enables
+ you to execute a program on the guest VM. Standard input,
+ standard output, and standard error are redirected from the VM
+ to the host system until the program completes.
+ </para>
+ <note>
+ <para>
+ The Windows OS imposes certain limitations for graphical
+ applications. See <xref linkend="KnownIssues" />.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term><option>--exe=<replaceable>path-to-executable</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the executable program to
+ run on the guest VM. For example:
+ <filename>C:\Windows\System32\calc.exe</filename>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--timeout=<replaceable>msec</replaceable></option></term>
+ <listitem><para>
+ Specifies the maximum amount of time, in milliseconds,
+ that the program can run. While the program runs,
+ <command>VBoxManage</command> receives its output.
+ </para><para>
+ If you do not specify a timeout value,
+ <command>VBoxManage</command> waits indefinitely for the
+ process to end, or for an error to occur.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--putenv=<replaceable>NAME</replaceable>=[<replaceable>value</replaceable>]</option></term>
+ <listitem><para>
+ Sets, modifies, and unsets environment variables in the
+ guest VM environment.
+ </para><para>
+ When you create a guest process, it runs with the default
+ standard guest OS environment. Use this option to modify
+ environment variables in that default environment.
+ </para><para>
+ Use the
+ <option>--putenv=<replaceable>NAME</replaceable>=[<replaceable>value</replaceable>]</option>
+ option to set or modify the environment variable specified
+ by <replaceable>NAME</replaceable>.
+ </para><para>
+ Use the
+ <option>--putenv=<replaceable>NAME</replaceable>=[<replaceable>value</replaceable>]</option>
+ option to unset the environment variable specified by
+ <replaceable>NAME</replaceable>.
+ </para><para>
+ Ensure that any environment variable name or value that
+ includes spaces is enclosed by quotes.
+ </para><para>
+ Specify a <option>--putenv</option> option for each
+ environment variable that you want to modify.
+ </para><para>
+ The short form of this option is <option>-E</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--unquoted-args</option></term>
+ <listitem><para>
+ Disables the escaped double quoting of arguments that you
+ pass to the program. For example,
+ <literal>\"fred\"</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ignore-orphaned-processes</option></term>
+ <listitem><para>
+ Ignores orphaned processes. Not yet implemented.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--profile</option></term>
+ <listitem><para>
+ Uses a shell profile to specify the environment to use.
+ Not yet implemented.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--no-wait-stdout</option></term>
+ <listitem><para>
+ Does not wait for the guest process to end or receive its
+ exit code and any failure explanation.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--wait-stdout</option></term>
+ <listitem><para>
+ Waits for the guest process to end to receive its exit
+ code and any failure explanation. The
+ <command>VBoxManage</command> command receives the
+ standard output of the guest process while the process
+ runs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--no-wait-stderr</option></term>
+ <listitem><para>
+ Does not wait for the guest process to end to receive its
+ exit code, error messages, and flags.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--wait-stderr</option></term>
+ <listitem><para>
+ Waits for the guest process to end to receive its exit
+ code, error messages, and flags. The
+ <command>VBoxManage</command> command receives the
+ standard error of the guest process while the process
+ runs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dos2unix</option></term>
+ <listitem><para>
+ Transform DOS or Windows guest output to UNIX or Linux
+ output. This transformation changes CR + LF line endings
+ to LF. Not yet implemented.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--unix2dos</option></term>
+ <listitem><para>
+ Transform UNIX or Linux guest output to DOS or Windows
+ output. This transformation changes LF line endings to CR
+ + LF.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-- <replaceable>program/arg0</replaceable> [<replaceable>argument</replaceable>...]</option></term>
+ <listitem><para>
+ Specifies the name of the program and any arguments to
+ pass to the program.
+ </para><para>
+ Ensure that any command argument that includes spaces is
+ enclosed by quotes.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-start">
+ <title>Start a Command on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> start</command> command
+ enables you to execute a guest program until it completes.
+ </para>
+ <note>
+ <para>
+ The Windows OS imposes certain limitations for graphical
+ applications. See <xref linkend="KnownIssues" />.
+ </para>
+ </note>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-copyfrom-hostdest">
+ <title>Copy a File From the Guest Virtual Machine to the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> copyfrom</command> command
+ enables you to copy a file from the guest VM to the host system.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--follow</option></term>
+ <listitem><para>
+ Enables following of symbolic links on the guest file
+ system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recursive</option></term>
+ <listitem><para>
+ Recursively copies files and directories from the
+ specified directory on the guest VM.
+ </para><para>
+ The short form of this option is <option>-R</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>guest-source0</replaceable> [<replaceable>guest-source1</replaceable> [...]]</literal></term>
+ <listitem><para>
+ Specifies the absolute path of one or more files to copy
+ from the guest VM. For example,
+ <filename>C:\Windows\System32\calc.exe</filename>. You can
+ use wildcards to specify multiple files. For example,
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-copyfrom-hostdestdir">
+ <title>Copy a File From the Guest Virtual Machine to a Directory on the Host
+ System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> copyfrom</command> command
+ enables you to copy a file from the guest VM to the host system.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--follow</option></term>
+ <listitem><para>
+ Enables following of symbolic links on the guest file
+ system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recursive</option></term>
+ <listitem><para>
+ Recursively copies files and directories from the
+ specified directory on the guest VM.
+ </para><para>
+ The short form of this option is <option>-R</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--target-directory=<replaceable>host-dst-dir</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the destination directory
+ on the host system. For example,
+ <filename>C:\Temp</filename>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>guest-source0</replaceable> [<replaceable>guest-source1</replaceable> [...]]</literal></term>
+ <listitem><para>
+ Specifies the absolute path of one or more the files to
+ copy from the guest VM. For example,
+ <filename>C:\Windows\System32\calc.exe</filename>. You can
+ use wildcards to specify multiple files. For example,
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-copyto-hostdest">
+ <title>Copy a File to the Guest Virtual Machine From the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> copyto</command> command
+ enables you to copy a file from the host system to the guest VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--follow</option></term>
+ <listitem><para>
+ Enables following of symbolic links on the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recursive</option></term>
+ <listitem><para>
+ Recursively copies files and directories from the
+ specified directory on the host system.
+ </para><para>
+ The short form of this option is <option>-R</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>host-source0</replaceable> [<replaceable>host-source1</replaceable> [...]]</literal></term>
+ <listitem><para>
+ Specifies the absolute path of one or more the files to
+ copy from the host system. For example,
+ <filename>C:\Windows\System32\calc.exe</filename>. You can
+ use wildcards to specify multiple files. For example,
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-copyto-hostdestdir">
+ <title>Copy a File to a Directory on the Guest Virtual Machine From the Host
+ System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> copyto</command> command
+ enables you to copy a file from the host system to the guest VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--follow</option></term>
+ <listitem><para>
+ Enables following of symbolic links on the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recursive</option></term>
+ <listitem><para>
+ Recursively copies files and directories from the
+ specified directory on the host system.
+ </para><para>
+ The short form of this option is <option>-R</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--target-directory=<replaceable>guest-dst-dir</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the destination directory
+ on the guest VM. For example,
+ <filename>C:\Temp</filename>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>host-source0</replaceable> [<replaceable>host-source1</replaceable> [...]]</literal></term>
+ <listitem><para>
+ Specifies the absolute path of one or more the files to
+ copy from the host system. For example,
+ <filename>C:\Windows\System32\calc.exe</filename>. You can
+ use wildcards to specify multiple files. For example,
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-mkdir">
+ <title>Create a Directory on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> mkdir</command> command
+ enables you to create one or more directories on the guest VM.
+ </para>
+ <para>
+ Alternate forms of this subcommand are <command>md</command>,
+ <command>createdir</command>, and
+ <command>createdirectory</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--parents</option></term>
+ <listitem><para>
+ Creates any of the missing parent directories of the
+ specified directory.
+ </para><para>
+ For example, if you attempt to create the
+ <filename>D:\Foo\Bar</filename> directory and the
+ <filename>D:\Foo</filename> directory does not exist,
+ using the <option>--parents</option> creates the missing
+ <filename>D:\Foo</filename> directory. However, if you
+ attempt to create the <filename>D:\Foo\Bar</filename> and
+ do not specify the <option>--parents</option> option, the
+ command fails.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mode=<replaceable>mode</replaceable></option></term>
+ <listitem><para>
+ Specifies the permission mode to use for the specified
+ directory. If you specify the <option>--parents</option>
+ option, the mode is used for the associated parent
+ directories, as well. <replaceable>mode</replaceable> is a
+ four-digit octal mode such as <literal>0755</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>guest-dir</replaceable> [<replaceable>guest-dir</replaceable>...]</literal></term>
+ <listitem><para>
+ Specifies an absolute path of one or more directories to
+ create on the guest VM. For example,
+ <filename>D:\Foo\Bar</filename>.
+ </para><para>
+ If all of the associated parent directories do not exist
+ on the guest VM, you must specify the
+ <option>--parents</option> option.
+ </para><para>
+ You must have sufficient rights on the guest VM to create
+ the specified directory and its parent directories.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-rmdir">
+ <title>Remove a Directory From the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> rmdir</command> command
+ enables you to delete the specified directory from the guest VM.
+ </para>
+ <para>
+ Alternate forms of this subcommand are
+ <command>removedir</command> and
+ <command>removedirectory</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--recursive</option></term>
+ <listitem><para>
+ Recursively removes directories from the specified from
+ the guest VM.
+ </para><para>
+ The short form of this option is <option>-R</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>guest-dir</replaceable> [<replaceable>guest-dir</replaceable>...]</literal></term>
+ <listitem><para>
+ Specifies an absolute path of one or more directories to
+ remove from the guest VM. You can use wildcards to specify
+ the directory names. For example,
+ <filename>D:\Foo\*Bar</filename>.
+ </para><para>
+ You must have sufficient rights on the guest VM to remove
+ the specified directory and its parent directories.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-rm">
+ <title>Remove a File From the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> rm</command> command enables
+ you to delete the specified files from the guest VM.
+ </para>
+ <para>
+ The alternate form of this subcommand is
+ <command>removefile</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--force</option></term>
+ <listitem><para>
+ Forces the operation and overrides any confirmation
+ requests.
+ </para><para>
+ The short form of this option is <option>-f</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>guest-file</replaceable> [<replaceable>guest-file</replaceable>...]</literal></term>
+ <listitem><para>
+ Specifies an absolute path of one or more file to remove
+ from the guest VM. You can use wildcards to specify the
+ file names. For example,
+ <filename>D:\Foo\Bar\text*.txt</filename>.
+ </para><para>
+ You must have sufficient rights on the guest VM to remove
+ the specified file.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-mv">
+ <title>Rename a File or Directory on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> mv</command> command enables
+ you to rename files and directories on the guest VM.
+ </para>
+ <para>
+ Alternate forms of this subcommand are <command>move</command>,
+ <command>ren</command>, and <command>rename</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal><replaceable>guest-source</replaceable> [<replaceable>guest-source</replaceable>...]</literal></term>
+ <listitem><para>
+ Specifies an absolute path of a file or a single directory
+ to move or rename on the guest VM. You can use wildcards
+ to specify the file names.
+ </para><para>
+ You must have sufficient rights on the guest VM to access
+ the specified file or directory.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>dest</replaceable></term>
+ <listitem><para>
+ Specifies the absolute path of the renamed file or
+ directory, or the destination directory to which to move
+ the files. If you move only one file,
+ <replaceable>dest</replaceable> can be a file or a
+ directory, otherwise <replaceable>dest</replaceable> must
+ be a directory.
+ </para><para>
+ You must have sufficient rights on the guest VM to access
+ the destination file or directory.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-mktemp">
+ <title>Create a Temporary File or Directory on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> mktemp</command> command
+ enables you to create a temporary file or temporary directory on
+ the guest VM. You can use this command to assist with the
+ subsequent copying of files from the host system to the guest
+ VM. By default, this command creates the file or directory in
+ the guest VM's platform-specific <filename>temp</filename>
+ directory.
+ </para>
+ <para>
+ Alternate forms of this subcommand are
+ <command>createtemp</command> and
+ <command>createtemporary</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--directory</option></term>
+ <listitem><para>
+ Creates a temporary directory that is specified by the
+ <replaceable>template</replaceable> operand.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--secure</option></term>
+ <listitem><para>
+ Enforces secure file and directory creation by setting the
+ permission mode to <literal>0755</literal>. Any operation
+ that cannot be performed securely fails.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mode=<replaceable>mode</replaceable></option></term>
+ <listitem><para>
+ Specifies the permission mode to use for the specified
+ directory. <replaceable>mode</replaceable> is a four-digit
+ octal mode such as <literal>0755</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tmpdir=<replaceable>directory</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the directory on the guest
+ VM in which to create the specified file or directory. If
+ unspecified, <replaceable>directory</replaceable> is the
+ platform-specific <filename>temp</filename> directory.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>template</replaceable></term>
+ <listitem><para>
+ Specifies a template file name for the temporary file,
+ without a directory path. The template file name must
+ contain at least one sequence of three consecutive X
+ characters, or must end in X.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-stat">
+ <title>Show a File or File System Status on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> stat</command> command enables
+ you to show the status of files or file systems on the guest VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal><replaceable>file</replaceable> [<replaceable>file</replaceable> ...]</literal></term>
+ <listitem><para>
+ Specifies an absolute path of a file or file system on the
+ guest VM. For example,
+ <filename>/home/foo/a.out</filename>.
+ </para><para>
+ You must have sufficient rights on the guest VM to access
+ the specified files or file systems.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-list">
+ <title>List the Configuration and Status Information for a Guest Virtual
+ Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> list</command> command enables
+ you to list guest control configuration and status information.
+ For example, the output shows open guest sessions, guest
+ processes, and files.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>all</literal>|<literal>sessions</literal>|<literal>processes</literal>|<literal>files</literal></term>
+ <listitem><para>
+ Indicates the type of information to show.
+ <literal>all</literal> shows all available data,
+ <literal>sessions</literal> shows guest sessions,
+ <literal>processes</literal> shows processes, and
+ <literal>files</literal> shows files.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-closeprocess">
+ <title>Terminate a Process in a Guest Virtual Machine Session</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> closeprocess</command> command
+ enables you to terminate a guest process that runs in a guest
+ session. Specify the process by using a process identifier (PID)
+ and the session by using the session ID or name.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--session-id=<replaceable>ID</replaceable></option></term>
+ <listitem><para>
+ Specifies the ID of the guest session.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--session-name=<replaceable>name</replaceable>|<replaceable>pattern</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the guest session. Use a pattern
+ that contains wildcards to specify multiple sessions.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal><replaceable>PID</replaceable> [<replaceable>PID</replaceable> ...]</literal></term>
+ <listitem><para>
+ Specifies the list of PIDs of guest processes to
+ terminate.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-closesession">
+ <title>Close a Guest Virtual Machine Session</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> closesession</command> command
+ enables you to close a guest session. Specify the guest session
+ either by session ID or by name.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--session-id=<replaceable>ID</replaceable></option></term>
+ <listitem><para>
+ Specifies the ID of the guest session.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--session-name=<replaceable>name</replaceable>|<replaceable>pattern</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the guest session. Use a pattern
+ that contains wildcards to specify multiple sessions.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--all</option></term>
+ <listitem><para>
+ Closes all guest sessions.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-updatega">
+ <title>Update the Guest Additions Software on the Guest Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> updatega</command> command
+ enables you to update the Guest Additions software installed in
+ the specified guest VM.
+ </para>
+ <para>
+ Alternate forms of this subcommand are
+ <command>updateadditions</command> and
+ <command>updateguestadditions</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--source=<replaceable>new-iso-path</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the Guest Additions update
+ <filename>.ISO</filename> file on the guest VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--wait-start</option></term>
+ <listitem><para>
+ Starts the <command>VBoxManage</command> update process on
+ the guest VM and then waits for the Guest Additions update
+ to begin before terminating the
+ <command>VBoxManage</command> process.
+ </para><para>
+ By default, the <command>VBoxManage</command> command
+ waits for the Guest Additions update to complete before it
+ terminates. Use this option when a running
+ <command>VBoxManage</command> process affects the
+ interaction between the installer and the guest OS.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-- <replaceable>argument</replaceable> [<replaceable>argument</replaceable> ...]</option></term>
+ <listitem><para>
+ Specifies optional command-line arguments to pass to the
+ Guest Additions updater. You might use the
+ <option>--</option> option to pass the appropriate updater
+ arguments to retrofit features that are not yet installed.
+ </para><para>
+ Ensure that any command argument that includes spaces is
+ enclosed by quotes.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestcontrol-watch">
+ <title>Show Current Guest Control Activity</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestcontrol
+ <replaceable>vmname</replaceable> watch</command> command
+ enables you to show current guest control activity.
+ </para>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following <command>VBoxManage guestcontrol run</command>
+ command executes the <command>ls -l /usr</command> command on the
+ <literal>My OL VM</literal> Oracle Linux VM as the
+ <literal>user1</literal> user.
+ </para>
+<screen>
+$ VBoxManage --nologo guestcontrol "My OL VM" run --exe "/bin/ls" \
+--username user1 --passwordfile pw.txt --wait-stdout -- -l /usr
+</screen>
+ <para>
+ The <option>--exe</option> option specifies the absolute path of
+ the command to run in the guest VM, <filename>/bin/ls</filename>.
+ Use the <option>--</option> option to pass any arguments that
+ follow it to the <command>ls</command> command.
+ </para>
+ <para>
+ Use the <option>--username</option> option to specify the user
+ name, <literal>user1</literal> and use the
+ <option>--passwordfile</option> option to specify the name of a
+ file that includes the password for the <literal>user1</literal>
+ user, <filename>pw.txt</filename>.
+ </para>
+ <para>
+ The <option>--wait-stdout</option> option waits for the
+ <command>ls</command> guest process to complete before providing
+ the exit code and the command output. The
+ <option>--nologo</option> option suppresses the output of the logo
+ information.
+ </para>
+ <para>
+ The following <command>VBoxManage guestcontrol run</command>
+ command executes the <command>ipconfig</command> command on the
+ <literal>My Win VM</literal> Windows VM as the
+ <literal>user1</literal> user. Standard input, standard output,
+ and standard error are redirected from the VM to the host system
+ until the program completes.
+ </para>
+<screen>
+$ VBoxManage --nologo guestcontrol "My Win VM" run \
+--exe "c:\\windows\\system32\\ipconfig.exe" \
+--username user1 --passwordfile pw.txt --wait-stdout
+</screen>
+ <para>
+ The <option>--exe</option> specifies the absolute path of command
+ to run in the guest VM,
+ <filename>c:\windows\system32\ipconfig.exe</filename>. The double
+ backslashes shown in this example are required only on UNIX host
+ systems.
+ </para>
+ <para>
+ Use the <option>--username</option> option to specify the user
+ name, <literal>user1</literal> and use the
+ <option>--passwordfile</option> option to specify the name of a
+ file that includes the password for the <literal>user1</literal>
+ user, <filename>pw.txt</filename>.
+ </para>
+ <para>
+ The <option>--wait-stdout</option> option waits for the
+ <command>ls</command> guest process to complete before providing
+ the exit code and the command output. The
+ <option>--nologo</option> option to suppress the output of the
+ logo information.
+ </para>
+ <para>
+ The following <command>VBoxManage guestcontrol start</command>
+ command executes the <command>ls -l /usr</command> command on the
+ <literal>My OL VM</literal> Oracle Linux VM until the program
+ completes.
+ </para>
+<screen>
+$ VBoxManage --nologo guestcontrol "My Win VM" start \
+--exe "c:\\windows\\system32\\ipconfig.exe" \
+--username user1 --passwordfile pw.txt --wait-stdout
+</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-guestproperty.xml b/doc/manual/en_US/man_VBoxManage-guestproperty.xml
new file mode 100644
index 00000000..00100697
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-guestproperty.xml
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage guestproperty
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-guestproperty" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage guestproperty</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-guestproperty</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-guestproperty</refname>
+ <refpurpose>manage virtual machine guest properties</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-guestproperty-get">
+ <command>VBoxManage guestproperty get</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ <arg>--verbose</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestproperty-enumerate">
+ <command>VBoxManage guestproperty enumerate</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--patterns=<replaceable>patterns</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestproperty-set">
+ <command>VBoxManage guestproperty set</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ <arg><replaceable>property-value</replaceable><arg>--flags=<replaceable>flags</replaceable></arg></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestproperty-unset">
+ <command>VBoxManage guestproperty unset</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-guestproperty-wait">
+ <command>VBoxManage guestproperty wait</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>patterns</replaceable></arg>
+ <arg>--timeout=<replaceable>msec</replaceable></arg>
+ <arg>--fail-on-timeout</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage guestproperty</command> command enables
+ you to set or retrieve the properties of a running virtual machine
+ (VM). See <xref linkend="guestadd-guestprops" />. Guest properties
+ are arbitrary name-value string pairs that can be written to and
+ read from by either the guest or the host. As a result, these
+ properties can be used as a low-volume communication channel for
+ strings provided that a guest is running and has the Guest
+ Additions installed. In addition, the Guest Additions
+ automatically set and maintain values whose keywords begin with
+ <literal>/VirtualBox/</literal>.
+ </para>
+ <refsect2>
+ <title>General Command Operand</title>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestproperty-enumerate">
+ <title>List All Properties for a Virtual Machine</title>
+ <para>
+ The <command>VBoxManage guestproperty enumerate</command>
+ command lists each guest property and value for the specified
+ VM. Note that the output is limited if the guest's service
+ process cannot be contacted, for example because the VM is not
+ running or because the Guest Additions are not installed.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--patterns=<replaceable>pattern</replaceable></option></term>
+ <listitem><para>
+ Filters the list of properties based on the specified
+ pattern, which can contain the following wildcard
+ characters:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>*</literal> (asterisk)</term>
+ <listitem><para>
+ Represents any number of characters. For example,
+ the <literal>/VirtualBox*</literal> pattern matches
+ all properties that begin with
+ <literal>/VirtualBox</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>?</literal> (question mark)</term>
+ <listitem><para>
+ Represents a single arbitrary character. For
+ example, the <literal>fo?</literal> pattern matches
+ both <literal>foo</literal> and
+ <literal>for</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>|</literal> (pipe)</term>
+ <listitem><para>
+ Specifies multiple alternative patterns. For
+ example, the <literal>s*|t*</literal> pattern
+ matches any property that begins with
+ <literal>s</literal> or <literal>t</literal>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestproperty-get">
+ <title>Retrieve a Property Value for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestproperty get</command> command
+ retrieves the value of the specified property. If the property
+ cannot be found, for example because the guest is not running,
+ the command issues the following message:
+ </para>
+<screen>No value set!</screen>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--verbose</option></term>
+ <listitem><para>
+ Provides the property value, timestamp, and any specified
+ value attributes.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestproperty-set">
+ <title>Set a Property Value for a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestproperty set</command> command
+ enables you to set a guest property by specifying the property
+ and its value. If you omit the value, the property is deleted.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>property-value</replaceable></term>
+ <listitem><para>
+ Specifies the value of the property. If no value is
+ specified, any existing value is removed.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--flags=<replaceable>flags</replaceable></option></term>
+ <listitem><para>
+ Specify the additional attributes of the value. The
+ following attributes can be specified as a comma-separated
+ list:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>TRANSIENT</literal></term>
+ <listitem><para>
+ Removes the value with the VM data when the VM
+ exits.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>TRANSRESET</literal></term>
+ <listitem><para>
+ Removes the value when the VM restarts or exits.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>RDONLYGUEST</literal></term>
+ <listitem><para>
+ Specifies that the value can be changed only by the
+ host and that the guest can read the value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>RDONLYHOST</literal></term>
+ <listitem><para>
+ Specifies that the value can be changed only by the
+ guest and that the host can read the value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>READONLY</literal></term>
+ <listitem><para>
+ Specifies that the value cannot be changed.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestproperty-wait">
+ <title>Wait for a Property Value to Be Created, Deleted, or Changed</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestproperty wait</command> command
+ waits for a particular value that is described by the pattern
+ string to change, to be deleted, or to be created.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>patterns</replaceable></term>
+ <listitem><para>
+ Specifies a pattern that matches the properties on which
+ you want to wait. For information about the pattern
+ wildcards, see the description of the
+ <option>--patterns</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--timeout<replaceable>msec</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of microseconds to wait.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--fail-on-timeout</option></term>
+ <listitem><para>
+ Specifies that the command fails if the timeout is
+ reached.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-guestproperty-unset">
+ <title>Unset a Virtual Machine Property Value</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage guestproperty unset</command> command
+ unsets the value of a guest property.
+ </para>
+ <para>
+ The alternate form of this subcommand is
+ <command>delete</command>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command lists the guest properties and their values
+ for the <literal>win8</literal> VM.
+ </para>
+<screen>$ VBoxManage guestproperty enumerate win8</screen>
+ <para>
+ The following command creates a guest property called
+ <literal>region</literal> for the <literal>win8</literal> VM. The
+ value of the property is set to <literal>west</literal>.
+ </para>
+<screen>$ VBoxManage guestproperty set win8 region west</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-hostonlyif.xml b/doc/manual/en_US/man_VBoxManage-hostonlyif.xml
new file mode 100644
index 00000000..6a136ecd
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-hostonlyif.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage hostonlyif
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-hostonlyif" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage hostonlyif</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-hostonlyif</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-hostonlyif</refname>
+ <refpurpose>manage host-only network interfaces</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-hostonlyif-ipconfig">
+ <command>VBoxManage hostonlyif ipconfig</command>
+ <arg choice="req"><replaceable>ifname</replaceable></arg>
+ <group>
+ <arg choice="plain">--dhcp</arg>
+ <arg choice="plain">--ip=<replaceable>IPv4-address</replaceable> <arg>--netmask=<replaceable>IPv4-netmask</replaceable></arg></arg>
+ <arg choice="plain">--ipv6=<replaceable>IPv6-address</replaceable> <arg>--netmasklengthv6=<replaceable>length</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-hostonlyif-create">
+ <command>VBoxManage hostonlyif create</command>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-hostonlyif-remove">
+ <command>VBoxManage hostonlyif remove</command>
+ <arg choice="req"><replaceable>ifname</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage hostonlyif</command> command enables you
+ to change the IP configuration of a host-only network interface.
+ For a description of host-only networking, see
+ <xref linkend="network_hostonly" />. Each host-only network
+ interface is identified by a name and can either use the internal
+ DHCP server or a manual IP configuration, both IPv4 and IPv6.
+ </para>
+ <refsect2 id="vboxmanage-hostonlyif-ipconfig">
+ <title>Configure a Host-Only Interface</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage hostonlyif ipconfig</command> command
+ configures a host-only interface.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>ifname</replaceable></term>
+ <listitem><para>
+ Specifies the name of the network interface. The name is
+ of the form
+ <literal>vboxnet</literal><replaceable>N</replaceable>
+ where <replaceable>N</replaceable> is the interface
+ instance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dhcp</option></term>
+ <listitem><para>
+ Uses DHCP for the network interface.
+ </para><para>
+ You cannot use this option with the <option>--ip</option>,
+ <option>--ipv6</option>, <option>--netmask</option>, and
+ <option>--netmasklengthv6</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ip=<replaceable>IPv4-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the IPv4 IP address for the network interface.
+ </para><para>
+ You cannot use this option with the
+ <option>--dhcp</option>, <option>--ipv6</option>, and
+ <option>--netmasklengthv6</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--netmask=<replaceable>IPv4-netmask</replaceable></option></term>
+ <listitem><para>
+ Specifies the IPv4 netmask of the network interface. The
+ default value is <literal>255.255.255.0</literal>.
+ </para><para>
+ You can use this option only with the
+ <option>--ip</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ipv6=<replaceable>IPv6-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the IPv6 IP address for the network interface.
+ </para><para>
+ You cannot use this option with the
+ <option>--dhcp</option>, <option>--ip</option>, and
+ <option>--netmask</option> options.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--netmasklengthv6=<replaceable>length</replaceable></option></term>
+ <listitem><para>
+ Specifies the length of the IPv6 network interface. The
+ default value is <literal>64</literal>.
+ </para><para>
+ You can use this option only with the
+ <option>--ipv6</option> option.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-hostonlyif-create">
+ <title>Create a Network Interface on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage hostonlyif create</command> command
+ creates a new host-only network interface on the host operating
+ system (OS). The network interface name is of the form
+ <literal>vboxnet</literal><replaceable>N</replaceable> where
+ <replaceable>N</replaceable> is the interface instance. You must
+ run this command before you can attach virtual machines (VMs) to
+ the host-only network.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-hostonlyif-remove">
+ <title>Remove a Network Interface From the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage hostonlyif remove</command> command
+ removes the specified host-only network interface from the host
+ OS.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>ifname</replaceable></term>
+ <listitem><para>
+ Specifies the name of the network interface. The name is
+ of the form
+ <literal>vboxnet</literal><replaceable>N</replaceable>
+ where <replaceable>N</replaceable> is the interface
+ instance.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a new host-only network interface.
+ </para>
+<screen>$ VBoxManage hostonlyif create
+0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
+Interface 'vboxnet2' was successfully created</screen>
+ <para>
+ The following command configures the IPv4 address for the
+ <literal>vboxnet2</literal> host-only network interface.
+ </para>
+<screen>$ VBoxManage hostonlyif ipconfig vboxnet2 --ip 10.0.2.18</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-import.xml b/doc/manual/en_US/man_VBoxManage-import.xml
new file mode 100644
index 00000000..7ab33595
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-import.xml
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage import
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-import" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage import</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-import</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-import</refname>
+ <refpurpose>import a virtual appliance in OVF format and create virtual machines</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-import">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage import</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>ovfname</replaceable></arg>
+ <arg choice="plain"><replaceable>ovaname</replaceable></arg>
+ </group>
+ <arg>--dry-run</arg>
+ <arg>--options=<group choice="plain">
+ <arg choice="plain">keepallmacs</arg>
+ <arg choice="plain">keepnatmacs</arg>
+ <arg choice="plain">keepdisknames</arg>
+ <arg choice="plain">importtovdi</arg>
+ </group></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage import</command> command imports a virtual
+ appliance in OVF or OVA format by copying virtual disk images and
+ by creating virtual machines (VMs) in &product-name;. See
+ <xref linkend="ovf" />.
+ </para>
+ <para>
+ You must specify the path name of an OVF file or OVA archive to
+ use as input. Also, ensure that any disk images are in the same
+ directory as the OVF file or OVA archive.
+ </para>
+ <para>
+ Note that any options you specify to control the imported virtual
+ appliance or to modify the import parameters rely on the contents
+ of the OVF file.
+ </para>
+ <para>
+ Before you use the import operation to create the VM, perform a
+ dry run to verify the correctness of your configuration.
+ </para>
+ <refsect2>
+ <title>Common Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>ovfname</replaceable> | <replaceable>ovaname</replaceable></term>
+ <listitem><para>
+ Specifies the name of the OVF file or OVA archive that
+ describes the appliance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dry-run</option></term>
+ <listitem><para>
+ Performs a dry run of the <command>VBoxManage
+ import</command> command before you perform the actual
+ import operation. A dry run operation does the following:
+ </para><itemizedlist>
+ <listitem><para>
+ Outputs a description of the appliance's contents
+ based on the specified OVF or OVA file.
+ </para></listitem>
+ <listitem><para>
+ Shows how the appliance would be imported into
+ &product-name;. In addition, the output shows any
+ options that you can use to change the import
+ behavior.
+ </para></listitem>
+ </itemizedlist><para>
+ The shortened form of this option is <option>-n</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--options keepallmacs | keepnatmacs | keepdisknames | importtovdi</option></term>
+ <listitem><para>
+ Enables you to fine tune the import operation.
+ </para><para>
+ Valid arguments are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>keepallmacs</literal>: Specifies that the MAC
+ addresses of every virtual network card are left
+ unchanged.
+ </para></listitem>
+ <listitem><para>
+ <literal>keepnatmacs</literal>: Specifies that the MAC
+ addresses of every virtual network card are left
+ unchanged if the network type is NAT.
+ </para></listitem>
+ <listitem><para>
+ <literal>keepdisknames</literal>: Specifies that all
+ new disk images are assigned the same names as the
+ originals.
+ </para></listitem>
+ <listitem><para>
+ <literal>importtovdi</literal>: Specifies that all new
+ disk images are in VDI file format.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example performs the dry run of an import operation
+ for a sample appliance that contains a Windows 10 guest:
+ </para>
+<screen>$ VBoxManage import Windows10.ovf --dry-run
+Interpreting Windows10.ovf...
+OK.
+Virtual system 0:
+ 0: Suggested OS type: "Windows10_64"
+ (change with "--vsys 0 --ostype &lt;type&gt;"; use "list ostypes" to list all)
+ 1: Suggested VM name "win10-appliance"
+ (change with "--vsys 0 --vmname &lt;name&gt;")
+ 2: Suggested VM group "/"
+ (change with "--vsys 0 --group &lt;group&gt;")
+ 3: Suggested VM settings file name "/home/user1/VirtualBox VMs/win10-appliance/win10-appliance.vbox"
+ (change with "--vsys 0 --settingsfile &lt;filename&gt;")
+ 4: Suggested VM base folder "/home/user1/VirtualBox VMs"
+ (change with "--vsys 0 --basefolder &lt;path&gt;")
+ 5: End-user license agreement
+ (display with "--vsys 0 --eula show";
+ accept with "--vsys 0 --eula accept")
+ 6: Number of CPUs: 1
+ (change with "--vsys 0 --cpus &lt;n&gt;")
+ 7: Guest memory: 1024 MB (change with "--vsys 0 --memory &lt;MB&gt;")
+ 8: Sound card (appliance expects "ensoniq1371", can change on import)
+ (disable with "--vsys 0 --unit 5 --ignore")
+ 9: USB controller
+ (disable with "--vsys 0 --unit 6 --ignore")
+10: Network adapter: orig bridged, config 2, extra type=bridged
+11: Floppy
+ (disable with "--vsys 0 --unit 8 --ignore")
+12: SCSI controller, type BusLogic
+ (change with "--vsys 0 --unit 9 --scsitype {BusLogic|LsiLogic}";
+ disable with "--vsys 0 --unit 9 --ignore")
+13: IDE controller, type PIIX4
+ (disable with "--vsys 0 --unit 10 --ignore")
+14: Hard disk image: source image=Windows10.vmdk,
+ target path=/home/user1/disks/Windows10.vmdk, controller=9;channel=0
+ (change controller with "--vsys 0 --unit 11 --controller &lt;id&gt;";
+ disable with "--vsys 0 --unit 11 --ignore")</screen>
+ <para>
+ The dry run output lists and numbers the individual configuration
+ items that are described in the <filename>Windows10.ovf</filename>
+ file. Some of the items include information about how to disable
+ or change the configuration of the item.
+ </para>
+ <para>
+ You can disable many of the items by using the <option>--vsys
+ <replaceable>X</replaceable> --unit <replaceable>Y</replaceable>
+ --ignore</option> options. <replaceable>X</replaceable> is the
+ number of the virtual system. The value is <literal>0</literal>
+ unless the appliance includes several virtual system descriptions.
+ <replaceable>Y</replaceable> is the configuration item number.
+ </para>
+ <para>
+ Item 1 in the example command output specifies the name of the
+ target machine. Items 12 and 13 specify the IDE and SCSI hard disk
+ controllers, respectively.
+ </para>
+ <para>
+ Item 14 indicates the hard disk image and the
+ <option>--controller</option> option specifies the device on which
+ the image resides. The default value is specified in the OVF file.
+ </para>
+ <para>
+ You can combine several items for the same virtual system by
+ specifying the same value for the <option>--vsys</option> option.
+ For example use the following command to import a machine as
+ described in the OVF, exclude the sound card and USB controller
+ and specify that the disk image is connected to the IDE controller
+ instead of the SCSI controller.
+ </para>
+<screen>$ VBoxManage import Windows10.ovf --vsys 0 --unit 8 --ignore \
+ --unit 9 --ignore --unit 14 --controller 13</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-list.xml b/doc/manual/en_US/man_VBoxManage-list.xml
new file mode 100644
index 00000000..10dca66e
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-list.xml
@@ -0,0 +1,523 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage list
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-list" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage list</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-list</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-list</refname>
+ <refpurpose>view system information and VM configuration details</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-list-bridgedifs">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">bridgedifs</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-cloudprofiles">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">cloudprofiles</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-cloudproviders">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">cloudproviders</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-dhcpservers">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">dhcpservers</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-dvds">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">dvds</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-extpacks">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">extpacks</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-list-floppies">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">floppies</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-groups">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">groups</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hddbackends">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hddbackends</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hdds">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hdds</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hostcpuids">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hostcpuids</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hostdvds">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hostdvds</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hostfloppies">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hostfloppies</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hostinfo">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hostinfo</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-hostonlyifs">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">hostonlyifs</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-intnets">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">intnets</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-natnets">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">natnets</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-ostypes">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">ostypes</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-runningvms">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">runningvms</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-screenshotformats">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">screenshotformats</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-systemproperties">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">systemproperties</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-usbfilters">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">usbfilters</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-usbhost">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">usbhost</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-vms">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">vms</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-list-webcams">
+ <command>VBoxManage list</command>
+ <arg>--long</arg>
+ <arg>--sorted</arg>
+ <arg choice="plain">webcams</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage list</command> subcommands enable you to
+ obtain information about the &product-name; software and the VMs
+ that you create.
+ </para>
+ <refsect2 id="vboxmanage-list-common-options">
+ <title>Common Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>--long</option></term>
+ <listitem><para>
+ Shows detailed information about each VM and its
+ configuration. The short form of this option is
+ <option>-l</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--sorted</option></term>
+ <listitem><para>
+ Sorts the list of VM entries alphabetically. The short
+ form of this option is <option>-s</option>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-bridgedifs">
+ <title>List the Bridged Network Interfaces on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list bridgedifs</command> command lists
+ the bridged network interfaces that are currently available on
+ the host system. The output shows detailed configuration
+ information about each interface.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-cloudprofiles">
+ <title>List the Cloud Profiles</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list cloudprofiles</command> command
+ lists the cloud profiles that have been configured. A cloud
+ profile contains settings for a cloud service account.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-cloudproviders">
+ <title>List the Cloud Providers</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list cloudproviders</command> command
+ lists the cloud providers that are supported by &product-name;.
+ Oracle Cloud Infrastructure is an example of a cloud provider.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-dhcpservers">
+ <title>List the DHCP Servers That Are Available on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list dhcpservers</command> command lists
+ the DHCP servers that are currently available on the host
+ system. The output shows detailed configuration information
+ about each DHCP server.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-dvds">
+ <title>List the DVD Virtual Disk Images</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list dvds</command> command shows
+ information about the DVD virtual disk images that are currently
+ in use by the &product-name; software. For each image, the
+ output shows all the settings, the UUIDs associated with the
+ image by &product-name;, and all files associated with the
+ image.
+ </para>
+ <para>
+ This command performs the same function as the Virtual Media
+ Manager.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-extpacks">
+ <title>List the Installed &product-name; Extension Packs</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list extpacks</command> command shows
+ all &product-name; extension packs that are currently installed.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-floppies">
+ <title>List the Floppy Disk Virtual Disk Images</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list floppies</command> command shows
+ information about the floppy disk images that are currently in
+ use by the &product-name; software. For each image, the output
+ shows all the settings, the UUIDs associated with the image by
+ &product-name;, and all files associated with the image.
+ </para>
+ <para>
+ This command performs the same function as the Virtual Media
+ Manager.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-groups">
+ <title>List Information about Virtual Machine Groups</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list groups</command> command shows
+ detailed information about VM groups.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hddbackends">
+ <title>List the Virtual Disk Backends</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hddbackends</command> command lists
+ all known virtual disk backends of the &product-name; software.
+ For each such format, such as VDI, VMDK, or RAW, this command
+ lists the backend's capabilities and configuration.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hdds">
+ <title>List the Hard Disk Virtual Disk Images</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hdds</command> command shows
+ information about the hard disk virtual disk images that are
+ currently in use by the &product-name; software. For each image,
+ the output shows all the settings, the UUIDs associated with the
+ image by &product-name;, and all files associated with the
+ image.
+ </para>
+ <para>
+ This command performs the same function as the Virtual Media
+ Manager.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hostcpuids">
+ <title>List the CPUID Information for the Host System CPUs</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hostcpuids</command> command lists
+ CPUID information for each CPU on the host system. Use this
+ information to perform a more fine grained analyis of the host
+ system's virtualization capabilities.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hostdvds">
+ <title>List the DVD Interfaces on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hostdvds</command> command lists
+ the DVD interfaces on the host system. Each DVD entry includes
+ the name used to access them from within &product-name;.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hostfloppies">
+ <title>List the Floppy Disk Interfaces on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hostfloppies</command> command
+ lists the floppy disk interfaces on the host system. Each floppy
+ disk entry includes the name used to access them from within
+ &product-name;.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hostinfo">
+ <title>List Information About the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hostinfo</command> command shows
+ information about the host system. The output includes
+ information about the CPUs, memory, and the OS version.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-hostonlyifs">
+ <title>List the Host-Only Network Interfaces on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list hostonlyifs</command> command lists
+ the host-only network interfaces that are currently available on
+ the host system. The output shows detailed configuration
+ information about each interface.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-intnets">
+ <title>List Internal Networks</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list intnets</command> command shows
+ information about the internal networks.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-natnets">
+ <title>List the NAT Network Interfaces on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list natnets</command> command lists the
+ NAT network interfaces that are currently available on the host
+ system.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-ostypes">
+ <title>List the Guest Operating Systems</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list ostypes</command> command lists all
+ guest operating systems (OSes) that are known to &product-name;.
+ Each OS entry includes an identifier, a description, a family
+ identifier, a family description, and whether the OS has 64-bit
+ support.
+ </para>
+ <para>
+ You can use these identifiers with the <command>VBoxManage
+ modifyvm</command> command.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-runningvms">
+ <title>List the Running Virtual Machines</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list runningvms</command> command lists
+ all virtual machines (VMs) that are currently running. By
+ default this displays a compact list that shows the name and
+ Universally Unique Identifier (UUID) of each VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-screenshotformats">
+ <title>List the Available Screen Shot Formats</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list screenshotformats</command> command
+ shows the list of available screen shot formats.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-systemproperties">
+ <title>List System Properties</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list systemproperties</command> command
+ shows some global &product-name; settings, such as minimum and
+ maximum guest RAM, virtual hard disk size, folder settings, and
+ the current authentication library in use.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-usbfilters">
+ <title>List the Registered Global USB Filters</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list usbfilters</command> command lists
+ all global USB filters registered with &product-name; and
+ displays the filter parameters. Global USB filters are for
+ devices which are accessible to all virtual machines.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-usbhost">
+ <title>List the USB Devices on the Host System</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list usbhost</command> command shows
+ information about the USB devices that are attached to the host
+ system. The output includes information that you can use to
+ construct USB filters and indicates whether the device is
+ currently in use by the host system.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-vms">
+ <title>List Virtual Machines</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list vms</command> command lists all
+ virtual machines (VMs) that are currently registered with
+ &product-name;. By default this command displays a compact list
+ that shows the name and UUID of each VM.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-list-webcams">
+ <title>List the Webcams Attached to a Running Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage list webcams</command> command shows the
+ list of webcams that are attached to the running VM.
+ </para>
+ <para>
+ The output is a list of absolute paths or aliases that are used
+ to attach the webcams to the VM by using the <command>VBoxManage
+ webcam attach</command> command.
+ </para>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command lists the VM groups configured for
+ &product-name;.
+ </para>
+<screen>$ VBoxManage list groups
+"/Linux-VMs"
+"/Windows-VMs"</screen>
+ <para>
+ The following command lists the VMs that are currently running.
+ </para>
+<screen>$ VBoxManage list runningvms
+"ol7" {<replaceable>ol7-UUID</replaceable>}
+"win8" {<replaceable>win8-UUID</replaceable>}</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-mediumio.xml b/doc/manual/en_US/man_VBoxManage-mediumio.xml
new file mode 100644
index 00000000..8693c6b0
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-mediumio.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage mediumio
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-mediumio" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage mediumio</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-mediumio</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-mediumio</refname>
+ <refpurpose>medium content access</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-mediumio-formatfat"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage mediumio</command>
+ <group choice="req">
+ <arg choice="plain">--disk=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--dvd=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--floppy=<replaceable>uuid|filename</replaceable></arg>
+ </group>
+ <arg>--password-file=<replaceable>-|filename</replaceable></arg>
+ <arg choice="plain">formatfat</arg>
+ <arg>--quick</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-mediumio-cat">
+ <command>VBoxManage mediumio</command>
+ <group choice="req">
+ <arg choice="plain">--disk=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--dvd=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--floppy=<replaceable>uuid|filename</replaceable></arg>
+ </group>
+ <arg>--password-file=<replaceable>-|filename</replaceable></arg>
+ <arg choice="plain">cat</arg>
+ <arg>--hex</arg>
+ <arg>--offset=<replaceable>byte-offset</replaceable></arg>
+ <arg>--size=<replaceable>bytes</replaceable></arg>
+ <arg>--output=<replaceable>-|filename</replaceable></arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-mediumio-stream">
+ <command>VBoxManage mediumio</command>
+ <group choice="req">
+ <arg choice="plain">--disk=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--dvd=<replaceable>uuid|filename</replaceable></arg>
+ <arg choice="plain">--floppy=<replaceable>uuid|filename</replaceable></arg>
+ </group>
+ <arg>--password-file=<replaceable>-|filename</replaceable></arg>
+ <arg choice="plain">stream</arg>
+ <arg>--format=<replaceable>image-format</replaceable></arg>
+ <arg>--variant=<replaceable>image-variant</replaceable></arg>
+ <arg>--output=<replaceable>-|filename</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-mediumio-common-options">
+ <title>Common options</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>The subcommands of <command>mediumio</command> all operate on a medium which need to be specified, optionally
+ with an encryption password. The following common options can be placed before or after the sub-command:</para>
+ <variablelist>
+ <varlistentry>
+ <term>--disk=<replaceable>uuid|filename</replaceable></term>
+ <listitem><para>Either the UUID or filename of a harddisk image, e.g. VDI, VMDK, VHD, ++.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--dvd=<replaceable>uuid|filename</replaceable></term>
+ <listitem><para>Either the UUID or filename of a DVD image, e.g. ISO, DMG, CUE.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--floppy=<replaceable>uuid|filename</replaceable></term>
+ <listitem><para>Either the UUID or filename of a floppy image, e.g. IMG.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--password-file=<replaceable>-|filename</replaceable></term>
+ <listitem><para>The name of a file containing the medium encryption password. If <option>-</option>
+ is specified, the password will be read from stdin. </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-mediumio-formatfat">
+ <title>mediumio formatfat</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Formats a floppy medium with the FAT file system. This will erase the
+ content of the medium.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--quick</option></term><listitem><para>Quickformat the medium.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-mediumio-cat">
+ <title>mediumio cat</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Dumps the medium content to stdout or the specified file.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--hex</option></term><listitem><para>Dump as hex bytes.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--offset</option></term><listitem><para>The byte offset in the medium to start.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--size</option></term><listitem><para>The number of bytes to dump.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--output</option></term>
+ <listitem><para>The output filename. As usual <option>-</option> is take to mean stdout.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-mediumio-stream">
+ <title>mediumio stream</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Converts the medium to a streamable format and dumps it to the given output.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--format</option></term><listitem><para>The format of the destination image.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--variant</option></term><listitem><para>The medium variant for the destination.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--output</option></term>
+ <listitem><para>The output filename. As usual <option>-</option> is take to mean stdout.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ </refsect1>
+
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-mediumproperty.xml b/doc/manual/en_US/man_VBoxManage-mediumproperty.xml
new file mode 100644
index 00000000..726be99f
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-mediumproperty.xml
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage mediumproperty
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-mediumproperty" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage mediumproperty</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-mediumproperty</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-mediumproperty</refname>
+ <refpurpose>manage medium properties</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-mediumproperty-set">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage mediumproperty</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <arg choice="plain">set</arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ <arg choice="req"><replaceable>property-value</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-mediumproperty-get">
+ <command>VBoxManage mediumproperty</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <arg choice="plain">get</arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-mediumproperty-delete">
+ <command>VBoxManage mediumproperty</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <arg choice="plain">delete</arg>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage mediumproperty</command> command enables
+ you to set, retrieve, or delete a medium property.
+ </para>
+ <refsect2 id="vboxmanage-mediumproperty-set">
+ <title>Set a Medium Property</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage mediumproperty set</command> command
+ enables you to set a medium property.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>disk | dvd | floppy</literal></term>
+ <listitem><para>
+ Specifies the type of medium. Valid values are
+ <literal>disk</literal> (hard drive),
+ <literal>dvd</literal>, or <literal>floppy</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>property-value</replaceable></term>
+ <listitem><para>
+ Specifies the value of the specified property.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-mediumproperty-get">
+ <title>Retrieve a Medium Property Value</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage mediumproperty get</command> command
+ enables you to retrieve the value of a medium property.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>disk | dvd | floppy</literal></term>
+ <listitem><para>
+ Specifies the type of medium. Valid values are
+ <literal>disk</literal> (hard drive),
+ <literal>dvd</literal>, or <literal>floppy</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-mediumproperty-delete">
+ <title>Delete a Medium Property</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage mediumproperty delete</command> command
+ enables you to delete a medium property.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>disk | dvd | floppy</literal></term>
+ <listitem><para>
+ Specifies the type of medium. Valid values are
+ <literal>disk</literal> (hard drive),
+ <literal>dvd</literal>, or <literal>floppy</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of the medium or image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>property-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the property.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command sets the property called
+ <literal>prop1</literal> to <literal>val1</literal> for the
+ <filename>ol7.vdi</filename> disk image.
+ </para>
+<screen>$ VBoxManage mediumproperty disk set ol7.vdi prop1 val1</screen>
+ <para>
+ The following command gets the value of the property called
+ <literal>prop1</literal> for the <filename>ol7.vdi</filename> disk
+ image.
+ </para>
+<screen>$ VBoxManage mediumproperty disk get ol7.vdi prop1</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-metrics.xml b/doc/manual/en_US/man_VBoxManage-metrics.xml
new file mode 100644
index 00000000..a60d0ff2
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-metrics.xml
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage metrics
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-metrics" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage metrics</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-metrics</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-metrics</refname>
+ <refpurpose>monitor system resource usage</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-collect">
+ <command>VBoxManage metrics collect</command>
+ <arg>--detach</arg>
+ <arg>--list</arg>
+ <arg>--period=<replaceable>seconds</replaceable></arg>
+ <arg>--samples=<replaceable>count</replaceable></arg>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-disable">
+ <command>VBoxManage metrics disable</command>
+ <arg>--list</arg>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-enable">
+ <command>VBoxManage metrics enable</command>
+ <arg>--list</arg>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-list">
+ <command>VBoxManage metrics list</command>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-query">
+ <command>VBoxManage metrics query</command>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-metrics-setup">
+ <command>VBoxManage metrics setup</command>
+ <arg>--list</arg>
+ <arg>--period <replaceable>seconds</replaceable></arg>
+ <arg>--samples <replaceable>count</replaceable></arg>
+ <group>
+ <arg choice="plain">*</arg>
+ <arg choice="plain">host</arg>
+ <arg choice="plain"><replaceable>vmname</replaceable> <arg><replaceable>metric-list</replaceable></arg></arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage metrics</command> command enables you to
+ monitor system resource usage for the host system and for virtual
+ machines (VMs). For example, you can monitor particular metrics,
+ such as the percentage of time CPUs spend executing in user mode
+ (<literal>CPU/Load/User</literal>) over a specified sampling
+ period.
+ </para>
+ <para>
+ While it runs, the <command>VBoxSVC</command> process collects and
+ saves the specified metric data internally. The
+ <command>VBoxSVC</command> process runs until shortly after you
+ close all VMs and frontends. Use the <command>VBoxManage metrics
+ query</command> command to retrieve data at any time.
+ </para>
+ <para>
+ By default, metrics are not collected unless you run the
+ <command>VBoxManage metrics setup</command> command to specify a
+ sampling interval in seconds and the number of metrics to save.
+ </para>
+ <para>
+ Note that you can enable metric collection only for started VMs.
+ Collected data and collection settings for a VM are discarded when
+ the VM shuts down.
+ </para>
+ <refsect2>
+ <title>Metrics</title>
+ <para>
+ The host and VMs have different sets of associated metrics,
+ which you can view by running the <command>VBoxManage metrics
+ list</command> command.
+ </para>
+ <para>
+ Each metric is represented as a string that is composed of a
+ category and a metric. Optionally, the metric string can include
+ any of the following: a submetric, a sub-submetric, and an
+ aggregate. The metric string has the following format:
+ </para>
+<screen><replaceable>category</replaceable>/<replaceable>metric</replaceable>[/<replaceable>submetric</replaceable>[/<replaceable>sub-submetric</replaceable>]][:<replaceable>aggregate</replaceable>]</screen>
+ <itemizedlist>
+ <listitem><para>
+ <replaceable>category</replaceable> is the resource type,
+ such as <literal>CPU</literal>, <literal>RAM</literal>,
+ <literal>FS</literal>, <literal>Net</literal>.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>metric</replaceable> is a measurement type that
+ is associated with the resource category. For example, the
+ <literal>Load</literal> and <literal>MHz</literal> metrics
+ are associated with the <literal>CPU</literal> resource
+ category.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>submetric</replaceable> is an optional
+ measurement type that is associated with the metric. For
+ example, the <literal>User</literal>,
+ <literal>Kernel</literal>, and <literal>Idle</literal>
+ submetrics are associated with the <literal>Load</literal>
+ metric.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>sub-submetric</replaceable> is an optional
+ measurement type that is associated with the submetric. For
+ example, the <literal>Rx</literal> and <literal>Tx</literal>
+ sub-submetrics are associated with the
+ <literal>Rate</literal> submetric of the
+ <literal>Net</literal> resource category. The associated
+ metric is the network interface.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>aggregate</replaceable> is an optional function
+ to provide minimum, maximum, and average measurements for a
+ resource category. For example, the
+ <literal>RAM/Usage/Free:min</literal> metric represents the
+ minimum amount of available memory found in all saved data
+ on the host system.
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ By default, the <command>VBoxManage metrics</command> commands
+ operate on the host system and all VMs, and report on all
+ metrics. You can optionally limit these commands to operate on
+ the host system or on a particular VM, and report on a list of
+ one or more metrics.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-common-options">
+ <title>Common Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><literal>*</literal> | <literal>host</literal> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the component on which to operate. By default,
+ this command operates on the host system and all running
+ VMs.
+ </para><para>
+ If you specify <literal>host</literal>, the
+ <command>VBoxManage metrics</command> command operates on
+ the host system only. If you specify an asterisk
+ (<literal>*</literal>), the command operates on all VMs.
+ If you specify the name of a VM, the <command>VBoxManage
+ metrics</command> command operates on that VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>metric-list</replaceable></term>
+ <listitem><para>
+ Specifies a comma-separated list of one or more metrics.
+ </para><para>
+ The form of the metric must include the
+ <replaceable>category</replaceable> and
+ <replaceable>metric</replaceable> part of the metric
+ string separated by a slash.
+ </para><para>
+ Note that the <command>VBoxManage metrics enable</command>
+ and <command>VBoxManage metrics disable</command> commands
+ require that you specify metrics as parameters. The
+ metrics must include only the resource category and metric
+ part, such as <literal>CPU/Load</literal> and
+ <literal>RAM/Usage</literal>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-collect">
+ <title>Collect Data Metrics</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics collect</command> command
+ collects and outputs data periodically until you stop the
+ process by pressing Ctrl+C.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--detach</option></term>
+ <listitem><para>
+ Disables the collection of metric data, so no data is
+ output. Using this option is the same as running the
+ <command>VBoxManage metrics setup</command> command.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--list</option></term>
+ <listitem><para>
+ Shows which metrics match the specified filter.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--period=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of seconds to wait between collecting
+ metric data samples. The default value is 1.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--samples=<replaceable>count</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of metric data samples to save. To
+ view the saved data, use the <command>VBoxManage metrics
+ query</command> command. The default value is 1.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-disable">
+ <title>Disable Metric Data Collection</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics disable</command> command
+ suspends data collection. This action does not affect the data
+ collection properties or the collected data. Note that
+ specifying a submetric in the metric list does not disable its
+ underlying metrics.
+ </para>
+ <para>
+ Note that the <command>VBoxManage metrics disable</command>
+ command requires that you specify metrics as parameters. The
+ metrics must include only the resource category and metric part,
+ such as <literal>CPU/Load</literal> and
+ <literal>RAM/Usage</literal>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--list</option></term>
+ <listitem><para>
+ Shows whether the command succeeded as expected.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-enable">
+ <title>Enable Metric Data Collection</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics enable</command> command resumes
+ data collection after it has been suspended by using the
+ <command>VBoxManage metrics disable</command> command. Note that
+ specifying a submetric in the metric list does not enable its
+ underlying metrics.
+ </para>
+ <para>
+ Unlike the <command>VBoxManage metrics setup</command> command,
+ the <command>VBoxManage metrics enable</command> command does
+ not discard previously collected samples for the specified set
+ of objects and metrics.
+ </para>
+ <para>
+ Note that the <command>VBoxManage metrics enable</command>
+ command requires that you specify metrics as parameters. The
+ metrics must include only the resource category and metric part,
+ such as <literal>CPU/Load</literal> and
+ <literal>RAM/Usage</literal>.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--list</option></term>
+ <listitem><para>
+ Shows whether the command succeeded as expected.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-list">
+ <title>List Metric Values</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics list</command> command shows the
+ metrics that are currently available. Note that VM-specific
+ metrics are shown only when that VM is running.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-query">
+ <title>List Saved Metric Data</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics query</command> command
+ retrieves and shows the saved metric data.
+ </para>
+ <para>
+ Note that the <command>VBoxManage metrics query</command>
+ command does not remove or flush saved data but older samples
+ are replaced by newer samples over time.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-metrics-setup">
+ <title>Configure Metric-Gathering Properties</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage metrics setup</command> command
+ configures metric-gathering properties.
+ </para>
+ <para>
+ Note that this command discards any previously collected samples
+ for the specified set of objects and metrics. To enable or
+ disable metrics collection without discarding the data, use the
+ <command>VBoxManage metrics enable</command> command or the
+ <command>VBoxManage metrics disable</command> command,
+ respectively.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--list</option></term>
+ <listitem><para>
+ Shows which metrics have been modified as a result of the
+ command execution.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--period=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of seconds to wait between collecting
+ metric data samples. The default value is 1.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--samples=<replaceable>count</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of metric data samples to save. To
+ view the saved data, use the <command>VBoxManage metrics
+ query</command> command. The default value is 1.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example command enables the collection of host
+ processor and memory usage metrics every second. The
+ <option>--samples</option> option saves the five latest samples.
+ </para>
+<screen>$ VBoxManage metrics setup --period 1 --samples 5 host CPU/Load,RAM/Usage</screen>
+ <para>
+ The following command lists the metrics that are available to the
+ host system and VMs:
+ </para>
+<screen>$ VBoxManage metrics list</screen>
+ <para>
+ Note that the host system and VMs have different sets of metrics.
+ </para>
+ <para>
+ The following example shows how to query metric data about the CPU
+ time spent in user and kernel modes for the
+ <literal>test</literal> VM:
+ </para>
+<screen>$ VBoxManage metrics query test CPU/Load/User,CPU/Load/Kernel</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-modifymedium.xml b/doc/manual/en_US/man_VBoxManage-modifymedium.xml
new file mode 100644
index 00000000..97b0e1ef
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-modifymedium.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage modifymedium
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-modifymedium" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage modifymedium</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-modifymedium</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-modifymedium</refname>
+ <refpurpose>change the characteristics of an existing disk image</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-modifymedium">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage modifymedium</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ <arg>--autoreset=on | off</arg>
+ <arg>--compact</arg>
+ <arg>--description=<replaceable>description</replaceable></arg>
+ <arg>--move=<replaceable>pathname</replaceable></arg>
+ <arg>--property=<replaceable>name</replaceable>=[<replaceable>value</replaceable>]</arg>
+ <arg>--resize=<replaceable>megabytes</replaceable> | --resizebyte=<replaceable>bytes</replaceable></arg>
+ <arg>--setlocation=<replaceable>pathname</replaceable></arg>
+ <arg>--type=normal | writethrough | immutable | shareable | readonly | multiattach</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage modifymedium</command> command enables you
+ to change the characteristics of an existing disk image.
+ </para>
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, you
+ can use the <command>modifyvdi</command> and
+ <command>modifyhd</command> commands.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term>disk | dvd | floppy</term>
+ <listitem><para>
+ Specifies the media type of the image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or path
+ name of the disk image on the host file system. You can
+ specify the UUID only if the medium is registered. Use the
+ <command>VBoxManage list hdds</command> command to list the
+ registered images. You can specfy an absolute or relative
+ path to the medium.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--autoreset=on | off</option></term>
+ <listitem><para>
+ Specifies whether to automatically reset an immutable hard
+ disk on every virtual machine (VM) startup. This option is
+ only for immutable hard disks and the default value is
+ <literal>on</literal>. See <xref linkend="hdimagewrites" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--compact</option></term>
+ <listitem><para>
+ Compresses disk images by removing blocks that contain only
+ zeroes. This option shrinks a dynamically allocated image
+ and reduces the <emphasis>physical</emphasis> size of the
+ image without affecting the logical size of the virtual
+ disk.
+ </para><para>
+ You can use this option for base images and for differencing
+ images that are created as part of a snapshot.
+ </para><note>
+ <para>
+ Before you compress the image, you must use a suitable
+ software tool to zero out free space in the guest system.
+ For example:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">Windows guests.</emphasis> Run
+ the <command>sdelete -z</command> command.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Linux guests.</emphasis> Use the
+ <command>zerofree</command> utility, which supports
+ <literal>ext2</literal> and <literal>ext3</literal>
+ file systems.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Mac OS X guests.</emphasis> Use
+ the <command>diskutil secureErase freespace 0
+ /</command> command.
+ </para></listitem>
+ </itemizedlist>
+ </note><para>
+ Note that you can only use this option to compress VDI
+ images. To compress non-VID images, you can zero out free
+ blocks and then clone the disk to any other dynamically
+ allocated format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--description=<replaceable>description</replaceable></option></term>
+ <listitem><para>
+ Specifies a text description of the medium.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--move=<replaceable>pathname</replaceable></option></term>
+ <listitem><para>
+ Specifies a relative or absolute path to a medium on the
+ host system. Use this option to relocate a medium to a
+ different location on the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--property=<replaceable>name</replaceable>=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies a property name and value for the medium.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--resize=<replaceable>size</replaceable></option></term>
+ <listitem><para>
+ Specifes the new capacity of an existing image in MB. You
+ can use this option only to expand the capacity of an image.
+ You can cannot shrink the capacity of an image.
+ </para><para>
+ Note that you can resize only dynamically allocated disk
+ images that use the VDI and VHD formats. This option adjusts
+ the <emphasis>logical</emphasis> size of a virtual disk and
+ has only a minor affect on the physical size.
+ </para><para>
+ For example, if your dynamically allocated 10 GB disk is
+ full, you can use the <option>--resize 15360</option> option
+ to increase the capacity of the existing disk to 15 GB
+ (15,360 MB). This operation enables you to avoid having to
+ create a new image and copy all data from within a VM.
+ </para><para>
+ Note that using this option only changes the capacity of the
+ drive. So, you might need to subsequently use a partition
+ management tool in the guest to adjust the main partition to
+ fill the drive.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--resizebyte=<replaceable>size</replaceable></option></term>
+ <listitem><para>
+ Specifes the new capacity of an existing image in bytes.
+ This option is similar to the <option>--resize</option>
+ option, but you specify the size in bytes instead of
+ megabytes.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--setlocation=<replaceable>pathname</replaceable></option></term>
+ <listitem><para>
+ Specifies the new location of the medium on the host system
+ after the medium has been moved. The path name can be
+ relative to the current directory or be absolute to the
+ root.
+ </para><para>
+ Note that the <command>VBoxManage modifymedium</command>
+ command does not perform any sanity checks on the path name
+ you specify. Ensure that the path name is valid.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--type</option></term>
+ <listitem><para>
+ Specifies the new mode type of an existing image. Valid
+ values are <literal>normal</literal>,
+ <literal>immutable</literal>,
+ <literal>writethrough</literal>,
+ <literal>multi-attach</literal>,
+ <literal>shareable</literal>, and
+ <literal>readonly</literal>. For descriptions of these mode
+ types, see <xref linkend="hdimagewrites" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command modifies the description for the disk image
+ file called <filename>disk01.vdi</filename>.
+ </para>
+<screen>$ VBoxManage modifymedium disk disk01.vdi --description "Oracle Linux 7 image"</screen>
+ <para>
+ The following command modifies the write mode for the disk image
+ file called <filename>disk01.vdi</filename>.
+ </para>
+<screen>$ VBoxManage modifymedium disk disk01.vdi --type writethrough</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-modifyvm.xml b/doc/manual/en_US/man_VBoxManage-modifyvm.xml
new file mode 100644
index 00000000..322dcf44
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-modifyvm.xml
@@ -0,0 +1,2484 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage modifyvm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-modifyvm" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage modifyvm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-modifyvm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-modifyvm</refname>
+ <refpurpose>Change settings for a virtual machine that is stopped</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-general">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--name=<replaceable>name</replaceable></arg>
+ <arg>--groups= <arg choice="plain"><replaceable>group</replaceable> [,<replaceable>group</replaceable>...]</arg></arg>
+ <arg>--description=<replaceable>description</replaceable></arg>
+ <arg>--ostype=<replaceable>OS-type</replaceable></arg>
+ <arg>--iconfile=<replaceable>filename</replaceable></arg>
+ <arg>--memory=<replaceable>size-in-MB</replaceable></arg>
+ <arg>--pagefusion=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vram=<replaceable>size-in-MB</replaceable></arg>
+ <arg>--acpi=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--pciattach=<replaceable>host-PCI-address</replaceable></arg>
+ <arg>--pcidetach=<replaceable>host-PCI-address</replaceable></arg>
+ <arg>--ioapic=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--hardwareuuid=<replaceable>UUID</replaceable></arg>
+ <arg>--cpus=<replaceable>CPU-count</replaceable></arg>
+ <arg>--cpuhotplug=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--plugcpu=<replaceable>CPU-ID</replaceable></arg>
+ <arg>--unplugcpu=<replaceable>CPU-ID</replaceable></arg>
+ <arg>--cpuexecutioncap=<replaceable>number</replaceable></arg>
+ <arg>--pae=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--longmode=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--ibpb-on-vm-exit=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--ibpb-on-vm-entry=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--spec-ctrl=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--l1d-flush-on-sched=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--l1d-flush-on-vm-entry=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--mds-clear-on-sched=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--mds-clear-on-vm-entry=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--cpu-profile=<group choice="plain">
+ <arg choice="plain">host</arg>
+ <arg choice="plain">Intel 8086</arg>
+ <arg choice="plain">Intel 80286</arg>
+ <arg choice="plain">Intel 80386</arg>
+ </group></arg>
+ <arg>--hpet=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--hwvirtex=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--triplefaultreset=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--apic=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--x2apic=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--paravirtprovider=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">default</arg>
+ <arg choice="plain">legacy</arg>
+ <arg choice="plain">minimal</arg>
+ <arg choice="plain">hyperv</arg>
+ <arg choice="plain">kvm</arg>
+ </group></arg>
+ <arg>--paravirtdebug= <arg choice="plain"><replaceable>key</replaceable>=<replaceable>value</replaceable> [,<replaceable>key</replaceable>=<replaceable>value</replaceable>...]</arg></arg>
+ <arg>--nestedpaging=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--largepages=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vtxvpid=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vtxux=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--accelerate3d=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--accelerate2dvideo=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--chipset=<group choice="plain">
+ <arg choice="plain">ich9</arg>
+ <arg choice="plain">piix3</arg>
+ </group></arg>
+ <arg>--bioslogofadein=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--bioslogofadeout=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--bioslogodisplaytime=<replaceable>msec</replaceable></arg>
+ <arg>--bioslogoimagepath=<replaceable>pathname</replaceable></arg>
+ <arg>--biosbootmenu=<group choice="plain">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">menuonly</arg>
+ <arg choice="plain">messageandmenu</arg>
+ </group></arg>
+ <arg>--biosapic=<group choice="plain">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">apic</arg>
+ <arg choice="plain">x2apic</arg>
+ </group></arg>
+ <arg>--biossystemtimeoffset=<replaceable>msec</replaceable></arg>
+ <arg>--biospxedebug=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--system-uuid-le=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--boot<replaceable>X</replaceable>=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">floppy</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">net</arg>
+ </group></arg>
+ <arg>--rtcuseutc=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--graphicscontroller=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">vboxvga</arg>
+ <arg choice="plain">vmsvga</arg>
+ <arg choice="plain">vboxsvga</arg>
+ </group></arg>
+ <arg>--snapshotfolder=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain"><replaceable>pathname</replaceable></arg>
+ </group></arg>
+ <arg>--firmware=<group choice="plain">
+ <arg choice="plain">bios</arg>
+ <arg choice="plain">efi</arg>
+ <arg choice="plain">efi32</arg>
+ <arg choice="plain">efi64</arg>
+ </group></arg>
+ <arg>--guestmemoryballoon=<replaceable>size-in-MB</replaceable></arg>
+ <arg>--defaultfrontend=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain"><replaceable>name</replaceable></arg>
+ </group></arg>
+ <arg>--nested-hw-virt=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vm-process-priority=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain">flat</arg>
+ <arg choice="plain">low</arg>
+ <arg choice="plain">normal</arg>
+ <arg choice="plain">high</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-networking">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--nic<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">null</arg>
+ <arg choice="plain">nat</arg>
+ <arg choice="plain">bridged</arg>
+ <arg choice="plain">intnet</arg>
+ <arg choice="plain">hostonly</arg>
+ <arg choice="plain">generic</arg>
+ <arg choice="plain">natnetwork</arg>
+ </group></arg>
+ <arg>--nictype<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">Am79C970A</arg>
+ <arg choice="plain">Am79C973</arg>
+ <arg choice="plain">82540EM</arg>
+ <arg choice="plain">82543GC</arg>
+ <arg choice="plain">82545EM</arg>
+ <arg choice="plain">virtio</arg>
+ </group></arg>
+ <arg>--cableconnected<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--nictrace<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--nictracefile<replaceable>N</replaceable>=<replaceable>filename</replaceable></arg>
+ <arg>--nicproperty<replaceable>N</replaceable>=<replaceable>name</replaceable>= <arg><replaceable>value</replaceable></arg></arg>
+ <arg>--nicspeed<replaceable>N</replaceable>=<replaceable>kbps</replaceable></arg>
+ <arg>--nicbootprio<replaceable>N</replaceable>=<replaceable>priority</replaceable></arg>
+ <arg>--nicpromisc<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">deny</arg>
+ <arg choice="plain">allow-vms</arg>
+ <arg choice="plain">allow-all</arg>
+ </group></arg>
+ <arg>--nicbandwidthgroup<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain"><replaceable>name</replaceable></arg>
+ </group></arg>
+ <arg>--bridgeadapter<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain"><replaceable>device-name</replaceable></arg>
+ </group></arg>
+ <arg>--hostonlyadapter<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain"><replaceable>device-name</replaceable></arg>
+ </group></arg>
+ <arg>--intnet<replaceable>N</replaceable>=<replaceable>network-name</replaceable></arg>
+ <arg>--nat-network<replaceable>N</replaceable>=<replaceable>network-name</replaceable></arg>
+ <arg>--nicgenericdrv<replaceable>N</replaceable>=<replaceable>driver-name</replaceable></arg>
+ <arg>--macaddress<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">auto</arg>
+ <arg choice="plain"><replaceable>MAC-address</replaceable></arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-networking-nat">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--natnet<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain"><replaceable>network</replaceable></arg>
+ <arg choice="plain">default</arg>
+ </group></arg>
+ <arg>--natpf<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">[<replaceable>rule-name</replaceable>],tcp</arg>
+ <arg choice="plain">udp,[<replaceable>host-IP</replaceable>],<replaceable>hostport</replaceable>,[<replaceable>guest-IP</replaceable>],<replaceable>guestport</replaceable></arg>
+ </group></arg>
+ <arg>--natpf<replaceable>N</replaceable>=delete=<replaceable>rule-name</replaceable></arg>
+ <arg>--nattftpprefix<replaceable>N</replaceable>=<replaceable>prefix</replaceable></arg>
+ <arg>--nattftpfile<replaceable>N</replaceable>=<replaceable>filename</replaceable></arg>
+ <arg>--nattftpserver<replaceable>N</replaceable>=<replaceable>IP-address</replaceable></arg>
+ <arg>--natbindip<replaceable>N</replaceable>=<replaceable>IP-address</replaceable></arg>
+ <arg>--natdnspassdomain<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--natdnsproxy<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--natdnshostresolver<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--natsettings<replaceable>N</replaceable>=[<replaceable>mtu</replaceable>],[<replaceable>socksnd</replaceable>],[<replaceable>sockrcv</replaceable>],[<replaceable>tcpsnd</replaceable>],[<replaceable>tcprcv</replaceable>]</arg>
+ <arg>--nataliasmode<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain">[log],[proxyonly],[sameports]</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-other-hardware">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--mouse=<group choice="plain">
+ <arg choice="plain">ps2</arg>
+ <arg choice="plain">usb</arg>
+ <arg choice="plain">usbtablet</arg>
+ <arg choice="plain">usbmultitouch</arg>
+ </group></arg>
+ <arg>--keyboard=<group choice="plain">
+ <arg choice="plain">ps2</arg>
+ <arg choice="plain">usb</arg>
+ </group></arg>
+ <arg>--uart<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">off</arg>
+ <arg choice="plain"><replaceable>IO-base</replaceable> <replaceable>IRQ</replaceable></arg>
+ </group></arg>
+ <arg>--uartmode<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">disconnected</arg>
+ <arg choice="plain">server <replaceable>pipe</replaceable></arg>
+ <arg choice="plain">client <replaceable>pipe</replaceable></arg>
+ <arg choice="plain">tcpserver <replaceable>port</replaceable></arg>
+ <arg choice="plain">tcpclient <replaceable>hostname</replaceable>:<replaceable>port</replaceable></arg>
+ <arg choice="plain">file <replaceable>filename</replaceable></arg>
+ <arg choice="plain"><replaceable>device-name</replaceable></arg>
+ </group></arg>
+ <arg>--uarttype<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">16450</arg>
+ <arg choice="plain">16550A</arg>
+ <arg choice="plain">16750</arg>
+ </group></arg>
+ <arg>--lptmode<replaceable>N</replaceable>=<replaceable>device-name</replaceable></arg>
+ <arg>--lpt<replaceable>N</replaceable>=<group choice="plain">
+ <arg choice="plain">off</arg>
+ <arg choice="plain"><replaceable>IO-base</replaceable> <replaceable>IRQ</replaceable></arg>
+ </group></arg>
+ <arg>--audio=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">null</arg>
+ <arg choice="plain">dsound</arg>
+ <arg choice="plain">oss</arg>
+ <arg choice="plain">alsa</arg>
+ <arg choice="plain">pulse</arg>
+ <arg choice="plain">coreaudio</arg>
+ </group></arg>
+ <arg>--audiocontroller=<group choice="plain">
+ <arg choice="plain">ac97</arg>
+ <arg choice="plain">hda</arg>
+ <arg choice="plain">sb16</arg>
+ </group></arg>
+ <arg>--audiocodec=<group choice="plain">
+ <arg choice="plain">stac9700</arg>
+ <arg choice="plain">ad1980</arg>
+ <arg choice="plain">stac9221</arg>
+ <arg choice="plain">sb16</arg>
+ </group></arg>
+ <arg>--audioin=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--audioout=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--clipboard=<group choice="plain">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">hosttoguest</arg>
+ <arg choice="plain">guesttohost</arg>
+ <arg choice="plain">bidirectional</arg>
+ </group></arg>
+ <arg>--draganddrop=<group choice="plain">
+ <arg choice="plain">disabled</arg>
+ <arg choice="plain">hosttoguest</arg>
+ <arg choice="plain">guesttohost</arg>
+ <arg choice="plain">bidirectional</arg>
+ </group></arg>
+ <arg>--monitorcount=<replaceable>number</replaceable></arg>
+ <arg>--usbehci=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--usbohci=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--usbxhci=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--usbrename=<replaceable>old-name</replaceable> <replaceable>new-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-recording">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--recording=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--recordingscreens=<group choice="plain">
+ <arg choice="plain">all</arg>
+ <arg choice="plain"><replaceable>screen-ID</replaceable> [<replaceable>screen-ID</replaceable>...]</arg>
+ </group></arg>
+ <arg>--recordingfile=<replaceable>filename</replaceable></arg>
+ <arg>--recordingmaxsize=<replaceable>MB</replaceable></arg>
+ <arg>--recordingmaxtime=<replaceable>msec</replaceable></arg>
+ <arg>--recordingopts= <arg choice="plain"><replaceable>key</replaceable>=<replaceable>value</replaceable> [,<replaceable>key</replaceable>=<replaceable>value</replaceable>...]</arg></arg>
+ <arg>--recordingvideofps=<replaceable>fps</replaceable></arg>
+ <arg>--recordingvideorate=<replaceable>rate</replaceable></arg>
+ <arg>--recordingvideores=<replaceable>width</replaceable> <replaceable>height</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-vrde">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--vrde=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vrdeproperty=<replaceable>property-name</replaceable>= <arg><replaceable>property-value</replaceable></arg></arg>
+ <arg>--vrdeextpack=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain"><replaceable>name</replaceable></arg>
+ </group></arg>
+ <arg>--vrdeport=<replaceable>port</replaceable></arg>
+ <arg>--vrdeaddress=<replaceable>hostip</replaceable></arg>
+ <arg>--vrdeauthtype=<group choice="plain">
+ <arg choice="plain">null</arg>
+ <arg choice="plain">external</arg>
+ <arg choice="plain">guest</arg>
+ </group></arg>
+ <arg>--vrdeauthlibrary=<group choice="plain">
+ <arg choice="plain">default</arg>
+ <arg choice="plain"><replaceable>name</replaceable></arg>
+ </group></arg>
+ <arg>--vrdemulticon=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vrdereusecon=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vrdevideochannel=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--vrdevideochannelquality=<replaceable>percent</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-teleport">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--teleporter=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--teleporterport=<replaceable>port</replaceable></arg>
+ <arg>--teleporteraddress=<group choice="plain">
+ <arg choice="plain"><replaceable>address</replaceable></arg>
+ <arg choice="plain">empty</arg>
+ </group></arg>
+ <arg>--teleporterpassword=<replaceable>password</replaceable></arg>
+ <arg>--teleporterpasswordfile=<group choice="plain">
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ <arg choice="plain">stdin</arg>
+ </group></arg>
+ <arg>--cpuid-portability-level=<replaceable>level</replaceable></arg>
+ <arg>--cpuid-set=<replaceable>leaf</replaceable> <arg>:<replaceable>subleaf</replaceable></arg> <replaceable>eax</replaceable> <replaceable>ebx</replaceable> <replaceable>ecx</replaceable> <replaceable>edx</replaceable></arg>
+ <arg>--cpuid-remove=<replaceable>leaf</replaceable> <arg>:<replaceable>subleaf</replaceable></arg></arg>
+ <arg>--cpuidremoveall</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-debugging">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--tracing-enabled=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--tracing-config=<replaceable>string</replaceable></arg>
+ <arg>--tracing-allow-vm-access=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-usbcardreader">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--usbcardreader=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-modifyvm-autostart">
+ <command>VBoxManage modifyvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--autostart-enabled=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--autostart-delay=<replaceable>seconds</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage modifyvm</command> command enables you to
+ change the properties of a registered virtual machine (VM) that is
+ not running.
+ </para>
+ <para>
+ Most of these properties correspond to the VM settings that are
+ shown in each VM's <emphasis role="bold">Settings</emphasis>
+ dialog in the VirtualBox Manager. See
+ <xref linkend="BasicConcepts" />. However, some settings can only
+ be viewed and managed with the <command>VBoxManage</command>
+ command.
+ </para>
+ <para>
+ You can use the <command>VBoxManage modifyvm</command> command to
+ change VM settings only when the VM is powered off. The VM cannot
+ be running or in saved state when you use this command.
+ </para>
+ <para>
+ You can use the <command>VBoxManage controlvm</command> command to
+ dynamically change some VM machine settings while the VM is
+ running. See <xref linkend="vboxmanage-controlvm" />.
+ </para>
+ <refsect2 id="vboxmanage-modifyvm-general">
+ <title>General Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to modify general information
+ about your VM.
+ </para>
+ <para>
+ The <command>VBoxManage modifyvm</command> command supports the
+ following options:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--name=<replaceable>vmname</replaceable></option></term>
+ <listitem><para>
+ Changes the name of the VM and its related internal VM
+ files. See <xref linkend="vboxmanage-createvm"/>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--groups=<replaceable>group</replaceable></option></term>
+ <listitem><para>
+ Changes the group membership of a VM. Group names always
+ begin with a slash character (<literal>/</literal>) and
+ can be nested. By default, VMs are members of the
+ <literal>/</literal> group.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--description=<replaceable>desc</replaceable></option></term>
+ <listitem><para>
+ Changes the optional VM description. Use a description to
+ record details about the VM in a meaningful way. The GUI
+ interprets HTML markup while the <command>VBoxManage
+ modifyvm</command> command enables you include arbitrary
+ strings that can contain multiple lines.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ostype=<replaceable>OS-type</replaceable></option></term>
+ <listitem><para>
+ Specifies the guest operating system (OS) to run in the
+ VM. Use the <command>VBoxManage list ostypes</command>
+ command to view the OS type identifiers.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--iconfile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to the &product-name; icon on
+ the host system. The icon is shown on the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--memory=<replaceable>size</replaceable></option></term>
+ <listitem><para>
+ Specifies the amount of host system RAM to allocate to the
+ VM. The size is in MB. See
+ <xref linkend="gui-createvm" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--pagefusion=on | off</option></term>
+ <listitem><para>
+ Enables or disables the Page Fusion feature, which is
+ disabled by default. Use the Page Fusion feature to
+ minimize the memory duplication between VMs that have
+ similar configurations and that run on the same host
+ system. See <xref linkend="guestadd-pagefusion" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vram=<replaceable>size</replaceable></option></term>
+ <listitem><para>
+ Specifies the amount of RAM to allocate to the virtual
+ graphics card. See <xref linkend="settings-display" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--acpi=on | off</option></term>
+ <listitem><para>
+ Determines whether the VM has ACPI support. See
+ <xref linkend="settings-motherboard" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ioapic=on | off</option></term>
+ <listitem><para>
+ Determines whether the VM has I/O APIC support. See
+ <xref linkend="settings-motherboard" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--pciattach=<replaceable>host-PCI-address</replaceable>[@<replaceable>guest-PCI-host-bus-address</replaceable>]</option></term>
+ <listitem><para>
+ Attaches the specified PCI network controller on the host
+ to the guest VM. You can optionally specify the PCI bus on
+ the guest VM on which to attach the controller. See
+ <xref linkend="pcipassthrough" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--pcidetach=<replaceable>host-PCI-address</replaceable></option></term>
+ <listitem><para>
+ Detaches the specified PCI network controller from the
+ attached PCI bus on the guest VM. See
+ <xref linkend="pcipassthrough" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hardwareuuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) to
+ present to the guest VM in memory tables (DMI/SMBIOS),
+ hardware, and VM properties. By default this hardware UUID
+ is the same as the VM UUID. Use this option when cloning a
+ VM. Note that the teleporting feature automatically
+ handles the UUID value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpus=<replaceable>CPU-count</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of virtual CPUs to assign to the VM.
+ See <xref linkend="settings-processor" />.
+ </para><para>
+ If CPU hot-plugging is enabled, this option specifies the
+ maximum number of virtual CPUs that can be plugged into
+ the VMs.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpuhotplug=on | off</option></term>
+ <listitem><para>
+ Enables or disables CPU hot-plugging. When enabled, you
+ can dynamically add virtual CPUs to a VM or remove virtual
+ CPUs from a VM. See <xref linkend="cpuhotplug" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--plugcpu=<replaceable>CPU-ID</replaceable></option></term>
+ <listitem><para>
+ Adds a virtual CPU to the VM.
+ <replaceable>CPU-ID</replaceable> is the index of the
+ virtual CPU to add. A valid index value is a number from
+ <literal>0</literal> to the maximum number of CPUs that
+ you configured by using the <option>--cpus</option>
+ option.
+ </para><para>
+ Only use this option if CPU hot-plugging is enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--unplugcpu=<replaceable>CPU-ID</replaceable></option></term>
+ <listitem><para>
+ Removes a virtual CPU from the VM.
+ <replaceable>CPU-ID</replaceable> is the index of the
+ virtual CPU to remove. A valid index value is a number
+ from <literal>1</literal> to the maximum number of CPUs
+ that you configured by using the <option>--cpus</option>
+ option.
+ </para><para>
+ Only use this option if CPU hot-plugging is enabled.
+ </para><para>
+ Note that you cannot remove CPU 0.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpuexectioncap=<replaceable>percentage</replaceable></option></term>
+ <listitem><para>
+ Specifies how much CPU time a virtual CPU can use. A valid
+ value is from <literal>1</literal> to
+ <literal>100</literal>. A value of 50 indicates that a
+ single virtual CPU can use up to 50% of a single host CPU.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--pae=on | off</option></term>
+ <listitem><para>
+ Enables or disables physical address extension (PAE). See
+ <xref linkend="settings-processor" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--longmode=on | off</option></term>
+ <listitem><para>
+ Enables or disables long mode. See
+ <xref linkend="settings-processor" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ibpb-on-vm-exit=on | off</option></term>
+ <listitem><para>
+ Enables use of Indirect Branch Prediction Barrier (IBPB)
+ on every VM exit.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ibpb-on-vm-entry=on | off</option></term>
+ <listitem><para>
+ Enables use of Indirect Branch Prediction Barrier (IBPB)
+ on every VM entry.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--spec-ctrl=on | off</option></term>
+ <listitem><para>
+ Enables or disables the exposure of speculation control
+ interfaces to the guest VM. These interfaces must be
+ available on the host system.
+ </para><para>
+ Depending on the host CPU and the workload, enabling
+ speculation control might significantly reduce
+ performance.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--l1d-flush-on-sched=on | off</option></term>
+ <listitem><para>
+ Enables or disables level 1 data cache flushing when a
+ thread is scheduled to execute guest code. See
+ <xref linkend="sec-rec-cve-2018-3646" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--l1d-flush-on-vm-entry=on | off</option></term>
+ <listitem><para>
+ Enables or disables level 1 data cache flushing on every
+ VM entry. See <xref linkend="sec-rec-cve-2018-3646" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mds-clear-on-sched=on | off</option></term>
+ <listitem><para>
+ Enables CPU buffer clearing when a thread is scheduled to
+ execute guest code. See
+ <xref linkend="sec-rec-cve-2018-12126-et-al" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mds-clear-on-vm-entry=on | off</option></term>
+ <listitem><para>
+ Enables CPU buffer clearing on every VM entry. See
+ <xref linkend="sec-rec-cve-2018-12126-et-al" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpu-profile=host | Intel 8086 | Intel 80286 | Intel 80386</option></term>
+ <listitem><para>
+ Specifies the profile to use for guest CPU emulation.
+ Specify a value that is based on the host system CPU
+ (<literal>host</literal>) or one of the following older
+ Intel micro-architectures: <literal>8086</literal>,
+ <literal>80286</literal>, or <literal>80386</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hpet=on | off</option></term>
+ <listitem><para>
+ Enables or disables a High Precision Event Timer (HPET)
+ that can replace a legacy system timer. This feature is
+ disabled by default. Note HPET is supported on Windows
+ versions starting with Vista.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hwvirtex=on | off</option></term>
+ <listitem><para>
+ Enables or disables the use of hardware virtualization
+ extensions in the processor of the host system. Such
+ extensions are Intel VT-x or AMD-V. See
+ <xref linkend="hwvirt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--triplefaultreset=on | off</option></term>
+ <listitem><para>
+ Enables or disables the resetting of the guest VM instead
+ of triggering a Guru Meditation. Some guest VMs raise a
+ triple fault to reset the CPU, so sometimes resetting the
+ guest VM is the best outcome. This option only applies to
+ guests that do not use symmetric multiprocessing (SMP).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--apic=on | off</option></term>
+ <listitem><para>
+ Enables or disables I/O APIC. With I/O APIC, OSes can use
+ more than 16 interrupt requests (IRQs) to avoid IRQ
+ sharing and to improve reliability. I/O APIC is enabled by
+ default. See <xref linkend="settings-motherboard" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--x2apic=on | off</option></term>
+ <listitem><para>
+ Enables or disables the CPU x2APIC feature. CPU x2APIC
+ enables an OS to run more efficiently on high core count
+ configurations and to optimize interrupt distribution in
+ virtualized environments. This feature is enabled by
+ default.
+ </para><para>
+ Disable this feature when the OS that runs on a host
+ system or a guest VM is incompatible with CPU x2APIC.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--paravirtprovider=none | default | legacy | minimal | hyperv | kvm</option></term>
+ <listitem><para>
+ Specifies one of the following paravirtualization
+ interfaces to provide to the guest OS:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>none</literal> does not expose any
+ paravirtualization interface.
+ </para></listitem>
+ <listitem><para>
+ <literal>default</literal> selects the appropriate
+ interface based on the guest OS type when starting the
+ VM. This is the default value used when creating new
+ VMs.
+ </para></listitem>
+ <listitem><para>
+ <literal>legacy</literal> selects a paravirtual
+ interface for VMs that were created by older
+ &product-name; versions.
+ </para></listitem>
+ <listitem><para>
+ <literal>minimal</literal> is required for Mac OS X
+ guest VMs.
+ </para></listitem>
+ <listitem><para>
+ <literal>kvm</literal> is recommended for Linux guest
+ VMs. See <xref linkend="gimproviders" />.
+ </para></listitem>
+ <listitem><para>
+ <literal>hyperv</literal> is recommended for Windows
+ guest VMs. See <xref linkend="gimproviders" />.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--paravirtdebug=<replaceable>property</replaceable>=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies debugging properties that are specific to the
+ paravirtualization provider configured for the specified
+ VM. See <xref linkend="gimdebug" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nestedpaging=on | off</option></term>
+ <listitem><para>
+ Enables or disables the nested paging feature in the
+ processor of the host system. This option is available
+ only when hardware virtualization is enabled. See
+ <xref linkend="hwvirt" /> and
+ <xref linkend="sec-rec-cve-2018-3646" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--largepages=on | off</option></term>
+ <listitem><para>
+ Enables or disables the hypervisor's use of large pages,
+ which can improve performance by up to 5%. The use of
+ large pages reduces TLB use and overhead. This option is
+ available only when both hardware virtualization and
+ nested paging are enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vtxvpid=on | off</option></term>
+ <listitem><para>
+ Enables or disables the use of the tagged TLB (VPID)
+ feature in the processor of your host system. See
+ <xref linkend="hwvirt" />. This option is available only
+ when hardware virtualization is enabled on Intel VT-x.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vtxux=on | off</option></term>
+ <listitem><para>
+ Enables or disables the use of unrestricted guest mode for
+ executing the guest VM. This option is available only when
+ hardware virtualization is enabled on Intel VT-x.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--accelerated3d=on | off</option></term>
+ <listitem><para>
+ Enables or disables hardware 3D acceleration. This option
+ is available only when the Guest Additions are installed.
+ See <xref linkend="guestadd-3d" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--accelerated2dvideo=on | off</option></term>
+ <listitem><para>
+ Enables or disables 2D video acceleration. This option is
+ available only when the Guest Additions are installed. See
+ <xref linkend="guestadd-2d" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--chipset=piix3 | ich9</option></term>
+ <listitem><para>
+ Specify the Intel chipset for &product-name; to emulate.
+ The default value is the Intel PIIX3 chipset
+ (<literal>piix3</literal>).
+ </para><para>
+ Change this value only if you need to relax some of the
+ chipset constraints. See
+ <xref linkend="settings-motherboard" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bioslogofacein=on | off</option></term>
+ <listitem><para>
+ Specifies whether the BIOS logo fades in on VM startup. By
+ default, an &product-name; logo is shown.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bioslogofacein=on | off</option></term>
+ <listitem><para>
+ Specifies whether the BIOS logo fades out on VM startup.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bioslogodisplaytime=<replaceable>msec</replaceable></option></term>
+ <listitem><para>
+ Specifies the amount of time in milliseconds that the BIOS
+ logo is visible.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bioslogoimagepath=<replaceable>pathname</replaceable></option></term>
+ <listitem><para>
+ Replaces the existing BIOS logo with a different image.
+ The replacement image must be an uncompressed 256-color
+ bitmap file (BMP) that does not contain color space
+ information (Windows 3.0 format). Also ensure that the
+ image is no larger than 640 X 480 pixels.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--biosbootmenu=disabled | menuonly | messageandmenu</option></term>
+ <listitem><para>
+ Specifies whether the BIOS permits you to select a
+ temporary boot device. Valid values are:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>disabled</literal> outputs the alternate boot
+ device message and permits you to select a temporary
+ boot device by pressing F12.
+ </para></listitem>
+ <listitem><para>
+ <literal>menuonly</literal> suppresses the alternate
+ boot device message, but permits you to select a
+ temporary boot device by pressing F12.
+ </para></listitem>
+ <listitem><para>
+ <literal>messageandmenu</literal> suppresses the
+ alternate boot device message and prevents you from
+ selecting a temporary boot device by pressing F12.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--biosapic=x2apic | apic | disabled</option></term>
+ <listitem><para>
+ Specifies the APIC level of the firmware. Valid values
+ are: <literal>x2apic</literal>, <literal>apic</literal>,
+ and <literal>disabled</literal>. When the value is
+ <literal>disabled</literal>, neither the
+ <literal>apic</literal> nor the <literal>x2apic</literal>
+ version of the firmware is used.
+ </para><para>
+ Note that if you specify the <literal>x2apic</literal>
+ value and x2APIC is unsupported by the virtual CPU, the
+ APIC level downgrades to <literal>apic</literal>, if
+ supported. Otherwise, the APIC level downgrades to
+ <literal>disabled</literal>. Similarly, if you specify the
+ <literal>apic</literal> value and APIC is unsupported by
+ the virtual CPU, the APIC level downgrades to
+ <literal>disabled</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--biossystemtimeoffset=<replaceable>msec</replaceable></option></term>
+ <listitem><para>
+ Specifies the time offset in milliseconds of the guest VM
+ relative to the time on the host system. If the offset
+ value is positive, the guest VM time runs ahead of the
+ time on the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--biospxedebug=on | off</option></term>
+ <listitem><para>
+ Enables or disables additional debugging output when using
+ the Intel PXE boot ROM. The debug output is written to the
+ release log file. See
+ <xref linkend="collect-debug-info" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--system-uuid-le=on | off</option></term>
+ <listitem><para>
+ Enables or disables representing the system UUID in little
+ endian form. The default value is <literal>on</literal> for
+ new VMs. For old VMs the setting is <literal>off</literal> to
+ keep the content of the DMI/SMBIOS table unchanged, which can
+ be important for Windows license activation.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--boot<replaceable>N</replaceable>=none | floppy | dvd | disk | net</option></term>
+ <listitem><para>
+ Enables you to specify the boot device order for the VM by
+ assigning one of the device types to each of the four boot
+ device slots that are represented by
+ <replaceable>N</replaceable> in the option name.
+ </para><para>
+ A value of 1 for <replaceable>N</replaceable> represents
+ the first boot device slot, and so on.
+ </para><para>
+ The device types are <literal>floppy</literal> for floppy
+ disks, <literal>dvd</literal> for DVDs or CDs,
+ <literal>disk</literal> for hard disks, and
+ <literal>net</literal> for a network device. A value of
+ <literal>none</literal> indicates that no boot device is
+ associated with the specified slot.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--rtcuseutc=on | off</option></term>
+ <listitem><para>
+ Specifies whether the real-time clock (RTC) uses
+ coordinated universal time (UTC). See
+ <xref linkend="settings-motherboard" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--graphicscontroller=none | vboxvga | vmsvga | vboxsvga</option></term>
+ <listitem><para>
+ Specifies the graphics controller type to use. See
+ <xref linkend="settings-screen" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--snapshotfolder=default | <replaceable>pathname</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the VM's snapshot storage folder. If
+ you specify <literal>default</literal>, the folder name is
+ <filename>Snapshots/</filename> in the machine folder.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--firmware=bios | efi | efi32 | efi64</option></term>
+ <listitem><para>
+ Specifies the firmware used to boot the VM. Valid values
+ are: <literal>bios</literal>, <literal>efi</literal>,
+ <literal>efi32</literal>, or <literal>efi64</literal>. Use
+ EFI values with care.
+ </para><para>
+ By default, BIOS firmware is used.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--guestmemoryballoon=<replaceable>size</replaceable></option></term>
+ <listitem><para>
+ Specifies the size of the guest memory balloon. The guest
+ memory balloon is the memory allocated by the Guest
+ Additions from the guest OS and returned to the hypervisor
+ for use by other VMs. Specify
+ <replaceable>size</replaceable> in megabytes. The default
+ value is <literal>0</literal> megabytes. See
+ <xref linkend="guestadd-balloon" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--defaultfrontend=default | <replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the default frontend to use when starting the
+ specified VM. If you specify <literal>default</literal>,
+ the VM is shown in a window on the user's desktop. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nested-hw-virt=on | off</option></term>
+ <listitem><para>
+ Enables or disables nested virtualization. See
+ <xref linkend="nested-virt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vm-process-priority=default | flat | low | normal | high</option></term>
+ <listitem><para>
+ Specifies the priority scheme of the VM process to use
+ when starting the specified VM and while the VM runs.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-networking">
+ <title>Networking Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to modify networking on your
+ VM. With all these options, <replaceable>N</replaceable> is an
+ integer greater than zero that represents the particular virtual
+ network adapter to configure.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--nic<replaceable>N</replaceable>=none | null | nat | natnetwork | bridged | intnet | hostonly | generic</option></term>
+ <listitem><para>
+ Configures the network type used by each virtual network
+ card in the VM.
+ </para><para>
+ The following valid values correspond to the modes
+ described in <xref linkend="networkingmodes" />:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>none</literal> &ndash; No networking present
+ </para></listitem>
+ <listitem><para>
+ <literal>null</literal> &ndash; Not connected to the
+ host system
+ </para></listitem>
+ <listitem><para>
+ <literal>nat</literal> &ndash; Use network address
+ translation (NAT)
+ </para></listitem>
+ <listitem><para>
+ <literal>natnetwork</literal> &ndash; Use a NAT
+ metwork
+ </para></listitem>
+ <listitem><para>
+ <literal>bridged</literal> &ndash; Use bridged
+ networking
+ </para></listitem>
+ <listitem><para>
+ <literal>intnet</literal> &ndash; Use internal
+ networking
+ </para></listitem>
+ <listitem><para>
+ <literal>hostonly</literal> &ndash; Use host-only
+ networking
+ </para></listitem>
+ <listitem><para>
+ <literal>generic</literal> &ndash; Access rarely used
+ sub-modes
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nictype<replaceable>N</replaceable>=Am79C970A | Am79C973 | 82540EM | 82543GC | 82545EM | virtio</option></term>
+ <listitem><para>
+ Identifies the type of networking hardware that
+ &product-name; presents to the guest VM for the specified
+ virtual network card. See <xref linkend="nichardware" />.
+ </para><para>
+ Valid values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Am79C970A</literal> represents the AMD PCNet
+ PCI II.
+ </para></listitem>
+ <listitem><para>
+ <literal>Am79C973</literal> represents the AMD PCNet
+ FAST III, which is the default value.
+ </para></listitem>
+ <listitem><para>
+ <literal>82540EM</literal> represents the Intel
+ PRO/1000 MT Desktop.
+ </para></listitem>
+ <listitem><para>
+ <literal>82543GC</literal> represents the Intel
+ PRO/1000 T Server.
+ </para></listitem>
+ <listitem><para>
+ <literal>82545EM</literal> represents the Intel
+ PRO/1000 MT Server.
+ </para></listitem>
+ <listitem><para>
+ <literal>virtio</literal> represents a paravirtualized
+ network adapter.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cableconnected<replaceable>N</replaceable>=on | off</option></term>
+ <listitem><para>
+ Temporarily disconnects a virtual network interface, as if
+ you pull a network cable from a physical network card. You
+ might use this option to reset certain software components
+ in the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nictrace<replaceable>N</replaceable>=on | off</option></term>
+ <listitem><para>
+ Enables or disables network tracing for the specified
+ virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nictracefile<replaceable>N</replaceable>=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path of the file in which to write
+ trace log information. Use this option if network tracing
+ is enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicproperty<replaceable>N</replaceable>=<replaceable>name</replaceable>=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Enables you to set property values and pass them to rarely
+ used network backends. To use this option, you must also
+ use the <option>--nicgenericdrv</option> option.
+ </para><para>
+ These properties are specific to the backend engine and
+ differ between the UDP Tunnel and the VDE backend drivers.
+ For property examples, see
+ <xref linkend="network_udp_tunnel" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicspeed<replaceable>N</replaceable>=<replaceable>kbps</replaceable></option></term>
+ <listitem><para>
+ Specifies the throughput rate in kilobits per second for
+ rarely used networking sub-modes such as VDE network and
+ UDP Tunnel. Use this option only if you used the
+ <option>--nic</option> option to enable generic networking
+ for the specified virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicbootprio<replaceable>N</replaceable>=<replaceable>priority</replaceable></option></term>
+ <listitem><para>
+ Assigns a priority to each NIC that determines the order
+ in which that NIC is used to perform a PXE network boot.
+ The priority value is an integer in the range from
+ <literal>0</literal> to <literal>4</literal>. Priority
+ <literal>0</literal>, which is the default value, is the
+ lowest priority. Priority <literal>1</literal> is the
+ highest priority, and priorities <literal>3</literal> and
+ <literal>4</literal> are lower.
+ </para><para>
+ This option has an effect only when using the Intel PXE
+ boot ROM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicpromisc<replaceable>N</replaceable>=deny | allow-vms | allow-all</option></term>
+ <listitem><para>
+ Enables you to specify whether to deny or allow
+ promiscuous mode for the specified VM virtual network
+ card. This option is relevant only for bridged networking.
+ Valid values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>deny</literal> hides any traffic that is not
+ intended for the VM. This is the default value.
+ </para></listitem>
+ <listitem><para>
+ <literal>allow-vms</literal> hides all host traffic
+ from the VM, but allows the VM to see traffic to and
+ from other VMs.
+ </para></listitem>
+ <listitem><para>
+ <literal>allow-all</literal> allows the VM to see all
+ traffic.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicbandwidthgroup<replaceable>N</replaceable>=none | <replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Adds or removes a bandwidth group assignment to the
+ specified virtual network interface. Valid values are as
+ follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>none</literal> removes any current bandwidth
+ group assignment from the specified virtual network
+ interface.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>name</replaceable> adds a bandwidth group
+ assignment to the specified virtual network interface.
+ </para></listitem>
+ </itemizedlist><para>
+ See <xref linkend="network_bandwidth_limit" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bridgeadapter<replaceable>N</replaceable>=none | <replaceable>device-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the host interface to use for the specified
+ virtual network interface. See
+ <xref linkend="network_bridged" />. Use this option only
+ if you used the <option>--nic</option> option to enable
+ bridged networking for the specified virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hostonlyadapter<replaceable>N</replaceable>=none | <replaceable>device-name</replaceable></option></term>
+ <listitem><para>
+ Specifies which host-only networking interface to use for
+ the specified virtual network interface. See
+ <xref linkend="network_hostonly" />. Use this option only
+ if you used the <option>--nic</option> option to enable
+ host-only networking for the specified virtual network
+ card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--intnet<replaceable>N</replaceable>=<replaceable>network-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the internal network. See
+ <xref linkend="network_internal" />. Use this option only
+ if you used the <option>--nic</option> option to enable
+ internal networking for the specified virtual network
+ card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nat-network<replaceable>N</replaceable>=<replaceable>network-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the NAT network to which this
+ adapter is connected. Use this option only if the
+ networking type is <literal>natnetwork</literal>, not
+ <literal>nat</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nicgenericdrv<replaceable>N</replaceable>=<replaceable>backend-driver</replaceable></option></term>
+ <listitem><para>
+ Enables you to access rarely used networking sub-modes,
+ such as VDE networks and UDP Tunnel. Use this option only
+ if you used the <option>--nic</option> option to enable
+ generic networking for a virtual network card.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--macaddress<replaceable>N</replaceable>=auto | <replaceable>MAC-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the MAC address of the specified network adapter
+ on the VM. By default, &product-name; assigns a random MAC
+ address to each network adapter at VM creation.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-networking-nat">
+ <title>NAT Networking Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options use <replaceable>N</replaceable> to
+ specify the particular virtual network adapter to modify.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--natnet<replaceable>N</replaceable>=default | <replaceable>network</replaceable></option></term>
+ <listitem><para>
+ Specifies the IP address range to use for this network.
+ See <xref linkend="changenat" />. Use this option only if
+ the networking type is <literal>nat</literal>, not
+ <literal>natnetwork</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natpf<replaceable>N</replaceable>=[<replaceable>name</replaceable>],tcp | udp,[<replaceable>host-IP</replaceable>],<replaceable>hostport</replaceable>,[<replaceable>guest-IP</replaceable>],<replaceable>guestport</replaceable></option></term>
+ <listitem><para>
+ Specifies the NAT port-forwarding rule to use. See
+ <xref linkend="natforward" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natpf<replaceable>N</replaceable>=delete <replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the NAT port-forwarding rule to delete. See
+ <xref linkend="natforward" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nattftpprefix<replaceable>N</replaceable>=<replaceable>prefix</replaceable></option></term>
+ <listitem><para>
+ Specifies a prefix to use for the built-in TFTP server.
+ For example, you might use a prefix to indicate where the
+ boot file is located. See <xref linkend="nat-tftp" /> and
+ <xref linkend="nat-adv-tftp" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nattftpfile<replaceable>N</replaceable>=<replaceable>boot-file</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the TFT boot file. See
+ <xref linkend="nat-adv-tftp" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nattftpserver<replaceable>N</replaceable>=<replaceable>tftp-server</replaceable></option></term>
+ <listitem><para>
+ Specifies the address of the TFTP server from which to
+ boot. See <xref linkend="nat-adv-tftp" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natbindip<replaceable>N</replaceable>=<replaceable>IP-address</replaceable></option></term>
+ <listitem><para>
+ Specifies an alternate IP address to which the NAT engine
+ binds. See <xref linkend="nat-adv-settings" />. By
+ default, &product-name;'s NAT engine routes TCP/IP packets
+ through the default interface assigned by the host's
+ TCP/IP stack.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natdnspassdomain<replaceable>N</replaceable>=on | off</option></term>
+ <listitem><para>
+ Specifies whether the built-in DHCP server passes the
+ domain name for network name resolution.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natdnsproxy<replaceable>N</replaceable>=on | off</option></term>
+ <listitem><para>
+ Specifies whether the NAT engine is the proxy for all
+ guest DNS requests to the host system's DNS servers. See
+ <xref linkend="nat-adv-dns" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natdnshostresolver<replaceable>N</replaceable>=on | off</option></term>
+ <listitem><para>
+ Specifies whether the NAT engine uses the host system's
+ resolver mechanisms to handle DNS requests. See
+ <xref linkend="nat-adv-dns" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--natsettings<replaceable>N</replaceable>=[<replaceable>mtu</replaceable>],[<replaceable>socksnd</replaceable>],[<replaceable>sockrcv</replaceable>],[<replaceable>tcpsnd</replaceable>],[<replaceable>tcprcv</replaceable>]</option></term>
+ <listitem><para>
+ Specifies values for tuning NAT performance. See
+ <xref linkend="nat-adv-settings" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nataliasmode<replaceable>N</replaceable>=default | [log],[proxyonly],[sameports]</option></term>
+ <listitem><para>
+ Specifies the behavior of the NAT engine core as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>log</literal> enables logging
+ </para></listitem>
+ <listitem><para>
+ <literal>proxyonly</literal> switches off aliasing
+ mode and makes NAT transparent
+ </para></listitem>
+ <listitem><para>
+ <literal>sameports</literal> enforces that the NAT
+ engine sends packets through the same port on which
+ they originated
+ </para></listitem>
+ <listitem><para>
+ <literal>default</literal> disables all aliasing modes
+ </para></listitem>
+ </itemizedlist><para>
+ For more information, see
+ <xref linkend="nat-adv-alias" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-other-hardware">
+ <title>Other Hardware Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to configure other hardware,
+ such as the serial port, monitor, audio device, USB ports, and
+ the clipboard, and drag-and-drop features.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--mouse=ps2 | usb | usbtablet | usbmultitouch</option></term>
+ <listitem><para>
+ Specifies the mode of the mouse to use in the VM. Valid
+ values are: <literal>ps2</literal>,
+ <literal>usb</literal>, <literal>usbtablet</literal>, and
+ <literal>usbmultitouch</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--keyboard=ps2 | usb</option></term>
+ <listitem><para>
+ Specifies the mode of the keyboard to use in the VM. Valid
+ values are: <literal>ps2</literal> and
+ <literal>usb</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uart<replaceable>N</replaceable>=off | <replaceable>I/O-base</replaceable> <replaceable>IRQ</replaceable></option></term>
+ <listitem><para>
+ Configures virtual serial ports for the VM.
+ <replaceable>N</replaceable> represents the serial port to
+ modify. Valid values are <literal>off</literal> to disable
+ the port or an I/O base address and IRQ. For information
+ about the traditional COM port I/O base address and IRQ
+ values, see <xref linkend="serialports" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uartmode<replaceable>N</replaceable>=<replaceable>mode</replaceable></option></term>
+ <listitem><para>
+ Specifies how &product-name; connects the specified
+ virtual serial port to the host system that runs the VM.
+ See <xref linkend="serialports" />.
+ </para><para>
+ Ensure that you first configure the virtual serial port by
+ using the
+ <option>--uart<replaceable>N</replaceable></option>
+ option.
+ </para><para>
+ Specify one of the following connection modes for each
+ port:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>disconnected</literal> indicates that even
+ though the serial port is shown to the guest VM, it is
+ not connected. This state is like a physical COM port
+ without a cable attached.
+ </para></listitem>
+ <listitem><para>
+ <literal>server</literal>
+ <replaceable>pipe-name</replaceable> creates the
+ specified named pipe or local domain socket on the
+ host system and connects the virtual serial device to
+ it.
+ </para><para>
+ On a Windows host system,
+ <replaceable>pipe-name</replaceable> is a named pipe
+ that has a name that uses the following form:
+ <literal>\\.\<replaceable>pipe</replaceable>\</literal>.
+ </para><para>
+ On a Linux host system,
+ <replaceable>pipe-name</replaceable> is a local domain
+ socket.
+ </para></listitem>
+ <listitem><para>
+ <literal>client</literal>
+ <replaceable>pipe-name</replaceable> connects the
+ virtual serial device to the specified named pipe or
+ local domain socket.
+ </para><para>
+ Note that the named pipe or local domain socket must
+ already exist.
+ </para></listitem>
+ <listitem><para>
+ <literal>tcpserver</literal>
+ <replaceable>port</replaceable> creates a TCP socket
+ with the specified TCP port on the host system and
+ connects the virtual serial device to it.
+ </para><para>
+ For UNIX-like systems, use ports over 1024 for
+ non-root users.
+ </para></listitem>
+ <listitem><para>
+ <literal>tcpclient</literal>
+ <replaceable>hostname</replaceable>:<replaceable>port</replaceable>
+ connects the virtual serial device to the TCP socket.
+ </para><para>
+ Note that the TCP socket must already exist.
+ </para></listitem>
+ <listitem><para>
+ <literal>file</literal>
+ <replaceable>filename</replaceable> redirects the
+ serial port output to the specified raw file. Ensure
+ that <replaceable>filename</replaceable> is the
+ absolute path of the on the host system.
+ </para></listitem>
+ <listitem><para>
+ <replaceable>device-name</replaceable>: specifies the
+ device name of a physical hardware serial port on the
+ specified host system to which the virtual serial port
+ connects.
+ </para><para>
+ Use this mode to connect a physical serial port to a
+ VM.
+ </para><para>
+ On a Windows host system, the device name is a COM
+ port such as <literal>COM1</literal>. On a Linux host
+ system, the device name is similar to
+ <filename>/dev/ttyS0</filename>.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uarttype<replaceable>N</replaceable>=<replaceable>UART-type</replaceable></option></term>
+ <listitem><para>
+ Configures the UART type for the specified virtual serial
+ port (<replaceable>N</replaceable>). Valid values are
+ <literal>16450</literal>, <literal>16550A</literal>, and
+ <literal>16750</literal>. The default value is
+ <literal>16550A</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--lptmode<replaceable>N</replaceable>=<replaceable>device-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the device name of the parallel port to use.
+ Ensure that you use this option before using the
+ <option>--lpt</option> option.
+ </para><para>
+ For a Windows host system, use a device name such as
+ <command>lpt1</command>. For a Linux host system, use a
+ device name such as <filename>/dev/lp0</filename>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--lpt<replaceable>N</replaceable>=<replaceable>I/O-base</replaceable> <replaceable>IRQ</replaceable></option></term>
+ <listitem><para>
+ Specifies the I/O base address and IRQ of the parallel
+ port. Ensure that you use this option after using the
+ <option>--lptmode</option> option.
+ </para><para>
+ You can view the I/O base address and IRQ that the VM uses
+ for the parallel port in the Device Manager.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--audio=<replaceable>type</replaceable></option></term>
+ <listitem><para>
+ Specifies whether the VM has audio support, and if so,
+ which type. Valid audio type values are:
+ <literal>none</literal>, <literal>null</literal>,
+ <literal>dsound</literal>, <literal>oss</literal>,
+ <literal>alsa</literal>, <literal>pulse</literal>, and
+ <literal>coreaudio</literal>.
+ </para><para>
+ Note that the audio types are dependent on the host
+ operating system. Use the <command>VBoxManage
+ modifyvm</command> command usage output to determine the
+ supported audio types for your host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--audiocontroller=<replaceable>controller-type</replaceable></option></term>
+ <listitem><para>
+ Specifies the audio controller to be used with the VM.
+ Valid audio controller type values are:
+ <literal>ac97</literal>, <literal>hda</literal>, and
+ <literal>sb16</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--audiocodec=<replaceable>codec-type</replaceable></option></term>
+ <listitem><para>
+ Specifies the audio codec to be used with the VM. Valid
+ audio codec type values are: <literal>stac9700</literal>,
+ <literal>ad1980</literal>, <literal>stac9221</literal>,
+ and <literal>sb16</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--audioin=on|off</option></term>
+ <listitem><para>
+ Specifies whether to enable or disable audio capture from
+ the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--audioout=on|off</option></term>
+ <listitem><para>
+ Specifies whether to enable or disable audio playback from
+ the guest VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--clipboard=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies how to share the guest VM or host system OS's
+ clipboard with the host system or guest VM, respectively.
+ Valid values are: <literal>disabled</literal>,
+ <literal>hosttoguest</literal>,
+ <literal>guesttohost</literal>, and
+ <literal>bidirectional</literal>. See
+ <xref linkend="generalsettings" />.
+ </para><para>
+ The clipboard feature is available only if you have the
+ Guest Additions be installed in the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--draganddrop=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies how to use the drag and drop feature between the
+ host system and the VM. Valid values are:
+ <literal>disabled</literal>,
+ <literal>hosttoguest</literal>,
+ <literal>guesttohost</literal>, and
+ <literal>bidirectional</literal>. See
+ <xref linkend="guestadd-dnd" />.
+ </para><para>
+ The drag and drop feature is available only if you have
+ the Guest Additions be installed in the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--monitorcount=<replaceable>count</replaceable></option></term>
+ <listitem><para>
+ Enables you to configure multiple monitors. See
+ <xref linkend="settings-display" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--usb=on | off</option></term>
+ <listitem><para>
+ Enables or disables the VM's virtual USB controller. See
+ <xref linkend="settings-usb" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--usbohci=on | off</option></term>
+ <listitem><para>
+ Enables or disables the VM's virtual USB 1.1 controller.
+ See <xref linkend="settings-usb" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--usbehci=on | off</option></term>
+ <listitem><para>
+ Enables or disables the VM's virtual USB 2.0 controller.
+ See <xref linkend="settings-usb" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--usbxhci=on | off</option></term>
+ <listitem><para>
+ Enables or disables the VM's virtual USB 3.0 controller.
+ See <xref linkend="settings-usb" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--usbrename=<replaceable>old-name</replaceable> <replaceable>new-name</replaceable></option></term>
+ <listitem><para>
+ Rename's the VM's virtual USB controller from
+ <replaceable>old-name</replaceable> to
+ <replaceable>new-name</replaceable>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-recording">
+ <title>Recording Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to modify settings for video
+ recording, audio recording, or both.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--recording=on | off</option></term>
+ <listitem><para>
+ Enables or disables the recording of a VM session into a
+ WebM or VP8 file. When set to <literal>on</literal>,
+ recording begins when the VM session starts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingscreens=all | <replaceable>screen-ID</replaceable></option></term>
+ <listitem><para>
+ Enables you to specify the VM screens to record. The
+ recording for each screen is output to its own file. Valid
+ values are: <literal>all</literal>, which records all
+ screens, or one or more specified screens.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingfile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the file in which to save the
+ recording.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingmaxsize=<replaceable>MB</replaceable></option></term>
+ <listitem><para>
+ Specifies the maximum size of the recorded video file in
+ megabytes. When the file reaches the specified size,
+ recording stops. If the value is <literal>0</literal>,
+ recording continues until you manually stop recording.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingmaxtime=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>
+ Specifies the maximum amount of time to record in seconds.
+ When the specified time elapses, recording stops. If the
+ value is <literal>0</literal>, recording continues until
+ you manually stop recording.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingopts=<replaceable>keyword</replaceable>=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies additional video-recording properties as a
+ comma-separated property keyword-value list. For example,
+ <literal>foo=bar,a=b</literal>.
+ </para><para>
+ Only use this option if you are an advanced user. For
+ information about keywords, see the <citetitle>Oracle VM
+ VirtualBox Programming Guide and Reference</citetitle>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingvideofps=<replaceable>fps</replaceable></option></term>
+ <listitem><para>
+ Specifies the maximum number of video frames per second
+ (FPS) to record. The recording ignores any frames that
+ have a higher frequency. When you increase the FPS, fewer
+ frames are ignored but the recording and the size of the
+ recording file increases.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingvideorate=<replaceable>bit-rate</replaceable></option></term>
+ <listitem><para>
+ Specifies the bit rate of the video in kilobits per
+ second. When you increase the bit rate, the recording
+ appearance improves and the size of the recording file
+ increases.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--recordingvideores=<replaceable>width</replaceable>x<replaceable>height</replaceable></option></term>
+ <listitem><para>
+ Specifies the video resolution (width and height) of the
+ recorded video in pixels.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-vrde">
+ <title>Remote Machine Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to modify the VirtualBox Remote
+ Desktop Extension (VRDE) behavior.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--vrde=on | off</option></term>
+ <listitem><para>
+ Enables or disables the VRDE server.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=TCP/Ports=<replaceable>port</replaceable></option></term>
+ <listitem><para>
+ <replaceable>port</replaceable> is the port or port range
+ to which the VRDE server binds. The
+ <literal>default</literal> or <literal>0</literal> value
+ uses port <literal>3389</literal>, which is the standard
+ RDP port.
+ </para><para>
+ Also see the <option>--vrdeport</option> option
+ description.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=TCP/Address=<replaceable>IP-address</replaceable></option></term>
+ <listitem><para>
+ <replaceable>IP-address</replaceable> is the IP address of
+ the host network interface to which the VRDE server binds.
+ When specified, the server accepts connections only on the
+ host network interface at that IP address.
+ </para><para>
+ Also see the <option>--vrdeaddress</option> option
+ description.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=VideoChannel/Enabled=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies whether the VRDP video channel is on or off.
+ <literal>1</literal> means <literal>on</literal> and
+ <literal>0</literal> means <literal>off</literal>. See
+ <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=Quality=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies a value between 10% and 100%, inclusive, that
+ represents the JPEG compression level on the VRDE server
+ video channel. A lower value produces lower JPEG quality
+ but higher compression. See
+ <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=DownscaleProtection=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Enables or disables the video downscale protection
+ feature. Valid values are <literal>1</literal> to enable
+ the feature and <literal>0</literal> to disable the
+ feature.
+ </para><para>
+ When this feature is enabled, &product-name; determines
+ whether to display the video:
+ </para><itemizedlist>
+ <listitem><para>
+ When the video size equals the size of the shadow
+ buffer, the video is considered to be full screen and
+ is displayed.
+ </para></listitem>
+ <listitem><para>
+ When the video size is between full screen and the
+ downscale threshold, the video is not displayed. Such
+ a video might be an application window, which is
+ unreadable when downscaled.
+ </para></listitem>
+ </itemizedlist><para>
+ When this feature is disabled, an attempt is always made
+ to display a video.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=Client/DisableDisplay=1</option></term>
+ <listitem><para>
+ Disables the display VRDE server feature.
+ </para><para>
+ To reenable a feature, assign a null value. For example,
+ to reenable the display feature, specify the
+ <command>VBoxManage modifyvm
+ --vrdeproperty=Client/DisableDisplay=</command> command.
+ See <xref linkend="vrde-customization" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=DisableInput=1</option></term>
+ <listitem><para>
+ Disables the input VRDE server feature.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=DisableAudio=1</option></term>
+ <listitem><para>
+ Disables the audio VRDE server feature.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=DisableUSB=1</option></term>
+ <listitem><para>
+ Disables the USB VRDE server feature.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=Client/DisableClipboard=1</option></term>
+ <listitem><para>
+ Disables the clipboard VRDE server feature. To reenable
+ the feature, assign a null value. See
+ <xref linkend="vrde-customization" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=DisableUpstreamAudio=1</option></term>
+ <listitem><para>
+ Disables the upstream audio VRDE server feature. To
+ reenable the feature, assign a null value. See
+ <xref linkend="vrde-customization" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=Client/DisableRDPDR=1</option></term>
+ <listitem><para>
+ Disables the RDP device redirection for smart cards VRDE
+ server feature. To reenable this feature, assign a null
+ value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=H3DRedirect/Enabled=1</option></term>
+ <listitem><para>
+ Enables the 3D redirection VRDE server feature. To disable
+ this feature, assign a null value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=Security/Method=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the following information that is required for a
+ connection:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>Negotiate</literal> indicates that both
+ Enhanced (TLS) and Standard RDP Security connections
+ are permitted. The security method is negotiated with
+ the client. This is the default value.
+ </para></listitem>
+ <listitem><para>
+ <literal>RDP</literal> indicates that only Standard
+ RDP Security is accepted.
+ </para></listitem>
+ <listitem><para>
+ <literal>TLS</literal> indicates that only Enhanced
+ RDP Security is accepted. The client must support TLS.
+ </para></listitem>
+ </itemizedlist><para>
+ See <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=ServerCertificate=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to the server certificate. See
+ <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=ServerPrivateKey=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to the server private key. See
+ <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=CACertificate=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to the CA self-signed
+ certificate. See <xref linkend="vrde-crypt" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty Audio/RateCorrectionMode=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the audio connection mode or the path to the
+ audio log file. Valid values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_VOID</literal> is no mode.
+ Use this value to unset any set audio mode.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_RC</literal> is the rate
+ correction mode.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_LPF</literal> is the low pass
+ filter mode.
+ </para></listitem>
+ <listitem><para>
+ <literal>VRDP_AUDIO_MODE_CS</literal> is the client
+ sync sync mode to prevent an underflow or overflow of
+ the client queue.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeproperty=LogPath=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Specifies the absolute path to the audio log file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeextpack=default | <replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the library to use to access the VM remotely.
+ The <literal>default</literal> value uses the RDP code
+ that is part of the &product-name; Extension Pack.
+ </para><para>
+ To use the VRDE module in VNC, specify
+ <literal>VNC</literal>. See
+ <xref linkend="otherextpacks"/>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdereport=default | <replaceable>port</replaceable></option></term>
+ <listitem><para>
+ <replaceable>port</replaceable> is the port or port range
+ to which the VRDE server binds. The
+ <literal>default</literal> or <literal>0</literal> value
+ uses port <literal>3389</literal>, which is the standard
+ RDP port.
+ </para><para>
+ You can specify a comma-separated list of ports or port
+ ranges of ports. Use a dash between two port numbers to
+ specify a port range. The VRDE server binds to only one of
+ the available ports from the list. Only one machine can
+ use a given port at a time. For example, the
+ <option>--vrdeport=5000,5010-5012</option> option
+ specifies that server can bind to one of following ports:
+ <literal>5000</literal>, <literal>5010</literal>,
+ <literal>5011</literal>, or <literal>5012</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeaddress=<replaceable>IP-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the IP address of the host network interface to
+ which the VRDE server binds. If you specify an IP address,
+ the server accepts connections only on the specified host
+ network interface.
+ </para><para>
+ Use this option to specify whether the VRDP server should
+ accept IPv4, IPv6, or both type of connections:
+ </para><itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">Only IPv4:</emphasis> Use the
+ <option>--vrdeaddress="0.0.0.0"</option> option.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Only IPv6:</emphasis> Use the
+ <option>--vrdeaddress="::"</option> option.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Both IPv6 and IPv4:</emphasis>
+ Use the <option>--vrdeaddress=&ldquo;&rdquo;</option>
+ option. This is the default value.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeauthtype=null | external | guest</option></term>
+ <listitem><para>
+ Specify whether to use authorization and how to perform
+ authorization. See <xref linkend="vbox-auth" />. Valid
+ values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>null</literal> provides no authentication.
+ </para></listitem>
+ <listitem><para>
+ <literal>external</literal> provides external
+ authentication through an authentication library.
+ </para></listitem>
+ <listitem><para>
+ <literal>guest</literal> performs authentication by
+ using guest user accounts. This unsupported method
+ requires that you install the Guest Additions on the
+ VM.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdeauthlibrary=default | <replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the library to use for RDP authentication. The
+ default library for external authentication is
+ <filename>VBoxAuth</filename>. See
+ <xref linkend="vbox-auth" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdemulticon=on | off</option></term>
+ <listitem><para>
+ Enables or disables the multiple connections VRDE server
+ feature, if supported. See
+ <xref linkend="vrde-multiconnection" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdereusecon=on | off</option></term>
+ <listitem><para>
+ Specifies how the VRDE server behaves when multiple
+ connections are disabled. When the value is
+ <literal>on</literal>, the server permits a new client to
+ connect and drops the existing connection. When the value
+ is <literal>off</literal>, a new connection is not
+ accepted if a client is already connected to the server.
+ This is the default value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdevideochannel=on | off</option></term>
+ <listitem><para>
+ Enables video redirection if supported by the VRDE server.
+ See <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vrdevideochannelquality=<replaceable>percent</replaceable></option></term>
+ <listitem><para>
+ Specifies the image quality for video redirection as a
+ value from 10 to 100 percent. The percentage represents
+ the JPEG compression level where a lower number diminishes
+ quality and provides higher compression. See
+ <xref linkend="vrde-videochannel" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-teleport">
+ <title>Teleporting Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options enable you to configure a machine as a
+ teleporting target. See <xref linkend="teleporting" />.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--teleporter=on | off</option></term>
+ <listitem><para>
+ Enables or disables the teleporter. When enabled, a
+ machine starts up and waits to receive a teleporting
+ request from the network instead of booting normally.
+ </para><para>
+ Teleporting requests are received on the port and address
+ specified using the following parameters.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--teleporterport=<replaceable>port</replaceable></option></term>
+ <listitem><para>
+ Specifies the port on which the VM listens to receive a
+ teleporting request from another VM.
+ <replaceable>port</replaceable> is any free TCP/IP port
+ number, such as <literal>6000</literal>. You must also
+ specify the <option>--teleporter</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--teleporteraddress=<replaceable>IP-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the IP address on which the VM listens to
+ receive a teleporting request from another VM.
+ <replaceable>IP-address</replaceable> is any IP address or
+ host name and specifies the TCP/IP socket on which to
+ bind. The default IP address is
+ <literal>0.0.0.0</literal>, which represents any IP
+ address. You must also specify the
+ <option>--teleporter</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--teleporterpassword=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the password to use for authentication. When
+ specified, the teleporting request only succeeds if the
+ password on the source machine is the same password as the
+ one you specify.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--teleporterpasswordfile=<replaceable>filename</replaceable></option></term>
+ <listitem><para>
+ Specifies a file that contains the password to use for
+ authentication. When specified, the teleporting request
+ only succeeds if the password on the source machine is the
+ same password as the one you specify in the password file.
+ A value of <literal>stdin</literal> reads the password
+ from standard input.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--cpuid=<replaceable>leaf</replaceable> <replaceable>eax</replaceable> <replaceable>ebx</replaceable> <replaceable>ecx</replaceable> <replaceable>edx</replaceable></option></term>
+ <listitem><para>
+ For advanced users only.
+ </para><para>
+ Restricts the virtual CPU capabilities that &product-name;
+ presents to the guest VM OS. This option affects what the
+ guest VM sees when it executes the
+ <literal>CPUID</literal> machine instruction.
+ </para><para>
+ Run the <command>VBoxManage modifyvm</command> command
+ with this option prior to a teleporting operation on both
+ the source and the target machines.
+ </para><para>
+ Use this option if a misbehaving application assumes that
+ certain CPU capabilities are present when they are not.
+ The meaning of the values is hardware dependent. See the
+ AMD or Intel processor documentation.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-debugging">
+ <title>Debugging Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Only use the following options to perform low-level VM
+ debugging. These options are for advanced users only.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--tracing-enabled=on | off</option></term>
+ <listitem><para>
+ Enables or disables the trace buffer. Note that when
+ specified, the trace buffer consumes some memory and adds
+ overhead.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tracing-config=<replaceable>config-string</replaceable></option></term>
+ <listitem><para>
+ Enables a tracing configuration that defines which group
+ of trace points are enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tracing-allow-vm-access=on | off</option></term>
+ <listitem><para>
+ Enables or disables VM access to the trace buffer. The
+ default value is <literal>off</literal>, which disables
+ access.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-usbcardreader">
+ <title>USB Card Reader Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The following options specify the access to a USB Card Reader by
+ the guest environment. A USB card reader can access data on
+ memory cards, such as CompactFlash (CF), Secure Digital (SD),
+ and MultiMediaCard (MMC).
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--usbcardreader=on | off</option></term>
+ <listitem><para>
+ Enables or disables the USB card reader interface.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-modifyvm-autostart">
+ <title>Autostarting VMs During Host System Boot</title>
+ <para>
+ The following options enable you to configure the VM autostart
+ feature, which automatically starts the VM at host system
+ boot-up. You must do some host system configuration before you
+ can use this feature. See <xref linkend="autostart" />.
+ </para>
+ <remark role="help-copy-synopsis"/>
+ <variablelist>
+ <varlistentry>
+ <term><option>--autostart-enabled=on | off</option></term>
+ <listitem><para>
+ Enables or disables VM autostart at host system boot-up
+ for the specified users.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--autostart-delay=<replaceable>seconds</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of seconds after host system boot-up
+ to autostart the VM.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command changes the description for the
+ <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage modifyvm ol7 --description "Oracle Linux 7 with UEK4"</screen>
+ <para>
+ The following command enables VirtualBox Remote Display Protocol
+ (VRDP) support for the <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage modifyvm ol7 --vrde on</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-controlvm" />,
+ <xref linkend="vboxmanage-createvm" />,
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-startvm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-movevm.xml b/doc/manual/en_US/man_VBoxManage-movevm.xml
new file mode 100644
index 00000000..7162f3e2
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-movevm.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage movevm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-movevm" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage movevm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-movevm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-movevm</refname>
+ <refpurpose>move a virtual machine to a new location on the host system</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-movevm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage movevm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--type=basic</arg>
+ <arg>--folder=<replaceable>folder-name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage movevm</command> command moves a virtual
+ machine (VM) to a new location on the host system.
+ </para>
+ <para>
+ When moved, all of the files that are associated with the VM, such
+ as settings files and disk image files, are moved to the new
+ location. The &product-name; configuration is updated
+ automatically.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM to move.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--type=basic</option></term>
+ <listitem><para>
+ Specifies that the type of the move operation is basic.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--folder=<replaceable>folder-name</replaceable></option></term>
+ <listitem><para>
+ Specifies a full path name or relative path name of the new
+ location on the host file system.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command moves the <filename>ol7</filename> VM to a
+ new location on the host system.
+ </para>
+<screen>$ VBoxManage movevm ol7 --folder "/home/testuser/vms" --type basic
+0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
+Machine has been successfully moved into /home/testuser/vms</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-natnetwork.xml b/doc/manual/en_US/man_VBoxManage-natnetwork.xml
new file mode 100644
index 00000000..11ab1d70
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-natnetwork.xml
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage natnetwork
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-natnetwork" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage natnetwork</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-natnetwork</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-natnetwork</refname>
+ <refpurpose>create, modify, and manage a NAT network</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-add">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage natnetwork add</command>
+ <group>
+ <arg choice="plain">--disable</arg>
+ <arg choice="plain">--enable</arg>
+ </group>
+ <arg choice="req">--netname=<replaceable>name</replaceable></arg>
+ <arg choice="req">--network=<replaceable>network</replaceable></arg>
+ <arg>--dhcp=on|off</arg>
+ <arg>--ipv6=on|off</arg>
+ <arg>--loopback-4=<replaceable>rule</replaceable></arg>
+ <arg>--loopback-6=<replaceable>rule</replaceable></arg>
+ <arg>--port-forward-4=<replaceable>rule</replaceable></arg>
+ <arg>--port-forward-6=<replaceable>rule</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-list">
+ <command>VBoxManage natnetwork list</command>
+ <arg><replaceable>filter-pattern</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-modify">
+ <command>VBoxManage natnetwork modify</command>
+ <arg>--dhcp=on|off</arg>
+ <group>
+ <arg choice="plain">--disable</arg>
+ <arg choice="plain">--enable</arg>
+ </group>
+ <arg choice="req">--netname=<replaceable>name</replaceable></arg>
+ <arg choice="req">--network=<replaceable>network</replaceable></arg>
+ <arg>--ipv6=on|off</arg>
+ <arg>--loopback-4=<replaceable>rule</replaceable></arg>
+ <arg>--loopback-6=<replaceable>rule</replaceable></arg>
+ <arg>--port-forward-4=<replaceable>rule</replaceable></arg>
+ <arg>--port-forward-6=<replaceable>rule</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-remove">
+ <command>VBoxManage natnetwork remove</command>
+ <arg choice="req">--netname=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-start">
+ <command>VBoxManage natnetwork start</command>
+ <arg choice="req">--netname=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-natnetwork-stop">
+ <command>VBoxManage natnetwork stop</command>
+ <arg choice="req">--netname=<replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage natnetwork</command> command enables you
+ to create, modify and manage a NAT network.
+ </para>
+ <para>
+ NAT networks use the Network Address Translation (NAT) service.
+ The service groups systems into a network and prevents external
+ systems from directly accessing the systems in the network. The
+ service also enables the systems in the network to communicate
+ with each other and with external systems by means of TCP and UDP
+ over IPv4 and IPv6.
+ </para>
+ <para>
+ A NAT service is attached to an internal network. For a VM to use
+ the NAT service, you must attach the VM to the internal network.
+ Specify the name of the internal network when you create the NAT
+ service. Note that the internal network is created if it does not
+ already exist.
+ </para>
+ <refsect2 id="vboxmanage-natnetwork-add">
+ <title>Add a NAT Network Service</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork add</command> command creates
+ a new internal network interface, and adds a NAT network
+ service. You must use this command before you can attach the VM
+ to the NAT network.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--disable</option></term>
+ <listitem><para>
+ Disables the NAT network service.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--enable</option></term>
+ <listitem><para>
+ Enables the NAT network service.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--netname=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the new internal network interface
+ on the host OS.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--network</option></term>
+ <listitem><para>
+ Specifies the static or DHCP network address and mask of
+ the NAT service interface. By default, this value
+ specifies the static network address.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dhcp</option></term>
+ <listitem><para>
+ Enables or disables the DHCP server that you specify by
+ using the <option>--netname</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ipv6</option></term>
+ <listitem><para>
+ Enables or disables IPv6. By default, IPv6 is disabled and
+ IPv4 is enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--loopback-4=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv4 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--loopback-6=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv6 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port-forward-4=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv4 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port-forward-6=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables IPv6 port forwarding by using the rule specified
+ by <replaceable>rule</replaceable>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-natnetwork-remove">
+ <title>Remove a NAT Network Service</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork remove</command> command
+ removes the specified NAT network service.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--netname=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the NAT network service to remove.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-natnetwork-start">
+ <title>Start a NAT Network Service</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork start</command> command
+ starts a NAT network service and any associated DHCP server.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--netname=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the NAT network service to start.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-natnetwork-stop">
+ <title>Stop a NAT Network Service</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork stop</command> command stops
+ a NAT network service and any associated DHCP server.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--netname=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the NAT network service to stop.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-natnetwork-list">
+ <title>List All NAT Network Services</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork list</command> command lists
+ all NAT network services. You can use a pattern to show a subset
+ of the NAT network services.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>filter-pattern</replaceable></term>
+ <listitem><para>
+ Specifies an optional filtering pattern.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-natnetwork-modify">
+ <title>Modify the Settings of a NAT Network Service</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage natnetwork modify</command> command
+ modifies the settings of an existing internal network interface.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--disable</option></term>
+ <listitem><para>
+ Disables the NAT network service.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--enable</option></term>
+ <listitem><para>
+ Enables the NAT network service.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--netname=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the new internal network interface
+ on the host OS.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--network</option></term>
+ <listitem><para>
+ Specifies the static or DHCP network address and mask of
+ the NAT service interface. By default, this value
+ specifies the static network address.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dhcp</option></term>
+ <listitem><para>
+ Enables or disables the DHCP server that you specify by
+ using the <option>--netname</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--ipv6</option></term>
+ <listitem><para>
+ Enables or disables IPv6. By default, IPv6 is disabled and
+ IPv4 is enabled.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--loopback-4=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv4 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--loopback-6=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv6 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port-forward-4=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables an IPv4 loopback interface by using the specified
+ rule.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port-forward-6=<replaceable>rule</replaceable></option></term>
+ <listitem><para>
+ Enables IPv6 port forwarding by using the rule specified
+ by <replaceable>rule</replaceable>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command shows how to create a NAT network for the
+ <literal>natnet1</literal> internal network that uses the
+ <literal>192.168.15.0/24</literal> network address and mask of the
+ NAT service interface. In this static configuration, the gateway
+ is assigned the <literal>192.168.15.1</literal> IP address by
+ default. Note that this IP address is the next address after the
+ network address that you specify with the
+ <option>--network</option> option.
+ </para>
+<screen>$ VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable</screen>
+ <para>
+ The following command shows how to add a DHCP server to the
+ <literal>natnet1</literal> NAT network after creation:
+ </para>
+<screen>$ VBoxManage natnetwork modify --netname natnet1 --dhcp on</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-registervm.xml b/doc/manual/en_US/man_VBoxManage-registervm.xml
new file mode 100644
index 00000000..5f5946c6
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-registervm.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage registervm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-registervm" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage registervm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-registervm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-registervm</refname>
+ <refpurpose>register a virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-registervm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage registervm</command>
+ <arg choice="req"><replaceable>filename</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage registervm</command> command enables you
+ to create a virtual machine (VM) by importing an XML machine
+ configuration file into &product-name;. The VM cannot conflict
+ with a VM that is already registered in &product-name;. In
+ addition, the VM cannot have any hard disks or removable disks
+ attached. Ensure that the XML machine configuration file is in the
+ machines folder prior to registration.
+ </para>
+ <note>
+ <para>
+ When you use the <command>VBoxManage createvm</command> command
+ to create a VM, you can specify the <option>--register</option>
+ option to register the VM.
+ </para>
+ </note>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the XML machine configuration file. This file has
+ the <filename>.vbox</filename> file extension.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command registers a VM called
+ <literal>vm2</literal>. The XML machine configuration file for the
+ VM is located in the default machines folder.
+ </para>
+<screen>$ VBoxManage registervm "/home/user/VirtualBox VMs/vm2/vm2.vbox"</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-createvm"/>,
+ <xref linkend="vboxmanage-unregistervm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-setextradata.xml b/doc/manual/en_US/man_VBoxManage-setextradata.xml
new file mode 100644
index 00000000..4cf52ff3
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-setextradata.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage setextradata
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-setextradata" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage setextradata</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-setextradata</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-setextradata</refname>
+ <refpurpose>set a keyword value that is associated with a virtual machine or
+ configuration</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-setextradata">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage setextradata</command>
+ <group choice="req">
+ <arg choice="plain">global</arg>
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req"><replaceable>keyword</replaceable></arg>
+ <arg><replaceable>value</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage setextradata</command> command enables you
+ to set a keyword value that is associated with a virtual machine
+ (VM) or with an &product-name; configuration.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>global</literal></term>
+ <listitem><para>
+ Sets information about the configuration rather than a VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>keyword</replaceable></term>
+ <listitem><para>
+ Specifies the keyword for which to set its value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>value</replaceable></term>
+ <listitem><para>
+ Specifies the keyword value. Specifying no value removes the
+ keyword.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command sets the <literal>installdate</literal>
+ keyword value for the <literal>Fedora5</literal> VM to
+ <literal>2019.01.01</literal>:
+ </para>
+<screen>$ VBoxManage setextradata Fedora5 installdate 2019.01.01</screen>
+ <para>
+ The following command unsets the value of the
+ <literal>installdate</literal> keyword for the
+ <literal>Fedora5</literal> VM:
+ </para>
+<screen>$ VBoxManage setextradata Fedora5 installdate</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-getextradata" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-setproperty.xml b/doc/manual/en_US/man_VBoxManage-setproperty.xml
new file mode 100644
index 00000000..81cd3e62
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-setproperty.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage setproperty
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-setproperty" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage setproperty</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-setproperty</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-setproperty</refname>
+ <refpurpose>change global settings</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-setproperty">
+ <command>VBoxManage setproperty</command>
+ <arg choice="req"><replaceable>property-name</replaceable></arg>
+ <arg choice="req"><replaceable>property-value</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage setproperty</command> command enables you
+ to change global settings that affect the entire &product-name;
+ installation. Some of these settings correspond to the settings in
+ the <emphasis role="bold">Preferences</emphasis> dialog in the
+ VirtualBox Manager.
+ </para>
+ <para>
+ The following properties are available:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>autostartdbpath</literal></term>
+ <listitem><para>
+ Specifies the path to the autostart database. Valid values
+ are <literal>null</literal>, which disables the autostart
+ database, or the name of the folder that contains the
+ database. See <xref linkend="autostart" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>defaultfrontend</literal></term>
+ <listitem><para>
+ Specifies the global default VM frontend. Valid values are
+ <literal>default</literal>, which specifies the default
+ frontend, or the name of the frontend to use.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>hwvirtexclusive</literal></term>
+ <listitem><para>
+ Specifies whether &product-name; makes exclusive use of the
+ Intel VT-x or AMD-V hardware virtualization extensions of
+ the host system's processor. See <xref linkend="hwvirt" />.
+ </para><para>
+ Valid values are as follows:
+ </para><itemizedlist>
+ <listitem><para>
+ <literal>on</literal> enables &product-name; to make
+ exclusive use of these extensions. This is the default
+ value.
+ </para></listitem>
+ <listitem><para>
+ <literal>off</literal> shares these extensions with
+ other hypervisors that run simultaneously. Note that
+ disabling this setting has negative performance
+ implications.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>logginglevel</literal></term>
+ <listitem><para>
+ Specifies the VBoxSVC release logging details. See
+ <ulink url="http://www.virtualbox.org/wiki/VBoxLogging" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>loghistorycount</literal></term>
+ <listitem><para>
+ Specifies the number of rotated VM logs to retain.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>machinefolder</literal></term>
+ <listitem><para>
+ Specifies the default folder in which virtual machine (VM)
+ definitions are stored. Valid values are
+ <literal>default</literal>, which specifies the default
+ storage folder, or the name of the folder to use. See
+ <xref linkend="vboxconfigdata" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>proxymode</literal></term>
+ <listitem><para>
+ Configures the mode for an HTTP proxy server. Valid values
+ are as follows:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>manual</literal></term>
+ <listitem><para>
+ Configure the URL of a HTTP proxy server manually,
+ using the <literal>proxyurl</literal> property value.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>noproxy</literal></term>
+ <listitem><para>
+ Do not use an HTTP proxy server. A direct connection
+ to the Internet is used.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>system</literal></term>
+ <listitem><para>
+ Detect the proxy settings automatically for the host
+ network. This is the default value.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>proxyurl</literal></term>
+ <listitem><para>
+ Specifies the URL for an HTTP proxy server when you specify
+ a manual proxy by setting the <literal>proxymode</literal>
+ property to <literal>manual</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>vrdeauthlibrary</literal></term>
+ <listitem><para>
+ Specifies which library to use when external authentication
+ has been configured for a particular VM. Valid values are
+ <literal>default</literal>, which specifies the default
+ library, or the name of the library to use. See
+ <xref linkend="vbox-auth" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>vrdeextpack</literal></term>
+ <listitem><para>
+ Specifies the library that implements the VirtualBox Remote
+ Desktop Extension (RDE). Valid values are
+ <literal>null</literal>, which disables the RDE, or the name
+ of the library to use.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>websrvauthlibrary</literal></term>
+ <listitem><para>
+ Specifies which library the web service uses to authenticate
+ users. Valid values are <literal>default</literal>, which
+ specifies the default library, <literal>null</literal>,
+ which disables authentication, or the name of the library to
+ use. For information about the &product-name; web service,
+ see <xref linkend="VirtualBoxAPI" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command configures &product-name; to use the
+ specified HTTP proxy server.
+ </para>
+<screen>$ VBoxManage setproperty proxymode manual
+$ VBoxManage setproperty proxyurl "http://myproxy.com:8080"</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-startvm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-sharedfolder.xml b/doc/manual/en_US/man_VBoxManage-sharedfolder.xml
new file mode 100644
index 00000000..1ba24bed
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-sharedfolder.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage sharedfolder
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-sharedfolder" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage sharedfolder</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-sharedfolder</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-sharedfolder</refname>
+ <refpurpose>add and remove shared folders</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-sharedfolder-add">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage sharedfolder add</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--name=<replaceable>name</replaceable></arg>
+ <arg choice="req">--hostpath=<replaceable>hostpath</replaceable></arg>
+ <arg>--readonly</arg>
+ <arg>--transient</arg>
+ <arg>--automount</arg>
+ <arg>--auto-mount-point=<replaceable>path</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-sharedfolder-remove">
+ <command>VBoxManage sharedfolder remove</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--name=<replaceable>name</replaceable></arg>
+ <arg>--transient</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ Shared folders enable you to share data between the host system
+ and guests. To use shared folders, you must first install the
+ &product-name; Guest Additions software on the guest OS.
+ </para>
+ <para>
+ The shared folder is associated with a share name and the full
+ path name of the folder or directory on the host system. The share
+ name is a unique name within the namespace of the host OS.
+ </para>
+ <refsect2 id="vboxmanage-sharedfolder-add">
+ <title>Add a Shared Folder</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage sharedfolder add</command> command
+ creates a shared folder. The folder you specify is on the host
+ computer. When configured, the contents of the folder on the
+ host system can be shared with the guest OS.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the name or UUID of the guest VM that shares a
+ folder with the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--name=<replaceable>name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the share, which is a unique name
+ within the namespace of the host OS.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--hostpath=<replaceable>hostpath</replaceable></term>
+ <listitem><para>
+ Specifies the absolute path of the folder or directory on
+ the host OS to share with the guest OS.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--readonly</term>
+ <listitem><para>
+ Specifies that the share has only read-only access to
+ files at the host path.
+ </para><para>
+ By default, shared folders have read-write access to the
+ files at the host path. However on Linux distributions,
+ shared folders are mounted with 770 file permissions with
+ the <literal>root</literal> user and the
+ <literal>vboxsf</literal> group. By using this option, the
+ file permissions become 700.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--transient</term>
+ <listitem><para>
+ Specifies that the share is transient, which means that it
+ can be added and removed at runtime and does not persist
+ after the VM stops.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--automount</term>
+ <listitem><para>
+ Specifies that the share is automatically mounted.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--auto-mount-point=<replaceable>path</replaceable></term>
+ <listitem><para>
+ Specifies the mount point of the share. This guest OS specific.
+ </para><para>
+ For Windows and OS/2 guest this must be an unused drive letter.
+ If left blank (or if the drive letter is already in use), the
+ last unused drive letter is used instead (i.e. searching from
+ <literal>Z:</literal> thru <literal>A:</literal>).
+ </para><para>
+ For Linux, Solaris and other unix guest, it must be an absolute
+ path like <filename>/mnt/mysharedfolder</filename>. If left
+ empty the default location is
+ <filename>/media/sf_<replaceable>sharename</replaceable></filename>.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-sharedfolder-remove">
+ <title>Remove a Shared Folder</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage sharedfolder remove</command> command
+ removes a shared folder.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the name or UUID of the guest VM that shares a
+ folder with the host system.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--name=<replaceable>name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the share to remove.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--transient</term>
+ <listitem><para>
+ Specifies that the share is transient, which means that it
+ can be added and removed at runtime and does not persist
+ after the VM stops.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a shared folder called
+ <filename>o7share</filename> for the <filename>ol7</filename> VM.
+ The share is mounted automatically when the VM is started.
+ </para>
+<screen>$ VBoxManage sharedfolder add ol7 --name ol7share --hostpath "/home/user/ol7share" --automount</screen>
+ <para>
+ The following command removes the shared folder called
+ <filename>o7share</filename> for the <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage sharedfolder remove ol7 --name ol7share</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-showmediuminfo.xml b/doc/manual/en_US/man_VBoxManage-showmediuminfo.xml
new file mode 100644
index 00000000..eb9893c1
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-showmediuminfo.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage showmediuminfo
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-showmediuminfo" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage showmediuminfo</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-showmediuminfo</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-showmediuminfo</refname>
+ <refpurpose>show information about a medium</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-showmediuminfo">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage showmediuminfo</command>
+ <group>
+ <arg choice="plain">disk</arg>
+ <arg choice="plain">dvd</arg>
+ <arg choice="plain">floppy</arg>
+ </group>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage showmediuminfo</command> command shows the
+ following information about a medium:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ Size
+ </para></listitem>
+ <listitem><para>
+ Size on disk
+ </para></listitem>
+ <listitem><para>
+ Type
+ </para></listitem>
+ <listitem><para>
+ In use by virtual machines (VMs)
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ The medium must be specified either by its UUID, if the medium is
+ registered, or by its filename. Registered images can be listed
+ using <command>VBoxManage list hdds</command>, <command>VBoxManage
+ list dvds</command>, or <command>VBoxManage list
+ floppies</command>, as appropriate.
+ </para>
+ <para>
+ For backward compatibility, you can also use the
+ <command>showvdiinfo</command> command to obtain information about
+ the medium.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><literal>disk</literal> | <literal>dvd</literal> | <literal>floppy</literal></term>
+ <listitem><para>
+ Specifies the type of medium. Valid values are
+ <literal>disk</literal> (hard drive),
+ <literal>dvd</literal>, or <literal>floppy</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or
+ absolute path name of the medium or image.
+ </para><para>
+ If the medium is registered, you can specify the UUID. You
+ can also list registered images by using the
+ <command>VBoxManage list hdds</command>, <command>VBoxManage
+ list dvds</command>, or <command>VBoxManage list
+ floppies</command> command.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command shows information about the
+ <filename>disk01.vdi</filename> disk image:
+ </para>
+<screen>$ VBoxManage showmediuminfo disk01.vdi</screen>
+ <para>
+ The following command shows information about the
+ <filename>floppy01.img</filename> floppy disk image.
+ </para>
+<screen>$ VBoxManage showmediuminfo floppy floppy01.img</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-showvminfo.xml b/doc/manual/en_US/man_VBoxManage-showvminfo.xml
new file mode 100644
index 00000000..e435109c
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-showvminfo.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage showvminfo
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-showvminfo" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage showvminfo</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-showvminfo</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-showvminfo</refname>
+ <refpurpose>show configuration information or log file contents for a virtual
+ machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-showvminfo-default">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage showvminfo</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--details</arg>
+ <arg>--machinereadable</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-showvminfo-log">
+ <command>VBoxManage showvminfo</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--log=<replaceable>index</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage showvminfo</command> command outputs
+ configuration information or log file contents for a specified
+ virtual machine (VM).
+ </para>
+ <refsect2 id="vboxmanage-showvminfo-default">
+ <title>Viewing Virtual Machine Information</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage showvminfo</command> command outputs
+ information about the specified VM in a detailed format or in a
+ machine-readable format.
+ </para>
+ <para>
+ The <command>VBoxManage showvminfo</command> command shows the
+ same information as the <command>VBoxManage list vms
+ --long</command> command for the specified VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--details</option></term>
+ <listitem><para>
+ Includes detailed information about the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--machinereadable</option></term>
+ <listitem><para>
+ Specifies that the VM information be in a machine-readable
+ format.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-showvminfo-log">
+ <title>Viewing Virtual Machine Log Contents</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage showvminfo --log</command> command
+ outputs the contents of one of the specified VM's log files.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--log=<replaceable>index</replaceable></option></term>
+ <listitem><para>
+ Specifies a numerical index that identifies the log file.
+ </para><para>
+ The index value starts at <literal>0</literal>, which
+ indicates the <filename>VBox.log</filename> file. An index
+ value of <literal>1</literal> indicates the
+ <filename>VBoxHardening.log</filename> file. Index values
+ starting at <literal>2</literal> indicate other log files,
+ such as the <filename>VBox.log.1</filename> file.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following example shows typical output for this command:
+ </para>
+<screen>$ VBoxManage showvminfo "Windows 10"
+VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
+(C) 2005-2019 Oracle Corporation
+All rights reserved.
+
+Name: Windows 10
+Groups: /
+Guest OS: Windows 10 (64-bit)
+UUID: 1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
+Config file: /home/username/VirtualBox VMs/Windows 10/Windows 10.vbox
+Snapshot folder: /home/username/VirtualBox VMs/Windows 10/Snapshots
+Log folder: /home/username/VirtualBox VMs/Windows 10/Logs
+Hardware UUID: 1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
+Memory size: 2048MB
+Page Fusion: off
+VRAM size: 12MB
+CPU exec cap: 100%
+...</screen>
+ <para>
+ The following example shows the information output in a
+ machine-readable format, which shows the entries as a
+ <replaceable>property</replaceable>=<replaceable>value</replaceable>
+ string:
+ </para>
+<screen>$ VBoxManage showvminfo "Windows 10" --machinereadable
+...
+groups="/"
+ostype="Windows 10 (64-bit)"
+UUID="1bf3464d-57c6-4d49-92a9-a5cc3816b7e7"
+...</screen>
+ <para>
+ The following example shows the contents of the
+ <filename>VBox.log</filename> log file:
+ </para>
+<screen>$ VBoxManage showvminfo "Windows 10" --log 0
+00:00:02.895106 VirtualBox VM 6.0.0_RC1 r127378 linux.amd64 (Dec 10 2018 17:16:06) release log
+00:00:02.895109 Log opened 2018-12-14T14:31:44.088259000Z
+00:00:02.895111 Build Type: release
+00:00:02.895115 OS Product: Linux
+00:00:02.895117 OS Release: 4.1.12-61.1.22.el7uek.x86_64
+00:00:02.895119 OS Version: #2 SMP Fri Dec 2 09:28:44 PST 2016
+...</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-snapshot.xml b/doc/manual/en_US/man_VBoxManage-snapshot.xml
new file mode 100644
index 00000000..add4d862
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-snapshot.xml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage snapshot
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-snapshot" lang="en">
+ <refentryinfo>
+ <pubdate>March 2019</pubdate>
+ <title>VBoxManage snapshot</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-snapshot</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-snapshot</refname>
+ <refpurpose>manage &product-name; virtual machine snapshots</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-take">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">take</arg>
+
+ <arg choice="req"><replaceable>snapshot-name</replaceable></arg>
+
+ <arg>--description=<replaceable>description</replaceable></arg>
+
+ <arg>--live</arg>
+
+ <arg>--uniquename Number,Timestamp,Space,Force</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-delete">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">delete</arg>
+
+ <arg choice="req"><replaceable>snapshot-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-restore">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">restore</arg>
+
+ <arg choice="req"><replaceable>snapshot-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-restorecurrent">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">restorecurrent</arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-edit">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">edit</arg>
+
+ <group choice="req">
+ <arg choice="plain"><replaceable>snapshot-name</replaceable></arg>
+ <arg choice="plain">--current</arg>
+ </group>
+
+ <arg>--description=<replaceable>description</replaceable></arg>
+
+ <arg>--name=<replaceable>new-name</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-list">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">list</arg>
+
+ <group choice="opt"><arg choice="opt">--details</arg><arg choice="opt">--machinereadable</arg></group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-snapshot-showvminfo">
+ <command>VBoxManage snapshot</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+
+ <arg choice="plain">showvminfo</arg>
+
+ <arg choice="req"><replaceable>snapshot-name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage snapshot</command> command manages
+ snapshots.
+ </para>
+ <para>
+ &product-name; uses the snapshot to capture the state of a virtual
+ machine (VM). You can later use the snapshot to revert to the
+ state described by the snapshot.
+ </para>
+ <para>
+ A snapshot is a complete copy of a VM's settings. If you take the
+ snapshot while the VM is running, the snapshot also includes the
+ VM's state file.
+ </para>
+ <para>
+ After you take a snapshot, &product-name; creates a
+ <emphasis>differencing hard disk</emphasis> for each normal hard
+ disk that is associated with the host machine. When you restore a
+ snapshot, &product-name; uses these differencing files to quickly
+ reset the contents of the VM's virtual hard disks.
+ </para>
+ <para>
+ For each <command>VBoxManage snapshot</command> command, you must
+ specify the name or the universal unique identifier (UUID) of the
+ VM for which you want to take a snapshot.
+ </para>
+ <refsect2>
+ <title>General Command Operand</title>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid|vmname</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or name of the VM.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-take">
+ <title>Take a Snapshot of a Virtual Machine</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot take</command> command takes a
+ snapshot of the current state of the VM. You must supply a name
+ for the snapshot and can optionally supply a description. The
+ new snapshot is inserted into the snapshots tree as a child of
+ the current snapshot and then becomes the new current snapshot.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--description=<replaceable>description</replaceable></option></term>
+ <listitem><para>
+ Specifies a description of the snapshot.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--live</option></term>
+ <listitem><para>
+ Specifies that the VM is not stopped while you create the
+ snapshot. This operation is know as live snapshotting.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--uniquename Number,Timestamp,Space,Force</option></term>
+ <listitem><para>
+ TBD.
+ </para><remark>
+ What does this option do and how is it used?
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>snapshot-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the snapshot to create.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-delete">
+ <title>Delete a Snapshot</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot delete</command> command
+ removes the specified snapshot.
+ </para>
+ <para>
+ The delete operation may take some time to finish. This is
+ because the differencing images that are associated with the
+ snapshot may need to be merged with their child differencing
+ images.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>snapshot-name</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or name of the snapshot.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-restore">
+ <title>Restore a Snapshot</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot restore</command> command
+ restores the specified snapshot. This operation resets the VM's
+ settings and current state to that of the snapshot. The state of
+ the VM on which you restore a snapshot is lost. When restored,
+ the specified snapshot becomes the new current snapshot and
+ subsequent snapshots are children of that snapshot.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>snapshot-name</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or name of the snapshot.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-restorecurrent">
+ <title>Restore the Current Snapshot</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot restorecurrent</command>
+ command restores the current snapshot. The current snapshot is
+ the one from which the current state is derived. This command is
+ equivalent to using the <command>VBoxManage snapshot
+ restore</command> command and specifying the name or UUID of the
+ current snapshot.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-edit">
+ <title>Change the Name or Description of an Existing Snapshot</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot edit</command> command enables
+ you to change the name or the description of a specified
+ snapshot.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>snapshot-name</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or name of the snapshot to edit.
+ </para><para>
+ This option is mutually exclusive with the
+ <option>--current</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--current</option></term>
+ <listitem><para>
+ Specifies that you update the current version of the
+ snapshot.
+ </para><para>
+ This option is mutually exclusive with a specific snapshot
+ name or its UUID.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--description=<replaceable>description</replaceable></option></term>
+ <listitem><para>
+ Specifies a new description for the snapshot.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--name=<replaceable>new-name</replaceable></option></term>
+ <listitem><para>
+ Specifies a new name for the snapshot.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-list">
+ <title>List the Snapshots</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot list</command> command lists
+ all the snapshots for a VM.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--details</option></term>
+ <listitem><para>
+ Specifies that the output shows detailed information about
+ the snapshot.
+ </para><para>
+ This option is mutually exclusive with the
+ <option>--machinereadable</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--machinereadable</option></term>
+ <listitem><para>
+ Specifies that the output is shown in a machine-readable
+ format.
+ </para><para>
+ This option is mutually exclusive with the
+ <option>--details</option> option.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-snapshot-showvminfo">
+ <title>Show Information About a Snapshot's Settings</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage snapshot showvminfo</command> command
+ enables you to view the VM settings that are part of an existing
+ snapshot.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>snapshot-name</replaceable></term>
+ <listitem><para>
+ Specifies the UUID or name of the snapshot.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command creates a snapshot of the
+ <computeroutput>ol7u4</computeroutput> VM. The snapshot is called
+ <computeroutput>ol7u4-snap-001</computeroutput>. The command uses
+ the <option>--description</option> option to provide a description
+ of the snapshot contents.
+ </para>
+<screen>
+$ VBoxManage snapshot ol7u4 take ol7u4-snap-001 \
+--description="Oracle Linux 7.4"
+</screen>
+ <para>
+ The following command lists the snapshots for the
+ <computeroutput>ol7u4</computeroutput> VM.
+ </para>
+<screen>
+$ VBoxManage snapshot ol7u4 list
+</screen>
+ <para>
+ The following command changes the description for the
+ <computeroutput>ol7u4-snap-001</computeroutput> snapshot of the
+ <computeroutput>ol7u4</computeroutput> VM.
+ </para>
+<screen>
+$ VBoxManage snapshot ol7u4 edit ol7u4-snap-001 \
+--description="Oracle Linux 7.4 with UEK4 kernel"
+</screen>
+ <para>
+ The following command shows VM settings for the
+ <computeroutput>ol7u1-snap-001</computeroutput> snapshot of the
+ <computeroutput>ol7u4</computeroutput> VM.
+ </para>
+<screen>
+$ VBoxManage snapshot ol7u4 showvminfo ol7u4-snap-001
+Name: ol7u4
+Groups: /
+Guest OS: Oracle (64-bit)
+UUID: 43349d78-2ab3-4cb8-978f-0e755cd98090
+Config file: C:\Users\user1\VirtualBox VMs\ol7u4\ol7u4.vbox
+...
+Snapshots:
+
+ Name: ol7u4-snap-001 (UUID: 1cffc37d-5c37-4b86-b9c5-a0f157a55f43)
+ Description: Oracle Linux 7.4 with UEK4 kernel
+</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-startvm.xml b/doc/manual/en_US/man_VBoxManage-startvm.xml
new file mode 100644
index 00000000..b3725e30
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-startvm.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage startvm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-startvm" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage startvm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-startvm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-startvm</refname>
+ <refpurpose>start a virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-startvm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage startvm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--putenv=<replaceable>name</replaceable>[=<replaceable>value</replaceable>]</arg>
+ <arg>--type=<group>
+ <arg choice="plain">gui</arg>
+ <arg choice="plain">headless</arg>
+ <arg choice="plain">sdl</arg>
+ <arg choice="plain">separate</arg>
+ </group></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage startvm</command> command starts an
+ &product-name; virtual machine (VM) that is in the Powered Off or
+ Saved state.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the name or Universally Unique Identifier (UUID)
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--putenv=<replaceable>name</replaceable>=<replaceable>value</replaceable></option></term>
+ <listitem><para>
+ Assigns a value to an environment variable as a name-value
+ pair. For example, VBOX_DISABLE_HOST_DISK_CACHE=1.
+ </para><para>
+ The short form of this option is <option>-E</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--type=gui | headless | sdl | separate</option></term>
+ <listitem><para>
+ Specifies the frontend used to start the VM.
+ </para><para>
+ You can use the <command>VBoxManage setproperty</command>
+ command to set a global default value for the frontend.
+ Alternatively, you can use the <command>VBoxManage
+ modifyvm</command> command to specify a default frontend
+ value for a specific VM. If neither a global or per-VM
+ default value is set and you do not specify the
+ <option>--type</option> option, then the VM opens in a
+ window on the host desktop.
+ </para><para>
+ The <option>--type</option> option accepts the following
+ values:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>gui</literal></term>
+ <listitem><para>
+ Starts a VM in a graphical user interface (GUI)
+ window. This is the default.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>headless</literal></term>
+ <listitem><para>
+ Starts a VM for remote display only.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>sdl</literal></term>
+ <listitem><para>
+ Starts a VM using the VBoxSDL frontend.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>separate</literal></term>
+ <listitem><para>
+ Starts a VM with a detachable user interface (UI),
+ which means that the VM runs headless with the UI in a
+ separate process.
+ </para><para>
+ This is an experimental feature that lacks certain
+ functionality, such as 3D acceleration.
+ </para></listitem>
+ </varlistentry>
+ </variablelist></listitem>
+ </varlistentry>
+ </variablelist>
+ <note>
+ <para>
+ If a VM fails to start with a particular frontend and the error
+ information is inconclusive, consider starting the VM directly
+ by running the frontend. This workaround might provide
+ additional error information.
+ </para>
+ </note>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command starts the <literal>ol7u6</literal> VM:
+ </para>
+<screen>$ VBoxManage startvm ol7u6</screen>
+ <para>
+ The following command starts the
+ <literal>ol7u6-mininstall</literal> VM in headless mode.
+ </para>
+<screen>$ VBoxManage startvm ol7u6-mininstall --type headless</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+<!--<xref linkend="vboxmanage-vboxheadless" />-->
+ <xref linkend="vboxheadless" />,
+ <xref linkend="vboxmanage-setproperty" />,
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-storageattach.xml b/doc/manual/en_US/man_VBoxManage-storageattach.xml
new file mode 100644
index 00000000..4edd541b
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-storageattach.xml
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage storageattach
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-storageattach" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage storageattach</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-storageattach</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-storageattach</refname>
+ <refpurpose>attach, remove, and modify storage media used by a virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-storageattach">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage storageattach</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--storagectl=<replaceable>name</replaceable></arg>
+ <arg>--bandwidthgroup=<group choice="plain">
+ <arg choice="plain">name</arg>
+ <arg choice="plain">none</arg>
+ </group></arg>
+ <arg>--comment=<replaceable>text</replaceable></arg>
+ <arg>--device=<replaceable>number</replaceable></arg>
+ <arg>--discard=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--encodedlun=<replaceable>lun</replaceable></arg>
+ <arg>--forceunmount</arg>
+ <arg>--hotpluggable=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--initiator=<replaceable>initiator</replaceable></arg>
+ <arg>--intnet</arg>
+ <arg>--lun=<replaceable>lun</replaceable></arg>
+ <arg>--medium=<group choice="plain">
+ <arg choice="plain">none</arg>
+ <arg choice="plain">emptydrive</arg>
+ <arg choice="plain">additions</arg>
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>filename</replaceable></arg>
+ <arg choice="plain">host:<replaceable>drive</replaceable></arg>
+ <arg choice="plain">iscsi</arg>
+ </group></arg>
+ <arg>--mtype=<group choice="plain">
+ <arg choice="plain">normal</arg>
+ <arg choice="plain">writethrough</arg>
+ <arg choice="plain">immutable</arg>
+ <arg choice="plain">shareable</arg>
+ <arg choice="plain">readonly</arg>
+ <arg choice="plain">multiattach</arg>
+ </group></arg>
+ <arg>--nonrotational=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--passthrough=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--passwordfile=<replaceable>file</replaceable></arg>
+ <arg>--password=<replaceable>password</replaceable></arg>
+ <arg>--port=<replaceable>number</replaceable></arg>
+ <arg>--server=<group choice="plain">
+ <arg choice="plain"><replaceable>name</replaceable></arg>
+ <arg choice="plain"><replaceable>ip</replaceable></arg>
+ </group></arg>
+ <arg>--setparentuuid=<replaceable>uuid</replaceable></arg>
+ <arg>--setuuid=<replaceable>uuid</replaceable></arg>
+ <arg>--target=<replaceable>target</replaceable></arg>
+ <arg>--tempeject=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--tport=<replaceable>port</replaceable></arg>
+ <arg>--type=<group choice="plain">
+ <arg choice="plain">dvddrive</arg>
+ <arg choice="plain">fdd</arg>
+ <arg choice="plain">hdd</arg>
+ </group></arg>
+ <arg>--username=<replaceable>username</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage storageattach</command> command enables
+ you to manage a storage medium that you connected to a storage
+ controller by using the <command>VBoxManage storagectl</command>
+ command.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or the
+ name of the virtual machine (VM).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--storagectl=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the storage controller. Use the
+ <command>VBoxManage showvminfo</command> command to list the
+ storage controllers that are attached to the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--port=<replaceable>number</replaceable></option></term>
+ <listitem><para>
+ Specifies the port number of the storage controller to
+ modify. You must specify this option unless the storage
+ controller has only a single port.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--device=<replaceable>number</replaceable></option></term>
+ <listitem><para>
+ Specifies the port's device number to modify. You must
+ specify this option unless the storage controller has only
+ one device per port.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--type=dvddrive | fdd | hdd</option></term>
+ <listitem><para>
+ Specifies the drive type to which the medium is associated.
+ Only omit this option if the medium type can be determined
+ by using the <option>--medium</option> option or by
+ information provided by an earlier medium attachment
+ command.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--medium=none | emptydrive | additions | <replaceable>uuid</replaceable> | <replaceable>filename</replaceable> | host:<replaceable>drive</replaceable> | iscsi</option></term>
+ <listitem><para>
+ Specifies one of the following values:
+ </para><variablelist>
+ <varlistentry>
+ <term><literal>none</literal></term>
+ <listitem><para>
+ Removes any existing device from the specified slot.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>emptydrive</literal></term>
+ <listitem><para>
+ For a virtual DVD or floppy drive only.
+ </para><para>
+ Makes the device slot behave like a removeable drive
+ into which no media has been inserted.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>additions</literal></term>
+ <listitem><para>
+ For a virtual DVD drive only.
+ </para><para>
+ Attaches the VirtualBox Guest Additions image to the
+ specified device slot.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable></term>
+ <listitem><para>
+ Specifies the UUID of a storage medium to attach to
+ the specified device slot. The storage medium must
+ already be known to &product-name;, such as a storage
+ medium that is attached to another VM. Use the
+ <command>VBoxManage list</command> command to list
+ media.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>filename</replaceable></term>
+ <listitem><para>
+ Specifies the full path of an existing disk image to
+ attach to the specified device slot. The disk image
+ can be in ISO, RAW, VDI, VMDK, or other format.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>host:<replaceable>drive</replaceable></literal></term>
+ <listitem><para>
+ For a virtual DVD or floppy drive only.
+ </para><para>
+ Connects the specified device slot to the specified
+ DVD or floppy drive on the host computer.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>iscsi</literal></term>
+ <listitem><para>
+ For virtual hard disks only.
+ </para><para>
+ Specifies an iSCSI target for which you must specify
+ additional information. See
+ <xref linkend="storage-iscsi" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist><para>
+ For removeable media such as floppies and DVDs, you can make
+ configuration changes while a VM is running. Changes to
+ devices or hard disk device slots require that the VM be
+ powered off.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--mtype=normal | writethrough | immutable | shareable | readonly | multiattach</option></term>
+ <listitem><para>
+ Specifies how this medium behaves with respect to snapshots
+ and write operations. See <xref linkend="hdimagewrites" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--comment=<replaceable>text</replaceable></option></term>
+ <listitem><para>
+ Specifies an optional description to store with the medium.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--setuuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Modifies the UUID of a medium before attaching it to a VM.
+ </para><para>
+ This is an expert option. Inappropriate values might make
+ the medium unusable or lead to broken VM configurations if
+ another VM already refers to the same medium.
+ </para><para>
+ Using the <option>--setuuid=&ldquo;&rdquo;</option> option
+ assigns a new random UUID to an image, which can resolve
+ duplicate UUID errors if you used a file copy utility to
+ duplicate an image.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--setparentuuid=<replaceable>uuid</replaceable></option></term>
+ <listitem><para>
+ Modifies the parent UUID of a medium before attaching it to
+ a VM.
+ </para><para>
+ This is an expert option. Inappropriate values might make
+ the medium unusable or lead to broken VM configurations if
+ another VM already refers to the same medium.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passthrough=on | off</option></term>
+ <listitem><para>
+ For a virtual DVD drive only.
+ </para><para>
+ Enables writing to a DVD. This feature is experimental, see
+ <xref linkend="storage-cds" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tempeject=on | off</option></term>
+ <listitem><para>
+ For a virtual DVD drive only.
+ </para><para>
+ Specifies whether to permit a temporary guest-triggered
+ medium eject operation. When set to <literal>on</literal>,
+ you can eject a medium. The ability for a guest-triggered
+ eject operation does not persist if the VM is powered off
+ and restarted. So, when you set this option to
+ <literal>on</literal> and the VM is restarted, the
+ originally configured medium is still in the drive.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--nonrotational=on | off</option></term>
+ <listitem><para>
+ Enables you to specify that the virtual hard disk is
+ non-rotational. Some guest OSes, such as Windows 7 or later,
+ treat such disks as solid state drives (SSDs) and do not
+ perform disk fragmentation on them.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--discard=on | off</option></term>
+ <listitem><para>
+ Specifies whether to enable the auto-discard feature for a
+ virtual hard disk. When set to <literal>on</literal>, a VDI
+ image is shrunk in response to a <command>trim</command>
+ command from the guest OS.
+ </para><para>
+ The virtual hard disk must meet the following requirements:
+ </para><itemizedlist>
+ <listitem><para>
+ The disk format must be VDI.
+ </para></listitem>
+ <listitem><para>
+ The size of the cleared area of the disk must be at
+ least 1 MB.
+ </para></listitem>
+ <listitem><para>
+ Ensure that the space being trimmed is at least a 1 MB
+ contiguous block at a 1 MB boundary.
+ </para></listitem>
+ </itemizedlist><para>
+ Consider running defragmentation commands as background cron
+ jobs to save space. On Windows, run the <command>defrag.exe
+ /D</command> command. On Linux, run the <command>btrfs
+ filesystem defrag</command> command.
+ </para><note>
+ <para>
+ When you configure the guest OS to issue the
+ <command>trim</command> command, the guest OS typically
+ sees the disk as an SSD.
+ </para>
+ <para>
+ Ext4 supports the <option>-o discard</option> mount
+ option. Mac OS X might require additional settings.
+ Windows 7, 8, and 10 automatically detect and support
+ SSDs. The Linux <command>exFAT</command> driver from
+ Samsung supports the <command>trim</command> command.
+ </para>
+ </note><para>
+ The Microsoft implementation of exFAT might not support this
+ feature.
+ </para><para>
+ You can use other methods to issue trim commands. The Linux
+ <command>fstrim</command> command is part of the
+ <filename>util-linux</filename> package. Earlier solutions
+ required you to zero out unused areas by using the
+ <command>zerofree</command> or a similar command, and then
+ to compact the disk. You can only perform these steps when
+ the VM is offline.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bandwidthgroup=<replaceable>name</replaceable></option></term>
+ <listitem><para>
+ Specifies the bandwidth group to use for the device. See
+ <xref linkend="storage-bandwidth-limit" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--forceunmount</option></term>
+ <listitem><para>
+ For a virtual DVD or floppy drive only.
+ </para><para>
+ Forcibly unmounts the DVD, CD, or floppy or mounts a new
+ DVD, CD, or floppy even if the previous removable storage is
+ locked by the guest for reading. See
+ <xref linkend="storage-cds" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ The following options are applicable when you specify the
+ <option>--medium=iscsi</option> option:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--server=<replaceable>hostname</replaceable> | <replaceable>IP-address</replaceable></option></term>
+ <listitem><para>
+ Specifies the host name or IP address of the iSCSI target.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--target=<replaceable>target</replaceable></option></term>
+ <listitem><para>
+ Specifies the target name string, which is determined by the
+ iSCSI target and is used to identify the storage resource.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--tport=<replaceable>port</replaceable></option></term>
+ <listitem><para>
+ Specifies the TCP/IP port number of the iSCSI service on the
+ target.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--lun=<replaceable>LUN</replaceable></option></term>
+ <listitem><para>
+ Specifies the logical unit number (LUN) of the target
+ resource. For a single disk drive, the value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--encodedlun=<replaceable>LUN</replaceable></option></term>
+ <listitem><para>
+ Specifies the hexadecimal-encoded of the target resource.
+ For a single disk drive, the value is zero.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--username=<replaceable>username</replaceable></option></term>
+ <listitem><para>
+ Specifies the user name to use for target authentication.
+ </para><note>
+ <para>
+ Unless you provide a settings password, the user name is
+ stored as clear text in the XML machine configuration
+ file.
+ </para>
+ </note></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--password=<replaceable>password</replaceable></option></term>
+ <listitem><para>
+ Specifies the password used for target authentication.
+ </para><note>
+ <para>
+ Unless you provide a settings password, this password is
+ stored as clear text in the XML machine configuration
+ file. When you specify a settings password for the first
+ time, the target authentication password is stored in
+ encrypted form.
+ </para>
+ </note><remark>
+ This design does not conform to Oracle's security
+ guidelines. You should not be able to specify a password on
+ the command line because the password can be seen in a
+ process listing.
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--passwordfile=<replaceable>password-filename</replaceable></option></term>
+ <listitem><para>
+ Specifies a file that contains the target authentication
+ password as clear text.
+ </para><note>
+ <para>
+ Use permission and ownership settings to ensure that the
+ contents of this file cannot be read by unauthorized
+ users.
+ </para>
+ </note></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--initiator=<replaceable>initiator</replaceable></option></term>
+ <listitem><para>
+ Specifies the iSCSI initiator.
+ </para><para>
+ The Microsoft iSCSI Initiator is a system, such as a server,
+ that attaches to an IP network and initiates requests and
+ receives responses from an iSCSI target. The SAN components
+ in the iSCSI initiator are largely analogous to Fibre
+ Channel SAN components, and they include the following:
+ </para><itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">iSCSI driver.</emphasis>
+ Transports blocks of iSCSI commands over the IP network.
+ This iSCSI driver is installed on the iSCSI host and is
+ included with the Microsoft iSCSI Initiator.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Gigabit Ethernet
+ adapter.</emphasis> Connects to an iSCSI target. Use an
+ Ethernet adapter that can transmit 1000 megabits per
+ second (Mbps). Like standard 10/100 adapters, most
+ gigabit adapters use a preexisting Category 5 or
+ Category 6E cable. Each port on the adapter is
+ identified by a unique IP address.
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">iSCSI target.</emphasis> Is any
+ device that receives iSCSI commands. The device can be
+ an end node such as a storage device, or it can be an
+ intermediate device such as a network bridge between IP
+ and Fibre Channel devices. Each port on the storage
+ array controller or network bridge is identified by one
+ or more IP addresses.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--intnet</option></term>
+ <listitem><para>
+ Specifies whether to connect to the iSCSI target that uses
+ internal networking. This configuration requires further
+ configuration. See <xref linkend="iscsi-intnet" />.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command attaches the <filename>o7.vdi</filename>
+ disk image to the specified SATA storage controller on the
+ <filename>ol7</filename> VM.
+ </para>
+<screen>$ storageattach ol7 --storagectl "SATA Controller" --port 0 --device 0 \
+--type hdd --medium /VirtualBox/ol7/ol7.vdi</screen>
+ <para>
+ The following command attaches the
+ <filename>o7-r6-dvd.iso</filename> DVD image to the specified IDE
+ storage controller on the <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage storageattach ol7 --storagectl "IDE Controller" --port 0 --device 0 \
+--type dvddrive --medium ol7-r6-dvd.iso</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-showvminfo" />,
+ <xref linkend="vboxmanage-storagectl" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-storagectl.xml b/doc/manual/en_US/man_VBoxManage-storagectl.xml
new file mode 100644
index 00000000..17122861
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-storagectl.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage storagectl
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-storagectl" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage storagectl</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-storagectl</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-storagectl</refname>
+ <refpurpose>manage a storage controller</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-storagectl">
+ <command>VBoxManage storagectl</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg choice="req">--name=<replaceable>controller-name</replaceable></arg>
+ <arg>--add=<group choice="plain">
+ <arg choice="plain">floppy</arg>
+ <arg choice="plain">ide</arg>
+ <arg choice="plain">pcie</arg>
+ <arg choice="plain">sas</arg>
+ <arg choice="plain">sata</arg>
+ <arg choice="plain">scsi</arg>
+ <arg choice="plain">usb</arg>
+ </group></arg>
+ <arg>--controller=<group choice="plain">
+ <arg choice="plain">BusLogic</arg>
+ <arg choice="plain">I82078</arg>
+ <arg choice="plain">ICH6</arg>
+ <arg choice="plain">IntelAhci</arg>
+ <arg choice="plain">LSILogic</arg>
+ <arg choice="plain">LSILogicSAS</arg>
+ <arg choice="plain">NVMe</arg>
+ <arg choice="plain">PIIX3</arg>
+ <arg choice="plain">PIIX4</arg>
+ <arg choice="plain">USB</arg>
+ <arg choice="plain">VirtIO</arg>
+ </group></arg>
+ <arg>--bootable=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--hostiocache=<group choice="plain">
+ <arg choice="plain">on</arg>
+ <arg choice="plain">off</arg>
+ </group></arg>
+ <arg>--portcount=<replaceable>count</replaceable></arg>
+ <arg>--remove</arg>
+ <arg>--rename=<replaceable>new-controller-name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage storagectl</command> command enables you
+ to attach, modify, and remove a storage controller. After you
+ configure the storage controller, you can use the
+ <command>VBoxManage storageattach</command> command to attach
+ virtual media to the controller.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable> | <replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID) or name
+ of the virtual machine (VM).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--name=<replaceable>controller-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the storage controller.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--add=<replaceable>system-bus-type</replaceable></option></term>
+ <listitem><para>
+ Specifies the type of the system bus to which to connect the
+ storage controller. Valid values are
+ <literal>floppy</literal>, <literal>ide</literal>,
+ <literal>pcie</literal>, <literal>sas</literal>,
+ <literal>sata</literal>, <literal>scsi</literal>, and
+ <literal>usb</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--controller=<replaceable>chipset-type</replaceable></option></term>
+ <listitem><para>
+ Specifies the chipset type to emulate for the specified
+ storage controller. Valid values are
+ <literal>BusLogic</literal>, <literal>I82078</literal>,
+ <literal>ICH6</literal>, <literal>IntelAHCI</literal>,
+ <literal>LSILogic</literal>, <literal>LSILogicSAS</literal>,
+ <literal>NVMe</literal>, <literal>PIIX3</literal>,
+ <literal>PIIX4</literal>, and <literal>USB</literal>.
+ </para><para>
+ The default value varies, according to the type of storage
+ controller.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--portcount=<replaceable>count</replaceable></option></term>
+ <listitem><para>
+ Specifies the number of ports that the storage controller
+ supports. Valid values depend on the type of storage
+ controller.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hostiocache=on|off</option></term>
+ <listitem><para>
+ Specifies whether to use the host I/O cache for all disk
+ images attached to this storage controller. Valid values are
+ <literal>on</literal> and <literal>off</literal>. See
+ <xref linkend="iocaching" />.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--bootable=on|off</option></term>
+ <listitem><para>
+ Specifies whether this controller is bootable. Valid values
+ are <literal>on</literal> and <literal>off</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--rename=<replaceable>new-controller-name</replaceable></option></term>
+ <listitem><para>
+ Specifies a new name for the storage controller.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--remove</option></term>
+ <listitem><para>
+ Removes a storage controller from the VM configuration.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command creates a SATA storage controller called
+ <literal>sata01</literal> and adds it to the
+ <literal>ol7</literal> VM. The storage controller emulates the
+ IntelAHCI chipset.
+ </para>
+<screen>$ VBoxManage storagectl ol7 --name "sata01" --add sata --controller IntelAHCI</screen>
+ <para>
+ The following command creates an IDE storage controller called
+ <literal>ide01</literal> and adds it to the <literal>ol7</literal>
+ VM.
+ </para>
+<screen>$ VBoxManage storagectl ol7 --name "ide01" --add ide</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-storageattach" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-unattended.xml b/doc/manual/en_US/man_VBoxManage-unattended.xml
new file mode 100644
index 00000000..dec03d8f
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-unattended.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage unattended
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry id="vboxmanage-unattended" lang="en">
+
+ <refentryinfo>
+ <pubdate>$Date: 2020-02-04 11:54:12 +0100 (Tue, 04 Feb 2020) $</pubdate>
+ <title>VBoxManage unattended</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-unattended</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-unattended</refname>
+ <refpurpose>unattended guest OS installation</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-unattended-detect"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage unattended detect</command>
+ <arg choice="req">--iso=<replaceable>install-iso</replaceable></arg>
+ <arg>--machine-readable</arg>
+ </cmdsynopsis>
+ <cmdsynopsis id="synopsis-vboxmanage-unattended-install"> <!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage unattended install</command>
+ <arg choice="req"><replaceable>uuid|vmname</replaceable></arg>
+ <arg choice="req">--iso=<replaceable>install-iso</replaceable></arg>
+ <arg>--user=<replaceable>login</replaceable></arg>
+ <arg>--password=<replaceable>password</replaceable></arg>
+ <arg>--password-file=<replaceable>file</replaceable></arg>
+ <arg>--full-user-name=<replaceable>name</replaceable></arg>
+ <arg>--key=<replaceable>product-key</replaceable></arg>
+ <arg>--install-additions</arg>
+ <arg>--no-install-additions</arg>
+ <arg>--additions-iso=<replaceable>add-iso</replaceable></arg>
+ <arg>--install-txs</arg>
+ <arg>--no-install-txs</arg>
+ <arg>--validation-kit-iso=<replaceable>testing-iso</replaceable></arg>
+ <arg>--locale=<replaceable>ll_CC</replaceable></arg>
+ <arg>--country=<replaceable>CC</replaceable></arg>
+ <arg>--time-zone=<replaceable>tz</replaceable></arg>
+ <arg>--hostname=<replaceable>fqdn</replaceable></arg>
+ <arg>--package-selection-adjustment=<replaceable>keyword</replaceable></arg>
+ <arg>--dry-run</arg>
+ <arg>--auxiliary-base-path=<replaceable>path</replaceable></arg>
+ <arg>--image-index=<replaceable>number</replaceable></arg>
+ <arg>--script-template=<replaceable>file</replaceable></arg>
+ <arg>--post-install-template=<replaceable>file</replaceable></arg>
+ <arg>--post-install-command=<replaceable>command</replaceable></arg>
+ <arg>--extra-install-kernel-parameters=<replaceable>params</replaceable></arg>
+ <arg>--language=<replaceable>lang</replaceable></arg>
+ <arg>--start-vm=<replaceable>session-type</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <refsect2 id="vboxmanage-unattended-detect">
+ <title>unattended detect</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Detects the guest operating system (OS) on the specified installation ISO
+ and displays the result. This can be used as input when creating a VM for
+ the ISO to be installed in.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--iso=<replaceable>install-iso</replaceable></option></term>
+ <listitem><para>The installation ISO to run the detection on.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--machine-readable</option></term>
+ <listitem><para>Produce output that is simpler to parse from a script.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="vboxmanage-unattended-install">
+ <title>unattended install</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Reconfigures the specified VM for installation and optionally starts it up.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid|vmname</replaceable></term>
+ <listitem><para>Either the UUID or the name (case sensitive) of a VM.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--iso=<replaceable>install-iso</replaceable></option></term>
+ <listitem><para>The installation ISO to run the detection on.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--user=<replaceable>login</replaceable></option></term>
+ <listitem><para>The login name. (default: vboxuser)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--password=<replaceable>password</replaceable></option></term>
+ <listitem>
+ <para>The login password. This is used for the user given by <option>--user</option> as well as the
+ root/administrator user. (default: changeme)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--password-file=<replaceable>file</replaceable></option></term>
+ <listitem>
+ <para>Alternative to <option>--password</option> for providing the password. Special filename
+ <computeroutput>stdin</computeroutput> can be used to read the password from standard input.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--full-user-name=<replaceable>name</replaceable></option></term>
+ <listitem><para>The full user name. (default: --user)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--key=<replaceable>product-key</replaceable></option></term>
+ <listitem><para>The guest OS product key. Not all guest OSes requires this.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--install-additions</option>, <option>--no-install-additions</option></term>
+ <listitem><para>Whether to install the VirtualBox guest additions. (default: --no-install-addations)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--additions-iso=<replaceable>add-iso</replaceable></option></term>
+ <listitem>
+ <para>Path to the VirtualBox guest additions ISO. (default: installed/downloaded GAs)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--install-txs</option>, <option>--no-install-txs</option></term>
+ <listitem>
+ <para>Whether to install the test execution service (TXS) from the VirtualBox ValidationKit.
+ This is useful when preparing VMs for testing or similar. (default: --no-install-txs)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--validation-kit-iso=<replaceable>testing-iso</replaceable></option></term>
+ <listitem>
+ <para>Path to the VirtualBox ValidationKit ISO. This is required if <option>--install-txs</option>
+ is specified. </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--locale=<replaceable>ll_CC</replaceable></option></term>
+ <listitem>
+ <para>The base locale specification for the guest, like en_US, de_CH, or nn_NO. (default: host or en_US)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--country=<replaceable>CC</replaceable></option></term>
+ <listitem><para>The two letter country code if it differs from the specified by <option>--location</option>.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--time-zone=<replaceable>tz</replaceable></option></term>
+ <listitem><para>The time zone to set up the guest OS with. (default: host time zone or UTC)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--hostname=<replaceable>fqdn</replaceable></option></term>
+ <listitem>
+ <para>The fully qualified domain name of the guest machine.
+ (default: <replaceable>vmname</replaceable>.myguest.virtualbox.org)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--package-selection-adjustment=<replaceable>keyword</replaceable></option></term>
+ <listitem>
+ <para>Adjustments to the guest OS packages/components selection. This can be specfied more than once. Currently
+ the only recognized keyword is <computeroutput>minimal</computeroutput> which triggers a minimal installation for
+ some of the guest OSes.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--dry-run</option></term>
+ <listitem><para>Do not create any files or make any changes to the VM configuration.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--start-vm=<replaceable>session-type</replaceable></option></term>
+ <listitem>
+ <para>Start the VM using the front end given by <replaceable>session-type</replaceable>. This is the same as
+ the <option>--type</option> option for the <computeroutput>startvm</computeroutput> command, but we have add
+ <computeroutput>none</computeroutput> for indicating that the VM should not be started.
+ (default: <computeroutput>none</computeroutput>)</para></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Advanced options:</para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--auxiliary-base-path=<replaceable>path</replaceable></option></term>
+ <listitem>
+ <para>The path prefix to the media related files generated for the installation.
+ (default: <replaceable>vm-config-dir</replaceable>/Unattended-<replaceable>vm-uuid</replaceable>-)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--image-index=<replaceable>number</replaceable></option></term>
+ <listitem><para>Windows installation image index. (default: 1)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--script-template=<replaceable>file</replaceable></option></term>
+ <listitem><para>The unattended installation script template. (default: IMachine::OSTypeId dependent)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--post-install-template=<replaceable>file</replaceable></option></term>
+ <listitem><para>The post installation script template. (default: IMachine::OSTypeId dependent)</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--post-install-command=<replaceable>command</replaceable></option></term>
+ <listitem>
+ <para>A single command to run after the installation is completed. The exact format and exactly
+ when this is run is guest OS installer dependent.</para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--extra-install-kernel-parameters=<replaceable>params</replaceable></option></term>
+ <listitem>
+ <para>
+ List of extra linux kernel parameters to use during the installation. (default: IMachine::OSTypeId dependent)
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--language=<replaceable>lang</replaceable></option></term>
+ <listitem>
+ <para>
+ Specifies the UI language for a Windows installation. The <replaceable>lang</replaceable> is
+ generally on the form {ll}-{CC}. See detectedOSLanguages results from <command>VBoxManage unattended detect</command>.
+ (default: detectedOSLanguages[0])</para></listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect2>
+
+ </refsect1>
+</refentry>
+
diff --git a/doc/manual/en_US/man_VBoxManage-unregistervm.xml b/doc/manual/en_US/man_VBoxManage-unregistervm.xml
new file mode 100644
index 00000000..8744e26e
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-unregistervm.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage unregistervm
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-unregistervm" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage unregistervm</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-unregistervm</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-unregistervm</refname>
+ <refpurpose>unregister a virtual machine</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-unregistervm">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage unregistervm</command>
+ <group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ </group>
+ <arg>--delete</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage unregistervm</command> command unregisters
+ a virtual machine (VM).
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></term>
+ <listitem><para>
+ Specifies the name or Universally Unique Identifier (UUID)
+ of the VM.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--delete</option></term>
+ <listitem><para>
+ Deletes the following files related to the VM automatically:
+ </para><itemizedlist>
+ <listitem><para>
+ All hard disk image files, including differencing files.
+ </para></listitem>
+ <listitem><para>
+ All saved state files that the machine created,
+ including one for each snapshot.
+ </para></listitem>
+ <listitem><para>
+ XML VM machine definition file and its backups.
+ </para></listitem>
+ <listitem><para>
+ VM log files.
+ </para></listitem>
+ <listitem><para>
+ The empty directory associated with the unregistered VM.
+ </para></listitem>
+ </itemizedlist></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command unregisters a VM called
+ <literal>vm2</literal>.
+ </para>
+<screen>$ VBoxManage unregistervm vm2</screen>
+ <para>
+ The following command unregisters a VM called
+ <literal>vm3</literal>. All files associated with the VM are
+ deleted.
+ </para>
+<screen>$ VBoxManage unregistervm vm3 --delete
+%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-registervm" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-usbdevsource.xml b/doc/manual/en_US/man_VBoxManage-usbdevsource.xml
new file mode 100644
index 00000000..95a74ce1
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-usbdevsource.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage usbdevsource
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-usbdevsource" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage usbdevsource</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-usbdevsource</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>vboxmanage-usbdevsource</refname>
+ <refpurpose>add and remove USB device sources</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage-usbdevsource-add">
+ <command>VBoxManage usbdevsource add</command>
+ <arg choice="req"><replaceable>source-name</replaceable></arg>
+ <arg choice="req">--backend=<replaceable>backend</replaceable></arg>
+ <arg choice="req">--address=<replaceable>address</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-usbdevsource-remove">
+ <command>VBoxManage usbdevsource remove</command>
+ <arg choice="req"><replaceable>source-name</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage usbdevsource</command> command adds a USB
+ device source and makes it available to the guests on the host
+ system. You can also use this command to remove the USB device
+ source.
+ </para>
+ <refsect2 id="vboxmanage-usbdevsource-add">
+ <title>Add a USB Device Source</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage usbdevsource add</command> command adds
+ a USB device source, which is available to all guests on the
+ host system.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>source-name</replaceable></term>
+ <listitem><para>
+ Specifies a unique name for the USB device source.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--address=<replaceable>address</replaceable></term>
+ <listitem><para>
+ Specifies the address of the USB backend.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>--backend=<replaceable>backend</replaceable></term>
+ <listitem><para>
+ Specifies the USB proxy service backend to use.
+ </para><remark>
+ What is the USB proxy service? How do you
+ determine the backend to use?
+ </remark></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-usbdevsource-remove">
+ <title>Remove a USB Device</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ The <command>VBoxManage usbdevsource remove</command> command
+ removes a USB device.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><replaceable>source-name</replaceable></term>
+ <listitem><para>
+ Specifies the name of the USB device source to remove.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command adds a USB device server called
+ <filename>hostusb01</filename>.
+ </para>
+<screen>$ VBoxManage usbdevsource add hostusb01 --backend USBIP --address 10.0.1.16</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage-usbfilter.xml b/doc/manual/en_US/man_VBoxManage-usbfilter.xml
new file mode 100644
index 00000000..671a38d7
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage-usbfilter.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage usbfilter
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="vboxmanage-usbfilter" lang="en">
+ <refentryinfo>
+ <pubdate>September 2019</pubdate>
+ <title>VBoxManage usbfilter</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage-usbfilter</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage-usbfilter</refname>
+ <refpurpose>manage USB filters</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <cmdsynopsis id="synopsis-vboxmanage-usbfilter-add">
+ <command>VBoxManage usbfilter add</command>
+ <arg choice="req"><replaceable>index</replaceable>,0-<replaceable>N</replaceable></arg>
+ <arg choice="req">--target=<group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ <arg choice="plain">global</arg>
+ </group></arg>
+ <arg choice="req">--name=<replaceable>string</replaceable></arg>
+ <arg choice="req">--action=ignore | hold</arg>
+ <arg>--active=yes | no</arg>
+ <arg>--vendorid=<replaceable>XXXX</replaceable></arg>
+ <arg>--productid=<replaceable>XXXX</replaceable></arg>
+ <arg>--revision=<replaceable>IIFF</replaceable></arg>
+ <arg>--manufacturer=<replaceable>string</replaceable></arg>
+ <arg>--product=<replaceable>string</replaceable></arg>
+ <arg>--remote=yes | no</arg>
+ <arg>--serialnumber=<replaceable>string</replaceable></arg>
+ <arg>--maskedinterfaces=<replaceable>XXXXXXXX</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-usbfilter-modify">
+ <command>VBoxManage usbfilter modify</command>
+ <arg choice="req"><replaceable>index</replaceable>,0-<replaceable>N</replaceable></arg>
+ <arg choice="req">--target=<group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ <arg choice="plain">global</arg>
+ </group></arg>
+ <arg>--name=<replaceable>string</replaceable></arg>
+ <arg>--action=ignore | hold</arg>
+ <arg>--active=yes | no</arg>
+ <arg>--vendorid=<replaceable>XXXX</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--productid=<replaceable>XXXX</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--revision=<replaceable>IIFF</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--manufacturer=<replaceable>string</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--product=<replaceable>string</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--remote=yes | no</arg>
+ <arg>--serialnumber=<replaceable>string</replaceable> | &ldquo;&rdquo;</arg>
+ <arg>--maskedinterfaces=<replaceable>XXXXXXXX</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboxmanage-usbfilter-remove">
+ <command>VBoxManage usbfilter remove</command>
+ <arg choice="req"><replaceable>index</replaceable>,0-<replaceable>N</replaceable></arg>
+ <arg choice="req">--target=<group choice="req">
+ <arg choice="plain"><replaceable>uuid</replaceable></arg>
+ <arg choice="plain"><replaceable>vmname</replaceable></arg>
+ <arg choice="plain">global</arg>
+ </group></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage usbfilter</command> command enables you to
+ manage USB filters for a specific virtual machine (VM), or global
+ USB filters that affect the entire &product-name; configuration.
+ </para>
+ <para>
+ Global filters are applied before VM-specific filters. This means
+ that you can use a global filter to prevent devices from being
+ captured by any VM.
+ </para>
+ <para>
+ Global filters are applied in a particular order. Only the first
+ filter that fits a device is applied. For example, the first
+ global filter makes a specific Kingston memory stick device
+ available while the second filter ignores all Kingston devices.
+ The result of applying these filters is that the specific Kingston
+ memory stick is made available to any machine that has the
+ appropriate filter, but no other Kingston devices are made
+ available.
+ </para>
+ <refsect2>
+ <title>Common Operand and Options</title>
+ <variablelist>
+ <varlistentry>
+ <term>index,0-<replaceable>N</replaceable></term>
+ <listitem><para>
+ Specifies a single integer that indicates the position of
+ the filter in the list. Zero (<literal>0</literal>)
+ represents the first position in the list. If a filter
+ already exists at the specified position, the existing
+ filter and any existing filters that follow are moved down
+ the list. Otherwise, the new filter is appended to the
+ list.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--action=ignore | hold</option></term>
+ <listitem><para>
+ Specifies whether to permit VMs access to devices that fit
+ the filter description (<literal>hold</literal>) or to
+ deny them access (<literal>ignore</literal>). This option
+ applies only to global filters.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--active=yes | no</option></term>
+ <listitem><para>
+ Specifies whether the USB filter is active or temporarily
+ disabled. Valid values are <literal>yes</literal>, which
+ activates the filter, and <literal>no</literal>, which
+ disables the filter. The default value is
+ <literal>yes</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--manufacturer=<replaceable>string</replaceable></option></term>
+ <listitem><para>
+ Specifies a manufacturer ID filter as a string. The
+ default value is null (<literal>&ldquo;&rdquo;</literal>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--maskedinterfaces=<replaceable>XXXXXXXX</replaceable></option></term>
+ <listitem><para>
+ Specifies a masked interface filter that is used to hide
+ one or more USB interfaces from the guest. The value is a
+ bit mask where the set bits correspond to the USB
+ interfaces to hide, or mask off. This feature is supported
+ on Linux host systems only.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--name=<replaceable>filter-name</replaceable></option></term>
+ <listitem><para>
+ Specifies the name of the filter.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--product=<replaceable>string</replaceable></option></term>
+ <listitem><para>
+ Specifies a product ID filter as a string. The default
+ value is null (<literal>&ldquo;&rdquo;</literal>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--productid=<replaceable>XXXX</replaceable></option></term>
+ <listitem><para>
+ Specifies a product ID filter. The string representation
+ for an exact match has the form
+ <replaceable>XXXX</replaceable>, where
+ <replaceable>X</replaceable> is a hexadecimal digit
+ including leading zeroes. The default value is null
+ (<literal>&ldquo;&rdquo;</literal>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--remote=yes | no</option></term>
+ <listitem><para>
+ Specifies a remote filter that indicates whether the
+ device is physically connected to a remote VRDE client or
+ to a local host system. This option applies to VM filters
+ only. The default value is null
+ (<literal>&ldquo;&rdquo;</literal>).
+ </para><remark>
+ Why is the default value null when valid values are
+ <literal>yes</literal> or <literal>no</literal>?
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--revision=<replaceable>IIFF</replaceable></option></term>
+ <listitem><para>
+ Specifies a revision ID filter. The string representation
+ for an exact match has the form
+ <replaceable>IIFF</replaceable>.
+ <replaceable>I</replaceable> is a decimal digit of the
+ integer part of the revision. <replaceable>F</replaceable>
+ is a decimal digit of its fractional part that includes
+ leading and trailing zeros. The default value is null
+ (<literal>&ldquo;&rdquo;</literal>).
+ </para><para>
+ To specify a range of revision IDs, ensure that you use
+ the hexadecimal form so that the revision is stored as a
+ 16-bit packed BCD value. For example, the
+ <literal>int:0x0100-0x0199</literal> expression matches
+ any revision from 1.0 to 1.99, inclusive.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--serialnumber=<replaceable>string</replaceable></option></term>
+ <listitem><para>
+ Specifies a serial number filter as a string. The default
+ value is null (<literal>&ldquo;&rdquo;</literal>).
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--target=<replaceable>uuid</replaceable> | <replaceable>vmname</replaceable> | global</option></term>
+ <listitem><para>
+ Specifies the VM that the filter is attached to. You can
+ specify the Universally Unique Identifier (UUID) or the
+ name of the VM. To apply the filter description to all
+ VMs, specify <literal>global</literal>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vendorid=<replaceable>XXXX</replaceable></option></term>
+ <listitem><para>
+ Specifies a vendor ID filter, which is a string
+ representation of a four-digit hexadecimal number.
+ <replaceable>X</replaceable> is the hexadecimal digit
+ including leading zeroes. The default value is null
+ (<literal>&ldquo;&rdquo;</literal>).
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboxmanage-usbfilter-add">
+ <title>Add a USB Filter or a Global Filter</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the <command>VBoxManage usbfilter add</command> command to
+ create a new USB filter.
+ </para>
+ <para>
+ In addition, specify parameters by which to filter. You can use
+ the <command>VBoxManage list usbhost</command> command to view
+ the parameters for devices that are attached to your system.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-usbfilter-modify">
+ <title>Modify a USB Filter or a Global Filter</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the <command>VBoxManage usbfilter modify</command> command
+ to modify a USB filter. You can use the <command>VBoxManage list
+ usbfilters</command> command to list global filter indexes and
+ the <command>VBoxManage showvminfo</command> command to list
+ indexes for a specific machine.
+ </para>
+ </refsect2>
+ <refsect2 id="vboxmanage-usbfilter-remove">
+ <title>Remove a USB Filter or a Global Filter</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the <command>VBoxManage usbfilter remove</command> command
+ to remove a USB filter entry.
+ </para>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL" />
+ <para>
+ The following command lists the available USB devices on the host
+ system.
+ </para>
+<screen>$ VBoxManage list usbhost</screen>
+ <para>
+ The following command adds a USB filter called
+ <filename>filter01</filename> to the <filename>ol7</filename> VM.
+ The filter specifies a Kingston DataTraveler memory stick and is
+ placed first in the list of USB filters for the VM.
+ </para>
+<screen>$ VBoxManage usbfilter add 0 --target ol7 --name filter01 --vendorid 0x0930 --productid 0x6545</screen>
+ <para>
+ The following command removes the USB filter that is second in the
+ list for the <filename>ol7</filename> VM.
+ </para>
+<screen>$ VBoxManage usbfilter remove 1 --target ol7</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_VBoxManage.xml b/doc/manual/en_US/man_VBoxManage.xml
new file mode 100644
index 00000000..818daf40
--- /dev/null
+++ b/doc/manual/en_US/man_VBoxManage.xml
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: VBoxManage
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="man_vboxmanage" lang="en">
+ <refentryinfo>
+ <pubdate>August 2019</pubdate>
+ <title>VBoxManage</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>VBoxManage</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>VBoxManage</refname>
+ <refpurpose>&product-name; command-line interface</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboxmanage">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>VBoxManage</command>
+ <arg>--nologo</arg>
+ <arg>--settingspw=[<replaceable>password</replaceable>]</arg>
+ <arg>--settingspwfile=<replaceable>pw-file</replaceable></arg>
+ <arg>--version</arg>
+ <arg>@<replaceable>response-file</replaceable></arg>
+ <arg><replaceable>subcommand</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+ <para>
+ The <command>VBoxManage</command> command is the command-line
+ interface (CLI) for the &product-name; software. The CLI supports
+ all the features that are available with the &product-name;
+ graphical user interface (GUI). In addition, you can use the
+ <command>VBoxManage</command> command to manage the features of
+ the virtualization engine that cannot be managed by the GUI.
+ </para>
+ <para>
+ Each time you invoke the <command>VBoxManage</command> command,
+ only one command is executed. Note that some
+ <command>VBoxManage</command> subcommands invoke several
+ subcommands.
+ </para>
+ <para>
+ Run the <command>VBoxManage</command> command from the command
+ line of the host operating system (OS) to control &product-name;
+ software.
+ </para>
+ <para>
+ The <command>VBoxManage</command> command is stored in the
+ following locations on the host system:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <emphasis role="bold">Linux:</emphasis>
+ <filename>/usr/bin/VBoxManage</filename>
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Mac OS X:</emphasis>
+ <filename>/Applications/VirtualBox.app/Contents/MacOS/VBoxManage</filename>
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Oracle Solaris:</emphasis>
+ <filename>/opt/VirtualBox/bin/VBoxManage</filename>
+ </para></listitem>
+ <listitem><para>
+ <emphasis role="bold">Windows:</emphasis>
+ <filename>C:\Program
+ Files\Oracle\VirtualBox\VBoxManage.exe</filename>
+ </para></listitem>
+ </itemizedlist>
+ <para>
+ In addition to managing virtual machines (VMs) with this CLI or
+ the GUI, you can use the <command>VBoxHeadless</command> CLI to
+ manage VMs remotely.
+ </para>
+ <para>
+ The <command>VBoxManage</command> command performs particular
+ tasks by using subcommands, such as <command>list</command>,
+ <command>createvm</command>, and <command>startvm</command>. See
+ the associated information for each <command>VBoxManage</command>
+ subcommand.
+ </para>
+ <para>
+ If required, specify the VM by its name or by its Universally
+ Unique Identifier (UUID).
+ </para>
+ <para>
+ Use the <command>VBoxManage list vms</command> command to obtain
+ information about all currently registered VMs, including the VM
+ names and associated UUIDs.
+ </para>
+ <para>
+ Note that you must enclose the entire VM name in double quotes if
+ it contains spaces.
+ </para>
+ <refsect2 id="vboxmanage-common-options">
+ <title>General Options</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>--nologo</option></term>
+ <listitem><para>
+ Suppresses the output of the logo information, which is
+ useful for scripts.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--settingspw=[<replaceable>password</replaceable>]</option></term>
+ <listitem><para>
+ Specifies the settings password. You can optionally
+ specify the password as an argument to this option. If you
+ do not specify the password in this way, the
+ <command>VBoxManage</command> command prompts you for the
+ password.
+ </para><para>
+ The settings password is a security feature that encrypts
+ stored settings, which are stored as plain text by
+ default.
+ </para><para>
+ You cannot unencrypt encrypted settings. So, if the
+ settings are encrypted, you must continue to specify the
+ <option>--settingspw</option> or
+ <option>--settingspwfile</option> option.
+ </para><para>
+ Only the iSCSI secret is encrypted at this time.
+ </para><remark>
+ This design does not conform to Oracle's security
+ guidelines. You should not be able to specify a password
+ on the command line because the password can be seen in a
+ process listing.
+ </remark></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--settingspwfile=<replaceable>pw-filename</replaceable></option></term>
+ <listitem><para>
+ Specifies the file that contains the settings password.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--version</option></term>
+ <listitem><para>
+ Shows version information about the
+ <command>VBoxManage</command> command.
+ </para><para>
+ The short version of this option is <option>-v</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>@<replaceable>response-file</replaceable></term>
+ <listitem><para>
+ Loads arguments from the specified Bourne shell response
+ file.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>subcommand</replaceable></term>
+ <listitem><para>
+ Specifies one of the <command>VBoxManage</command>
+ subcommands, such as <command>controlvm</command>,
+ <command>createvm</command>, <command>list</command>,
+ <command>modifyvm</command>,
+ <command>showvminfo</command>, <command>startvm</command>,
+ <command>storageattach</command>, and
+ <command>storagectl</command>.
+ </para><para>
+ Each subcommand is described in its own command topic,
+ some of which are shown in See Also sections.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="GLOBAL"/>
+ <para>
+ The following command creates a virtual machine called
+ <literal>Win8</literal> and registers it with &product-name; by
+ using the <option>--register</option> option.
+ </para>
+<screen>$ VBoxManage createvm --name "Win8" --register
+Virtual machine 'Win8' is created.
+UUID: <replaceable>UUID-string</replaceable>
+Settings file: '/home/<replaceable>username</replaceable>/VirtualBox VMs/Win8/Win8.vbox'</screen>
+ <para>
+ The command output shows that the <literal>Win8</literal> VM is
+ assigned a UUID and an XML machine settings file.
+ </para>
+ <para>
+ You can use the <command>VBoxManage showvminfo</command> command
+ to view the configuration information of a VM.
+ </para>
+ <para>
+ The following example uses the <command>VBoxManage
+ modifyvm</command> command to change the amount of memory for the
+ <literal>Windows XP</literal> VM to be 1024 megabytes:
+ </para>
+<screen>$ VBoxManage modifyvm "Windows XP" --memory 1024</screen>
+ <para>
+ Note that you can use the <command>VBoxManage modifyvm</command>
+ command even when the VM is powered off.
+ </para>
+ <para>
+ You can use the <command>VBoxManage storagectl</command> command
+ or the <command>VBoxManage storageattach</command> command to
+ modify the storage configuration for a VM. For example, to create
+ a SATA storage controller called <literal>sata01</literal> and add
+ it to the <literal>ol7</literal> VM:
+ </para>
+<screen>$ VBoxManage storagectl ol7 --name "sata01" --add sata</screen>
+ <para>
+ Use the <command>VBoxManage startvm</command> command to start a
+ VM that is currently powered off. For example, to start the
+ <literal>win7</literal> VM:
+ </para>
+<screen>$ VBoxManage startvm win7</screen>
+ <para>
+ Use the <command>VBoxManage controlvm</command> command to pause
+ or save a VM that is currently running. You can also use this
+ command to modify settings for the VM. For example, to enable
+ audio input for the <literal>ol6u9</literal> VM.
+ </para>
+<screen>$ VBoxManage controlvm ol6u9 audioin on</screen>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <xref linkend="vboxmanage-controlvm" />,
+ <xref linkend="vboxmanage-createvm" />,
+ <xref linkend="vboxmanage-list" />,
+ <xref linkend="vboxmanage-modifyvm" />,
+ <xref linkend="vboxmanage-showvminfo" />,
+ <xref linkend="vboxmanage-startvm" />,
+ <xref linkend="vboxmanage-storageattach" />,
+ <xref linkend="vboxmanage-storagectl" />
+ </para>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/man_vboximg-mount.xml b/doc/manual/en_US/man_vboximg-mount.xml
new file mode 100644
index 00000000..93773f57
--- /dev/null
+++ b/doc/manual/en_US/man_vboximg-mount.xml
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ manpage, user manual, usage: vboximg-mount
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!DOCTYPE refentry 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;
+]>
+<refentry id="man_vboximg-mount" lang="en">
+ <refentryinfo>
+ <pubdate>November 2019</pubdate>
+ <title>vboximg-mount</title>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>vboximg-mount</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>vboximg-mount</refname>
+ <refpurpose>FUSE mount a virtual disk image for Mac OS and Linux hosts</refpurpose>
+ <refclass>Oracle VM VirtualBox</refclass>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="synopsis-vboximg-mount-help">
+<!-- The 'id' is mandatory and must start with 'synopsis-'. -->
+ <command>vboximg-mount</command>
+ <group choice="req">
+ <arg choice="plain">-?</arg>
+ <arg choice="plain">-h</arg>
+ <arg choice="plain">--help</arg>
+ </group>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboximg-mount-mount">
+ <command>vboximg-mount</command>
+ <arg choice="req">--image=<replaceable>image-UUID</replaceable></arg>
+ <arg>--guest-filesystem</arg>
+ <arg>-o=<replaceable>FUSE-option</replaceable>[,<replaceable>FUSE-option</replaceable>]</arg>
+ <arg>--root</arg>
+ <arg>--rw</arg>
+ <arg choice="req"><replaceable>mountpoint</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis id="synopsis-vboximg-mount-list">
+ <command>vboximg-mount</command>
+ <arg choice="req">--list</arg>
+ <arg>--image=<replaceable>image-UUID</replaceable></arg>
+ <arg>--guest-filesystem</arg>
+ <arg>--verbose</arg>
+ <arg>--vm=<replaceable>vm-UUID</replaceable></arg>
+ <arg>--wide</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="vboximg-mount-intro">
+ <title>Description</title>
+ <para>
+ The <command>vboximg-mount</command> command enables you to make
+ &product-name; disk images available to a Mac OS or Linux host
+ operating system (OS) for privileged or non-priviliged access. You
+ can mount any version of the disk from its available history of
+ snapshots. Use this command to mount, view, and optionally modify
+ the contents of an &product-name; virtual disk image, and you can
+ also use this command to view information about registered virtual
+ machines (VMs).
+ </para>
+ <para>
+ This command uses the Filesystem in Userspace (FUSE) technology to
+ provide raw access to an &product-name; virtual disk image.
+ </para>
+ <para>
+ When you use the <option>--image</option> option to specify a base
+ image identifier, only the base image is mounted. Any related
+ snapshots are disregarded. Alternatively, if you use the
+ <option>--image</option> option to specify a snapshot, the state
+ of the FUSE-mounted virtual disk is synthesized from the implied
+ chain of snapshots, including the base image.
+ </para>
+ <para>
+ The <command>vboximg-mount</command> command includes experimental
+ read-only access to file systems inside a VM disk image. This
+ feature enables you to extract some files from the VM disk image
+ without starting the VM and without requiring third-party file
+ system drivers on the host system. &product-name; supports the
+ FAT, NTFS, <filename>ext2</filename>, <filename>ext3</filename>,
+ and <filename>ext4</filename> file systems.
+ </para>
+ <para>
+ The virtual disk is exposed as a device node within a FUSE-based
+ file system that overlays the specified mount point.
+ </para>
+ <para>
+ The FUSE file system includes a directory that contains a number
+ of files. The file system can also contain a directory that
+ includes a symbolic link that has the same base name (see the
+ <command>basename</command>(1) man page) as the virtual disk base
+ image and points to the location of the virtual disk base image.
+ The directory can be of the following types:
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ <filename>vhdd</filename> provides access to the raw disk
+ image data as a flat image
+ </para></listitem>
+ <listitem><para>
+ <literal>vol<replaceable>ID</replaceable></literal> provides
+ access to an individual volume on the specified disk image
+ </para></listitem>
+ <listitem><para>
+ <literal>fs<replaceable>ID</replaceable></literal> provides
+ access to a supported file system without requiring a host
+ file system driver
+ </para></listitem>
+ </itemizedlist>
+ <refsect2 id="vboximg-mount-help">
+ <title>General Command Options</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the following options to obtain information about the
+ <command>vboximg-mount</command> command and its options.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--help</option>, <option>--h</option>, or<option>--?</option></term>
+ <listitem><para>
+ Shows usage information.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboximg-mount-mount">
+ <title>Mounting an &product-name; Disk Image</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the <command>vboximg-mount</command> command to mount an
+ &product-name; virtual disk image on a Mac OS or Linux host
+ system. When mounted, you can view the contents of the disk
+ image or modify the contents of the disk image.
+ </para>
+ <para>
+ You can use the <command>vboximg-mount</command> command to
+ restrict FUSE-based access to a subsection of the virtual disk.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--image=<replaceable>disk-image</replaceable></option></term>
+ <listitem><para>
+ Specifies the Universally Unique Identifier (UUID), name,
+ or path of the &product-name; disk image.
+ </para><para>
+ The short form of the <option>--image</option> option is
+ <option>-i</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--guest-filesystem</option></term>
+ <listitem><para>
+ Enables experimental read-only support for guest file
+ systems. When you specify this option, all known file
+ systems are made available to access.
+ </para><para>
+ The short form of the <option>--guest-filesystem</option>
+ option is <option>-g</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-o=<replaceable>FUSE-option</replaceable>[,<replaceable>FUSE-option</replaceable>...]</option></term>
+ <listitem><para>
+ Specifies FUSE mount options.
+ </para><para>
+ The <command>vboximg-mount</command> command enables you
+ to use the FUSE mount options that are described in the
+ <command>mount.fuse</command>(8) man page.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--root</option></term>
+ <listitem><para>
+ Overrides the security measure that restricts file access
+ to the file system owner by also granting file access to
+ the <literal>root</literal> user.
+ </para><para>
+ Same as the <option>-o allow_root</option> option. See the
+ <option>-o</option> option description.
+ </para><para>
+ This option is incompatible with the <option>-o
+ allow_other</option> option.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--rw</option></term>
+ <listitem><para>
+ Mounts the specified image as read-write, which is
+ required if you want to modify its contents. By default,
+ images are mounted as read-only.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><replaceable>mount-point</replaceable></term>
+ <listitem><para>
+ Specifies the path name of a directory on which to mount
+ the &product-name; disk image.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2 id="vboximg-mount-list">
+ <title>Viewing &product-name; Disk Image Information</title>
+ <remark role="help-copy-synopsis"/>
+ <para>
+ Use the <command>vboximg-mount</command> command to view
+ information about registered VMs or an &product-name; virtual
+ disk image.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term><option>--image=<replaceable>disk-image</replaceable></option></term>
+ <listitem><para>
+ Specifies the UUID, name, or path of the &product-name;
+ disk image.
+ </para><para>
+ The short form of the <option>--image</option> option is
+ <option>-i</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--guest-filesystem</option></term>
+ <listitem><para>
+ Enables experimental read-only support for guest file
+ systems. When you specify this option, all known file
+ systems are made available to access.
+ </para><para>
+ The short form of the <option>--guest-filesystem</option>
+ option is <option>-g</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--list</option></term>
+ <listitem><para>
+ Shows information about the disks that are associated with
+ the registered VMs. If you specify a disk image, this
+ option shows information about the partitions of the
+ specified image.
+ </para><para>
+ When you specify the <option>--verbose</option> option,
+ the output includes detailed information about the VMs and
+ media, including snapshot images and file paths.
+ </para><para>
+ The short form of the <option>--list</option> option is
+ <option>-l</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--verbose</option></term>
+ <listitem><para>
+ Shows or logs detailed information.
+ </para><para>
+ The short form of the <option>--verbose</option> option is
+ <option>-v</option>.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--vm=<replaceable>vm-UUID</replaceable></option></term>
+ <listitem><para>
+ Outputs information about the VM that is associated with
+ the specified UUID.
+ </para></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--wide</option></term>
+ <listitem><para>
+ Outputs information in a wide format. This output includes
+ the lock state information of running VMs. For VMs that
+ are not running, the state is <literal>created</literal>.
+ </para><para>
+ The wide output uses a tree-like structure in the VM
+ column to show the relationship between a VM base image
+ and its snapshots.
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <remark role="help-scope" condition="MOUNT-MOUNT,MOUNT-LIST"/>
+ <para>
+ The following example shows how to mount a virtual disk image on
+ the host operating system (OS).
+ </para>
+<screen>$ mkdir fuse_mount_point
+$ vboximg-mount --image=b490e578-08be-4f7d-98e9-4c0ef0952377 fuse_mount_point
+$ ls fuse_mount_point
+ubu.vdi[32256:2053029880] vhdd
+$ sudo mount fuse_mount_point/vhdd /mnt</screen>
+ <para>
+ The <command>mkdir</command> command creates a mount point called
+ <filename>fuse_mount_point</filename> on the host OS. The
+ <command>vboximg-mount</command> command is then used to mount the
+ specified disk image on the <filename>fuse_mount_point</filename>
+ mount point. The mount includes all snapshots for the disk image.
+ </para>
+ <para>
+ The <command>ls</command> command shows the contents of
+ <filename>fuse_mount_point</filename>. The
+ <command>mount</command> command is then used to mount the
+ FUSE-mounted device node, <command>vhdd</command>, on the
+ <filename>/mnt</filename> mount point. The <command>vhdd</command>
+ device node represents the virtual disk image.
+ </para>
+ <para>
+ The following example shows how to make the known file systems of
+ the <literal>b490e578-08be-4f7d-98e9-4c0ef0952377</literal> disk
+ image accessible when the image is mounted on the
+ <filename>fuse_mount_point</filename> mount point:
+ </para>
+<screen>$ vboximg-mount --image=b490e578-08be-4f7d-98e9-4c0ef0952377 \
+--guest-filesystem fuse_mount_point
+</screen>
+ <para>
+ The following command outputs detailed information about all
+ registered VMs and their snapshots:
+ </para>
+<screen>$ vboximg-mount --list --verbose</screen>
+ <para>
+ The following command shows an excerpt of the list output in wide
+ format.
+ </para>
+<screen>$ vboximg-mount --list --wide
+
+VM Image Size Type State UUID (hierarchy)
+------------------------------------------ ------------------------------------
+Proxy 0833f5bc-6304-42e1-b799-cdc81c576c60
+ |
+ +- Proxy.vdi 4.8G VDI rlock d5f84afb-0794-4952-ab71-6bbcbee07737
+ | +- &lt;snapshot> 12.3G VDI rlock dffc67aa-3023-477f-8033-b27e3daf4f54
+ | +- &lt;snapshot> 8.8G VDI rlock 3b2755bd-5f2a-4171-98fe-647d510b6274
+ | +- &lt;snapshot> 14.6G VDI rlock e2ccdb5f-49e8-4123-8623-c61f363cc5cf
+ | +- &lt;snapshot> 7.4G VDI wlock 3c1e6794-9091-4be3-9e80-11aba40c2649
+
+------------------------------------------ ------------------------------------
+Oracle Linux 7 5365ab5f-470d-44c0-9863-dad532ee5905
+ |
+ +- Oracle Linux 7.vdi 7.0G VDI created 96d2e92e-0d4e-46ab-a0f1-008fdbf997e7
+ | +- &lt;snapshot> 15.9G VDI created f9cc866a-9166-42e9-a503-bbfe9b7312e8
+ |
+ +- kernel.vdi 11.1G VDI created 79a370bd-0c4f-480a-30bb-10cdea68423f
+</screen>
+ <para>
+ The output shows that the Proxy VM is running the fourth snapshot
+ of the <command>Proxy.vdi</command> virtual disk image. The
+ running state is indicated by the <command>wlock</command> value
+ in the State column.
+ </para>
+ <para>
+ The Oracle Linux 7 VM is not running. It has two images:
+ <command>Oracle Linux 7.vdi</command> and
+ <command>kernel.vdi</command>. The <command>Oracle Linux
+ 7.vdi</command> image has a snapshot.
+ </para>
+ <para>
+ The following command shows information about the VM with the
+ specified UUID:
+ </para>
+<screen>
+$ vboximg-mount --list --vm=b1d5563b-2a5b-4013-89f1-26c81d6bbfa0
+-----------------------------------------------------------------
+VM: ubu
+UUID: b1d5563b-2a5b-4013-89f1-26c81d6bbfa0
+
+ Image: ubu.vdi
+ UUID: b490e578-08be-4f7d-98e9-4c0ef0952377
+
+ Snapshot: 35afe1e0-0a51-44f3-a228-caf172f3306f
+ Size: 12.1G
+
+ Snapshot: 874279c1-4425-4282-ada8-a9c07c00bbf9
+ Size: 13.6G
+
+ Image: kernel.vdi
+ UUID: 79a370bd-6eb7-4dbf-8bc6-d29118f127e0</screen>
+ </refsect1>
+</refentry>
diff --git a/doc/manual/en_US/oracle-accessibility-en.xml b/doc/manual/en_US/oracle-accessibility-en.xml
new file mode 100644
index 00000000..e6674936
--- /dev/null
+++ b/doc/manual/en_US/oracle-accessibility-en.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE simplesect 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;
+]>
+<simplesect>
+
+<!--
+ Include this statement in the document Preface ONLY if your product
+ and/or documentation has been tested for accessibility, is determined
+ to be accessible, and has a VPAT.
+ -->
+
+ <title>Documentation Accessibility</title>
+
+ <para>
+ For information about Oracle's commitment to accessibility, visit
+ the Oracle Accessibility Program website at
+
+<?fo-linebreak?>
+
+ <ulink url="https://www.oracle.com/corporate/accessibility/"/>.
+ </para>
+
+</simplesect>
diff --git a/doc/manual/en_US/oracle-diversity.xml b/doc/manual/en_US/oracle-diversity.xml
new file mode 100644
index 00000000..df687b08
--- /dev/null
+++ b/doc/manual/en_US/oracle-diversity.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE simplesect PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://docbook.org/xml/4.5/docbookx.dtd">
+<simplesect>
+ <title>Diversity and Inclusion</title>
+ <para> Oracle is fully committed to diversity and inclusion. Oracle recognizes the influence of
+ ethnic and cultural values and is working to remove language from our products and
+ documentation that might be considered insensitive. While doing so, we are also mindful of
+ the necessity to maintain compatibility with our customers' existing technologies and the
+ need to ensure continuity of service as Oracle's offerings and industry standards evolve.
+ Because of these technical constraints, our effort to remove insensitive terms is an
+ ongoing, long-term process.</para>
+</simplesect>
diff --git a/doc/manual/en_US/oracle-support-en.xml b/doc/manual/en_US/oracle-support-en.xml
new file mode 100644
index 00000000..5b86d05a
--- /dev/null
+++ b/doc/manual/en_US/oracle-support-en.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE simplesect 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;
+]>
+<simplesect>
+
+ <!-- Include this statement in the document Preface -->
+
+ <title>Access to Oracle Support</title>
+
+ <para>
+ Oracle customers that have purchased support have access to
+ electronic support through My Oracle Support. For information, visit
+
+<?fo-linebreak?>
+
+ <ulink url="https://www.oracle.com/corporate/accessibility/learning-support.html#support-tab"/>.
+ </para>
+
+</simplesect>
diff --git a/doc/manual/en_US/user_AdvancedTopics.xml b/doc/manual/en_US/user_AdvancedTopics.xml
new file mode 100644
index 00000000..593e8094
--- /dev/null
+++ b/doc/manual/en_US/user_AdvancedTopics.xml
@@ -0,0 +1,7403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="AdvancedTopics">
+
+ <title>Advanced Topics</title>
+
+ <sect1 id="autologon">
+
+ <title>Automated Guest Logins</title>
+
+ <para>
+ &product-name; provides Guest Addition modules for Windows, Linux,
+ and Oracle Solaris to enable automated logins on the guest.
+ </para>
+
+ <para>
+ When a guest operating system is running in a virtual machine, it
+ might be desirable to perform coordinated and automated logins
+ using credentials passed from the host. Credentials are user
+ name, password, and domain name, where each value might be empty.
+ </para>
+
+ <sect2 id="autologon_win">
+
+ <title>Automated Windows Guest Logins</title>
+
+ <para>
+ Windows provides a modular system login subsystem, called
+ Winlogon, which can be customized and extended by means of
+ so-called GINA (Graphical Identification and Authentication)
+ modules. In Windows Vista and later releases, the GINA modules
+ were replaced with a new mechanism called credential providers.
+ The &product-name; Guest Additions for Windows come with both, a
+ GINA and a credential provider module, and therefore enable any
+ Windows guest to perform automated logins.
+ </para>
+
+ <para>
+ To activate the &product-name; GINA or credential provider
+ module, install the Guest Additions using the command line
+ switch <option>/with_autologon</option>. All the following
+ manual steps required for installing these modules will be then
+ done by the installer.
+ </para>
+
+ <para>
+ To manually install the &product-name; GINA module, extract the
+ Guest Additions as shown in
+ <xref linkend="windows-guest-file-extraction" />, and copy the
+ <filename>VBoxGINA.dll</filename> file to the Windows
+ <filename>SYSTEM32</filename> directory. In the registry, create
+ the following key with a value of
+ <filename>VBoxGINA.dll</filename>:
+ </para>
+
+<screen>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL</screen>
+
+ <note>
+ <para>
+ The &product-name; GINA module is implemented as a wrapper
+ around the <filename>MSGINA.DLL</filename> standard Windows
+ GINA module. As a result, it might not work correctly with
+ third-party GINA modules.
+ </para>
+ </note>
+
+ <para>
+ To manually install the &product-name; credential provider
+ module, extract the Guest Additions as shown in
+ <xref linkend="windows-guest-file-extraction" /> and copy the
+ <filename>VBoxCredProv.dll</filename> file to the Windows
+ <filename>SYSTEM32</filename> directory. In the registry, create
+ the following keys:
+ </para>
+
+<screen>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
+Authentication\Credential Providers\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}
+
+HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}
+
+HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}\InprocServer32</screen>
+
+ <para>
+ All default values, the key named <literal>Default</literal>,
+ must be set to <literal>VBoxCredProv</literal>.
+ </para>
+
+ <para>
+ Create the following string and assign it a value of
+ <literal>Apartment</literal>.
+ </para>
+
+<screen>HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}\InprocServer32\ThreadingModel</screen>
+
+ <para>
+ To set credentials, use the following command on a
+ <emphasis>running</emphasis> VM:
+ </para>
+
+<screen>$ VBoxManage controlvm "Windows XP" setcredentials "John Doe" "secretpassword" "DOMTEST"</screen>
+
+ <para>
+ While the VM is running, the credentials can be queried by the
+ &product-name; login modules, GINA or credential provider, using
+ the &product-name; Guest Additions device driver. When Windows
+ is in <emphasis>logged out</emphasis> mode, the login modules
+ will constantly poll for credentials and if they are present, a
+ login will be attempted. After retrieving the credentials, the
+ login modules will erase them so that the above command will
+ have to be repeated for subsequent logins.
+ </para>
+
+ <para>
+ For security reasons, credentials are not stored in any
+ persistent manner and will be lost when the VM is reset. Also,
+ the credentials are write-only. There is no way to retrieve the
+ credentials from the host side. Credentials can be reset from
+ the host side by setting empty values.
+ </para>
+
+ <para>
+ Depending on the Windows guest version, the following
+ restrictions apply:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For <emphasis role="bold">Windows XP guests.</emphasis> The
+ login subsystem needs to be configured to use the classic
+ login dialog, as the &product-name; GINA module does not
+ support the Windows XP-style welcome dialog.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Windows Vista, Windows 7, Windows 8,
+ and Windows 10 guests.</emphasis> The login subsystem does
+ not support the so-called Secure Attention Sequence,
+ <literal>Ctrl+Alt+Del</literal>. As a result, the guest's
+ group policy settings need to be changed to not use the
+ Secure Attention Sequence. Also, the user name given is only
+ compared to the true user name, not the user friendly name.
+ This means that when you rename a user, you still have to
+ supply the original user name as Windows never renames user
+ accounts internally.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Automatic login handling of the built-in
+ <emphasis role="bold">Windows Remote Desktop
+ Service</emphasis>, formerly known as Terminal Services, is
+ disabled by default. To enable it, create the following
+ registry key with a <literal>DWORD</literal> value of
+ <literal>1</literal>.
+ </para>
+
+<screen>HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox Guest Additions\AutoLogon</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following command forces &product-name; to keep the
+ credentials after they were read by the guest and on VM reset:
+ </para>
+
+<screen>$ VBoxManage setextradata "Windows XP" VBoxInternal/Devices/VMMDev/0/Config/KeepCredentials 1</screen>
+
+ <para>
+ Note that this is a potential security risk, as a malicious
+ application running on the guest could request this information
+ using the proper interface.
+ </para>
+
+ </sect2>
+
+ <sect2 id="autologon_unix">
+
+ <title>Automated Linux and UNIX Guest Logins</title>
+
+ <para>
+ &product-name; provides a custom PAM module (Pluggable
+ Authentication Module) which can be used to perform automated
+ guest logins on platforms which support this framework.
+ Virtually all modern Linux and UNIX distributions rely on PAM.
+ </para>
+
+ <para>
+ For automated logins on Ubuntu, or Ubuntu-derived, distributions
+ using LightDM as the display manager. See
+ <xref linkend="autologon_unix_lightdm" />.
+ </para>
+
+ <para>
+ The <filename>pam_vbox.so</filename> module itself
+ <emphasis>does not</emphasis> do an actual verification of the
+ credentials passed to the guest OS. Instead it relies on other
+ modules such as <filename>pam_unix.so</filename> or
+ <filename>pam_unix2.so</filename> down in the PAM stack to do
+ the actual validation using the credentials retrieved by
+ <filename>pam_vbox.so</filename>. Therefore
+ <filename>pam_vbox.so</filename> has to be on top of the
+ authentication PAM service list.
+ </para>
+
+ <note>
+ <para>
+ The <filename>pam_vbox.so</filename> module only supports the
+ <literal>auth</literal> primitive. Other primitives such as
+ <literal>account</literal>, <literal>session</literal>, or
+ <literal>password</literal> are not supported.
+ </para>
+ </note>
+
+ <para>
+ The <filename>pam_vbox.so</filename> module is shipped as part
+ of the Guest Additions but it is not installed and/or activated
+ on the guest OS by default. In order to install it, it has to be
+ copied from
+ <filename>/opt/VBoxGuestAdditions-<replaceable>version</replaceable>/other/</filename>
+ to the security modules directory. This is usually
+ <filename>/lib/security/</filename> on 32-bit Linux guests or
+ <filename>/lib64/security/</filename> on 64-bit Linux guests.
+ Please refer to your guest OS documentation for the correct PAM
+ module directory.
+ </para>
+
+ <para>
+ For example, to use <filename>pam_vbox.so</filename> with a
+ Ubuntu Linux guest OS and the GNOME Desktop Manager (GDM) to log
+ in users automatically with the credentials passed by the host,
+ configure the guest OS as follows:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Copy the <filename>pam_vbox.so</filename> module to the
+ security modules directory. In this case,
+ <filename>/lib/security</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Edit the PAM configuration file for GDM, found at
+ <filename>/etc/pam.d/gdm</filename>. Add the line
+ <literal>auth requisite pam_vbox.so</literal> at the top.
+ Additionally, in most Linux distributions there is a file
+ called <filename>/etc/pam.d/common-auth</filename>. This
+ file is included in many other services, like the GDM file
+ mentioned above. There you also have to add the line
+ <literal>auth requisite pam_vbox.so</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If authentication against the shadow database using
+ <filename>pam_unix.so</filename> or
+ <filename>pam_unix2.so</filename> is desired, the argument
+ <literal>try_first_pass</literal> for
+ <filename>pam_unix.so</filename> or
+ <literal>use_first_pass</literal> for
+ <filename>pam_unix2.so</filename> is needed in order to pass
+ the credentials from the &product-name; module to the shadow
+ database authentication module. For Ubuntu, this needs to be
+ added to <filename>/etc/pam.d/common-auth</filename>, to the
+ end of the line referencing
+ <filename>pam_unix.so</filename>. This argument tells the
+ PAM module to use credentials already present in the stack,
+ such as the ones provided by the &product-name; PAM module.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <warning>
+ <para>
+ An incorrectly configured PAM stack can effectively prevent
+ you from logging into your guest system.
+ </para>
+ </warning>
+
+ <para>
+ To make deployment easier, you can pass the argument
+ <literal>debug</literal> right after the
+ <filename>pam_vbox.so</filename> statement. Debug log output
+ will then be recorded using syslog.
+ </para>
+
+ <note>
+ <para>
+ By default, <command>pam_vbox</command> does not wait for
+ credentials to arrive from the host. When a login prompt is
+ shown, for example by GDM/KDM or the text console, and
+ <command>pam_vbox</command> does not yet have credentials it
+ does not wait until they arrive. Instead the next module in
+ the PAM stack, depending on the PAM configuration, will have
+ the chance for authentication.
+ </para>
+ </note>
+
+ <para>
+ <command>pam_vbox</command> supports various guest property
+ parameters that are located in
+ <filename>/VirtualBox/GuestAdd/PAM/</filename>. These parameters
+ allow <command>pam_vbox</command> to wait for credentials to be
+ provided by the host and optionally can show a message while
+ waiting for those. The following guest properties can be set:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>CredsWait</literal>: Set to 1 if
+ <command>pam_vbox</command> should start waiting until
+ credentials arrive from the host. Until then no other
+ authentication methods such as manually logging in will be
+ available. If this property is empty or gets deleted no
+ waiting for credentials will be performed and
+ <command>pam_vbox</command> will act like before. This
+ property must be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CredsWaitAbort</literal>: Aborts waiting for
+ credentials when set to any value. Can be set from host and
+ the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CredsWaitTimeout</literal>: Timeout, in seconds, to
+ let <command>pam_vbox</command> wait for credentials to
+ arrive. When no credentials arrive within this timeout,
+ authentication of <command>pam_vbox</command> will be set to
+ failed and the next PAM module in chain will be asked. If
+ this property is not specified, set to 0 or an invalid
+ value, an infinite timeout will be used. This property must
+ be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To customize <command>pam_vbox</command> further there are the
+ following guest properties:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>CredsMsgWaiting</literal>: Custom message showed
+ while pam_vbox is waiting for credentials from the host.
+ This property must be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>CredsMsgWaitTimeout</literal>: Custom message
+ showed when waiting for credentials by
+ <command>pam_vbox</command> has timed out. For example, they
+ did not arrive within time. This property must be set
+ read-only for the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ If a <command>pam_vbox</command> guest property does not have
+ the correct flag set (<literal>RDONLYGUEST</literal>) the
+ property is ignored and, depending on the property, a default
+ value will be used. This can result in pam_vbox not waiting
+ for credentials. Consult the appropriate syslog file for more
+ information and use the <literal>debug</literal> option.
+ </para>
+ </note>
+
+ <sect3 id="autologon_unix_lightdm">
+
+ <title>&product-name; Greeter for Ubuntu/LightDM</title>
+
+ <para>
+ &product-name; comes with a greeter module, named
+ <command>vbox-greeter</command>, that can be used with
+ LightDM. LightDM is the default display manager for Ubuntu
+ Linux and therefore can also be used for automated guest
+ logins.
+ </para>
+
+ <para>
+ <command>vbox-greeter</command> does not need the
+ <command>pam_vbox</command> module described in
+ <xref linkend="autologon_unix"/>in order to function. It comes
+ with its own authentication mechanism provided by LightDM.
+ However, to provide maximum flexibility both modules can be
+ used together on the same guest.
+ </para>
+
+ <para>
+ As with the <command>pam_vbox</command> module,
+ <command>vbox-greeter</command> is shipped as part of the
+ Guest Additions but it is not installed or activated on the
+ guest OS by default. To install
+ <command>vbox-greeter</command> automatically upon Guest
+ Additions installation, use the
+ <option>--with-autologon</option> option when starting the
+ <command>VBoxLinuxAdditions.run</command> file:
+ </para>
+
+<screen># ./VBoxLinuxAdditions.run -- --with-autologon</screen>
+
+ <para>
+ For manual or postponed installation, copy the
+ <filename>vbox-greeter.desktop</filename> file from
+ <filename>/opt/VBoxGuestAdditions-&lt;version&gt;/other/</filename>
+ to the <filename>xgreeters</filename> directory, which is
+ usually <filename>/usr/share/xgreeters/</filename>. See your
+ guest OS documentation for the name of the correct LightDM
+ greeter directory.
+ </para>
+
+ <para>
+ The <command>vbox-greeter</command> module is installed by the
+ &product-name; Guest Additions installer and is located in
+ <filename>/usr/sbin/</filename>. To enable
+ <command>vbox-greeter</command> as the standard greeter
+ module, edit the file
+ <filename>/etc/lightdm/lightdm.conf</filename> as follows:
+ </para>
+
+<screen>[SeatDefaults]
+greeter-session=vbox-greeter</screen>
+
+ <note>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The LightDM server must be fully restarted in order for
+ <command>vbox-greeter</command> to be used as the
+ default greeter. As <literal>root</literal> on Ubuntu,
+ run <command>service lightdm --full-restart</command> or
+ restart the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vbox-greeter</command> is independent of the
+ graphical session you choose, such as Gnome, KDE, or
+ Unity. However, <command>vbox-greeter</command> does
+ require FLTK 1.3 or later to implement its own user
+ interface.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </note>
+
+ <para>
+ There are numerous guest properties which can be used to
+ further customize the login experience. For automatically
+ logging in users, the same guest properties apply as for
+ <command>pam_vbox</command>. See
+ <xref linkend="autologon_unix" />.
+ </para>
+
+ <para>
+ In addition to the previously mentioned guest properties,
+ <command>vbox-greeter</command> enables you to further
+ customize its user interface. The following guest properties
+ are located in the
+ <filename>/VirtualBox/GuestAdd/Greeter/</filename> directory:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>HideRestart</literal>: Set to 1 if
+ <command>vbox-greeter</command> should hide the button to
+ restart the guest. This property must be set read-only for
+ the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>HideShutdown</literal>: Set to 1 if
+ <command>vbox-greeter</command> should hide the button to
+ shutdown the guest. This property must be set read-only
+ for the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>BannerPath</literal>: Path to a
+ <filename>.PNG</filename> file to use as a banner image on
+ the top of the greeter. The image size must be 460 x 90
+ pixels, any bit depth. This property must be set read-only
+ for the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>UseTheming</literal>: Set to 1 for turning on the
+ following theming options. This property must be set
+ read-only for the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Theme/BackgroundColor</literal>: Hexadecimal
+ RRGGBB color for the background. This property must be set
+ read-only for the guest (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Theme/LogonDialog/HeaderColor</literal>:
+ Hexadecimal RRGGBB foreground color for the header text.
+ This property must be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Theme/LogonDialog/BackgroundColor</literal>:
+ Hexadecimal RRGGBB color for the login dialog background.
+ This property must be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>Theme/LogonDialog/ButtonColor</literal>:
+ Hexadecimal RRGGBB background color for the login dialog
+ button. This property must be set read-only for the guest
+ (<literal>RDONLYGUEST</literal>).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ The same restrictions for the guest properties above apply
+ as for the ones specified in the <literal>pam_vbox</literal>
+ section.
+ </para>
+ </note>
+
+ </sect3>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="adv-config-win-guest">
+
+ <title>Advanced Configuration for Windows Guests</title>
+
+ <sect2 id="sysprep">
+
+ <title>Automated Windows System Preparation</title>
+
+ <para>
+ Microsoft offers a system preparation tool called Sysprep, to
+ prepare a Windows system for deployment or redistribution. Some
+ Windows releases include Sysprep on the installation medium, but
+ the tool is also available for download from the Microsoft web
+ site. In a standard For most Windows versions, Sysprep is
+ included in a default installation. Sysprep mainly consists of
+ an executable called <command>sysprep.exe</command> which is
+ invoked by the user to put the Windows installation into
+ preparation mode.
+ </para>
+
+ <para>
+ The Guest Additions offer a way to launch a system preparation
+ on the guest operating system in an automated way, controlled
+ from the host system. See
+ <xref linkend="guestadd-guestcontrol" /> for details of how to
+ use this feature with the special identifier
+ <literal>sysprep</literal> as the program to execute, along with
+ the user name <literal>sysprep</literal> and password
+ <literal>sysprep</literal> for the credentials. Sysprep is then
+ started with the required system rights.
+ </para>
+
+ <note>
+ <para>
+ Specifying the location of <command>sysprep.exe</command> is
+ <emphasis role="bold">not possible</emphasis>. Instead the
+ following paths are used, based on the Windows release:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <filename>C:\sysprep\sysprep.exe</filename> for Windows XP
+ and earlier
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>%WINDIR%\System32\sysprep\sysprep.exe</filename>
+ for Windows Vista and later
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The Guest Additions will automatically use the appropriate
+ path to execute the system preparation tool.
+ </para>
+ </note>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="adv-config-linux-guest">
+
+ <title>Advanced Configuration for Linux and Oracle Solaris Guests</title>
+
+ <sect2 id="linux-guest-manual-setup">
+
+ <title>Manual Setup of Selected Guest Services on Linux</title>
+
+ <para>
+ The &product-name; Guest Additions contain several different
+ drivers. If you do not want to configure them all, use the
+ following command to install the Guest Additions:
+ </para>
+
+<screen>$ sh ./VBoxLinuxAdditions.run no_setup</screen>
+
+ <para>
+ After running this script, run the <command>rcvboxadd
+ setup</command> command as <literal>root</literal> to compile
+ the kernel modules.
+ </para>
+
+ <para>
+ On some 64-bit guests, you must replace <filename>lib</filename>
+ with <filename>lib64</filename>. On older guests that do not run
+ the <command>udev</command> service, you must add the
+ <command>vboxadd</command> service to the default runlevel to
+ ensure that the modules are loaded.
+ </para>
+
+ <para>
+ To set up the time synchronization service, add the
+ <command>vboxadd-service</command> service to the default
+ runlevel. To set up the X11 and OpenGL part of the Guest
+ Additions, run the <command>rcvboxadd-x11 setup</command>
+ command. Note that you do not need to enable additional
+ services.
+ </para>
+
+ <para>
+ Use the <command>rcvboxadd setup</command> to recompile the
+ guest kernel modules.
+ </para>
+
+ <para>
+ After compilation, reboot your guest to ensure that the new
+ modules are loaded.
+ </para>
+
+ </sect2>
+
+ <sect2 id="guestxorgsetup">
+
+ <title>Guest Graphics and Mouse Driver Setup in Depth</title>
+
+ <para>
+ This section assumes that you are familiar with configuring the
+ X.Org server using xorg.conf and optionally the newer mechanisms
+ using hal or udev and xorg.conf.d. If not you can learn about
+ them by studying the documentation which comes with X.Org.
+ </para>
+
+ <para>
+ The &product-name; Guest Additions includes drivers for X.Org.
+ By default these drivers are in the following directory:
+ </para>
+
+ <para>
+ <filename>/opt/VBoxGuestAdditions-<replaceable>version</replaceable>/other/</filename>
+ </para>
+
+ <para>
+ The correct versions for the X server are symbolically linked
+ into the X.Org driver directories.
+ </para>
+
+ <para>
+ For graphics integration to work correctly, the X server must
+ load the <literal>vboxvideo</literal> driver. Many recent X
+ server versions look for it automatically if they see that they
+ are running in &product-name;. For an optimal user experience,
+ the guest kernel drivers must be loaded and the Guest Additions
+ tool <command>VBoxClient</command> must be running as a client
+ in the X session.
+ </para>
+
+ <para>
+ For mouse integration to work correctly, the guest kernel
+ drivers must be loaded. In addition, for legacy X servers the
+ correct <literal>vboxmouse</literal> driver must be loaded and
+ associated with <filename>/dev/mouse</filename> or
+ <filename>/dev/psaux</filename>. For most guests, a driver for a
+ PS/2 mouse must be loaded and the correct vboxmouse driver must
+ be associated with <filename>/dev/vboxguest</filename>.
+ </para>
+
+ <para>
+ The &product-name; guest graphics driver can use any graphics
+ configuration for which the virtual resolution fits into the
+ virtual video memory allocated to the virtual machine, minus a
+ small amount used by the guest driver, as described in
+ <xref linkend="settings-display" />. The driver will offer a
+ range of standard modes at least up to the default guest
+ resolution for all active guest monitors. The default mode can
+ be changed by setting the output property VBOX_MODE to
+ "&lt;width&gt;x&lt;height&gt;" for any guest monitor. When
+ VBoxClient and the kernel drivers are active this is done
+ automatically when the host requests a mode change. The driver
+ for older versions can only receive new modes by querying the
+ host for requests at regular intervals.
+ </para>
+
+ <para>
+ With legacy X Servers before version 1.3, you can also add your
+ own modes to the X server configuration file. Add them to the
+ "Modes" list in the "Display" subsection of the "Screen"
+ section. For example, the following section has a custom
+ 2048x800 resolution mode added:
+ </para>
+
+<screen>Section "Screen"
+ Identifier "Default Screen"
+ Device "VirtualBox graphics card"
+ Monitor "Generic Monitor"
+ DefaultDepth 24
+ SubSection "Display"
+ Depth 24
+ Modes "2048x800" "800x600" "640x480"
+ EndSubSection
+EndSection</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="cpuhotplug">
+
+ <title>CPU Hot-Plugging</title>
+
+ <para>
+ With virtual machines running modern server operating systems,
+ &product-name; supports CPU hot-plugging.
+ </para>
+
+ <para>
+ On a physical computer CPU hot-plugging would mean that a CPU can
+ be added or removed while the machine is running. &product-name;
+ supports adding and removing of virtual CPUs while a virtual
+ machine is running.
+ </para>
+
+ <para>
+ CPU hot-plugging works only with guest operating systems that
+ support the feature. So far this applies only to Linux and Windows
+ Server. Windows supports only hot-add, while Linux supports
+ hot-add and hot-remove. To use this feature with more than 8 CPUs,
+ a 64-bit Linux guest is required.
+ </para>
+
+ <para>
+ CPU hot-plugging is done using the <command>VBoxManage</command>
+ command-line interface. First, hot-plugging needs to be enabled
+ for a virtual machine:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --cpuhotplug on</screen>
+
+ <para>
+ The <option>--cpus</option> option is used to specify the maximum
+ number of CPUs that the virtual machine can have:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --cpus 8</screen>
+
+ <para>
+ When the VM is off, you can then add and remove virtual CPUs with
+ the <command>VBoxManage modifyvm --plugcpu</command> and
+ <command>VBoxManage modifyvm --unplugcpu</command> commands, which
+ take the number of the virtual CPU as a parameter, as follows:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --plugcpu 3
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --unplugcpu 3</screen>
+
+ <para>
+ Note that CPU 0 can never be removed.
+ </para>
+
+ <para>
+ While the VM is running, CPUs can be added and removed with the
+ <command>VBoxManage controlvm plugcpu</command> and
+ <command>VBoxManage controlvm unplugcpu</command> commands
+ instead, as follows:
+ </para>
+
+<screen>$ VBoxManage controlvm <replaceable>VM-name</replaceable> plugcpu 3
+$ VBoxManage controlvm <replaceable>VM-name</replaceable> unplugcpu 3</screen>
+
+ <para>
+ See <xref linkend="vboxmanage-modifyvm" /> and
+ <xref linkend="vboxmanage-controlvm" /> for details.
+ </para>
+
+ <para>
+ With Linux guests, the following applies:
+ </para>
+
+ <para>
+ To prevent ejection while the CPU is still used it has to be
+ ejected from within the guest before. The Linux Guest Additions
+ contain a service which receives hot-remove events and ejects the
+ CPU. Also, after a CPU is added to the VM it is not automatically
+ used by Linux. The Linux Guest Additions service will take care of
+ that if installed. If not a CPU can be started with the following
+ command:
+ </para>
+
+<screen>$ echo 1 &gt; /sys/devices/system/cpu/cpu&lt;id&gt;/online</screen>
+
+ </sect1>
+
+<!--<sect1 id="pcipassthrough">
+
+ <title>PCI Passthrough</title>
+
+ <para>
+ When running on Linux hosts with a kernel version later than
+ <literal>2.6.31</literal>, experimental host PCI devices
+ passthrough is available.
+ </para>
+
+ <note>
+ <para>
+ The PCI passthrough module is shipped as an &product-name;
+ extension package, which must be installed separately. See
+ <xref linkend="intro-installing" />.
+ </para>
+ </note>
+
+ <para>
+ This feature enables a guest to directly use physical PCI devices
+ on the host, even if host does not have drivers for this
+ particular device. Both, regular PCI and some PCI Express cards,
+ are supported. AGP and certain PCI Express cards are not supported
+ at the moment if they rely on Graphics Address Remapping Table
+ (GART) unit programming for texture management as it does rather
+ non-trivial operations with pages remapping interfering with
+ IOMMU. This limitation may be lifted in future releases.
+ </para>
+
+ <para>
+ To be fully functional, PCI passthrough support in &product-name;
+ depends upon an IOMMU hardware unit. If the device uses bus
+ mastering, for example it performs DMA to the OS memory on its
+ own, then an IOMMU is required. Otherwise such DMA transactions
+ may write to the wrong physical memory address as the device DMA
+ engine is programmed using a device-specific protocol to perform
+ memory transactions. The IOMMU functions as translation unit
+ mapping physical memory access requests from the device using
+ knowledge of the guest physical address to host physical addresses
+ translation rules.
+ </para>
+
+ <para>
+ Intel's solution for IOMMU is called Intel Virtualization
+ Technology for Directed I/O (VT-d), and AMD's solution is called
+ AMD-Vi. Check your motherboard datasheet for the appropriate
+ technology. Even if your hardware does not have a IOMMU, certain
+ PCI cards may work, such as serial PCI adapters, but the guest
+ will show a warning on boot and the VM execution will terminate if
+ the guest driver will attempt to enable card bus mastering.
+ </para>
+
+ <para>
+ It is very common that the BIOS or the host OS disables the IOMMU
+ by default. So before any attempt to use it please make sure that
+ the following apply:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Your motherboard has an IOMMU unit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Your CPU supports the IOMMU.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The IOMMU is enabled in the BIOS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The VM must run with VT-x/AMD-V and nested paging enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Your Linux kernel was compiled with IOMMU support, including
+ DMA remapping. See the <literal>CONFIG_DMAR</literal> kernel
+ compilation option. The PCI stub driver
+ (<literal>CONFIG_PCI_STUB</literal>) is required as well.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Your Linux kernel recognizes and uses the IOMMU unit. The
+ <literal>intel_iommu=on</literal> boot option could be needed.
+ Search for DMAR and PCI-DMA in kernel boot log.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Once you made sure that the host kernel supports the IOMMU, the
+ next step is to select the PCI card and attach it to the guest. To
+ figure out the list of available PCI devices, use the
+ <command>lspci</command> command. The output will look as follows:
+ </para>
+
+<screen>01:00.0 VGA compatible controller: ATI Technologies Inc Cedar PRO [Radeon HD 5450]
+01:00.1 Audio device: ATI Technologies Inc Manhattan HDMI Audio [Mobility Radeon HD 5000 Series]
+02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit
+ Ethernet controller (rev 03)
+03:00.0 SATA controller: JMicron Technology Corp. JMB362/JMB363 Serial ATA Controller (rev 03)
+03:00.1 IDE interface: JMicron Technology Corp. JMB362/JMB363 Serial ATA Controller (rev 03)
+06:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8500 GT] (rev a1)</screen>
+
+ <para>
+ The first column is a PCI address, in the format
+ <literal><replaceable>bus</replaceable>:<replaceable>device</replaceable>.<replaceable>function</replaceable></literal>.
+ This address could be used to identify the device for further
+ operations. For example, to attach a PCI network controller on the
+ system listed above to the second PCI bus in the guest, as device
+ 5, function 0, use the following command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> -\-pciattach 02:00.0@01:05.0</screen>
+
+ <para>
+ To detach the same device, use:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> -\-pcidetach 02:00.0</screen>
+
+ <para>
+ Please note that both host and guest could freely assign a
+ different PCI address to the card attached during runtime, so
+ those addresses only apply to the address of the card at the
+ moment of attachment on the host, and during BIOS PCI init on the
+ guest.
+ </para>
+
+ <para>
+ If the virtual machine has a PCI device attached, certain
+ limitations apply:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Only PCI cards with non-shared interrupts, such as those using
+ MSI on the host, are supported at the moment.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No guest state can be reliably saved or restored. The internal
+ state of the PCI card cannot be retrieved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Teleportation, also called live migration, does not work. The
+ internal state of the PCI card cannot be retrieved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No lazy physical memory allocation. The host will preallocate
+ the whole RAM required for the VM on startup, as we cannot
+ catch physical hardware accesses to the physical memory.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>-->
+
+ <sect1 id="webcam-passthrough">
+
+ <title>Webcam Passthrough</title>
+
+ <sect2 id="webcam-using-guest">
+
+ <title>Using a Host Webcam in the Guest</title>
+
+ <para>
+ &product-name; includes a feature called <emphasis>webcam
+ passthrough</emphasis>, which enables a guest to use a host
+ webcam. This complements the general USB passthrough support
+ which was the typical way of using host webcams in legacy
+ releases. The webcam passthrough support can handle non-USB
+ video sources in theory, but this is completely untested.
+ </para>
+
+ <note>
+ <para>
+ The webcam passthrough module is shipped as part of the
+ &product-name; extension pack, which must be installed
+ separately. See <xref linkend="intro-installing" />.
+ </para>
+ </note>
+
+ <para>
+ The host webcam can be attached to the VM using the
+ <emphasis role="bold">Devices</emphasis> menu in the VM menu
+ bar. The <emphasis role="bold">Webcams</emphasis> menu contains
+ a list of available video input devices on the host. Clicking on
+ a webcam name attaches or detaches the corresponding host
+ device.
+ </para>
+
+ <para>
+ The <command>VBoxManage</command> command line tool can be used
+ to enable webcam passthrough. Please see the host-specific
+ sections below for additional details. The following commands
+ are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Get a list of host webcams, or other video input devices:
+ </para>
+
+<screen>$ VBoxManage list webcams</screen>
+
+ <para>
+ The output format is as follows:
+ </para>
+
+<screen>alias "user friendly name"
+host path or identifier</screen>
+
+ <para>
+ The alias can be used as a shortcut in other commands. Alias
+ '.0' means the default video input device on the host. Alias
+ '.1', '.2'means first, second video input device, and so on.
+ The device order is host-specific.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Attach a webcam to a running VM, as follows:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>VM name</replaceable> webcam attach [<replaceable>host_path</replaceable>|<replaceable>alias</replaceable> [<replaceable>settings</replaceable>]]</screen>
+
+ <para>
+ This attaches a USB webcam device to the guest.
+ </para>
+
+ <para>
+ The <literal>settings</literal> parameter is a string
+ <literal>Setting1=Value1;Setting2=Value2</literal>, which
+ enables you to configure the emulated webcam device. The
+ following settings are supported:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>MaxFramerate</literal>: The highest rate at
+ which video frames are sent to the guest. A higher frame
+ rate requires more CPU power. Therefore sometimes it is
+ useful to set a lower limit. Default is no limit and
+ allow the guest to use all frame rates supported by the
+ host webcam.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>MaxPayloadTransferSize</literal>: How many
+ bytes the emulated webcam can send to the guest at a
+ time. Default value is 3060 bytes, which is used by some
+ webcams. Higher values can slightly reduce CPU load, if
+ the guest is able to use larger buffers. However, a high
+ <literal>MaxPayloadTransferSize</literal> might be not
+ supported by some guests.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Detach a webcam from a running VM, as follows:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>VM-name</replaceable> webcam detach [<replaceable>host_path</replaceable>|<replaceable>alias</replaceable>]</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ List the webcams attached to a running VM, as follows:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>VM-name</replaceable> webcam list</screen>
+
+ <para>
+ The output contains the path or alias which was used in the
+ <command>webcam attach</command> command for each attached
+ webcam.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="webcam-win-hosts">
+
+ <title>Windows Hosts</title>
+
+ <para>
+ When the webcam device is detached from the host, the emulated
+ webcam device is automatically detached from the guest.
+ </para>
+
+ </sect2>
+
+ <sect2 id="webcam-mac-hosts">
+
+ <title>Mac OS X Hosts</title>
+
+ <para>
+ Mac OS X version 10.9 or later is required.
+ </para>
+
+ <para>
+ When the webcam device is detached from the host, the emulated
+ webcam device remains attached to the guest and must be manually
+ detached using the <command>VBoxManage controlvm
+ <replaceable>VM-name</replaceable> webcam detach</command>
+ command.
+ </para>
+
+ </sect2>
+
+ <sect2 id="webcam-linux-hosts">
+
+ <title>Linux and Oracle Solaris Hosts</title>
+
+ <para>
+ When the webcam is detached from the host the emulated webcam
+ device is automatically detached from the guest only if the
+ webcam is streaming video. If the emulated webcam is inactive it
+ should be manually detached using the <command>VBoxManage
+ controlvm <replaceable>VM-name</replaceable> webcam
+ detach</command> command.
+ </para>
+
+ <para>
+ Aliases <filename>.0</filename> and <filename>.1</filename> are
+ mapped to <filename>/dev/video0</filename>, alias
+ <filename>.2</filename> is mapped to
+ <filename>/dev/video1</filename> and so forth.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="adv-display-config">
+
+ <title>Advanced Display Configuration</title>
+
+ <sect2 id="customvesa">
+
+ <title>Custom VESA Resolutions</title>
+
+ <para>
+ Apart from the standard VESA resolutions, the &product-name;
+ VESA BIOS enables you to add up to 16 custom video modes which
+ will be reported to the guest operating system. When using
+ Windows guests with the &product-name; Guest Additions, a custom
+ graphics driver will be used instead of the fallback VESA
+ solution so this information does not apply.
+ </para>
+
+ <para>
+ Additional video modes can be configured for each VM using the
+ extra data facility. The extra data key is called
+ <literal>CustomVideoMode<replaceable>x</replaceable></literal>
+ with <replaceable>x</replaceable> being a number from 1 to 16.
+ Please note that modes will be read from 1 until either the
+ following number is not defined or 16 is reached. The following
+ example adds a video mode that corresponds to the native display
+ resolution of many notebook computers:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "CustomVideoMode1" "1400x1050x16"</screen>
+
+ <para>
+ The VESA mode IDs for custom video modes start at
+ <literal>0x160</literal>. In order to use the above defined
+ custom video mode, the following command line has to be supplied
+ to Linux:
+ </para>
+
+<screen>vga = 0x200 | 0x160
+vga = 864</screen>
+
+ <para>
+ For guest operating systems with &product-name; Guest Additions,
+ a custom video mode can be set using the video mode hint
+ feature.
+ </para>
+
+ </sect2>
+
+ <sect2 id="max-resolution-guests">
+
+ <title>Configuring the Maximum Resolution of Guests When Using the Graphical
+ Frontend</title>
+
+ <para>
+ When guest systems with the Guest Additions installed are
+ started using the graphical frontend, the normal &product-name;
+ application, they will not be allowed to use screen resolutions
+ greater than the host's screen size unless the user manually
+ resizes them by dragging the window, switching to full screen or
+ seamless mode or sending a video mode hint using
+ <command>VBoxManage</command>. This behavior is what most users
+ will want, but if you have different needs, you can change it by
+ issuing one of the following commands from the command line:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove all limits on guest resolutions.
+ </para>
+
+<screen>VBoxManage setextradata global GUI/MaxGuestResolution any</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Manually specify a maximum resolution.
+ </para>
+
+<screen>VBoxManage setextradata global GUI/MaxGuestResolution <replaceable>width</replaceable>x<replaceable>height</replaceable></screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Restore the default settings to all guest VMs.
+ </para>
+
+<screen>VBoxManage setextradata global GUI/MaxGuestResolution auto</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="adv-storage-config">
+
+ <title>Advanced Storage Configuration</title>
+
+ <sect2 id="rawdisk">
+
+ <title>Using a Raw Host Hard Disk From a Guest</title>
+
+ <para>
+ As an alternative to using virtual disk images as described in
+ <xref linkend="storage" />, &product-name; can also present
+ either entire physical hard disks or selected partitions as
+ virtual disks to virtual machines.
+ </para>
+
+ <para>
+ With &product-name;, this type of access is called <emphasis>raw
+ hard disk access</emphasis>. It enables a guest operating system
+ to access its virtual hard disk without going through the host
+ OS file system. The actual performance difference for image
+ files compared to raw disk varies greatly depending on the
+ overhead of the host file system, whether dynamically growing
+ images are used, and on host OS caching strategies. The caching
+ indirectly also affects other aspects such as failure behavior.
+ For example, whether the virtual disk contains all data written
+ before a host OS crash. Consult your host OS documentation for
+ details on this.
+ </para>
+
+ <warning>
+ <para>
+ Raw hard disk access is for expert users only. Incorrect use
+ or use of an outdated configuration can lead to
+ <emphasis role="bold">total loss of data</emphasis> on the
+ physical disk. Most importantly, <emphasis>do not</emphasis>
+ attempt to boot the partition with the currently running host
+ operating system in a guest. This will lead to severe data
+ corruption.
+ </para>
+ </warning>
+
+ <para>
+ Raw hard disk access, both for entire disks and individual
+ partitions, is implemented as part of the VMDK image format
+ support. As a result, you will need to create a special VMDK
+ image file which defines where the data will be stored. After
+ creating such a special VMDK image, you can use it like a
+ regular virtual disk image. For example, you can use the
+ VirtualBox Manager, see <xref linkend="vdis" />, or
+ <command>VBoxManage</command> to assign the image to a virtual
+ machine.
+ </para>
+
+ <sect3 id="rawdisk-access-entire-physical-disk">
+
+ <title>Access to Entire Physical Hard Disk</title>
+
+ <para>
+ While this variant is the simplest to set up, you must be
+ aware that this will give a guest operating system direct and
+ full access to an <emphasis>entire physical disk</emphasis>.
+ If your <emphasis>host</emphasis> operating system is also
+ booted from this disk, please take special care to not access
+ the partition from the guest at all. On the positive side, the
+ physical disk can be repartitioned in arbitrary ways without
+ having to recreate the image file that gives access to the raw
+ disk.
+ </para>
+
+ <para>
+ On a Linux host, to create an image that represents an entire
+ physical hard disk which will not contain any actual data, as
+ this will all be stored on the physical disk, use the
+ following command:
+ </para>
+
+<screen>$ VBoxManage internalcommands createrawvmdk -filename \
+<replaceable>path-to-file</replaceable>.vmdk -rawdisk /dev/sda</screen>
+
+ <para>
+ This creates the
+ <filename>/<replaceable>path-to-file</replaceable>.vmdk</filename>
+ file image that must be an absolute path. All data is read and
+ written from <filename>/dev/sda</filename>.
+ </para>
+
+ <para>
+ On a Windows host, instead of the above device specification,
+ for example use <filename>\\.\PhysicalDrive0</filename>. On a
+ Mac OS X host, instead of the above device specification use
+ for example <filename>/dev/disk1</filename>. Note that on Mac
+ OS X you can only get access to an entire disk if no volume is
+ mounted from it.
+ </para>
+
+ <para>
+ Creating the image requires read/write access for the given
+ device. Read/write access is also later needed when using the
+ image from a virtual machine. On some host platforms, such as
+ Windows, raw disk access may be restricted and not permitted
+ by the host OS in some situations.
+ </para>
+
+ <para>
+ Just like with regular disk images, this does not
+ automatically attach the newly created image to a virtual
+ machine. This can be done as follows:
+ </para>
+
+<screen>$ VBoxManage storageattach WindowsXP --storagectl "IDE Controller" \
+ --port 0 --device 0 --type hdd --medium <replaceable>path-to-file</replaceable>.vmdk</screen>
+
+ <para>
+ When this is done the selected virtual machine will boot from
+ the specified physical disk.
+ </para>
+
+ </sect3>
+
+ <sect3 id="rawdisk-access-disk-partitions">
+
+ <title>Access to Individual Physical Hard Disk Partitions</title>
+
+ <para>
+ This <emphasis>raw partition support</emphasis> is quite
+ similar to the full hard disk access described above. However,
+ in this case, any partitioning information will be stored
+ inside the VMDK image. This means that you can install a
+ different boot loader in the virtual hard disk without
+ affecting the host's partitioning information. While the guest
+ will be able to <emphasis>see</emphasis> all partitions that
+ exist on the physical disk, access will be filtered in that
+ reading from partitions for which no access is allowed the
+ partitions will only yield zeroes, and all writes to them are
+ ignored.
+ </para>
+
+ <para>
+ To create a special image for raw partition support, which
+ will contain a small amount of data, on a Linux host, use the
+ command:
+ </para>
+
+<screen>$ VBoxManage internalcommands createrawvmdk -filename \
+<replaceable>path-to-file</replaceable>.vmdk -rawdisk /dev/sda -partitions 1,5</screen>
+
+ <para>
+ The command is identical to the one for full hard disk access,
+ except for the additional <option>-partitions</option>
+ parameter. This example would create the image
+ <filename>/<replaceable>path-to-file</replaceable>.vmdk</filename>,
+ which must be absolute, and partitions 1 and 5 of
+ <filename>/dev/sda</filename> would be made accessible to the
+ guest.
+ </para>
+
+ <para>
+ &product-name; uses the same partition numbering as your Linux
+ host. As a result, the numbers given in the above example
+ would refer to the first primary partition and the first
+ logical drive in the extended partition, respectively.
+ </para>
+
+ <para>
+ On a Windows host, instead of the above device specification,
+ use for example <filename>\\.\PhysicalDrive0</filename>. On a
+ Mac OS X host, instead of the above device specification use
+ <filename>/dev/disk1</filename>, for example. Note that on OS
+ X you can only use partitions which are not mounted. Eject the
+ respective volume first. Partition numbers are the same on
+ Linux, Windows, and Mac OS X hosts.
+ </para>
+
+ <para>
+ The numbers for the list of partitions can be taken from the
+ output of the following command:
+ </para>
+
+<screen>$ VBoxManage internalcommands listpartitions -rawdisk /dev/sda</screen>
+
+ <para>
+ The output lists the partition types and sizes to give the
+ user enough information to identify the partitions necessary
+ for the guest.
+ </para>
+
+ <para>
+ Images which give access to individual partitions are specific
+ to a particular host disk setup. You cannot transfer these
+ images to another host. Also, whenever the host partitioning
+ changes, the image <emphasis>must be recreated</emphasis>.
+ </para>
+
+ <para>
+ Creating the image requires read/write access for the given
+ device. Read/write access is also later needed when using the
+ image from a virtual machine. If this is not feasible, there
+ is a special variant for raw partition access, currently only
+ available on Linux hosts, that avoids having to give the
+ current user access to the entire disk. To set up such an
+ image, use:
+ </para>
+
+<screen>$ VBoxManage internalcommands createrawvmdk -filename \
+<replaceable>path-to-file</replaceable>.vmdk -rawdisk /dev/sda -partitions 1,5 -relative</screen>
+
+ <para>
+ When used from a virtual machine, the image will then refer
+ not to the entire disk, but only to the individual partitions.
+ In this example, <filename>/dev/sda1</filename> and
+ <filename>/dev/sda5</filename>. As a consequence, read/write
+ access is only required for the affected partitions, not for
+ the entire disk. During creation however, read-only access to
+ the entire disk is required to obtain the partitioning
+ information.
+ </para>
+
+ <para>
+ In some configurations it may be necessary to change the MBR
+ code of the created image. For example, to replace the Linux
+ boot loader that is used on the host by another boot loader.
+ This enables for example the guest to boot directly to
+ Windows, while the host boots Linux from the "same" disk. For
+ this purpose the <option>-mbr</option> option is provided. It
+ specifies a file name from which to take the MBR code. The
+ partition table is not modified at all, so a MBR file from a
+ system with totally different partitioning can be used. An
+ example of this is:
+ </para>
+
+<screen>$ VBoxManage internalcommands createrawvmdk -filename
+<replaceable>path-to-file</replaceable>.vmdk -rawdisk /dev/sda -partitions 1,5 -mbr winxp.mbr</screen>
+
+ <para>
+ The modified MBR will be stored inside the image, not on the
+ host disk.
+ </para>
+
+ <para>
+ The created image can be attached to a storage controller in a
+ VM configuration as usual.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="changevpd">
+
+ <title>Configuring the Hard Disk Vendor Product Data (VPD)</title>
+
+ <para>
+ &product-name; reports vendor product data for its virtual hard
+ disks which consist of hard disk serial number, firmware
+ revision and model number. These can be changed using the
+ following commands:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" "serial"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision" "firmware"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" "model"</screen>
+
+ <para>
+ The serial number is a 20 byte alphanumeric string, the firmware
+ revision an 8 byte alphanumeric string and the model number a 40
+ byte alphanumeric string. Instead of Port0, referring to the
+ first port, specify the desired SATA hard disk port.
+ </para>
+
+ <para>
+ The above commands apply to virtual machines with an AHCI (SATA)
+ controller. The commands for virtual machines with an IDE
+ controller are:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/SerialNumber" "serial"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/FirmwareRevision" "firmware"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/ModelNumber" "model"</screen>
+
+ <para>
+ For hard disks, you can mark the drive as having a
+ non-rotational medium by using the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/NonRotational" "1"</screen>
+
+ <para>
+ Additional three parameters are needed for CD/DVD drives to
+ report the vendor product data:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIVendorId" "vendor"
+VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIProductId" "product"
+VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIRevision" "revision"</screen>
+
+ <para>
+ The vendor id is an 8 byte alphanumeric string, the product id
+ an 16 byte alphanumeric string and the revision a 4 byte
+ alphanumeric string. Instead of Port0, referring to the first
+ port, specify the desired SATA hard disk port.
+ </para>
+
+ </sect2>
+
+ <sect2 id="iscsi-intnet">
+
+ <title>Access iSCSI Targets Using Internal Networking</title>
+
+ <para>
+ As an experimental feature, &product-name; enables access to an
+ iSCSI target running in a virtual machine which is configured to
+ use Internal Networking mode. See
+ <xref linkend="storage-iscsi" />,
+ <xref linkend="network_internal" />, and
+ <xref
+ linkend="vboxmanage-storageattach" />.
+ </para>
+
+ <para>
+ The IP stack accessing Internal Networking must be configured in
+ the virtual machine which accesses the iSCSI target. A free
+ static IP and a MAC address not used by other virtual machines
+ must be chosen. In the example below, adapt the name of the
+ virtual machine, the MAC address, the IP configuration, and the
+ Internal Networking name (MyIntNet) according to your needs. The
+ following eight commands must first be issued:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/Trusted 1
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/Config/MAC 08:00:27:01:02:0f
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/Config/IP 10.0.9.1
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/Config/Netmask 255.255.255.0
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/LUN#0/Driver IntNet
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/Network MyIntNet
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/TrunkType 2
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/IsService 1</screen>
+
+ <para>
+ Finally the iSCSI disk must be attached with the
+ <option>--intnet</option> option to tell the iSCSI initiator to
+ use internal networking, as follows:
+ </para>
+
+<screen>$ VBoxManage storageattach ... --medium iscsi --server 10.0.9.30 \
+--target iqn.2008-12.com.sun:sampletarget --intnet</screen>
+
+ <para>
+ Compared to a regular iSCSI setup, the IP address of the target
+ <emphasis>must</emphasis> be specified as a numeric IP address,
+ as there is no DNS resolver for internal networking.
+ </para>
+
+ <para>
+ The virtual machine with the iSCSI target should be started
+ before the VM using it is powered on. If a virtual machine using
+ an iSCSI disk is started without having the iSCSI target powered
+ up, it can take up to 200 seconds to detect this situation. The
+ VM will fail to power up.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="changenat">
+
+ <title>Fine Tuning the &product-name; NAT Engine</title>
+
+ <sect2 id="nat-address-config">
+
+ <title>Configuring the Address of a NAT Network Interface</title>
+
+ <para>
+ In NAT mode, the guest network interface is assigned to the IPv4
+ range <literal>10.0.<replaceable>x</replaceable>.0/24</literal>
+ by default where <replaceable>x</replaceable> corresponds to the
+ instance of the NAT interface +2. So
+ <replaceable>x</replaceable> is 2 when there is only one NAT
+ instance active. In that case the guest is assigned to the
+ address <literal>10.0.2.15</literal>, the gateway is set to
+ <literal>10.0.2.2</literal> and the name server can be found at
+ <literal>10.0.2.3</literal>.
+ </para>
+
+ <para>
+ If the NAT network needs to be changed, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--natnet1 "192.168/16"</screen>
+
+ <para>
+ This command would reserve the network addresses from
+ <literal>192.168.0.0</literal> to
+ <literal>192.168.254.254</literal> for the first NAT network
+ instance of <replaceable>VM-name</replaceable> The guest IP
+ would be assigned to <literal>192.168.0.15</literal> and the
+ default gateway could be found at
+ <literal>192.168.0.2</literal>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="nat-adv-tftp">
+
+ <title>Configuring the Boot Server (Next Server) of a NAT Network Interface</title>
+
+ <para>
+ For network booting in NAT mode, by default &product-name; uses
+ a built-in TFTP server at the IP address 10.0.2.4. This default
+ behavior should work fine for typical remote-booting scenarios.
+ However, it is possible to change the boot server IP and the
+ location of the boot image with the following commands:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--nattftpserver1 10.0.2.2
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--nattftpfile1 /srv/tftp/boot/MyPXEBoot.pxe</screen>
+
+ </sect2>
+
+ <sect2 id="nat-adv-settings">
+
+ <title>Tuning TCP/IP Buffers for NAT</title>
+
+ <para>
+ The &product-name; NAT stack performance is often determined by
+ its interaction with the host's TCP/IP stack and the size of
+ several buffers, <literal>SO_RCVBUF</literal> and
+ <literal>SO_SNDBUF</literal>. For certain setups users might
+ want to adjust the buffer size for a better performance. This
+ can by achieved using the following commands, where values are
+ in kilobytes and can range from 8 to 1024:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--natsettings1 16000,128,128,0,0</screen>
+
+ <para>
+ This example illustrates tuning the NAT settings. The first
+ parameter is the MTU, then the size of the socket's send buffer
+ and the size of the socket's receive buffer, the initial size of
+ the TCP send window, and lastly the initial size of the TCP
+ receive window. Note that specifying zero means fallback to the
+ default value.
+ </para>
+
+ <para>
+ Each of these buffers has a default size of 64KB and default MTU
+ is 1500.
+ </para>
+
+ </sect2>
+
+ <sect2 id="nat-bind-sockets">
+
+ <title>Binding NAT Sockets to a Specific Interface</title>
+
+ <para>
+ By default, &product-name;'s NAT engine will route TCP/IP
+ packets through the default interface assigned by the host's
+ TCP/IP stack. The technical reason for this is that the NAT
+ engine uses sockets for communication. If you want to change
+ this behavior, you can tell the NAT engine to bind to a
+ particular IP address instead. For example, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--natbindip1 "10.45.0.2"</screen>
+
+ <para>
+ After this, all outgoing traffic will be sent through the
+ interface with the IP address 10.45.0.2. Ensure that this
+ interface is up and running before changing the NAT bind
+ address.
+ </para>
+
+ </sect2>
+
+ <sect2 id="nat-adv-dns">
+
+ <title>Enabling DNS Proxy in NAT Mode</title>
+
+ <para>
+ The NAT engine by default offers the same DNS servers to the
+ guest that are configured on the host. In some scenarios, it can
+ be desirable to hide the DNS server IPs from the guest, for
+ example when this information can change on the host due to
+ expiring DHCP leases. In this case, you can tell the NAT engine
+ to act as DNS proxy using the following command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --natdnsproxy1 on</screen>
+
+ </sect2>
+
+ <sect2 id="nat_host_resolver_proxy">
+
+ <title>Using the Host's Resolver as a DNS Proxy in NAT Mode</title>
+
+ <para>
+ For resolving network names, the DHCP server of the NAT engine
+ offers a list of registered DNS servers of the host. If for some
+ reason you need to hide this DNS server list and use the host's
+ resolver settings, thereby forcing the &product-name; NAT engine
+ to intercept DNS requests and forward them to host's resolver,
+ use the following command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --natdnshostresolver1 on</screen>
+
+ <para>
+ Note that this setting is similar to the DNS proxy mode, however
+ whereas the proxy mode just forwards DNS requests to the
+ appropriate servers, the resolver mode will interpret the DNS
+ requests and use the host's DNS API to query the information and
+ return it to the guest.
+ </para>
+
+ <sect3 id="nat_host_resolver_name_intercepting">
+
+ <title>User-Defined Host Name Resolving</title>
+
+ <para>
+ In some cases it might be useful to intercept the name
+ resolving mechanism, providing a user-defined IP address on a
+ particular DNS request. The intercepting mechanism enables the
+ user to map not only a single host but domains and even more
+ complex naming conventions if required.
+ </para>
+
+ <para>
+ The following command sets a rule for mapping a name to a
+ specified IP:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/AttachedDriver/Config/HostResolverMappings/ \
+<replaceable>unique-rule-name-of-interception-rule</replaceable>/HostIP" <replaceable>IPv4</replaceable>
+
+VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/AttachedDriver/Config/HostResolverMappings/ \
+<replaceable>unique-rule-name</replaceable>/HostName" <replaceable>hostname</replaceable></screen>
+
+ <para>
+ The following command sets a rule for mapping a pattern name
+ to a specified IP:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/AttachedDriver/Config/HostResolverMappings/ \
+<replaceable>unique-rule-name</replaceable>/HostIP" <replaceable>IPv4</replaceable>
+
+VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/AttachedDriver/Config/HostResolverMappings/ \
+<replaceable>unique-rule-name</replaceable>/HostNamePattern" <replaceable>hostpattern</replaceable></screen>
+
+ <para>
+ The host name pattern can include the following wildcard
+ characters: pipe (<literal>|</literal>), question mark
+ (<literal>?</literal>), and asterisk (<literal>*</literal>).
+ </para>
+
+ <para>
+ This example demonstrates how to instruct the host-resolver
+ mechanism to resolve all domain and probably some mirrors of
+ www.blocked-site.info site with IP 127.0.0.1:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/e1000/0/LUN#0/AttachedDriver/Config/HostResolverMappings/all_blocked_site/HostIP" 127.0.0.1
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/e1000/0/LUN#0/AttachedDriver/Config/HostResolverMappings/all_blocked_site/HostNamePattern" "*.blocked-site.*|*.fb.org"</screen>
+
+ <para>
+ The host resolver mechanism should be enabled to use
+ user-defined mapping rules, otherwise they do not have any
+ effect.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="nat-adv-alias">
+
+ <title>Configuring Aliasing of the NAT Engine</title>
+
+ <para>
+ By default, the NAT core uses aliasing and uses random ports
+ when generating an alias for a connection. This works well for
+ the most protocols like SSH, FTP and so on. Though some
+ protocols might need a more transparent behavior or may depend
+ on the real port number the packet was sent from. You can change
+ the NAT mode by using the following commands:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--nataliasmode1 proxyonly</screen>
+
+<screen>$ VBoxManage modifyvm "Linux Guest" --nataliasmode1 sameports</screen>
+
+ <para>
+ The first example disables aliasing and switches NAT into
+ transparent mode, the second example enforces preserving of port
+ values. These modes can be combined if necessary.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="changedmi">
+
+ <title>Configuring the BIOS DMI Information</title>
+
+ <para>
+ The DMI data that &product-name; provides to guests can be changed
+ for a specific VM. Use the following commands to configure the DMI
+ BIOS information. In case your VM is configured to use EFI
+ firmware you need to replace <literal>pcbios</literal> by
+ <literal>efi</literal> in the keys.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ DMI BIOS information (type 0)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "BIOS Vendor"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "BIOS Version"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "BIOS Release Date"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor" 1
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor" 2
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor" 3
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor" 4</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ DMI system information (type 1)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "System Vendor"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "System Product"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion" "System Version"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "System Serial"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSKU" "System SKU"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily" "System Family"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid" \
+"9852bf98-b83c-49db-a8de-182c42c7226b"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ DMI board information (type 2)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardVendor" "Board Vendor"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardProduct" "Board Product"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardVersion" "Board Version"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardSerial" "Board Serial"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardAssetTag" "Board Tag"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardLocInChass" "Board Location"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiBoardBoardType" 10</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ DMI system enclosure or chassis (type 3)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiChassisVendor" "Chassis Vendor"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiChassisType" 3
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiChassisVersion" "Chassis Version"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiChassisSerial" "Chassis Serial"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiChassisAssetTag" "Chassis Tag"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ DMI processor information (type 4)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiProcManufacturer" "GenuineIntel"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiProcVersion" "Pentium(R) III"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ DMI OEM strings (type 11)
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxVer" "vboxVer_1.2.3"
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxRev" "vboxRev_12345"</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If a DMI string is not set, the default value of &product-name; is
+ used. To set an empty string use
+ <literal>"&lt;EMPTY&gt;"</literal>.
+ </para>
+
+ <para>
+ Note that in the above list, all quoted parameters (DmiBIOSVendor,
+ DmiBIOSVersion but not DmiBIOSReleaseMajor) are expected to be
+ strings. If such a string is a valid number, the parameter is
+ treated as number and the VM will most probably refuse to start
+ with an <literal>VERR_CFGM_NOT_STRING</literal> error. In that
+ case, use
+ <literal>"string:<replaceable>value</replaceable>"</literal>. For
+ example:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:1234"</screen>
+
+ <para>
+ Changing this information can be necessary to provide the DMI
+ information of the host to the guest to prevent Windows from
+ asking for a new product key. On Linux hosts, the DMI BIOS
+ information can be obtained with the following command:
+ </para>
+
+<screen>$ dmidecode -t0</screen>
+
+ <para>
+ The DMI system information can be obtained as follows:
+ </para>
+
+<screen>$ dmidecode -t1</screen>
+
+ </sect1>
+
+ <sect1 id="changeacpicust">
+
+ <title>Configuring Custom ACPI Tables</title>
+
+ <para>
+ You can configure &product-name; to present up to four custom ACPI
+ tables to the guest. Use a command such as the following to
+ configure custom ACPI tables. Note that
+ <literal>CustomTable1</literal>, <literal>CustomTable2</literal>,
+ and <literal>CustomTable3</literal> are available in addition to
+ <literal>CustomTable0</literal>.
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+"VBoxInternal/Devices/acpi/0/Config/CustomTable0" "/<replaceable>path-to-table</replaceable>.bin"</screen>
+
+ <para>
+ Configuring custom ACPI tables can for example avoid the need for
+ asking for a new product key on Windows Vista, Windows 7, Windows
+ 8 and later guests. On Linux hosts, one of the system's ACPI
+ tables can be read from
+ <filename>/sys/firmware/acpi/tables/</filename>.
+ </para>
+
+ </sect1>
+
+ <sect1 id="fine-tune-timers">
+
+ <title>Fine Tuning Timers and Time Synchronization</title>
+
+ <sect2 id="changetscmode">
+
+ <title>Configuring the Guest Time Stamp Counter (TSC) to Reflect Guest
+ Execution</title>
+
+ <para>
+ By default, &product-name; keeps all sources of time visible to
+ the guest synchronized to a single time source, the monotonic
+ host time. This reflects the assumptions of many guest operating
+ systems, which expect all time sources to reflect "wall clock"
+ time. In special circumstances it may be useful however to make
+ the time stamp counter (TSC) in the guest reflect the time
+ actually spent executing the guest.
+ </para>
+
+ <para>
+ This special TSC handling mode can be enabled on a per-VM basis,
+ and for best results must be used only in combination with
+ hardware virtualization. To enable this mode use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/TM/TSCTiedToExecution" 1</screen>
+
+ <para>
+ To revert to the default TSC handling mode use:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/TM/TSCTiedToExecution"</screen>
+
+ <para>
+ Note that if you use the special TSC handling mode with a guest
+ operating system which is very strict about the consistency of
+ time sources you may get a warning or error message about the
+ timing inconsistency. It may also cause clocks to become
+ unreliable with some guest operating systems depending on how
+ they use the TSC.
+ </para>
+
+ </sect2>
+
+ <sect2 id="warpguest">
+
+ <title>Accelerate or Slow Down the Guest Clock</title>
+
+ <para>
+ For certain purposes it can be useful to accelerate or to slow
+ down the virtual guest clock. This can be achieved as follows:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/TM/WarpDrivePercentage" 200</screen>
+
+ <para>
+ The above example will double the speed of the guest clock while
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/TM/WarpDrivePercentage" 50</screen>
+
+ <para>
+ will halve the speed of the guest clock. Note that changing the
+ rate of the virtual clock can confuse the guest and can even
+ lead to abnormal guest behavior. For instance, a higher clock
+ rate means shorter timeouts for virtual devices with the result
+ that a slightly increased response time of a virtual device due
+ to an increased host load can cause guest failures. Note further
+ that any time synchronization mechanism will frequently try to
+ resynchronize the guest clock with the reference clock, which is
+ the host clock if the &product-name; Guest Additions are active.
+ Therefore any time synchronization should be disabled if the
+ rate of the guest clock is changed as described above. See
+ <xref linkend="changetimesync" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="changetimesync">
+
+ <title>Tuning the Guest Additions Time Synchronization Parameters</title>
+
+ <para>
+ The &product-name; Guest Additions ensure that the guest's
+ system time is synchronized with the host time. There are
+ several parameters which can be tuned. The parameters can be set
+ for a specific VM using the following command:
+ </para>
+
+<screen>$ VBoxManage guestproperty set <replaceable>VM-name</replaceable> "/VirtualBox/GuestAdd/VBoxService/<replaceable>property</replaceable>" <replaceable>value</replaceable></screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-interval</option>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the interval at which to synchronize the time
+ with the host. The default is 10000 ms (10 seconds).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-min-adjust</option>
+ </term>
+
+ <listitem>
+ <para>
+ The minimum absolute drift value measured in milliseconds
+ to make adjustments for. The default is 1000 ms on OS/2
+ and 100 ms elsewhere.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-latency-factor</option>
+ </term>
+
+ <listitem>
+ <para>
+ The factor to multiply the time query latency with to
+ calculate the dynamic minimum adjust time. The default is
+ 8 times, which means as follows:
+ </para>
+
+ <para>
+ Measure the time it takes to determine the host time, the
+ guest has to contact the VM host service which may take
+ some time. Multiply this value by 8 and do an adjustment
+ only if the time difference between host and guest is
+ bigger than this value. Do not do any time adjustment
+ otherwise.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-max-latency</option>
+ </term>
+
+ <listitem>
+ <para>
+ The max host timer query latency to accept. The default is
+ 250 ms.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-set-threshold</option>
+ </term>
+
+ <listitem>
+ <para>
+ The absolute drift threshold, given as milliseconds where
+ to start setting the time instead of trying to smoothly
+ adjust it. The default is 20 minutes.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-set-start</option>
+ </term>
+
+ <listitem>
+ <para>
+ Set the time when starting the time sync service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>--timesync-set-on-restore 0|1</option>
+ </term>
+
+ <listitem>
+ <para>
+ Set the time after the VM was restored from a saved state
+ when passing 1 as parameter. This is the default. Disable
+ by passing 0. In the latter case, the time will be
+ adjusted smoothly, which can take a long time.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ All these parameters can be specified as command line parameters
+ to VBoxService as well.
+ </para>
+
+ </sect2>
+
+ <sect2 id="disabletimesync">
+
+ <title>Disabling the Guest Additions Time Synchronization</title>
+
+ <para>
+ Once installed and started, the &product-name; Guest Additions
+ will try to synchronize the guest time with the host time. This
+ can be prevented by forbidding the guest service from reading
+ the host clock:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxbowsolaris11">
+
+ <title>Installing the Alternate Bridged Networking Driver on Oracle Solaris 11
+ Hosts</title>
+
+ <para>
+ &product-name; includes a network filter driver that utilizes
+ Oracle Solaris 11's Crossbow functionality. By default, this new
+ driver is installed for Oracle Solaris 11 hosts that have support
+ for it.
+ </para>
+
+ <para>
+ To force installation of the older STREAMS based network filter
+ driver, execute as root the following command before installing
+ the &product-name; package:
+ </para>
+
+<screen>$ touch /etc/vboxinst_vboxflt</screen>
+
+ <para>
+ To force installation of the Crossbow based network filter driver,
+ execute as root the following command before installing the
+ &product-name; package:
+ </para>
+
+<screen>$ touch /etc/vboxinst_vboxbow</screen>
+
+ <para>
+ To check which driver is currently being used by &product-name;,
+ execute:
+ </para>
+
+<screen>$ modinfo | grep vbox</screen>
+
+ <para>
+ If the output contains "vboxbow", it indicates &product-name; is
+ using the Crossbow network filter driver, while the name "vboxflt"
+ indicates usage of the older STREAMS network filter.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxbowvnictemplates">
+
+ <title>&product-name; VNIC Templates for VLANs on Oracle Solaris 11 Hosts</title>
+
+ <para>
+ &product-name; supports Virtual Network Interface (VNIC) templates
+ for configuring VMs over VLANs. An &product-name; VNIC template is
+ a VNIC whose name starts with
+ <filename>vboxvnic_template</filename>. The string is
+ case-sensitive.
+ </para>
+
+ <para>
+ On Oracle Solaris 11 hosts, when Crossbow-based bridged networking
+ is used, a VNIC template may be used to specify the VLAN ID to use
+ while bridging over a network link.
+ </para>
+
+ <para>
+ The following is an example of how to use a VNIC template to
+ configure a VM over a VLAN. Create an &product-name; VNIC
+ template, by executing as root:
+ </para>
+
+<screen># dladm create-vnic -t -l nge0 -v 23 vboxvnic_template0</screen>
+
+ <para>
+ This will create a temporary VNIC template over interface
+ <command>nge0</command> with the VLAN ID 23. To create VNIC
+ templates that are persistent across host reboots, skip the
+ <option>-t</option> parameter in the above command. You may check
+ the current state of links using the following command:
+ </para>
+
+<screen>$ dladm show-link
+LINK CLASS MTU STATE BRIDGE OVER
+nge0 phys 1500 up -- --
+nge1 phys 1500 down -- --
+vboxvnic_template0 vnic 1500 up -- nge0
+
+$ dladm show-vnic
+LINK OVER SPEED MACADDRESS MACADDRTYPE VID
+vboxvnic_template0 nge0 1000 2:8:20:25:12:75 random 23</screen>
+
+ <para>
+ Once the VNIC template is created, any VMs that need to be on VLAN
+ 23 over the interface <command>nge0</command> can be configured to
+ bridge using this VNIC template.
+ </para>
+
+ <para>
+ VNIC templates makes managing VMs on VLANs simpler and efficient.
+ The VLAN details are not stored as part of every VM's
+ configuration but rather inherited from the VNIC template while
+ starting the VM. The VNIC template itself can be modified anytime
+ using the <command>dladm</command> command.
+ </para>
+
+ <para>
+ VNIC templates can be created with additional properties such as
+ bandwidth limits and CPU fanout. Refer to your Oracle Solaris
+ network documentation for details. The additional properties are
+ also applied to VMs which bridge using the VNIC template.
+ </para>
+
+ </sect1>
+
+ <sect1 id="addhostonlysolaris">
+
+ <title>Configuring Multiple Host-Only Network Interfaces on Oracle Solaris
+ Hosts</title>
+
+ <para>
+ By default &product-name; provides you with one host-only network
+ interface. Adding more host-only network interfaces on Oracle
+ Solaris hosts requires manual configuration. Here is how to add
+ another host-only network interface.
+ </para>
+
+ <para>
+ Begin by stopping all running VMs. Then, unplumb the existing
+ "vboxnet0" interface by execute the following command as root:
+ </para>
+
+<screen># ifconfig vboxnet0 unplumb</screen>
+
+ <para>
+ If you have several vboxnet interfaces, you will need to unplumb
+ all of them. Once all vboxnet interfaces are unplumbed, remove the
+ driver by executing the following command as root:
+ </para>
+
+<screen># rem_drv vboxnet</screen>
+
+ <para>
+ Edit the file
+ <filename>/platform/i86pc/kernel/drv/vboxnet.conf</filename> and
+ add a line for the new interface we want to add as shown below:
+ </para>
+
+<screen>name="vboxnet" parent="pseudo" instance=1;
+name="vboxnet" parent="pseudo" instance=2;</screen>
+
+ <para>
+ Add as many of these lines as required with each line having a
+ unique instance number.
+ </para>
+
+ <para>
+ Next, reload the vboxnet driver by executing the following command
+ as root:
+ </para>
+
+<screen># add_drv vboxnet</screen>
+
+ <para>
+ On Oracle Solaris 11.1 and newer hosts you may want to rename the
+ default vanity interface name. To check what name has been
+ assigned, execute:
+ </para>
+
+<screen>$ dladm show-phys
+LINK MEDIA STATE SPEED DUPLEX DEVICE
+net0 Ethernet up 100 full e1000g0
+net2 Ethernet up 1000 full vboxnet1
+net1 Ethernet up 1000 full vboxnet0</screen>
+
+ <para>
+ In the above example, we can rename "net2" to "vboxnet1" before
+ proceeding to plumb the interface. This can be done by executing
+ as root:
+ </para>
+
+<screen># dladm rename-link net2 vboxnet1</screen>
+
+ <para>
+ Now plumb all the interfaces using <command>ifconfig
+ vboxnet<replaceable>X</replaceable> plumb</command>, where
+ <replaceable>X</replaceable> would be 1 in this case. Once the
+ interface is plumbed, it may be configured like any other network
+ interface. Refer to the <command>ifconfig</command> documentation
+ for further details.
+ </para>
+
+ <para>
+ To make the settings for the newly added interfaces persistent
+ across reboots, you will need to edit the files
+ <filename>/etc/inet/netmasks</filename>, and if you are using NWAM
+ <filename>/etc/nwam/llp</filename> and add the appropriate entries
+ to set the netmask and static IP for each of those interfaces. The
+ &product-name; installer only updates these configuration files
+ for the one "vboxnet0" interface it creates by default.
+ </para>
+
+ </sect1>
+
+ <sect1 id="solariscodedumper">
+
+ <title>Configuring the &product-name; CoreDumper on Oracle Solaris Hosts</title>
+
+ <para>
+ &product-name; is capable of producing its own core files for
+ extensive debugging when things go wrong. Currently this is only
+ available on Oracle Solaris hosts.
+ </para>
+
+ <para>
+ The &product-name; CoreDumper can be enabled using the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> VBoxInternal2/CoreDumpEnabled 1</screen>
+
+ <para>
+ You can specify which directory to use for core dumps with this
+ command, as follows:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> VBoxInternal2/CoreDumpDir <replaceable>path-to-directory</replaceable></screen>
+
+ <para>
+ Make sure the directory you specify is on a volume with sufficient
+ free space and that the &product-name; process has sufficient
+ permissions to write files to this directory. If you skip this
+ command and do not specify any core dump directory, the current
+ directory of the &product-name; executable will be used. This
+ would most likely fail when writing cores as they are protected
+ with root permissions. It is recommended you explicitly set a core
+ dump directory.
+ </para>
+
+ <para>
+ You must specify when the &product-name; CoreDumper should be
+ triggered. This is done using the following commands:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> VBoxInternal2/CoreDumpReplaceSystemDump 1
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> VBoxInternal2/CoreDumpLive 1</screen>
+
+ <para>
+ At least one of the above two commands will have to be provided if
+ you have enabled the &product-name; CoreDumper.
+ </para>
+
+ <para>
+ Setting <literal>CoreDumpReplaceSystemDump</literal> sets up the
+ VM to override the host's core dumping mechanism and in the event
+ of any crash only the &product-name; CoreDumper would produce the
+ core file.
+ </para>
+
+ <para>
+ Setting <literal>CoreDumpLive</literal> sets up the VM to produce
+ cores whenever the VM process receives a
+ <literal>SIGUSR2</literal> signal. After producing the core file,
+ the VM will not be terminated and will continue to run. You can
+ thus take cores of the VM process using the following command:
+ </para>
+
+<screen>$ kill -s SIGUSR2 <replaceable>VM-process-id</replaceable></screen>
+
+ <para>
+ The &product-name; CoreDumper creates core files of the form
+ <filename>core.vb.<replaceable>process-name</replaceable>.<replaceable>process-ID</replaceable></filename>
+ such as <filename>core.vb.VBoxHeadless.11321</filename>.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxandsolzvmm">
+
+ <title>&product-name; and Oracle Solaris Kernel Zones</title>
+
+ <para>
+ Oracle Solaris kernel zones on x86-based systems make use of
+ hardware-assisted virtualization features like &product-name;
+ does. However, for kernel zones and &product-name; to share this
+ hardware resource, they need to cooperate.
+ </para>
+
+ <para>
+ By default, due to performance reasons, &product-name; acquires
+ the hardware-assisted virtualization resource (VT-x/AMD-V)
+ globally on the host machine and uses it until the last
+ &product-name; VM that requires it is powered off. This prevents
+ other software from using VT-x/AMD-V during the time
+ &product-name; has taken control of it.
+ </para>
+
+ <para>
+ &product-name; can be instructed to relinquish use of
+ hardware-assisted virtualization features when not executing guest
+ code, thereby allowing kernel zones to make use of them. To do
+ this, shutdown all &product-name; VMs and execute the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setproperty hwvirtexclusive off</screen>
+
+ <para>
+ This command needs to be executed only once as the setting is
+ stored as part of the global &product-name; settings which will
+ continue to persist across host-reboots and &product-name;
+ upgrades.
+ </para>
+
+ </sect1>
+
+ <sect1 id="guitweaks">
+
+ <title>Locking Down the &product-name; GUI</title>
+
+ <sect2 id="customize-vm-manager">
+
+ <title>Customizing the VirtualBox Manager</title>
+
+ <para>
+ There are several advanced customization settings for locking
+ down the VirtualBox Manager. Locking down means removing some
+ features that the user should not see.
+ </para>
+
+<screen>VBoxManage setextradata global GUI/Customizations <replaceable>property</replaceable>[,<replaceable>property</replaceable> ...]</screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following
+ properties:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>noSelector</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow users to start the VirtualBox Manager. Trying
+ to do so will show a window containing a proper error
+ message.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>noMenuBar</literal>
+ </term>
+
+ <listitem>
+ <para>
+ VM windows will not contain a menu bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>noStatusBar</literal>
+ </term>
+
+ <listitem>
+ <para>
+ VM windows will not contain a status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ To disable any of these VirtualBox Manager customizations use
+ the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata global GUI/Customizations</screen>
+
+ </sect2>
+
+ <sect2 id="customize-vm-selector">
+
+ <title>VM Selector Customization</title>
+
+ <para>
+ The following per-machine VM extradata settings can be used to
+ change the behavior of the VM selector window in respect of
+ certain VMs:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> <replaceable>property</replaceable> true</screen>
+
+ <para>
+ <replaceable>property</replaceable> can be any of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>GUI/HideDetails</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the VM configuration of a certain VM. The
+ details window will remain just empty if this VM is
+ selected.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GUI/PreventReconfiguration</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to open the
+ <emphasis role="bold">Settings</emphasis> dialog for a
+ certain VM.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GUI/PreventSnapshotOperations</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Prevent snapshot operations for a VM from the GUI, either
+ at runtime or when the VM is powered off.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GUI/HideFromManager</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Hide a certain VM in the VM selector window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GUI/PreventApplicationUpdate</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Disable the automatic update check and hide the
+ corresponding menu item.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ Note that these settings do not prevent the user from
+ reconfiguring the VM by using the <command>VBoxManage
+ modifyvm</command> command.
+ </para>
+
+ </sect2>
+
+ <sect2 id="config-vm-selector-menu">
+
+ <title>Configure VM Selector Menu Entries</title>
+
+ <para>
+ You can disable certain entries in the global settings page of
+ the VM selector:
+ </para>
+
+<screen>$ VBoxManage setextradata global GUI/RestrictedGlobalSettingsPages <replaceable>property</replaceable>[,<replaceable>property</replaceable>...]</screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>General</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">General</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Input</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Input</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Update</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Update</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Language</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Language</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Display</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Display</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Network</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Network</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Extensions</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">Extensions</emphasis> settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Proxy</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Proxy</emphasis>
+ settings pane.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a global setting. You can specify any combination of
+ properties. To restore the default behavior, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata global GUI/RestrictedGlobalSettingsPages</screen>
+
+ </sect2>
+
+ <sect2 id="config-vm-window-menu">
+
+ <title>Configure VM Window Menu Entries</title>
+
+ <para>
+ You can disable certain menu actions in the VM window:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeMenus OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu in the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Application</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show
+ <emphasis role="bold">Application/File</emphasis> menu in
+ the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Machine</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Machine</emphasis>
+ menu in the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>View</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">View</emphasis> menu
+ in the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Input</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show <emphasis role="bold">Input</emphasis> menu in
+ the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Devices</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Devices</emphasis>
+ menu in the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Help</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Help</emphasis> menu
+ in the VM window.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Debug</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Debug</emphasis>
+ menu in the VM window. The Debug menu is only visible if
+ the GUI was started with special command line parameters
+ or environment variable settings.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use the following
+ command:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeMenus</screen>
+
+ <para>
+ You can also disable certain menu actions of certain menus. Use
+ the following command to disable certain actions of the
+ <emphasis role="bold">Application</emphasis> menu. This is only
+ available on Mac OS X hosts.
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeApplicationMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>About</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">About</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Preferences</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">Preferences</emphasis> menu item in
+ this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>NetworkAccessManager</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Network Operations
+ Manager</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>ResetWarnings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Reset All
+ Warnings</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Close</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Close</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use the following
+ command:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeMenus</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">Machine</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeMachineMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SettingsDialog</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Settings</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TakeSnapshot</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Take
+ Snapshot...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>InformationDialog</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Session
+ Information...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>FileManagerDialog</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">File
+ Manager...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Pause</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Pause</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Reset</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Reset</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Shutdown</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">ACPI
+ Shutdown</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeMachineMenuActions</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">View</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeViewMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Fullscreen</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Full-screen
+ Mode</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Seamless</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Seamless
+ Mode</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Scale</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Scaled
+ Mode</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GuestAutoresize</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Auto-resize Guest
+ Display</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>AdjustWindow</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Adjust Window
+ Size</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TakeScreenshot</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Take
+ Screenshot...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Recording</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Recording</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>VRDEServer</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Remote
+ Display</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>MenuBar</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Menu Bar</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>MenuBarSettings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Menu Bar
+ Settings...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>StatusBar</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Status
+ Bar</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>StatusbarSettings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Statusbar
+ Settings...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeViewMenuActions</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">Input</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeInputMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Keyboard</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Keyboard</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>KeyboardSettings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Keyboard
+ Settings...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SoftKeyboard</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Soft
+ Keyboard...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeCAD</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert
+ Ctrl-Alt-Del</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeCABS</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert
+ Ctrl-Alt-Backspace</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeCtrlBreak</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert
+ Ctrl-Break</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeInsert</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert
+ Insert</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypePrintScreen</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert Print
+ Screen</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeAltPrintScreen</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert Alt Print
+ Screen</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>TypeHostKeyCombo</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert Host Key
+ Combo</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>MouseIntegration</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">MouseIntegration</emphasis> menu
+ item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeInputMenuActions</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">Devices</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeDevicesMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following keywords
+ to disable actions in the
+ <emphasis role="bold">Devices</emphasis> menu:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>HardDrives</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Hard
+ Disks</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>OpticalDevices</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Optical
+ Devices</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>FloppyDevices</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Floppy
+ Drives</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Audio</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Audio</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Network</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Network</emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>NetworkSettings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Network
+ Settings</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>USBDevices</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">USB </emphasis> menu
+ item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>WebCams</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">WebCams </emphasis>
+ menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SharedFolders</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Shared
+ Folders</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SharedFoldersSettings</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Shared Folders
+ Settings...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SharedClipboard</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Shared
+ Clipboard</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>DragAndDrop</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Drag and
+ Drop</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>InstallGuestTools</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Insert Guest
+ Additions CD image...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global or global setting. Any combination of
+ the above is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeDevicesMenuActions</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">Debug</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeDebuggerMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following keywords
+ to disable actions in the <emphasis>Debug</emphasis> menu, which
+ is normally completely disabled:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Statistics</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">Statistics...</emphasis> menu item
+ in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>CommandLine</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Command
+ Line...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Logging</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">Logging...</emphasis> menu item in
+ this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>LogDialog</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Show
+ Log...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GuestControlConsole</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Guest Control
+ Terminal...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeDebuggerMenuActions</screen>
+
+ <para>
+ Use the following command to disable certain actions of the
+ <emphasis role="bold">View</emphasis> menu:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeHelpMenuActions OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following keywords
+ to disable actions in the <emphasis role="bold">Help</emphasis>
+ menu, which is normally completely disabled:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>All</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show any menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Contents</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the
+ <emphasis role="bold">Contents...</emphasis> menu item in
+ this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>WebSite</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">VirtualBox Web
+ Site...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>BugTracker</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">VirtualBox Bug
+ Tracker...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Forums</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">VirtualBox
+ Forums...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Oracle</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">Oracle Web
+ Site...</emphasis> menu item in this menu.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>About</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the <emphasis role="bold">About
+ VirtualBox...</emphasis> menu item in this menu. Only for
+ non-Mac OS X hosts.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. To restore the default behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedRuntimeHelpMenuActions</screen>
+
+ </sect2>
+
+ <sect2 id="config-vm-window-status-bar">
+
+ <title>Configure VM Window Status Bar Entries</title>
+
+ <para>
+ You can disable certain status bar items:
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedStatusBarIndicators OPTION[,OPTION...]</screen>
+
+ <para>
+ where <literal>OPTION</literal> is one of the following
+ keywords:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>HardDisks</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the hard disk icon in the VM window status
+ bar. By default the hard disk icon is only shown if the VM
+ configuration contains one or more hard disks.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>OpticalDisks</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the CD icon in the VM window status bar. By
+ default the CD icon is only shown if the VM configuration
+ contains one or more CD drives.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>FloppyDisks</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the floppy icon in the VM window status bar.
+ By default the floppy icon is only shown if the VM
+ configuration contains one or more floppy drives.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Network</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the network icon in the VM window status bar.
+ By default the network icon is only shown if the VM
+ configuration contains one or more active network
+ adapters.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>USB</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the USB icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>SharedFolders</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the shared folders icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Capture</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the capture icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Features</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the CPU features icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Mouse</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the mouse icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Keyboard</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not show the keyboard icon in the status bar.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM or global setting. Any combination of the above
+ is allowed. If all options are specified, no icons are displayed
+ in the status bar of the VM window. To restore the default
+ behavior, use
+ </para>
+
+<screen>VBoxManage setextradata "VM name"|global GUI/RestrictedStatusBarIndicators</screen>
+
+ </sect2>
+
+ <sect2 id="config-vm-window-visual-modes">
+
+ <title>Configure VM Window Visual Modes</title>
+
+ <para>
+ You can disable certain VM visual modes:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/RestrictedVisualStates <replaceable>property</replaceable>[,<replaceable>property</replaceable>...]</screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>Fullscreen</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow to switch the VM into full screen mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Seamless</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow to switch the VM into seamless mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Scale</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow to switch the VM into scale mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM setting. You can specify any combination of
+ properties. To restore the default behavior, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/RestrictedVisualStates</screen>
+
+ </sect2>
+
+ <sect2 id="host-key-customize">
+
+ <title>Host Key Customization</title>
+
+ <para>
+ To disable all Host key combinations, open the preferences and
+ change the Host key to None. This might be useful when using
+ &product-name; in a kiosk mode.
+ </para>
+
+ <para>
+ To redefine or disable certain Host key actions, use the
+ following command:
+ </para>
+
+<screen>$ VBoxManage setextradata global GUI/Input/MachineShortcuts "FullscreenMode=F,...."</screen>
+
+ <para>
+ The following table shows the possible Host key actions,
+ together with their default Host key shortcut. Setting an action
+ to None will disable that Host key action.
+ </para>
+
+ <table id="table-host-key-customize" tabstyle="oracle-all">
+ <title>Host Key Customization</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Action</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Default Key</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Action</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ <literal>TakeSnapshot</literal>
+ </para></entry>
+ <entry><para>
+ T
+ </para></entry>
+ <entry><para>
+ Take a snapshot
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>TakeScreenshot</literal>
+ </para></entry>
+ <entry><para>
+ E
+ </para></entry>
+ <entry><para>
+ Take a screenshot
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>MouseIntegration</literal>
+ </para></entry>
+ <entry><para>
+ I
+ </para></entry>
+ <entry><para>
+ Toggle mouse integration
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>TypeCAD</literal>
+ </para></entry>
+ <entry><para>
+ Del
+ </para></entry>
+ <entry><para>
+ Inject Ctrl+Alt+Del
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>TypeCABS</literal>
+ </para></entry>
+ <entry><para>
+ Backspace
+ </para></entry>
+ <entry><para>
+ Inject Ctrl+Alt+Backspace
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>Pause</literal>
+ </para></entry>
+ <entry><para>
+ P
+ </para></entry>
+ <entry><para>
+ Pause the VM
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>Reset</literal>
+ </para></entry>
+ <entry><para>
+ R
+ </para></entry>
+ <entry>Hard reset the guest</entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SaveState</literal>
+ </para></entry>
+ <entry><para></para></entry>
+ <entry><para>
+ Save the VM state and terminate the VM
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>Shutdown</literal>
+ </para></entry>
+ <entry><para>
+ H
+ </para></entry>
+ <entry><para>
+ Press the virtual ACPI power button
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>PowerOff</literal>
+ </para></entry>
+ <entry><para></para></entry>
+ <entry><para>
+ Power off the VM without saving the state
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>Close</literal>
+ </para></entry>
+ <entry><para>
+ Q
+ </para></entry>
+ <entry><para>
+ Show the Close VM dialog
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>FullscreenMode</literal>
+ </para></entry>
+ <entry><para>
+ F
+ </para></entry>
+ <entry><para>
+ Switch the VM into full screen mode
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SeamlessMode</literal>
+ </para></entry>
+ <entry><para>
+ L
+ </para></entry>
+ <entry><para>
+ Switch the VM into seamless mode
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>ScaleMode</literal>
+ </para></entry>
+ <entry><para>
+ C
+ </para></entry>
+ <entry><para>
+ Switch the VM into scaled mode
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>GuestAutoResize</literal>
+ </para></entry>
+ <entry><para>
+ G
+ </para></entry>
+ <entry><para>
+ Automatically resize the guest window
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>WindowAdjust</literal>
+ </para></entry>
+ <entry><para>
+ A
+ </para></entry>
+ <entry><para>
+ Immediately resize the guest window
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>PopupMenu</literal>
+ </para></entry>
+ <entry><para>
+ Home
+ </para></entry>
+ <entry><para>
+ Show the popup menu in full screen mode and seamless
+ mode
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SettingsDialog</literal>
+ </para></entry>
+ <entry><para>
+ S
+ </para></entry>
+ <entry><para>
+ Open the VM Settings dialog
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>InformationDialog</literal>
+ </para></entry>
+ <entry><para>
+ N
+ </para></entry>
+ <entry><para>
+ Show the VM Session Information window
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>NetworkAdaptersDialog</literal>
+ </para></entry>
+ <entry><para></para></entry>
+ <entry><para>
+ Show the VM Network Adapters dialog
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SharedFoldersDialog</literal>
+ </para></entry>
+ <entry><para></para></entry>
+ <entry><para>
+ Show the VM Shared Folders dialog
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>InstallGuestAdditions</literal>
+ </para></entry>
+ <entry><para>
+ D
+ </para></entry>
+ <entry><para>
+ Mount the ISO containing the Guest Additions
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ To disable full screen mode and seamless mode, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata global GUI/Input/MachineShortcuts "FullscreenMode=None,SeamlessMode=None"</screen>
+
+ </sect2>
+
+ <sect2 id="terminate-vm-action">
+
+ <title>Action when Terminating the VM</title>
+
+ <para>
+ You can disallow certain actions when terminating a VM. To
+ disallow specific actions, use the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/RestrictedCloseActions <replaceable>property</replaceable>[,<replaceable>property</replaceable>...]</screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>SaveState</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to save the VM state when
+ terminating the VM.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Shutdown</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to shutdown the VM by sending the
+ ACPI power-off event to the guest.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>PowerOff</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to power off the VM.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>PowerOffRestoringSnapshot</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to return to the last snapshot when
+ powering off the VM.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Detach</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Do not allow the user to detach from the VM process if the
+ VM was started in separate mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM setting. You can specify any combination of
+ properties. If all properties are specified, the VM cannot be
+ shut down.
+ </para>
+
+ </sect2>
+
+ <sect2 id="terminate-vm-default-action">
+
+ <title>Default Action when Terminating the VM</title>
+
+ <para>
+ You can define a specific action for terminating a VM. In
+ contrast to the setting decribed in the previous section, this
+ setting allows only one action when the user terminates the VM.
+ No exit menu is shown. Use the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/DefaultCloseAction <replaceable>action</replaceable></screen>
+
+ <para>
+ <replaceable>action</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>SaveState</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Save the VM state before terminating the VM process.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Shutdown</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The VM is shut down by sending the ACPI power-off event to
+ the guest.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>PowerOff</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The VM is powered off.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>PowerOffRestoringSnapshot</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The VM is powered off and the saved state returns to the
+ last snapshot.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Detach</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Terminate the frontend but leave the VM process running.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM setting. You can specify any combination of
+ properties. If all properties are specified, the VM cannot be
+ shut down.
+ </para>
+
+ </sect2>
+
+ <sect2 id="guru-meditation-action">
+
+ <title>Action for Handling a Guru Meditation</title>
+
+ <para>
+ A VM runs into a Guru Meditation if there is a problem which
+ cannot be fixed by other means than terminating the process. The
+ default is to show a message window which instructs the user to
+ open a bug report.
+ </para>
+
+ <para>
+ This behavior can be configured as follows:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/GuruMeditationHandler <replaceable>mode</replaceable></screen>
+
+ <para>
+ <replaceable>mode</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>Default</literal>
+ </term>
+
+ <listitem>
+ <para>
+ A message window is shown. After the user confirmed, the
+ VM is terminated.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>PowerOff</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The VM is immediately powered-off without showing any
+ message window. The VM logfile will show information about
+ what happened.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Ignore</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The VM is left in stuck mode. Execution is stopped but no
+ message window is shown. The VM has to be powered off
+ manually.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM setting.
+ </para>
+
+ </sect2>
+
+ <sect2 id="mouse-capture">
+
+ <title>Configuring Automatic Mouse Capturing</title>
+
+ <para>
+ By default, the mouse is captured if the user clicks on the
+ guest window and the guest expects relative mouse coordinates at
+ this time. This happens if the pointing device is configured as
+ PS/2 mouse and the guest has not yet started the &product-name;
+ Guest Additions. For instance, the guest is booting or the Guest
+ Additions are not installed, or if the pointing device is
+ configured as a USB tablet but the guest has no USB driver
+ loaded yet. Once the Guest Additions become active or the USB
+ guest driver is started, the mouse capture is automatically
+ released.
+ </para>
+
+ <para>
+ The default behavior is sometimes not desired. Therefore it can
+ be configured as follows:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/MouseCapturePolicy <replaceable>mode</replaceable></screen>
+
+ <para>
+ <replaceable>mode</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>Default</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The default behavior as described above.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>HostComboOnly</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The mouse is only captured if the Host Key is toggled.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>Disabled</literal>
+ </term>
+
+ <listitem>
+ <para>
+ The mouse is never captured, also not by toggling the Host
+ Key
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a per-VM setting.
+ </para>
+
+ </sect2>
+
+ <sect2 id="legacy-fullscreen-mode">
+
+ <title>Requesting Legacy Full-Screen Mode</title>
+
+ <para>
+ &product-name; uses special window manager facilities to switch
+ a multi-screen machine to full-screen on a multi-monitor host
+ system. However, not all window managers provide these
+ facilities correctly. &product-name; can be configured to use a
+ legacy method of switching to full-screen mode instead, by using
+ the command:
+ </para>
+
+<screen>VBoxManage setextradata global GUI/Fullscreen/LegacyMode true</screen>
+
+ <para>
+ You can go back to the default method by using the following
+ command:
+ </para>
+
+<screen>VBoxManage setextradata global GUI/Fullscreen/LegacyMode</screen>
+
+ <para>
+ This is a global setting.
+ </para>
+
+ </sect2>
+
+ <sect2 id="restrict-network-attachments">
+
+ <title>Removing Certain Modes of Networking From the GUI</title>
+
+ <para>
+ It is possible to remove networking modes from &product-name;
+ GUI. To do this, use the following command:
+ </para>
+
+<screen>VBoxManage setextradata global GUI/RestrictedNetworkAttachmentTypes <replaceable>property</replaceable>[,<replaceable>property</replaceable>...]</screen>
+
+ <para>
+ <replaceable>property</replaceable> is one of the following:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>NAT</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">NAT</emphasis> option
+ from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>NATNetwork</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">NAT network</emphasis>
+ option from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>BridgedAdapter</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">Bridged
+ networking</emphasis> option from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>InternalNetwork</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">Internal
+ networking</emphasis> option from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>HostOnlyAdapter</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">Host Only
+ networking</emphasis> option from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>GenericDriver</literal>
+ </term>
+
+ <listitem>
+ <para>
+ Remove the <emphasis role="bold">Generic
+ networking</emphasis> option from the GUI.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ This is a global setting. You can specify any combination of
+ properties. To restore the default behavior, use the following
+ command:
+ </para>
+
+<screen>VBoxManage setextradata global GUI/RestrictedNetworkAttachmentTypes</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxwebsrv-daemon">
+
+ <title>Starting the &product-name; Web Service Automatically</title>
+
+ <para>
+ The &product-name; web service, <command>vboxwebsrv</command>, is
+ used for controlling &product-name; remotely. It is documented in
+ detail in the &product-name; Software Development Kit (SDK). See
+ <xref linkend="VirtualBoxAPI" />. Web service start scripts are
+ available for supported host operating systems. The following
+ sections describe how to use the scripts. The &product-name; web
+ service is never started automatically as a result of a standard
+ installation.
+ </para>
+
+ <sect2 id="vboxwebsrv-linux">
+
+ <title>Linux: Starting the Web Service With init</title>
+
+ <para>
+ On Linux, the web service can be automatically started during
+ host boot by adding appropriate parameters to the file
+ <filename>/etc/default/virtualbox</filename>. There is one
+ mandatory parameter, <literal>VBOXWEB_USER</literal>, which must
+ be set to the user which will later start the VMs. The
+ parameters in the following table all start with the
+ <literal>VBOXWEB_</literal> prefix string. For example:
+ <literal>VBOXWEB_HOST</literal> and
+ <literal>VBOXWEB_PORT</literal>.
+ </para>
+
+ <table id="table-websrv-config-params" tabstyle="oracle-all">
+ <title>Web Service Configuration Parameters</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Parameter</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Description</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Default</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ <literal>USER</literal>
+ </para></entry>
+ <entry><para>
+ The user which the web service runs as
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>HOST</literal>
+ </para></entry>
+ <entry><para>
+ The host to bind the web service to
+ </para></entry>
+ <entry><para>
+ localhost
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>PORT</literal>
+ </para></entry>
+ <entry><para>
+ The port to bind the web service to
+ </para></entry>
+ <entry><para>
+ 18083
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_KEYFILE</literal>
+ </para></entry>
+ <entry><para>
+ Server key and certificate file, in PEM format
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_PASSWORDFILE</literal>
+ </para></entry>
+ <entry><para>
+ File name for password to server key
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_CACERT</literal>
+ </para></entry>
+ <entry><para>
+ CA certificate file, in PEM format
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_CAPATH</literal>
+ </para></entry>
+ <entry><para>
+ CA certificate path
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_DHFILE</literal>
+ </para></entry>
+ <entry><para>
+ DH file name or DH key length in bits
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>SSL_RANDFILE</literal>
+ </para></entry>
+ <entry><para>
+ File containing seed for random number generator
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>TIMEOUT</literal>
+ </para></entry>
+ <entry><para>
+ Session timeout in seconds, 0 disables timeouts
+ </para></entry>
+ <entry><para>
+ 300
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>CHECK_INTERVAL</literal>
+ </para></entry>
+ <entry><para>
+ Frequency of timeout checks in seconds
+ </para></entry>
+ <entry><para>
+ 5
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>THREADS</literal>
+ </para></entry>
+ <entry><para>
+ Maximum number of worker threads to run in parallel
+ </para></entry>
+ <entry><para>
+ 100
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>KEEPALIVE</literal>
+ </para></entry>
+ <entry><para>
+ Maximum number of requests before a socket will be
+ closed
+ </para></entry>
+ <entry><para>
+ 100
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>ROTATE</literal>
+ </para></entry>
+ <entry><para>
+ Number of log files, 0 disables log rotation
+ </para></entry>
+ <entry><para>
+ 10
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>LOGSIZE</literal>
+ </para></entry>
+ <entry><para>
+ Maximum log file size to trigger rotation, in bytes
+ </para></entry>
+ <entry><para>
+ 1MB
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>LOGINTERVAL</literal>
+ </para></entry>
+ <entry><para>
+ Maximum time interval to trigger log rotation, in
+ seconds
+ </para></entry>
+ <entry><para>
+ 1 day
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ Setting the parameter <literal>SSL_KEYFILE</literal> enables the
+ SSL/TLS support. Using encryption is strongly encouraged, as
+ otherwise everything, including passwords, is transferred in
+ clear text.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxwebsrv-solaris">
+
+ <title>Oracle Solaris: Starting the Web Service With SMF</title>
+
+ <para>
+ On Oracle Solaris hosts, the &product-name; web service daemon
+ is integrated into the SMF framework. You can change the
+ parameters, but do not have to if the defaults below already
+ match your needs:
+ </para>
+
+<screen>svccfg -s svc:/application/virtualbox/webservice:default setprop config/host=localhost
+svccfg -s svc:/application/virtualbox/webservice:default setprop config/port=18083
+svccfg -s svc:/application/virtualbox/webservice:default setprop config/user=root</screen>
+
+ <para>
+ The table in <xref linkend="vboxwebsrv-linux"/> showing the
+ parameter names and defaults also applies for Oracle Solaris.
+ The parameter names must be changed to lowercase and a prefix of
+ <literal>config/</literal> has to be added. For example:
+ <literal>config/user</literal> or
+ <literal>config/ssl_keyfile</literal>. If you make any change,
+ do not forget to run the following command to put the changes
+ into effect immediately:
+ </para>
+
+<screen>svcadm refresh svc:/application/virtualbox/webservice:default</screen>
+
+ <para>
+ If you forget the above command then the previous settings are
+ used when enabling the service. Check the current property
+ settings as follows:
+ </para>
+
+<screen>svcprop -p config svc:/application/virtualbox/webservice:default</screen>
+
+ <para>
+ When everything is configured correctly you can start the
+ &product-name; web service with the following command:
+ </para>
+
+<screen>svcadm enable svc:/application/virtualbox/webservice:default</screen>
+
+ <para>
+ For more information about SMF, please refer to the Oracle
+ Solaris documentation.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxwebsrv-osx">
+
+ <title>Mac OS X: Starting the Web Service With launchd</title>
+
+ <para>
+ On Mac OS X, launchd is used to start the &product-name;
+ webservice. An example configuration file can be found in
+ <filename>$HOME/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist</filename>.
+ It can be enabled by changing the <literal>Disabled</literal>
+ key from <literal>true</literal> to <literal>false</literal>. To
+ manually start the service use the following command:
+ </para>
+
+<screen>launchctl load ~/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist</screen>
+
+ <para>
+ For additional information on how launchd services could be
+ configured see:
+ </para>
+
+ <para>
+ <ulink
+ url="https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html" />.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxwatchdog">
+
+ <title>&product-name; Watchdog</title>
+
+ <para>
+ The memory ballooning service, formerly known as
+ <command>VBoxBalloonCtrl</command>, was renamed to VBoxWatchdog.
+ This service now incorporates the following host services that are
+ meant to be run in a server environment:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Memory ballooning control.</emphasis>
+ This service automatically takes care of a VM's configured
+ memory balloon. See <xref linkend="guestadd-balloon" />. This
+ service is useful for server environments where VMs may
+ dynamically require more or less memory during runtime.
+ </para>
+
+ <para>
+ The service periodically checks a VM's current memory balloon
+ and its free guest RAM and automatically adjusts the current
+ memory balloon by inflating or deflating it accordingly. This
+ handling only applies to running VMs having recent Guest
+ Additions installed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host isolation detection.</emphasis>
+ This service provides a way to detect whether the host cannot
+ reach the specific &product-name; server instance anymore and
+ take appropriate actions, such as shutting down, saving the
+ current state or even powering down certain VMs.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ All configuration values can be either specified using the command
+ line or global extradata, whereas command line values always have
+ a higher priority when set. Some of the configuration values also
+ be specified on a per-VM basis. So the overall lookup order is:
+ command line, per-VM basis extradata if available, global
+ extradata.
+ </para>
+
+ <sect2 id="vboxwatchdog-ballonctrl">
+
+ <title>Memory Ballooning Control</title>
+
+ <para>
+ The memory ballooning control inflates and deflates the memory
+ balloon of VMs based on the VMs free memory and the desired
+ maximum balloon size.
+ </para>
+
+ <para>
+ To set up the memory ballooning control the maximum ballooning
+ size a VM can reach needs to be set. This can be specified using
+ the command line, as follows:
+ </para>
+
+<screen>--balloon-max &lt;Size in MB&gt;</screen>
+
+ <para>
+ Using a per-VM basis extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata &lt;VM-Name&gt; VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax &lt;Size in MB&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax &lt;Size in MB&gt;</screen>
+
+ <note>
+ <para>
+ If no maximum ballooning size is specified by at least one of
+ the parameters above, no ballooning will be performed at all.
+ </para>
+ </note>
+
+ <para>
+ Setting the ballooning increment in MB can be either done using
+ command line, as follows:
+ </para>
+
+<screen>--balloon-inc &lt;Size in MB&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonIncrementMB &lt;Size in MB&gt;</screen>
+
+ <para>
+ The default ballooning increment is 256 MB if not specified.
+ </para>
+
+ <para>
+ The same options apply for a ballooning decrement. Using the
+ command line, as follows:
+ </para>
+
+<screen>--balloon-dec &lt;Size in MB&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonDecrementMB &lt;Size in MB&gt;</screen>
+
+ <para>
+ The default ballooning decrement is 128 MB if not specified.
+ </para>
+
+ <para>
+ The lower limit in MB for a balloon can be defined using the
+ command line, as follows:
+ </para>
+
+<screen>--balloon-lower-limit &lt;Size in MB&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonLowerLimitMB &lt;Size in MB&gt;</screen>
+
+ <para>
+ The default lower limit is 128 MB if not specified.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxwatchdog-hostisln">
+
+ <title>Host Isolation Detection</title>
+
+ <para>
+ To detect whether a host is being isolated, that is, the host
+ cannot reach the &product-name; server instance anymore, the
+ host needs to set an alternating value to a global extradata
+ value within a time period. If this value is not set within that
+ time period a timeout occurred and the so-called host isolation
+ response will be performed to the VMs handled. Which VMs are
+ handled can be controlled by defining VM groups and assigning
+ VMs to those groups. By default no groups are set, meaning that
+ all VMs on the server will be handled when no host response is
+ received within 30 seconds.
+ </para>
+
+ <para>
+ Set the groups handled by the host isolation detection using the
+ following command line:
+ </para>
+
+<screen>--apimon-groups=&lt;string[,stringN]&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/Groups &lt;string[,stringN]&gt;</screen>
+
+ <para>
+ Set the host isolation timeout using the following command line:
+ </para>
+
+<screen>--apimon-isln-timeout=&lt;ms&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationTimeoutMS &lt;ms&gt;</screen>
+
+ <para>
+ Set the actual host isolation response using the following
+ command line:
+ </para>
+
+<screen>--apimon-isln-response=&lt;cmd&gt;</screen>
+
+ <para>
+ Using a global extradata value, as follows:
+ </para>
+
+<screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationResponse &lt;cmd&gt;</screen>
+
+ <para>
+ The following response commands are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>none</literal>. This has no effect.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>pause</literal>. Pauses the execution of a VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>poweroff</literal>. Shuts down the VM by pressing
+ the virtual power button. The VM will not have the chance of
+ saving any data or veto the shutdown process.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>save</literal>. Saves the current machine state and
+ powers off the VM afterwards. If saving the machine state
+ fails the VM will be paused.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>shutdown</literal>. Shuts down the VM in a gentle
+ way by sending an <literal>ACPI</literal> shutdown event to
+ the VM's operating system. The OS then has the chance of
+ doing a clean shutdown.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxwatchdog-moreinfo">
+
+ <title>More Information</title>
+
+ <para>
+ For more advanced options and parameters like verbose logging
+ check the built-in command line help accessible with
+ <option>--help</option>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxwatchdog-linux">
+
+ <title>Linux: Starting the Watchdog Service With init</title>
+
+ <para>
+ On Linux, the watchdog service can be automatically started
+ during host boot by adding appropriate parameters to the file
+ <filename>/etc/default/virtualbox</filename>. There is one
+ mandatory parameter, <literal>VBOXWATCHDOG_USER</literal>, which
+ must be set to the user which will later start the VMs. For
+ backward compatibility you can also specify
+ <literal>VBOXBALLOONCTRL_USER</literal>.
+ </para>
+
+ <para>
+ The parameters in the following table all start with the
+ <literal>VBOXWATCHDOG_</literal> prefix string. For example:
+ <literal>VBOXWATCHDOG_BALLOON_INTERVAL</literal> and
+ <literal>VBOXWATCHDOG_LOGSIZE</literal>. Legacy parameters such
+ as <literal>VBOXBALLOONCTRL_INTERVAL</literal> can still be
+ used.
+ </para>
+
+ <table id="table-vboxwatchdog-config-params" tabstyle="oracle-all">
+ <title>&product-name; Watchdog Configuration Parameters</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Parameter</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Description</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Default</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ <literal>USER</literal>
+ </para></entry>
+ <entry><para>
+ The user which the watchdog service runs as
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>ROTATE</literal>
+ </para></entry>
+ <entry><para>
+ Number of log files, 0 disables log rotation
+ </para></entry>
+ <entry><para>
+ 10
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>LOGSIZE</literal>
+ </para></entry>
+ <entry><para>
+ Maximum log file size to trigger rotation, in bytes
+ </para></entry>
+ <entry><para>
+ 1MB
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>LOGINTERVAL</literal>
+ </para></entry>
+ <entry><para>
+ Maximum time interval to trigger log rotation, in
+ seconds
+ </para></entry>
+ <entry><para>
+ 1 day
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>BALLOON_INTERVAL</literal>
+ </para></entry>
+ <entry><para>
+ Interval for checking the balloon size, in
+ milliseconds
+ </para></entry>
+ <entry><para>
+ 30000
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>BALLOON_INCREMENT</literal>
+ </para></entry>
+ <entry><para>
+ Balloon size increment, in megabytes
+ </para></entry>
+ <entry><para>
+ 256
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>BALLOON_DECREMENT</literal>
+ </para></entry>
+ <entry><para>
+ Balloon size decrement, in megabytes
+ </para></entry>
+ <entry><para>
+ 128
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>BALLOON_LOWERLIMIT</literal>
+ </para></entry>
+ <entry><para>
+ Balloon size lower limit, in megabytes
+ </para></entry>
+ <entry><para>
+ 64
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ <literal>BALLOON_SAFETYMARGIN</literal>
+ </para></entry>
+ <entry><para>
+ Free memory required for decreasing the balloon size,
+ in megabytes
+ </para></entry>
+ <entry><para>
+ 1024
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="vboxwatchdog-solaris">
+
+ <title>Oracle Solaris: Starting the Watchdog Service With SMF</title>
+
+ <para>
+ On Oracle Solaris hosts, the &product-name; watchdog service
+ daemon is integrated into the SMF framework. You can change the
+ parameters, but do not have to if the defaults already match
+ your needs:
+ </para>
+
+<screen>svccfg -s svc:/application/virtualbox/balloonctrl:default setprop \
+ config/balloon_interval=10000
+svccfg -s svc:/application/virtualbox/balloonctrl:default setprop \
+config/balloon_safetymargin=134217728</screen>
+
+ <para>
+ <xref linkend="table-vboxwatchdog-config-params"/> also applies
+ for Oracle Solaris. The parameter names must be changed to
+ lowercase and a prefix of <literal>config/</literal> has to be
+ added. For example: <literal>config/user</literal> or
+ <literal>config/balloon_safetymargin</literal>. If you made any
+ change, do not forget to run the following command to put the
+ changes into effect immediately:
+ </para>
+
+<screen>svcadm refresh svc:/application/virtualbox/balloonctrl:default</screen>
+
+ <para>
+ If you forget the above command then the previous settings will
+ be used when enabling the service. Check the current property
+ settings with the following command:
+ </para>
+
+<screen>svcprop -p config svc:/application/virtualbox/balloonctrl:default</screen>
+
+ <para>
+ When everything is configured correctly you can start the
+ &product-name; watchdog service with the following command:
+ </para>
+
+<screen>svcadm enable svc:/application/virtualbox/balloonctrl:default</screen>
+
+ <para>
+ For more information about SMF, please refer to the Oracle
+ Solaris documentation.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="otherextpacks">
+
+ <title>Other Extension Packs</title>
+
+ <para>
+ Another extension pack called VNC is available. This extension
+ pack is open source and replaces the previous integration of the
+ VNC remote access protocol. This is experimental code, and is
+ initially available in the &product-name; source code package
+ only. It is to a large portion code contributed by users, and is
+ not supported in any way by Oracle.
+ </para>
+
+ <para>
+ The keyboard handling is severely limited, and only the US
+ keyboard layout works. Other keyboard layouts will have at least
+ some keys which produce the wrong results, often with quite
+ surprising effects, and for layouts which have significant
+ differences to the US keyboard layout it is most likely unusable.
+ </para>
+
+ <para>
+ It is possible to install both the &product-name; Extension Pack
+ and VNC, but only one VRDE module can be active at any time. The
+ following command switches to the VNC VRDE module in VNC:
+ </para>
+
+<screen>VBoxManage setproperty vrdeextpack VNC</screen>
+
+ <para>
+ Configuring the remote access works very similarly to VRDP, see
+ <xref linkend="vrde" />, with some limitations. VNC does not
+ support specifying several port numbers, and the authentication is
+ done differently. VNC can only deal with password authentication,
+ and there is no option to use password hashes. This leaves no
+ other choice than having a clear-text password in the VM
+ configuration, which can be set with the following command:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty VNCPassword=secret</screen>
+
+ <para>
+ The user is responsible for keeping this password secret, and it
+ should be removed when a VM configuration is passed to another
+ person, for whatever purpose. Some VNC servers claim to have
+ encrypted passwords in the configuration. This is not true
+ encryption, it is only concealing the passwords, which is only as
+ secure as using clear-text passwords.
+ </para>
+
+ <para>
+ The following command switches back to VRDP, if installed:
+ </para>
+
+<screen>VBoxManage setproperty vrdeextpack "&product-name; Extension Pack"</screen>
+
+ </sect1>
+
+ <sect1 id="autostart">
+
+ <title>Starting Virtual Machines During System Boot</title>
+
+ <para>
+ You can start VMs automatically during system boot on Linux,
+ Oracle Solaris, and Mac OS X platforms for all users.
+ </para>
+
+ <sect2 id="autostart-linux">
+
+ <title>Linux: Starting the Autostart Service With init</title>
+
+ <para>
+ On Linux, the autostart service is activated by setting two
+ variables in <filename>/etc/default/virtualbox</filename>. The
+ first one is <literal>VBOXAUTOSTART_DB</literal> which contains
+ an absolute path to the autostart database directory. The
+ directory should have write access for every user who should be
+ able to start virtual machines automatically. Furthermore the
+ directory should have the sticky bit set. The second variable is
+ <literal>VBOXAUTOSTART_CONFIG</literal> which points the service
+ to the autostart configuration file which is used during boot to
+ determine whether to allow individual users to start a VM
+ automatically and configure startup delays. The configuration
+ file can be placed in <filename>/etc/vbox</filename> and
+ contains several options. One is
+ <literal>default_policy</literal> which controls whether the
+ autostart service allows or denies to start a VM for users which
+ are not in the exception list. The exception list starts with
+ <literal>exception_list</literal> and contains a comma separated
+ list with usernames. Furthermore a separate startup delay can be
+ configured for every user to avoid overloading the host. A
+ sample configuration is given below:
+ </para>
+
+<screen>
+# Default policy is to deny starting a VM, the other option is "allow".
+default_policy = deny
+
+# Bob is allowed to start virtual machines but starting them
+# will be delayed for 10 seconds
+bob = {
+ allow = true
+ startup_delay = 10
+}
+
+# Alice is not allowed to start virtual machines, useful to exclude certain users
+# if the default policy is set to allow.
+alice = {
+ allow = false
+}
+</screen>
+
+ <para>
+ Any user who wants to enable autostart for individual machines
+ must set the path to the autostart database directory with the
+ following command:
+ </para>
+
+<screen>VBoxManage setproperty autostartdbpath <replaceable>autostart-directory</replaceable></screen>
+
+ </sect2>
+
+ <sect2 id="autostart-solaris">
+
+ <title>Oracle Solaris: Starting the Autostart Service With SMF</title>
+
+ <para>
+ On Oracle Solaris hosts, the &product-name; autostart daemon is
+ integrated into the SMF framework. To enable it you must point
+ the service to an existing configuration file which has the same
+ format as on Linux, see <xref linkend="autostart-linux" />. For
+ example:
+ </para>
+
+<screen># svccfg -s svc:/application/virtualbox/autostart:default setprop \
+ config/config=/etc/vbox/autostart.cfg</screen>
+
+ <para>
+ When everything is configured correctly you can start the
+ &product-name; autostart service with the following command:
+ </para>
+
+<screen># svcadm enable svc:/application/virtualbox/autostart:default</screen>
+
+ <para>
+ For more information about SMF, see the Oracle Solaris
+ documentation.
+ </para>
+
+ </sect2>
+
+ <sect2 id="autostart-osx">
+
+ <title>Mac OS X: Starting the Autostart Service With launchd</title>
+
+ <para>
+ On Mac OS X, launchd is used to start the &product-name;
+ autostart service. An example configuration file can be found in
+ <filename>/Applications/VirtualBox.app/Contents/MacOS/org.virtualbox.vboxautostart.plist</filename>.
+ To enable the service copy the file to
+ <filename>/Library/LaunchDaemons</filename> and change the
+ <literal>Disabled</literal> key from <literal>true</literal> to
+ <literal>false</literal>. Furthermore replace the second
+ parameter to an existing configuration file which has the same
+ format as on Linux, see <xref linkend="autostart-linux" />.
+ </para>
+
+ <para>
+ To manually start the service use the following command:
+ </para>
+
+<screen># launchctl load /Library/LaunchDaemons/org.virtualbox.vboxautostart.plist</screen>
+
+ <para>
+ For additional information on how launchd services can be
+ configured see:
+ </para>
+
+ <para>
+ <ulink
+ url="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.html" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="autostart-windows">
+
+ <title>Windows: Starting the Autostart Service</title>
+
+ <para>
+ On Windows, autostart functionality consist of two components.
+ The first component is a configuration file where the
+ administrator can both set a delayed start for the VMs and
+ temporarily disable autostarting for a particular user. The
+ configuration file should be located in a folder accessible by
+ all required users but it should have permissions allowing only
+ reading by everyone but administrators. The configuration file
+ contains several options. The
+ <literal>default_policy</literal> controls whether the autostart
+ service allows or denies starting of a VM for users that are not
+ in the exception list. The exception list starts with
+ <literal>exception_list</literal> and contains a comma separated
+ list with usernames. Furthermore, a separate startup delay can
+ be configured for every user to avoid overloading the host. A
+ sample configuration is given below:
+ </para>
+
+<screen>
+ # Default policy is to deny starting a VM, the other option is "allow".
+ default_policy = deny
+
+ # Bob is allowed to start virtual machines but starting them
+ # will be delayed for 10 seconds
+ bob = {
+ allow = true
+ startup_delay = 10
+ }
+
+ # Alice is not allowed to start virtual machines, useful to exclude certain users
+ # if the default policy is set to allow.
+ alice = {
+ allow = false
+ }
+</screen>
+
+ <para>
+ The user name can be specified using the following forms:
+ "user", "domain\user", ".\user" and "user@domain". An
+ administrator must add the
+ <literal>VBOXAUTOSTART_CONFIG</literal> environment variable
+ into system variables containing the path to the configuration
+ file described above. The environment variable tells the
+ autostart services which configuration file is used.
+ </para>
+
+ <para>
+ The second component of autostart functionality is a Windows
+ service. Every instance of this works on behalf of a particular
+ user using their credentials.
+ </para>
+
+ <para>
+ To enable autostarting for a particular user, a member of the
+ administrators group must run the following command:
+ </para>
+
+<screen>VBoxAutostartSvc install --user=<replaceable>user</replaceable> [--password-file=<replaceable>password_file</replaceable>]</screen>
+
+ <para>
+ The password file should contain the password followed by a line
+ break. The rest of the file is ignored. The user will be asked
+ for a password if the password file is not specified.
+ </para>
+
+ <para>
+ To disable autostarting for particular user, a member of the
+ administrators group must run the following command:
+ </para>
+
+<screen>VBoxAutostartSvc delete --user=<replaceable>user</replaceable></screen>
+
+ <para>
+ If a user has changed their password then a member of the
+ administrators group must either reinstall the service or change
+ the service credentials using Windows Service Manager. Due to
+ Windows security policies, the autostart service cannot be
+ installed for users with empty passwords.
+ </para>
+
+ <para>
+ Finally, the user should define which VMs should be started at
+ boot. The user should run the following command for every VM
+ they wish to start at boot:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM name or UUID</replaceable> --autostart-enabled on</screen>
+
+ <para>
+ The user can remove a particular VM from the VMs starting at
+ boot by running the following command:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM name or UUID</replaceable> --autostart-enabled off</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxexpertstoragemgmt">
+
+ <title>&product-name; Expert Storage Management</title>
+
+ <para>
+ In case the snapshot model of &product-name; is not sufficient it
+ is possible to enable a special mode which makes it possible to
+ reconfigure storage attachments while the VM is paused. The user
+ has to make sure that the disk data stays consistent to the guest
+ because unlike with hotplugging the guest is not informed about
+ detached or newly attached media.
+ </para>
+
+ <para>
+ The expert storage management mode can be enabled per VM
+ executing:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal2/SilentReconfigureWhilePaused" 1</screen>
+
+ <para>
+ You can reconfigure storage attachments later while the VM is
+ paused by using the <command>VBoxManage storageattach</command>
+ command.
+ </para>
+
+ </sect1>
+
+ <sect1 id="hostpowertweaks">
+
+ <title>Handling of Host Power Management Events</title>
+
+ <para>
+ Some host power management events are handled by &product-name;.
+ The actual behavior depends on the platform:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Suspends.</emphasis> This event is
+ generated when the host is about to suspend, that is, the host
+ saves the state to some non-volatile storage and powers off.
+ </para>
+
+ <para>
+ This event is currently only handled on Windows hosts and Mac
+ OS X hosts. When this event is generated, &product-name; will
+ pause all running VMs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Resumes.</emphasis> This event is
+ generated when the host woke up from the suspended state.
+ </para>
+
+ <para>
+ This event is currently only handled on Windows hosts and Mac
+ OS X hosts. When this event is generated, &product-name; will
+ resume all VMs which are where paused before.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Battery Low.</emphasis> The battery
+ level reached a critical level, usually less than 5 percent
+ charged.
+ </para>
+
+ <para>
+ This event is currently only handled on Windows hosts and Mac
+ OS X hosts. When this event is generated, &product-name; will
+ save the state and terminate all VMs in preparation of a
+ potential host powerdown.
+ </para>
+
+ <para>
+ The behavior can be configured. By executing the following
+ command, no VM is saved:
+ </para>
+
+<screen>$ VBoxManage setextradata global "VBoxInternal2/SavestateOnBatteryLow" 0</screen>
+
+ <para>
+ This is a global setting as well as a per-VM setting. The
+ per-VM value has higher precedence than the global value. The
+ following command will save the state of all VMs but will not
+ save the state of VM "foo":
+ </para>
+
+<screen>$ VBoxManage setextradata global "VBoxInternal2/SavestateOnBatteryLow" 1
+$ VBoxManage setextradata "foo" "VBoxInternal2/SavestateOnBatteryLow" 0</screen>
+
+ <para>
+ The first line is actually not required as by default the
+ savestate action is performed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="sse412passthrough">
+
+ <title>Passing Through SSE4.1/SSE4.2 Instructions</title>
+
+ <para>
+ To provide SSE 4.1/SSE 4.2 support to guests, the host CPU has to
+ implement these instruction sets. The instruction sets are exposed
+ to guests by default, but it is possible to disable the
+ instructions for certain guests by using the following commands:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/CPUM/IsaExts/SSE4.1 0
+$ VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/CPUM/IsaExts/SSE4.2 0</screen>
+
+ <para>
+ These are per-VM settings which are enabled by default.
+ </para>
+
+ </sect1>
+
+ <sect1 id="hidledssync">
+
+ <title>Support for Keyboard Indicator Synchronization</title>
+
+ <para>
+ This feature makes the host keyboard indicators (LEDs) match those
+ of the VM's emulated keyboard when the machine window is active.
+ It is currently implemented for Mac OS X and Windows hosts. This
+ feature is enabled by default on supported host OSes. You can
+ disable this feature by running the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> GUI/HidLedsSync 0</screen>
+
+ <para>
+ This is a per-VM setting that is enabled by default.
+ </para>
+
+ </sect1>
+
+ <sect1 id="usbtrafficcapturing">
+
+ <title>Capturing USB Traffic for Selected Devices</title>
+
+ <para>
+ You can capture USB traffic for single USB devices or on the root
+ hub level, which captures the traffic of all USB devices attached
+ to the root hub. &product-name; stores the traffic in a format
+ which is compatible with Wireshark. To capture the traffic of a
+ specific USB device it must be attached to the VM with
+ <command>VBoxManage</command> using the following command:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>VM-name</replaceable> usbattach <replaceable>device uuid</replaceable>|<replaceable>address</replaceable> --capturefile <replaceable>filename</replaceable></screen>
+
+ <para>
+ In order to enable capturing on the root hub use the following
+ command while the VM is not running:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/usb-ehci/0/LUN#0/Config/CaptureFilename <replaceable>filename</replaceable></screen>
+
+ <para>
+ The command above enables capturing on the root hub attached to
+ the EHCI controller. To enable it for the OHCI or XHCI controller
+ replace <literal>usb-ehci</literal> with
+ <literal>usb-ohci</literal> or <literal>usb-xhci</literal>,
+ respectively.
+ </para>
+
+ </sect1>
+
+ <sect1 id="heartbeatservice">
+
+ <title>Configuring the Heartbeat Service</title>
+
+ <para>
+ &product-name; ships a simple heartbeat service. Once the Guest
+ Additions are active, the guest sends frequent heartbeat pings to
+ the host. If the guest stops sending the heartbeat pings without
+ properly terminating the service, the VM process will log this
+ event in the VBox.log file. In the future it might be possible to
+ configure dedicated actions but for now there is only a warning in
+ the log file.
+ </para>
+
+ <para>
+ There are two parameters to configure. The <emphasis>heartbeat
+ interval</emphasis> defines the time between two heartbeat pings.
+ The default value is 2 seconds, that is, the heartbeat service of
+ the &product-name; Guest Additions will send a heartbeat ping
+ every two seconds. The value in nanoseconds can be configured like
+ this:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/VMMDev/0/Config/HeartbeatInterval 2000000000</screen>
+
+ <para>
+ The <emphasis>heartbeat timeout</emphasis> defines the time the
+ host waits starting from the last heartbeat ping before it defines
+ the guest as unresponsive. The default value is 2 times the
+ heartbeat interval (4 seconds) and can be configured as following,
+ in nanoseconds:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> \
+VBoxInternal/Devices/VMMDev/0/Config/HeartbeatTimeout 4000000000</screen>
+
+ <para>
+ If the heartbeat timeout expires, there will be a log message like
+ <emphasis>VMMDev: HeartBeatCheckTimer: Guest seems to be
+ unresponsive. Last heartbeat received 5 seconds ago.</emphasis> If
+ another heartbeat ping arrives after this warning, there will be a
+ log message like <emphasis>VMMDev: GuestHeartBeat: Guest is
+ alive.</emphasis>
+ </para>
+
+ </sect1>
+
+ <sect1 id="diskencryption">
+
+ <title>Encryption of Disk Images</title>
+
+ <para>
+ &product-name; enables you to transparently encrypt the data
+ stored in hard disk images for the guest. It does not depend on a
+ specific image format to be used. Images which have the data
+ encrypted are not portable between &product-name; and other
+ virtualization software.
+ </para>
+
+ <para>
+ &product-name; uses the AES algorithm in XTS mode and supports
+ 128-bit or 256-bit data encryption keys (DEK). The DEK is stored
+ encrypted in the medium properties and is decrypted during VM
+ startup by entering a password which was chosen when the image was
+ encrypted.
+ </para>
+
+ <para>
+ Since the DEK is stored as part of the VM configuration file, it
+ is important that it is kept safe. Losing the DEK means that the
+ data stored in the disk images is lost irrecoverably. Having
+ complete and up to date backups of all data related to the VM is
+ the responsibility of the user.
+ </para>
+
+ <sect2 id="diskencryption-limitations">
+
+ <title>Limitations of Disk Encryption</title>
+
+ <para>
+ There are some limitations the user needs to be aware of when
+ using this feature:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ This feature is part of the &product-name; Extension Pack,
+ which needs to be installed. Otherwise disk encryption is
+ unavailable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Since encryption works only on the stored user data, it is
+ currently not possible to check for metadata integrity of
+ the disk image. Attackers might destroy data by removing or
+ changing blocks of data in the image or change metadata
+ items such as the disk size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Exporting appliances which contain encrypted disk images is
+ not possible because the OVF specification does not support
+ this. All images are therefore decrypted during export.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The DEK is kept in memory while the VM is running to be able
+ to decrypt data read and encrypt data written by the guest.
+ While this should be obvious the user needs to be aware of
+ this because an attacker might be able to extract the key on
+ a compromised host and decrypt the data.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When encrypting or decrypting the images, the password is
+ passed in clear text using the &product-name; API. This
+ needs to be kept in mind, especially when using third party
+ API clients which make use of the webservice where the
+ password might be transmitted over the network. The use of
+ HTTPS is mandatory in such a case.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Encrypting images with differencing images is only possible
+ if there are no snapshots or a linear chain of snapshots.
+ This limitation may be addressed in a future &product-name;
+ version.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The disk encryption feature can protect the content of the
+ disks configured for a VM only. It does not cover any other
+ data related to a VM, including saved state or the
+ configuration file itself.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="diskencryption-encryption">
+
+ <title>Encrypting Disk Images</title>
+
+ <para>
+ Encrypting disk images can be done either using the GUI or
+ <command>VBoxManage</command>. While the GUI is easier to use,
+ it works on a per VM basis and encrypts all disk images attached
+ to the specific VM. With <command>VBoxManage</command> one can
+ encrypt individual images, including all differencing images. To
+ encrypt an unencrypted medium with
+ <command>VBoxManage</command>, use:
+ </para>
+
+<screen>VBoxManage encryptmedium <replaceable>uuid</replaceable>|<replaceable>filename</replaceable> \
+--newpassword <replaceable>filename</replaceable>|- --cipher <replaceable>cipher-ID</replaceable> --newpasswordid "<replaceable>ID</replaceable></screen>
+
+ <para>
+ To supply the encryption password point
+ <command>VBoxManage</command> to the file where the password is
+ stored or specify <option>-</option> to let VBoxManage ask you
+ for the password on the command line.
+ </para>
+
+ <para>
+ The cipher parameter specifies the cipher to use for encryption
+ and can be either <literal>AES-XTS128-PLAIN64</literal> or
+ <literal>AES-XTS256-PLAIN64</literal>. The specified password
+ identifier can be freely chosen by the user and is used for
+ correct identification when supplying multiple passwords during
+ VM startup.
+ </para>
+
+ <para>
+ If the user uses the same password when encrypting multiple
+ images and also the same password identifier, the user needs to
+ supply the password only once during VM startup.
+ </para>
+
+ </sect2>
+
+ <sect2 id="diskencryption-startvm">
+
+ <title>Starting a VM with Encrypted Images</title>
+
+ <para>
+ When a VM is started using the GUI, a dialog will open where the
+ user needs to enter all passwords for all encrypted images
+ attached to the VM. If another frontend like VBoxHeadless is
+ used, the VM will be paused as soon as the guest tries to access
+ an encrypted disk. The user needs to provide the passwords
+ through <command>VBoxManage</command> using the following
+ command:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable> addencpassword <replaceable>ID</replaceable> <replaceable>password</replaceable> [--removeonsuspend yes|no]</screen>
+
+ <para>
+ <replaceable>ID</replaceable> must be the same as the password
+ identifier supplied when encrypting the images.
+ <replaceable>password</replaceable> is the password used when
+ encrypting the images. Optionally, you can specify
+ <option>--removeonsuspend yes|no</option> to specify whether to
+ remove the password from VM memory when the VM is suspended.
+ Before the VM can be resumed, the user needs to supply the
+ passwords again. This is useful when a VM is suspended by a host
+ suspend event and the user does not want the password to remain
+ in memory.
+ </para>
+
+ </sect2>
+
+ <sect2 id="diskencryption-decryption">
+
+ <title>Decrypting Encrypted Images</title>
+
+ <para>
+ In some circumstances it might be required to decrypt previously
+ encrypted images. This can be done in the GUI for a complete VM
+ or using <command>VBoxManage</command> with the following
+ command:
+ </para>
+
+<screen>VBoxManage encryptmedium <replaceable>uuid</replaceable>|<replaceable>filename</replaceable> --oldpassword <replaceable>file</replaceable>|-</screen>
+
+ <para>
+ The only required parameter is the password the image was
+ encrypted with. The options are the same as for encrypting
+ images.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="gimdebug">
+
+ <title>Paravirtualized Debugging</title>
+
+ <para>
+ This section covers debugging of guest operating systems using
+ interfaces supported by paravirtualization providers.
+ </para>
+
+ <note>
+ <para>
+ Paravirtualized debugging significantly alter guest operating
+ system behaviour and should only be used by expert users for
+ debugging and diagnostics.
+ </para>
+ </note>
+
+ <para>
+ These debug options are specified as a string of key-value pairs
+ separated by commas. An empty string disables paravirtualized
+ debugging.
+ </para>
+
+ <sect2 id="gimdebughyperv">
+
+ <title>Hyper-V Debug Options</title>
+
+ <para>
+ All of the options listed below are optional, and thus the
+ default value specified will be used when the corresponding
+ key-value pair is not specified.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Key:
+ <emphasis role="bold"><literal>enabled</literal></emphasis>
+ </para>
+
+ <para>
+ Value: <literal>0</literal> or <literal>1</literal>
+ </para>
+
+ <para>
+ Default: <literal>0</literal>
+ </para>
+
+ <para>
+ Specify <literal>1</literal> to enable the Hyper-V debug
+ interface. If this key-value pair is not specified or the
+ value is not <literal>1</literal>, the Hyper-V debug
+ interface is disabled regardless of other key-value pairs
+ being present.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Key:
+ <emphasis role="bold"><literal>address</literal></emphasis>
+ </para>
+
+ <para>
+ Value: IPv4 address
+ </para>
+
+ <para>
+ Default: 127.0.0.1
+ </para>
+
+ <para>
+ Specify the IPv4 address where the remote debugger is
+ connected.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Key:
+ <emphasis role="bold"><literal>port</literal></emphasis>
+ </para>
+
+ <para>
+ Value: UDP port number
+ </para>
+
+ <para>
+ Default: 50000
+ </para>
+
+ <para>
+ Specify the UDP port number where the remote debugger is
+ connected.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Key:
+ <emphasis role="bold"><literal>vendor</literal></emphasis>
+ </para>
+
+ <para>
+ Value: Hyper-V vendor signature reported by CPUID to the
+ guest
+ </para>
+
+ <para>
+ Default: When debugging is enabled: <literal>Microsoft
+ Hv</literal>, otherwise: <literal>VBoxVBoxVBox</literal>
+ </para>
+
+ <para>
+ Specify the Hyper-V vendor signature which is exposed to the
+ guest by CPUID. For debugging Microsoft Windows guests, it
+ is required the hypervisor reports the Microsoft vendor.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Key:
+ <emphasis role="bold"><literal>hypercallinterface</literal>
+ </emphasis>
+ </para>
+
+ <para>
+ Value: <literal>0</literal> or <literal>1</literal>
+ </para>
+
+ <para>
+ Default: <literal>0</literal>
+ </para>
+
+ <para>
+ Specify whether hypercalls should be suggested for
+ initiating debug data transfers between host and guest
+ rather than MSRs when requested by the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Key: <emphasis role="bold"><literal>vsinterface</literal>
+ </emphasis>
+ </para>
+
+ <para>
+ Value: <literal>0</literal> or <literal>1</literal>
+ </para>
+
+ <para>
+ Default: When debugging is enabled, <literal>1</literal>,
+ otherwise <literal>0</literal>
+ </para>
+
+ <para>
+ Specify whether to expose the VS#1 virtualization service
+ interface to the guest. This interface is required for
+ debugging Microsoft Windows 10 32-bit guests, but is
+ optional for other Windows versions.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect3 id="gimdebughyperv-windows-setup">
+
+ <title>Setting up Windows Guests for Debugging with the Hyper-V
+ Paravirtualization Provider</title>
+
+ <para>
+ Windows supports debugging over a serial cable, USB, IEEE 1394
+ Firewire, and Ethernet. USB and IEEE 1394 are not applicable
+ for virtual machines, and Ethernet requires Windows 8 or
+ later. While a serial connection is universally usable, it is
+ slow.
+ </para>
+
+ <para>
+ Debugging using the Hyper-V debug transport, supported on
+ Windows Vista and later, offers significant benefits. It
+ provides excellent performance due to direct host-to-guest
+ transfers, it is easy to set up and requires minimal support
+ from the hypervisor. It can be used with the debugger running
+ on the same host as the VM or with the debugger and VM on
+ separate machines connected over a network.
+ </para>
+
+ <para>
+ <emphasis role="bold">Prerequisites</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A VM configured for Hyper-V paravirtualization running a
+ Windows Vista or newer Windows guest. You can check the
+ effective paravirtualization provider for your VM with the
+ output of the following <command>VBoxManage</command>
+ command:
+ </para>
+
+<screen>$ VBoxManage showvminfo <replaceable>VM-name</replaceable></screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ A sufficiently up-to-date version of the Microsoft WinDbg
+ debugger required to debug the version of Windows in your
+ VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ While Windows 8 and newer Windows guests ship with Hyper-V
+ debug support, Windows 7 and Vista do not. To use Hyper-V
+ debugging with a Windows 7 or Vista guest, copy the file
+ <filename>kdvm.dll</filename> from a Windows 8.0
+ installation. This file is typically located in
+ <filename>C:\Windows\System32</filename>. Copy it to the
+ same location in your Windows 7/Vista guest. Make sure you
+ copy the 32-bit or 64-bit version of the DLL which matches
+ your guest OS.
+ </para>
+
+ <note>
+ <para>
+ Only Windows 8.0 ships <filename>kdvm.dll</filename>.
+ Windows 8.1 and newer Windows versions do not.
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">VM and Guest Configuration</emphasis>
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Power off the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Enable the debug options with the following
+ <command>VBoxManage</command> command:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --paravirtdebug "enabled=1"</screen>
+
+ <para>
+ The above command assumes your debugger will connect to
+ your host machine on UDP port 50000. However, if you need
+ to run the debugger on a remote machine you may specify
+ the remote address and port here. For example:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> \
+--paravirtdebug "enabled=1,address=192.168.32.1,port=55000"</screen>
+
+ <para>
+ See <xref linkend="gimdebughyperv" /> for the complete set
+ of options.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In the guest, start an elevated command prompt and execute
+ the following commands:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For a Windows 8 or newer Windows guest:
+ </para>
+
+<screen>bcdedit /dbgsettings net hostip:5.5.5.5 port:50000 key:1.2.3.4</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ For a Windows 7 or Vista guest:
+ </para>
+
+<screen>bcdedit /set loadoptions host_ip=5.5.5.5,host_port=50000,encryption_key=1.2.3.4</screen>
+
+<screen>bcdedit /set dbgtransport kdvm.dll</screen>
+
+ <para>
+ The IP address and port in the
+ <command>bcdedit</command> command are ignored when
+ using the Hyper-V debug transport. Any valid IP and a
+ port number greater than 49151 and lower than 65536
+ can be entered.
+ </para>
+
+ <para>
+ The encryption key in the <command>bcdedit</command>
+ command is relevant and must be valid. The key
+ "1.2.3.4" used in the above example is valid and may
+ be used if security is not a concern. If you do not
+ specify any encryption key, <command>bcdedit</command>
+ will generate one for you and you will need to copy
+ this key to later enter in Microsoft WinDbg on the
+ remote end. This encryption key is used to encrypt the
+ debug data exchanged between Windows and the debugger.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Run one or more of the following commands to enable
+ debugging for the appropriate phase or component of
+ your Windows guest:
+ </para>
+
+<screen>bcdedit /set debug on</screen>
+
+<screen>bcdedit /set bootdebug on</screen>
+
+<screen>bcdedit /set {bootmgr} bootdebug on</screen>
+
+ <para>
+ Please note that the <command>bootdebug</command>
+ options are only effective on Windows 8 or newer when
+ using the Hyper-V debug transport. Refer to Microsoft
+ Windows documentation for detailed explanation of
+ <command>bcdedit</command> options.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start Microsoft WinDbg on your host machine or remote
+ host.
+ </para>
+
+ <para>
+ From the <emphasis role="bold">File</emphasis> menu,
+ select <emphasis role="bold">Kernel Debug</emphasis>. On
+ the <emphasis role="bold">NET</emphasis> tab, specify the
+ UDP port number you used in the
+ <literal>paravirtdebug</literal> options. If you did not
+ specify any, leave it as 50000. Ensure that the UDP port
+ is not blocked by a firewall or other security software.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Key</emphasis> field, enter
+ <literal>1.2.3.4</literal> or the encryption key from the
+ <command>bcdedit</command> command in your Windows guest.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">OK</emphasis> to start
+ listening for connections. Microsoft WinDbg typically
+ shows a Waiting to Reconnect message during this phase.
+ </para>
+
+ <para>
+ Alternatively, to directly start a debug session, run
+ WinDbg from the command line as follows :
+ </para>
+
+<screen>windbg.exe -k net:port=50000,key=1.2.3.4</screen>
+
+ <para>
+ See the WinDbg documentation for the complete command line
+ syntax.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Reboot your Windows guest and it should then connect as a
+ debuggee with Microsoft WinDbg.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect3>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="pcspeaker_passthrough">
+
+ <title>PC Speaker Passthrough</title>
+
+ <para>
+ As an experimental feature, primarily due to being limited to
+ Linux host only and unknown Linux distribution coverage,
+ &product-name; supports passing through the PC speaker to the
+ host. The PC speaker, sometimes called the system speaker, is a
+ way to produce audible feedback such as beeps without the need for
+ regular audio and sound card support.
+ </para>
+
+ <para>
+ The PC speaker passthrough feature in &product-name; handles beeps
+ only. Advanced PC speaker use by the VM, such as PCM audio, will
+ not work, resulting in undefined host behavior.
+ </para>
+
+ <para>
+ Producing beeps on Linux is a very complex topic. &product-name;
+ offers a collection of options, in an attempt to make this work
+ deterministically and reliably on as many Linux distributions and
+ system configurations as possible. These are summarized in the
+ following table.
+ </para>
+
+ <table id="table-pcspeaker-config" tabstyle="oracle-all">
+ <title>PC Speaker Configuration Options</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Code</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Device</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Notes</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ 1
+ </para></entry>
+ <entry><para>
+ <filename>/dev/input/by-path/platform-pcspkr-event-spkr</filename>
+ </para></entry>
+ <entry><para>
+ Direct host PC speaker use.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 2
+ </para></entry>
+ <entry><filename>/dev/tty</filename></entry>
+ <entry><para>
+ Uses the terminal association of the VM process. VM
+ needs to be started on a virtual console.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 3
+ </para></entry>
+ <entry><para>
+ <filename>/dev/tty0</filename> or
+ <filename>/dev/vc/0</filename>
+ </para></entry>
+ <entry><para>
+ Can only be used by user <literal>root</literal> or
+ users with <literal>cap_sys_tty_config</literal>
+ capability.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 9
+ </para></entry>
+ <entry><para>
+ A user-specified console or evdev device path.
+ </para></entry>
+ <entry><para>
+ As for codes 1 to 3, but with a custom device path.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 70
+ </para></entry>
+ <entry><para>
+ <filename>/dev/tty</filename>
+ </para></entry>
+ <entry><para>
+ Standard beep only. Loses frequency and length. See code
+ 2.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 79
+ </para></entry>
+ <entry><para>
+ A user-specified terminal device path.
+ </para></entry>
+ <entry><para>
+ As for code 70, but with a custom device path.
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ 100
+ </para></entry>
+ <entry><para>
+ All of the above.
+ </para></entry>
+ <entry><para>
+ Tries all the available codes.
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ To enable PC speaker passthrough use the following command:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/Devices/i8254/0/Config/PassthroughSpeaker" <replaceable>N</replaceable></screen>
+
+ <para>
+ Replace <replaceable>N</replaceable> with the code representing
+ the case you want to use. Changing this setting takes effect when
+ you next start the VM. It is safe to enable PC speaker passthrough
+ on all host OSes. It will only have an effect on Linux.
+ </para>
+
+ <para>
+ The VM log file, <filename>VBox.log</filename>, contains lines
+ with the prefix <literal>PIT: speaker:</literal> showing the PC
+ speaker passthrough setup activities. It gives hints which device
+ it picked or why it failed.
+ </para>
+
+ <para>
+ Enabling PC speaker passthrough for the VM is usually the simple
+ part. The real difficulty is making sure that &product-name; can
+ access the necessary device, because in a typical Linux install
+ most of them can only be accessed by user <literal>root</literal>.
+ You should follow the preferred way to persistently change this,
+ such as by referring to your distribution's documentation. Since
+ there are countless Linux distribution variants, we can only give
+ the general hints that there is often a way to give the X11
+ session user access to additional devices, or you need to find a
+ working solution using a udev configuration file. If everything
+ fails you might try setting the permissions using a script which
+ is run late enough in the host system startup.
+ </para>
+
+ <para>
+ Sometimes additional rules are applied by the kernel to limit
+ access. For example, that the VM process must have the same
+ controlling terminal as the device configured to be used for
+ beeping, something which is often very difficult to achieve for
+ GUI applications such as &product-name;. The table above contains
+ some hints, but in general refer to the Linux documentation.
+ </para>
+
+ <para>
+ If you have trouble getting any beeps even if the device
+ permissions are set up and VBox.log confirms that it uses evdev or
+ console for the PC speaker control, check if your system has a PC
+ speaker. Some systems do not have one. Other complications can
+ arise from Linux rerouting the PC speaker output to a sound card.
+ Check if the beeps are audible if you connect speakers to your
+ sound card. Today almost all systems have one. Finally, check if
+ the audio mixer control has a channel named "beep", which could be
+ hidden in the mixer settings, and that it is not muted.
+ </para>
+
+ </sect1>
+
+ <sect1 id="usbip">
+
+ <title>Accessing USB devices Exposed Over the Network with USB/IP</title>
+
+ <para>
+ &product-name; supports passing through USB devices which are
+ exposed over the network using the USB over IP protocol without
+ the need to configure the client side provided by the kernel and
+ usbip tools. Furthermore, this feature works with &product-name;
+ running on any supported host, rather than just Linux alone, as is
+ the case with the official client.
+ </para>
+
+ <para>
+ To enable support for passing through USB/IP devices, use the
+ following command to add the device server that exports the
+ devices:
+ </para>
+
+<screen>VBoxManage usbdevsource add <replaceable>unique-name</replaceable> --backend <replaceable>USB-IP</replaceable> --address <replaceable>device-server</replaceable>[:<replaceable>port</replaceable>]</screen>
+
+ <para>
+ USB devices exported on the device server are then accessible
+ through the GUI or <command>VBoxManage</command>, like any USB
+ devices attached locally. This can be used multiple times to
+ access different device servers.
+ </para>
+
+ <para>
+ To remove a device server, the following command can be used:
+ </para>
+
+<screen>$ VBoxManage usbdevsource remove <replaceable>unique-name</replaceable></screen>
+
+ <sect2 id="usbip-setup-server">
+
+ <title>Setting up USB/IP Support on a Linux System</title>
+
+ <para>
+ This section gives a brief overview on how to set up a Linux
+ based system to act as a USB device server. The system on the
+ server requires that the <filename>usbip-core.ko</filename> and
+ <filename>usbip-host.ko</filename> kernel drivers are available,
+ and that the USB/IP tools package is installed. The particular
+ installation method for the necessary tools depends on which
+ distribution is used. For example, for Debian based systems, use
+ the following command to install the required tools:
+ </para>
+
+<screen>$ apt-get install usbip-utils</screen>
+
+ <para>
+ To check whether the necessary tools are already installed use
+ the following command:
+ </para>
+
+<screen>
+$ usbip list -l
+ </screen>
+
+ <para>
+ This should produce output similar to that shown in the example
+ below:
+ </para>
+
+<screen>
+ - busid 4-2 (0bda:0301)
+ Realtek Semiconductor Corp. : multicard reader (0bda:0301)
+
+ - busid 5-1 (046d:c52b)
+ Logitech, Inc. : Unifying Receiver (046d:c52b)
+ </screen>
+
+ <para>
+ If everything is installed, the USB/IP server needs to be
+ started as <literal>root</literal> using the following command:
+ </para>
+
+<screen># usbipd -D</screen>
+
+ <para>
+ See the documentation for the installed distribution to
+ determine how to start the service when the system boots.
+ </para>
+
+ <para>
+ By default, no device on the server is exported. This must be
+ done manually for each device. To export a device use the
+ following command:
+ </para>
+
+<screen># usbip bind -b "bus identifier"</screen>
+
+ <para>
+ To export the multicard reader in the previous example:
+ </para>
+
+<screen># usbip bind -b 4-2</screen>
+
+ </sect2>
+
+ <sect2 id="usbip-security">
+
+ <title>Security Considerations</title>
+
+ <para>
+ The communication between the server and client is unencrypted
+ and there is no authorization required to access exported
+ devices. An attacker might sniff sensitive data or gain control
+ over a device. To mitigate this risk, the device should be
+ exposed over a local network to which only trusted clients have
+ access. To access the device remotely over a public network, a
+ VPN solution should be used to provide the required level of
+ security protection.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="hyperv-support">
+
+ <title>Using Hyper-V with &product-name;</title>
+
+ <para>
+ &product-name; can be used on a Windows host where Hyper-V is
+ running. This is an experimental feature.
+ </para>
+
+ <para>
+ No configuration is required. &product-name; detects Hyper-V
+ automatically and uses Hyper-V as the virtualization engine for
+ the host system. The CPU icon in the VM window status bar
+ indicates that Hyper-V is being used.
+ </para>
+
+ <note>
+ <para>
+ When using this feature, some host systems might experience
+ significant &product-name; performance degradation.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="nested-virt">
+
+ <title>Nested Virtualization</title>
+
+ <para>
+ &product-name; supports <emphasis>nested
+ virtualization</emphasis>. This feature enables the passthrough of
+ hardware virtualization functions to the guest VM. That means that
+ you can install a hypervisor, such as &product-name;, Oracle VM
+ Server or KVM, on an &product-name; guest. You can then create and
+ run VMs within the guest VM.
+ </para>
+
+ <para>
+ Hardware virtualization features not present on the host CPU will
+ not be exposed to the guest. In addition, some features such as
+ nested paging are not yet supported for passthrough to the guest.
+ </para>
+
+ <para>
+ You can enable the nested virtualization feature in one of the
+ following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ From the VirtualBox Manager, select the
+ <emphasis role="bold">Enable Nested VT-x/AMD-V</emphasis>
+ check box on the <emphasis role="bold">Processor</emphasis>
+ tab. To disable the feature, deselect the check box.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the <option>--nested-hw-virt</option> option of the
+ <command>VBoxManage modifyvm</command> command to enable or
+ disable nested virtualization. See
+ <xref linkend="vboxmanage-modifyvm"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <xi:include href="user_isomakercmd-man.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</chapter>
diff --git a/doc/manual/en_US/user_BasicConcepts.xml b/doc/manual/en_US/user_BasicConcepts.xml
new file mode 100644
index 00000000..ad3d8302
--- /dev/null
+++ b/doc/manual/en_US/user_BasicConcepts.xml
@@ -0,0 +1,3037 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="BasicConcepts">
+
+ <title>Configuring Virtual Machines</title>
+
+ <para>
+ This chapter provides detailed steps for configuring an
+ &product-name; virtual machine (VM). For an introduction to
+ &product-name; and steps to get your first virtual machine running,
+ see <xref linkend="Introduction" />.
+ </para>
+
+ <para>
+ You have considerable latitude when deciding what virtual hardware
+ to provide to the guest. Use virtual hardware to communicate with
+ the host system or with other guests. For example, you can use
+ virtual hardware in the following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Have &product-name; present an ISO CD-ROM image to a guest
+ system as if it were a physical CD-ROM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Provide a guest system access to the physical network through
+ its virtual network card.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Provide the host system, other guests, and computers on the
+ Internet access to the guest system.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect1 id="guestossupport">
+
+ <title>Supported Guest Operating Systems</title>
+
+ <para>
+ Because &product-name; is designed to provide a generic
+ virtualization environment for x86 systems, it can run guest
+ operating systems (OSes) of any kind.
+ </para>
+
+ <para>
+ The following guest OS platforms are supported:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Platforms With Full Support.</emphasis>
+ These guest OS platforms qualify for Oracle Premier Support.
+ See <xref linkend="table-premier-support"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Platforms With Limited
+ Support.</emphasis> These legacy guest OS platforms can be
+ used with &product-name;, but only qualify for <emphasis>best
+ effort</emphasis> support. Therefore, resolution of customer
+ issues is not guaranteed. See
+ <xref linkend="table-limited-support"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <table id="table-premier-support" tabstyle="oracle-all">
+ <title>Guest Operating Systems With Full Support</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Operating System</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Comments</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ Windows 10 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para>
+ Insider preview builds are not supported
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows 8 and 8.1 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Server 2019 (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Server 2016 (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Server 2012 and 2012 R2 (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Solaris 11 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Solaris 10 8/11 Update 10 and later (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Oracle Linux 8 (64-bit)
+ </para></entry>
+ <entry><para>
+ Includes Red Hat Enterprise Linux 8, CentOS 8
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Oracle Linux 7 (64-bit)
+ </para></entry>
+ <entry><para>
+ Includes Red Hat Enterprise Linux 7, CentOS 7
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Oracle Linux 6 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para>
+ Includes Red Hat Enterprise Linux 6, CentOS 6
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Ubuntu 16.04 LTS (Xenial Xerus) (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Ubuntu 18.04 LTS (Bionic Beaver) (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Ubuntu 20.04 LTS (Focal Fossa) (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ SUSE Linux Enterprise Server 15 (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ SUSE Linux Enterprise Server 12 (64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table id="table-limited-support" tabstyle="oracle-all">
+ <title>Legacy Guest Operating Systems With Limited Support</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Operating System</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Comments</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ Windows 7 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Vista SP2 and later (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows XP (32-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Vista (32-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Server 2008 and 2008 R2 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Windows Server 2003 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Oracle Linux 5 (32-bit and 64-bit)
+ </para></entry>
+ <entry><para>
+ Includes Red Hat Enterprise Linux 5, CentOS 5
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Ubuntu 14.04.5 LTS (Trusty Tahr) (32-bit and 64-bit)
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ <row>
+ <entry><para>
+ OS/2 Warp 4.5
+ </para></entry>
+ <entry><para></para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="intro-macosxguests">
+
+ <title>Mac OS X Guests</title>
+
+ <para>
+ &product-name; enables you to install and execute unmodified
+ versions of Mac OS X guests on supported host hardware. Note
+ that this feature is experimental and thus unsupported.
+ </para>
+
+ <para>
+ &product-name; is the first product to provide the modern PC
+ architecture expected by OS X without requiring any of the
+ modifications used by competing virtualization solutions. For
+ example, some competing solutions perform modifications to the
+ Mac OS X install DVDs, such as a different boot loader and
+ replaced files.
+ </para>
+
+ <para>
+ Be aware of the following important issues before you attempt to
+ install a Mac OS X guest:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Mac OS X is commercial, licensed software and contains
+ <emphasis role="bold">both license and technical
+ restrictions</emphasis> that limit its use to certain
+ hardware and usage scenarios. You must understand and comply
+ with these restrictions.
+ </para>
+
+ <para>
+ In particular, Apple prohibits the installation of most
+ versions of Mac OS X on non-Apple hardware.
+ </para>
+
+ <para>
+ These license restrictions are also enforced on a technical
+ level. Mac OS X verifies that it is running on Apple
+ hardware. Most DVDs that accompany Apple hardware check for
+ the exact model. These restrictions are
+ <emphasis>not</emphasis> circumvented by &product-name; and
+ continue to apply.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Only <emphasis role="bold">CPUs</emphasis> that are known
+ and tested by Apple are supported. As a result, if your
+ Intel CPU is newer than the Mac OS X build, or if you have a
+ non-Intel CPU, you will likely encounter a panic during
+ bootup with an "Unsupported CPU" exception.
+ </para>
+
+ <para>
+ Ensure that you use the Mac OS X DVD that comes with your
+ Apple hardware.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The Mac OS X installer expects the hard disk to be
+ <emphasis>partitioned</emphasis>. So, the installer will not
+ offer a partition selection to you. Before you can install
+ the software successfully, start the Disk Utility from the
+ Tools menu and partition the hard disk. Close the Disk
+ Utility and proceed with the installation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In addition, Mac OS X support in &product-name; is an
+ experimental feature. See <xref linkend="KnownIssues" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="intro-64bitguests">
+
+ <title>64-bit Guests</title>
+
+ <warning>
+ <para>
+ Be sure to enable <emphasis role="bold">I/O APIC</emphasis>
+ for virtual machines that you intend to use in 64-bit mode.
+ This is especially true for 64-bit Windows VMs. See
+ <xref linkend="settings-general-advanced" />. For 64-bit
+ Windows guests, ensure that the VM uses the
+ <emphasis role="bold">Intel networking device</emphasis>
+ because there is no 64-bit driver support for the AMD PCNet
+ card. See <xref linkend="nichardware" />.
+ </para>
+ </warning>
+
+ <para>
+ If you use the <emphasis role="bold">Create VM</emphasis> wizard
+ of the VirtualBox Manager, &product-name; automatically uses the
+ correct settings for each selected 64-bit OS type. See
+ <xref linkend="gui-createvm" />.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="basic-unattended">
+
+ <title>Unattended Guest Installation</title>
+
+ <para>
+ &product-name; can install a guest OS automatically. You only need
+ to provide the installation medium and a few other parameters,
+ such as the name of the default user.
+ </para>
+
+ <para>
+ Performing an unattended guest installation involves the following
+ steps:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Create a new VM.</emphasis> Use one of
+ the following methods:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The VirtualBox Manager, see
+ <xref linkend="gui-createvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <command>VBoxManage createvm</command> command, see
+ <xref linkend="vboxmanage-createvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For the new VM, choose the guest OS type and accept the
+ default settings for that OS. The following sections in this
+ chapter describe how to change the settings for a VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Prepare the VM for unattended guest
+ installation.</emphasis> Use the <command>VBoxManage
+ unattended</command> command, see
+ <xref linkend="vboxmanage-unattended" />.
+ </para>
+
+ <para>
+ During this step, &product-name; scans the installation medium
+ and changes certain parameters to ensure a seamless
+ installation as a guest running on &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Start the VM.</emphasis> Use the
+ VirtualBox Manager or the <command>VBoxManage
+ startvm</command> command.
+ </para>
+
+ <para>
+ When you start the VM, the unattended installation is
+ performed automatically.
+ </para>
+
+ <para>
+ The installation operation changes the boot device order to
+ boot the virtual hard disk first and then the virtual DVD
+ drive. If the virtual hard disk is empty prior to the
+ automatic installation, the VM boots from the virtual DVD
+ drive and begins the installation.
+ </para>
+
+ <para>
+ If the virtual hard disk contains a bootable OS, the
+ installation operation exits. In this case, change the boot
+ device order manually by pressing F12 during the BIOS splash
+ screen.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <xref linkend="unattended-guest-install-example"/> describes how
+ to perform an unattended guest installation for an Oracle Linux
+ guest.
+ </para>
+
+ <sect2 id="unattended-guest-install-example">
+
+ <title>An Example of Unattended Guest Installation</title>
+
+ <para>
+ The following example shows how to perform an unattended guest
+ installation for an Oracle Linux VM. The example uses various
+ <command>VBoxManage</command> commands to prepare the guest VM.
+ The <command>VBoxManage unattended install</command> command is
+ then used to install and configure the guest OS.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Create the virtual machine.
+ </para>
+
+<screen># VM="ol7-autoinstall"
+# VBoxManage list ostypes
+# VBoxManage createvm --name $VM --ostype "Oracle_64" --register</screen>
+
+ <para>
+ Note the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The $VM variable represents the name of the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <command>VBoxManage list ostypes</command> command
+ lists the guest OSes supported by &product-name;,
+ including the name used for each OS in the
+ <command>VBoxManage</command> commands.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A 64-bit Oracle Linux 7 VM is created and registered
+ with &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The VM has a unique UUID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An XML settings file is generated.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create a virtual hard disk and storage devices for the VM.
+ </para>
+
+<screen># VBoxManage createhd --filename /VirtualBox/$VM/$VM.vdi --size 32768
+# VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI
+# VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 \
+--type hdd --medium /VirtualBox/$VM/$VM.vdi
+# VBoxManage storagectl $VM --name "IDE Controller" --add ide
+# VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 \
+--type dvddrive --medium /u01/Software/OL/OracleLinux-R7-U6-Server-x86_64-dvd.iso</screen>
+
+ <para>
+ The previous commands do the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Create a 32768 MB virtual hard disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create a SATA storage controller and attach the virtual
+ hard disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create an IDE storage controller for a virtual DVD drive
+ and attach an Oracle Linux installation ISO.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Configure some settings for the VM.
+ </para>
+
+<screen># VBoxManage modifyvm $VM --ioapic on
+# VBoxManage modifyvm $VM --boot1 dvd --boot2 disk --boot3 none --boot4 none
+# VBoxManage modifyvm $VM --memory 8192 --vram 128</screen>
+
+ <para>
+ The previous commands do the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Enable I/O APIC for the motherboard of the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Configure the boot device order for the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allocate 8192 MB of RAM and 128 MB of video RAM to the
+ VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Perform an unattended install of the OS.
+ </para>
+
+<screen># VBoxManage unattended install $VM \
+--iso=/u01/Software/OL/OracleLinux-R7-U6-Server-x86_64-dvd.iso \
+--user=<replaceable>login</replaceable> --full-user-name=<replaceable>name</replaceable> --password <replaceable>password</replaceable> \
+--install-additions --time-zone=CET</screen>
+
+ <para>
+ The previous command does the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Specifies an Oracle Linux ISO as the installation ISO.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Specifies a login name, full name, and login password
+ for a default user on the guest OS.
+ </para>
+
+ <para>
+ Note that the specified password is also used for the
+ root user account on the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Installs the Guest Additions on the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Sets the time zone for the guest OS to Central European
+ Time (CET).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start the virtual machine.
+ </para>
+
+ <para>
+ This step completes the unattended installation process.
+ </para>
+
+<screen># VBoxManage startvm $VM --type headless</screen>
+
+ <para>
+ The VM starts in headless mode, which means that the
+ VirtualBox Manager window does not open.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Update the guest OS to use the latest Oracle
+ Linux packages.
+ </para>
+
+ <para>
+ On the guest VM, run the following command:
+ </para>
+
+<screen># yum update</screen>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="emul-hardware">
+
+ <title>Emulated Hardware</title>
+
+ <para>
+ &product-name; virtualizes nearly all hardware of the host.
+ Depending on a VM's configuration, the guest will see the
+ following virtual hardware:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Input devices.</emphasis> &product-name;
+ can emulate a standard PS/2 keyboard and mouse. These devices
+ are supported by most guest OSes.
+ </para>
+
+ <para>
+ In addition, &product-name; can provide virtual USB input
+ devices to avoid having to capture mouse and keyboard, as
+ described in <xref linkend="keyb_mouse_normal" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Graphics.</emphasis> The default
+ &product-name; graphics device for Windows guests is an SVGA
+ device. For Linux guests, the default graphics device emulates
+ a VMware SVGA graphics device. See
+ <xref linkend="settings-screen"/>.
+ </para>
+
+ <para>
+ For legacy guest OSes, a VGA-compatible graphics device is
+ available.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage.</emphasis> &product-name;
+ emulates the most common types of hard disk controllers. See
+ <xref linkend="harddiskcontrollers" />. Whereas supporting
+ only one of these controllers would be enough for
+ &product-name; by itself, this multitude of storage adapters
+ is required for compatibility with other hypervisors. Windows
+ is very selective about its boot devices, and migrating VMs
+ between hypervisors is very difficult or impossible if the
+ storage controllers are different.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Networking.</emphasis> See
+ <xref linkend="nichardware" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB.</emphasis> &product-name; emulates
+ these types of USB host controllers: xHCI, EHCI, and OHCI.
+ While xHCI handles all USB transfer speeds, some legacy guest
+ OSes may not support xHCI. Note that for some legacy Windows
+ guests, third party drivers must be installed for xHCI
+ support.
+ </para>
+
+ <para>
+ Legacy guest OSes typically support OHCI and EHCI. These two
+ controllers are needed because OHCI only handles USB low-speed
+ and full-speed devices (both USB 1.x and 2.0), while EHCI only
+ handles high-speed devices (USB 2.0 only).
+ </para>
+
+ <para>
+ The emulated USB controllers do not communicate directly with
+ devices on the host. Instead they communicate with a virtual
+ USB layer which abstracts the USB protocol and enables the use
+ of remote USB devices.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Audio.</emphasis> See
+ <xref linkend="settings-audio" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="generalsettings">
+
+ <title>General Settings</title>
+
+ <para>
+ In the <emphasis role="bold">Settings</emphasis> window, under
+ <emphasis role="bold">General</emphasis>, you can configure the
+ most fundamental aspects of the virtual machine such as memory and
+ essential hardware. The following tabs are available.
+ </para>
+
+ <sect2 id="settings-basic">
+
+ <title>Basic Tab</title>
+
+ <para>
+ In the <emphasis role="bold">Basic</emphasis> tab of the
+ <emphasis role="bold">General</emphasis> settings category, you
+ can find these settings:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Name:</emphasis> The name of the the
+ VM, as shown in the list of VMs in the main VirtualBox
+ Manager window. Using this name, &product-name; also saves
+ the VM's configuration files. If you change the name,
+ &product-name; renames these files as well. As a result, you
+ can only use characters which are allowed for file names on
+ your host OS.
+ </para>
+
+ <para>
+ Note that internally, &product-name; uses unique identifiers
+ (UUIDs) to identify virtual machines. You can display these
+ using the <command>VBoxManage</command> commands.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Type:</emphasis> The type of the guest
+ OS for the VM. This is the same setting that is specified in
+ the <emphasis role="bold">New Virtual Machine</emphasis>
+ wizard. See <xref linkend="gui-createvm" />.
+ </para>
+
+ <para>
+ Whereas the default settings of a newly created VM depend on
+ the selected OS type, changing the type later has no effect
+ on VM settings. This value is purely informational and
+ decorative.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Version:</emphasis> The version of the
+ guest OS for the VM. This is the same setting that is
+ specified in the <emphasis role="bold">New Virtual
+ Machine</emphasis> wizard. See
+ <xref linkend="gui-createvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="settings-general-advanced">
+
+ <title>Advanced Tab</title>
+
+ <para>
+ The following settings are available in the
+ <emphasis role="bold">Advanced</emphasis> tab:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Snapshot Folder:</emphasis> By
+ default, &product-name; saves snapshot data together with
+ your other &product-name; configuration data. See
+ <xref linkend="vboxconfigdata" />. With this setting, you
+ can specify any other folder for each VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Shared Clipboard:</emphasis> You can
+ select here whether the clipboard of the guest OS should be
+ shared with that of your host. If you select
+ <emphasis role="bold">Bidirectional</emphasis>, then
+ &product-name; will always make sure that both clipboards
+ contain the same data. If you select
+ <emphasis role="bold">Host to Guest</emphasis> or
+ <emphasis role="bold">Guest to Host</emphasis>, then
+ &product-name; will only ever copy clipboard data in one
+ direction.
+ </para>
+
+ <para>
+ Clipboard sharing requires that the &product-name; Guest
+ Additions be installed. In such a case, this setting has no
+ effect. See <xref linkend="guestadditions" />.
+ </para>
+
+ <para>
+ For security reasons, the shared clipboard is disabled by
+ default. This setting can be changed at any time using the
+ <emphasis role="bold">Shared Clipboard</emphasis> menu item
+ in the <emphasis role="bold">Devices</emphasis> menu of the
+ virtual machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Drag and Drop:</emphasis> This setting
+ enables support for drag and drop. Select an object, such as
+ a file, from the host or guest and directly copy or open it
+ on the guest or host. Multiple drag and drop modes for a VM
+ enable restricting of access in either direction.
+ </para>
+
+ <para>
+ For drag and drop to work the Guest Additions need to be
+ installed on the guest.
+ </para>
+
+ <note>
+ <para>
+ Drag and drop is disabled by default. This setting can be
+ changed at any time using the <emphasis role="bold">Drag
+ and Drop</emphasis> menu item in the
+ <emphasis role="bold">Devices</emphasis> menu of the
+ virtual machine.
+ </para>
+ </note>
+
+ <para>
+ See <xref linkend="guestadd-dnd"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="settings-description">
+
+ <title>Description Tab</title>
+
+ <para>
+ On the <emphasis role="bold">Description</emphasis> tab you can
+ enter a description for your virtual machine. This has no effect
+ on the functionality of the machine, but you may find this space
+ useful to note down things such as the configuration of a
+ virtual machine and the software that has been installed into
+ it.
+ </para>
+
+ <para>
+ To insert a line break into the
+ <emphasis role="bold">Description</emphasis> text field, press
+ Shift+Enter.
+ </para>
+
+ </sect2>
+
+ <sect2 id="settings-disk-encryption">
+
+ <title>Disk Encryption Tab</title>
+
+ <para>
+ The <emphasis role="bold">Disk Encryption</emphasis> tab enables
+ you to encrypt disks that are attached to the virtual machine.
+ </para>
+
+ <para>
+ To enable disk encryption, select the
+ <emphasis role="bold">Enable Disk Encryption</emphasis> check
+ box.
+ </para>
+
+ <para>
+ Settings are available to configure the cipher used for
+ encryption and the encryption password.
+ </para>
+
+ <note>
+ <para>
+ All files related to the virtual machine except disk images
+ are stored unencrypted.
+ </para>
+ </note>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="settings-system">
+
+ <title>System Settings</title>
+
+ <para>
+ The <emphasis role="bold">System</emphasis> category groups
+ various settings that are related to the basic hardware that is
+ presented to the virtual machine.
+ </para>
+
+ <note>
+ <para>
+ As the activation mechanism of Microsoft Windows is sensitive to
+ hardware changes, if you are changing hardware settings for a
+ Windows guest, some of these changes may trigger a request for
+ another activation with Microsoft.
+ </para>
+ </note>
+
+ <para>
+ The following tabs are available.
+ </para>
+
+ <sect2 id="settings-motherboard">
+
+ <title>Motherboard Tab</title>
+
+ <para>
+ On the <emphasis role="bold">Motherboard</emphasis> tab, you can
+ configure virtual hardware that would normally be on the
+ motherboard of a real computer.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Base Memory:</emphasis> Sets the
+ amount of RAM that is allocated and given to the VM when it
+ is running. The specified amount of memory will be requested
+ from the host OS, so it must be available or made available
+ as free memory on the host when attempting to start the VM
+ and will not be available to the host while the VM is
+ running. This is the same setting that was specified in the
+ <emphasis role="bold">New Virtual Machine</emphasis> wizard,
+ as described in <xref linkend="gui-createvm" />.
+ </para>
+
+ <para>
+ Generally, it is possible to change the memory size after
+ installing the guest OS. But you must not reduce the memory
+ to an amount where the OS would no longer boot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Boot Order:</emphasis> Determines the
+ order in which the guest OS will attempt to boot from the
+ various virtual boot devices. Analogous to a real PC's BIOS
+ setting, &product-name; can tell a guest OS to start from
+ the virtual floppy, the virtual CD/DVD drive, the virtual
+ hard drive (each of these as defined by the other VM
+ settings), the network, or none of these.
+ </para>
+
+ <para>
+ If you select <emphasis role="bold">Network</emphasis>, the
+ VM will attempt to boot from a network using the PXE
+ mechanism. This needs to be configured in detail on the
+ command line. See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Chipset:</emphasis> You can select
+ which chipset will be presented to the virtual machine.
+ PIIX3 is the default chipset for most guests. For some guest
+ OSes such as Mac OS X, the PIIX3 chipset is not well
+ supported. As a result, &product-name; supports an emulation
+ of the ICH9 chipset, which supports PCI express, three PCI
+ buses, PCI-to-PCI bridges and Message Signaled Interrupts
+ (MSI). This enables modern OSes to address more PCI devices
+ and no longer requires IRQ sharing. Using the ICH9 chipset
+ it is also possible to configure up to 36 network cards,
+ compared to a maximum of eight network adapters with PIIX3.
+ Note that ICH9 support is experimental and not recommended
+ for guest OSes which do not require it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Pointing Device:</emphasis> The
+ default virtual pointing device for some guest OSes is the
+ traditional PS/2 mouse. If set to <emphasis role="bold">USB
+ Tablet</emphasis>, &product-name; reports to the virtual
+ machine that a USB tablet device is present and communicates
+ mouse events to the virtual machine through this device.
+ Another setting is <emphasis role="bold">USB Multi-Touch
+ Tablet</emphasis>, which is suitable for guests running
+ Windows 8 or later.
+ </para>
+
+ <para>
+ Using the virtual USB tablet has the advantage that
+ movements are reported in absolute coordinates, instead of
+ as relative position changes. This enables &product-name; to
+ translate mouse events over the VM window into tablet events
+ without having to "capture" the mouse in the guest as
+ described in <xref linkend="keyb_mouse_normal" />. This
+ makes using the VM less tedious even if Guest Additions are
+ not installed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable I/O APIC:</emphasis> Advanced
+ Programmable Interrupt Controllers (APICs) are an x86
+ hardware feature that have replaced Programmable Interrupt
+ Controllers (PICs). With an I/O APIC, OSes can use more than
+ 16 interrupt requests (IRQs) and therefore avoid IRQ sharing
+ for improved reliability.
+ </para>
+
+ <note>
+ <para>
+ Enabling the I/O APIC is <emphasis>required</emphasis>,
+ especially for 64-bit Windows guest OSes. It is also
+ required if you want to use more than one virtual CPU in a
+ virtual machine.
+ </para>
+ </note>
+
+ <para>
+ However, software support for I/O APICs has been unreliable
+ with some OSes other than Windows. Also, the use of an I/O
+ APIC slightly increases the overhead of virtualization and
+ therefore slows down the guest OS a little.
+ </para>
+
+ <warning>
+ <para>
+ All Windows OSes install different kernels, depending on
+ whether an I/O APIC is available. As with ACPI, the I/O
+ APIC therefore <emphasis>must not be turned off after
+ installation</emphasis> of a Windows guest OS. Turning it
+ on after installation will have no effect however.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable EFI:</emphasis> Enables
+ Extensible Firmware Interface (EFI), which replaces the
+ legacy BIOS and may be useful for certain advanced use
+ cases. See <xref linkend="efi" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Hardware Clock in UTC Time:</emphasis>
+ If selected, &product-name; will report the system time in
+ UTC format to the guest instead of the local (host) time.
+ This affects how the virtual real-time clock (RTC) operates
+ and may be useful for UNIX-like guest OSes, which typically
+ expect the hardware clock to be set to UTC.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, you can turn off the <emphasis role="bold">Advanced
+ Configuration and Power Interface (ACPI)</emphasis> which
+ &product-name; presents to the guest OS by default.
+ </para>
+
+ <para>
+ ACPI is the current industry standard to allow OSes to recognize
+ hardware, configure motherboards and other devices and manage
+ power. As most computers contain this feature and Windows and
+ Linux support ACPI, it is also enabled by default in
+ &product-name;. ACPI can only be turned off using the command
+ line. See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <warning>
+ <para>
+ All Windows OSes install different kernels, depending on
+ whether ACPI is available. This means that ACPI <emphasis>must
+ not be turned off</emphasis> after installation of a Windows
+ guest OS. However, turning it on after installation will have
+ no effect.
+ </para>
+ </warning>
+
+ </sect2>
+
+ <sect2 id="settings-processor">
+
+ <title>Processor Tab</title>
+
+ <para>
+ On the <emphasis role="bold">Processor</emphasis> tab, you can
+ configure settings for the CPU used by the virtual machine.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Processor(s):</emphasis> Sets the
+ number of virtual CPU cores the guest OSes can see.
+ &product-name; supports symmetrical multiprocessing (SMP)
+ and can present up to 32 virtual CPU cores to each virtual
+ machine.
+ </para>
+
+ <para>
+ You should not configure virtual machines to use more CPU
+ cores than are available physically. This includes real
+ cores, with no hyperthreads.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Execution Cap:</emphasis> Configures
+ the CPU execution cap. This limits the amount of time a host
+ CPU spends to emulate a virtual CPU. The default setting is
+ 100%, meaning that there is no limitation. A setting of 50%
+ implies a single virtual CPU can use up to 50% of a single
+ host CPU. Note that limiting the execution time of the
+ virtual CPUs may cause guest timing problems.
+ </para>
+
+ <para>
+ A warning is displayed at the bottom of the Processor tab if
+ an Execution Cap setting is made that may affect system
+ performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable PAE/NX:</emphasis> Determines
+ whether the PAE and NX capabilities of the host CPU will be
+ exposed to the virtual machine.
+ </para>
+
+ <para>
+ PAE stands for Physical Address Extension. Normally, if
+ enabled and supported by the OS, then even a 32-bit x86 CPU
+ can access more than 4 GB of RAM. This is made possible by
+ adding another 4 bits to memory addresses, so that with 36
+ bits, up to 64 GB can be addressed. Some OSes, such as
+ Ubuntu Server, require PAE support from the CPU and cannot
+ be run in a virtual machine without it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Nested VT-x/AMD-V</emphasis>:
+ Enables nested virtualization, with passthrough of hardware
+ virtualization functions to the guest VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ With virtual machines running modern server OSes, &product-name;
+ also supports CPU hot-plugging. For details, see
+ <xref linkend="cpuhotplug" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="settings-acceleration">
+
+ <title>Acceleration Tab</title>
+
+ <para>
+ On this tab, you can configure &product-name; to use hardware
+ virtualization extensions that your host CPU supports.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Paravirtualization
+ Interface:</emphasis> &product-name; provides
+ paravirtualization interfaces to improve time-keeping
+ accuracy and performance of guest OSes. The options
+ available are documented under the
+ <option>--paravirtprovider</option> option in
+ <xref linkend="vboxmanage-modifyvm" />. For further details
+ on the paravirtualization providers, see
+ <xref linkend="gimproviders" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Hardware Virtualization:</emphasis>
+ You can configure hardware virtualization features for each
+ virtual machine.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Nested Paging:</emphasis>
+ If the host CPU supports the nested paging (AMD-V) or
+ EPT (Intel VT-x) features, then you can expect a
+ significant performance increase by enabling nested
+ paging in addition to hardware virtualization. For
+ technical details, see <xref linkend="nestedpaging" />.
+ For Intel EPT security recommendations, see
+ <xref linkend="sec-rec-cve-2018-3646" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Advanced users may be interested in technical details about
+ hardware virtualization. See <xref linkend="hwvirt" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In most cases, the default settings on the
+ <emphasis role="bold">Acceleration</emphasis> tab will work
+ well. &product-name; selects sensible defaults, depending on the
+ OS that you selected when you created the virtual machine. In
+ certain situations, however, you may want to change the
+ preconfigured defaults.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="settings-display">
+
+ <title>Display Settings</title>
+
+ <para>
+ The following tabs are available for configuring the display for a
+ virtual machine.
+ </para>
+
+ <sect2 id="settings-screen">
+
+ <title>Screen Tab</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Video Memory:</emphasis> Sets the size
+ of the memory provided by the virtual graphics card
+ available to the guest, in MB. As with the main memory, the
+ specified amount will be allocated from the host's resident
+ memory. Based on the amount of video memory, higher
+ resolutions and color depths may be available.
+ </para>
+
+ <para>
+ The GUI will show a warning if the amount of video memory is
+ too small to be able to switch the VM into full screen mode.
+ The minimum value depends on the number of virtual monitors,
+ the screen resolution and the color depth of the host
+ display as well as on the use of <emphasis>3D
+ acceleration</emphasis> and <emphasis>2D video
+ acceleration</emphasis>. A rough estimate is
+ (<emphasis>color depth</emphasis> / 8) x <emphasis>vertical
+ pixels</emphasis> x <emphasis>horizontal pixels</emphasis> x
+ <emphasis>number of screens</emphasis> = <emphasis>number of
+ bytes</emphasis>. Extra memory may be required if display
+ acceleration is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Monitor Count:</emphasis> With this
+ setting, &product-name; can provide more than one virtual
+ monitor to a virtual machine. If a guest OS supports
+ multiple attached monitors, &product-name; can pretend that
+ multiple virtual monitors are present. Up to eight such
+ virtual monitors are supported.
+ </para>
+
+ <para>
+ The output of the multiple monitors are displayed on the
+ host in multiple VM windows which are running side by side.
+ However, in full screen and seamless mode, they use the
+ available physical monitors attached to the host. As a
+ result, for full screen and seamless modes to work with
+ multiple monitors, you will need at least as many physical
+ monitors as you have virtual monitors configured, or
+ &product-name; will report an error.
+ </para>
+
+ <para>
+ You can configure the relationship between guest and host
+ monitors using the <emphasis role="bold">View</emphasis>
+ menu by pressing Host key + Home when you are in full screen
+ or seamless mode.
+ </para>
+
+ <para>
+ See also <xref linkend="KnownIssues" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Scale Factor:</emphasis> Enables
+ scaling of the display size. For multiple monitor displays,
+ you can set the scale factor for individual monitors, or
+ globally for all of the monitors. Use the slider to select a
+ scaling factor up to 200%.
+ </para>
+
+ <para>
+ You can set a default scale factor for all VMs. Use the
+ <emphasis role="bold">Display</emphasis> tab in the Global
+ Settings dialogs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Graphics Controller:</emphasis>
+ Specifies the graphics adapter type used by the guest VM.
+ Note that you must install the Guest Additions on the guest
+ VM to specify the VBoxSVGA or VMSVGA graphics controller.
+ The following options are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VBoxSVGA:</emphasis> The default
+ graphics controller for new VMs that use Windows 7 or
+ later.
+ </para>
+
+ <para>
+ This graphics controller improves performance and 3D
+ support when compared to the legacy VBoxVGA option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VBoxVGA:</emphasis> Use this
+ graphics controller for legacy guest OSes. This is the
+ default graphics controller for Windows versions before
+ Windows 7 and for Oracle Solaris.
+ </para>
+
+ <para>
+ 3D acceleration is not supported for this graphics
+ controller.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VMSVGA:</emphasis> Use this
+ graphics controller to emulate a VMware SVGA graphics
+ device. This is the default graphics controller for
+ Linux guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">None:</emphasis> Does not emulate
+ a graphics adapter type.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable 3D Acceleration:</emphasis> If
+ a virtual machine has Guest Additions installed, you can
+ select here whether the guest should support accelerated 3D
+ graphics. See <xref linkend="guestadd-3d" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable 2D Video
+ Acceleration:</emphasis> If a virtual machine with Microsoft
+ Windows has Guest Additions installed, you can select here
+ whether the guest should support accelerated 2D video
+ graphics. See <xref linkend="guestadd-2d" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="settings-remote-display">
+
+ <title>Remote Display Tab</title>
+
+ <para>
+ On the <emphasis role="bold">Remote Display</emphasis> tab, if
+ the VirtualBox Remote Display Extension (VRDE) is installed, you
+ can enable the VRDP server that is built into &product-name;.
+ This enables you to connect to the console of the virtual
+ machine remotely with any standard RDP viewer, such as
+ <command>mstsc.exe</command> that comes with Microsoft Windows.
+ On Linux and Oracle Solaris systems you can use the standard
+ open source <command>rdesktop</command> program. These features
+ are described in <xref linkend="vrde" />.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Server:</emphasis> Select this
+ check box and configure settings for the remote display
+ connection.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="settings-capture">
+
+ <title>Recording Tab</title>
+
+ <para>
+ On the <emphasis role="bold">Recording</emphasis> tab you can
+ enable video and audio recording for a virtual machine and
+ change related settings. Note that these features can be enabled
+ and disabled while a VM is running.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Recording:</emphasis> Select
+ this check box and select a <emphasis role="bold">Recording
+ Mode</emphasis> option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Recording Mode:</emphasis> You can
+ choose to record video, audio, or both video and audio.
+ </para>
+
+ <para>
+ Some settings on the
+ <emphasis role="bold">Recording</emphasis> tab may be grayed
+ out, depending on the <emphasis role="bold">Recording
+ Mode</emphasis> setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">File Path:</emphasis> The file where
+ the recording is saved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Frame Size:</emphasis> The video
+ resolution of the recorded video, in pixels. The drop-down
+ list enables you to select from common frame sizes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Frame Rate:</emphasis> Use the slider
+ to set the maximum number of video frames per second (FPS)
+ to record. Frames that have a higher frequency are skipped.
+ Increasing this value reduces the number of skipped frames
+ and increases the file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Video Quality:</emphasis> Use the
+ slider to set the the bit rate of the video in kilobits per
+ second. Increasing this value improves the appearance of the
+ video at the cost of an increased file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Audio Quality:</emphasis> Use the
+ slider to set the quality of the audio recording. Increasing
+ this value improves the audio quality at the cost of an
+ increased file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Screens:</emphasis> For a multiple
+ monitor display, you can select which screens to record
+ video from.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ As you adjust the video and audio recording settings, the
+ approximate output file size for a five minute video is shown.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="settings-storage">
+
+ <title>Storage Settings</title>
+
+ <para>
+ The <emphasis role="bold">Storage</emphasis> category in the VM
+ settings enables you to connect virtual hard disk, CD/DVD, and
+ floppy images and drives to your virtual machine.
+ </para>
+
+ <para>
+ In a real computer, so-called <emphasis>storage
+ controllers</emphasis> connect physical disk drives to the rest of
+ the computer. Similarly, &product-name; presents virtual storage
+ controllers to a virtual machine. Under each controller, the
+ virtual devices, such as hard disks, CD/DVD or floppy drives,
+ attached to the controller are shown.
+ </para>
+
+ <note>
+ <para>
+ This section gives a quick introduction to the &product-name;
+ storage settings. See <xref linkend="storage" /> for a full
+ description of the available storage settings in &product-name;.
+ </para>
+ </note>
+
+ <para>
+ If you have used the <emphasis role="bold">Create VM</emphasis>
+ wizard to create a machine, you will normally see something like
+ the following:
+ </para>
+
+ <figure id="fig-storage-settings">
+ <title>Storage Settings for a Virtual Machine</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-settings-harddisk.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ Depending on the guest OS type that you selected when you created
+ the VM, a new VM includes the following storage devices:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">IDE controller.</emphasis> A virtual
+ CD/DVD drive is attached to device 0 on the secondary channel
+ of the IDE controller.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">SATA controller.</emphasis> This is a
+ modern type of storage controller for higher hard disk data
+ throughput, to which the virtual hard disks are attached.
+ Initially you will normally have one such virtual disk, but as
+ shown in the previous screenshot, you can have more than one.
+ Each is represented by a disk image file, such as a VDI file
+ in this example.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you created your VM with an older version of &product-name;,
+ the default storage layout may differ. You might then only have an
+ IDE controller to which both the CD/DVD drive and the hard disks
+ have been attached. This might also apply if you selected an older
+ OS type when you created the VM. Since older OSes do not support
+ SATA without additional drivers, &product-name; will make sure
+ that no such devices are present initially. See
+ <xref linkend="harddiskcontrollers" />.
+ </para>
+
+ <para>
+ &product-name; also provides a <emphasis>floppy
+ controller</emphasis>. You cannot add devices other than floppy
+ drives to this controller. Virtual floppy drives, like virtual
+ CD/DVD drives, can be connected to either a host floppy drive, if
+ you have one, or a disk image, which in this case must be in RAW
+ format.
+ </para>
+
+ <para>
+ You can modify these media attachments freely. For example, if you
+ wish to copy some files from another virtual disk that you
+ created, you can connect that disk as a second hard disk, as in
+ the above screenshot. You could also add a second virtual CD/DVD
+ drive, or change where these items are attached. The following
+ options are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To <emphasis role="bold">add another virtual hard disk, or a
+ CD/DVD or floppy drive</emphasis>, select the storage
+ controller to which it should be added (such as IDE, SATA,
+ SCSI, SAS, floppy controller) and then click the
+ <emphasis role="bold">Add Disk</emphasis> button below the
+ tree. You can then either select <emphasis role="bold">Optical
+ Drive</emphasis> or <emphasis role="bold">Hard
+ Disk</emphasis>. If you clicked on a floppy controller, you
+ can add a floppy drive instead. Alternatively, right-click on
+ the storage controller and select a menu item there.
+ </para>
+
+ <para>
+ A dialog is displayed, enabling you to select an existing disk
+ image file or to create a new disk image file. Depending on
+ the type of disk image, the dialog is called
+ <emphasis role="bold">Hard Disk Selector</emphasis>,
+ <emphasis role="bold">Optical Disk Selector</emphasis>, or
+ <emphasis role="bold">Floppy Disk Selector</emphasis>.
+ </para>
+
+ <para>
+ See <xref linkend="vdidetails"/> for information on the image
+ file types that are supported by &product-name;.
+ </para>
+
+ <para>
+ For virtual CD/DVD drives, the image files will typically be
+ in the standard ISO format instead. Most commonly, you will
+ select this option when installing an OS from an ISO file that
+ you have obtained from the Internet. For example, most Linux
+ distributions are available in this way.
+ </para>
+
+ <para>
+ Depending on the type of disk image, you can set the following
+ <emphasis role="bold">Attributes</emphasis> for the disk image
+ in the right part of the Storage settings page:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">device slot</emphasis> of the
+ controller that the virtual disk is connected to. IDE
+ controllers have four slots: primary device 0, primary
+ device 1, secondary device 0, and secondary device 1. By
+ contrast, SATA and SCSI controllers offer you up to 30
+ slots for attaching virtual devices.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Solid-state Drive</emphasis>
+ presents a virtual disk to the guest as a solid-state
+ device.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Hot-pluggable</emphasis> presents a
+ virtual disk to the guest as a hot-pluggable device.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For virtual CD/DVD drives, you can select
+ <emphasis role="bold">Live CD/DVD</emphasis>. This means
+ that the virtual optical disk is not removed from when the
+ guest system ejects it.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ To <emphasis role="bold">remove an attachment</emphasis>,
+ either select it and click on the
+ <emphasis role="bold">Remove</emphasis> icon at the bottom, or
+ right-click on it and select the menu item.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Removable media, such as CD/DVDs and floppies, can be changed
+ while the guest is running. Since the
+ <emphasis role="bold">Settings</emphasis> dialog is not available
+ at that time, you can also access these settings from the
+ <emphasis role="bold">Devices</emphasis> menu of your virtual
+ machine window.
+ </para>
+
+ </sect1>
+
+ <sect1 id="settings-audio">
+
+ <title>Audio Settings</title>
+
+ <para>
+ The <emphasis role="bold">Audio</emphasis> section in a virtual
+ machine's <emphasis role="bold">Settings</emphasis> window
+ determines whether the VM will detect a connected sound card, and
+ if the audio output should be played on the host system.
+ </para>
+
+ <para>
+ To enable audio for a guest, select the
+ <emphasis role="bold">Enable Audio</emphasis> check box. The
+ following settings are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Audio Driver:</emphasis> The audio
+ driver that &product-name; uses on the host. On a Linux host,
+ depending on your host configuration, you can select between
+ the OSS, ALSA, or the PulseAudio subsystem. On newer Linux
+ distributions, the PulseAudio subsystem is preferred.
+ </para>
+
+ <para>
+ Only OSS is supported on Oracle Solaris hosts. The Oracle
+ Solaris Audio audio backend is no longer supported on Oracle
+ Solaris hosts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Audio Controller:</emphasis> You can
+ choose between the emulation of an Intel AC'97 controller, an
+ Intel HD Audio controller, or a SoundBlaster 16 card.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Audio Output:</emphasis> Enables
+ audio output only for the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable Audio Input:</emphasis> Enables
+ audio input only for the VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="settings-network">
+
+ <title>Network Settings</title>
+
+ <para>
+ The <emphasis role="bold">Network</emphasis> section in a virtual
+ machine's <emphasis role="bold">Settings</emphasis> window enables
+ you to configure how &product-name; presents virtual network cards
+ to your VM, and how they operate.
+ </para>
+
+ <para>
+ When you first create a virtual machine, &product-name; by default
+ enables one virtual network card and selects the Network Address
+ Translation (NAT) mode for it. This way the guest can connect to
+ the outside world using the host's networking and the outside
+ world can connect to services on the guest which you choose to
+ make visible outside of the virtual machine.
+ </para>
+
+ <para>
+ This default setup is good for the majority of &product-name;
+ users. However, &product-name; is extremely flexible in how it can
+ virtualize networking. It supports many virtual network cards per
+ virtual machine. The first four virtual network cards can be
+ configured in detail in the VirtualBox Manager window. Additional
+ network cards can be configured using the
+ <command>VBoxManage</command> command.
+ </para>
+
+ <para>
+ Many networking options are available. See
+ <xref linkend="networkingdetails" /> for more information.
+ </para>
+
+ </sect1>
+
+ <sect1 id="serialports">
+
+ <title>Serial Ports</title>
+
+ <para>
+ &product-name; supports the use of virtual serial ports in a
+ virtual machine.
+ </para>
+
+ <para>
+ Ever since the original IBM PC, personal computers have been
+ equipped with one or two serial ports, also called COM ports by
+ DOS and Windows. Serial ports were commonly used with modems, and
+ some computer mice used to be connected to serial ports before USB
+ became commonplace.
+ </para>
+
+ <para>
+ While serial ports are no longer as common as they used to be,
+ there are still some important uses left for them. For example,
+ serial ports can be used to set up a primitive network over a
+ null-modem cable, in case Ethernet is not available. Also, serial
+ ports are indispensable for system programmers needing to do
+ kernel debugging, since kernel debugging software usually
+ interacts with developers over a serial port. With virtual serial
+ ports, system programmers can do kernel debugging on a virtual
+ machine instead of needing a real computer to connect to.
+ </para>
+
+ <para>
+ If a virtual serial port is enabled, the guest OS sees a standard
+ 16550A compatible UART device. Other UART types can be configured
+ using the <command>VBoxManage modifyvm</command> command. Both
+ receiving and transmitting data is supported. How this virtual
+ serial port is then connected to the host is configurable, and the
+ details depend on your host OS.
+ </para>
+
+ <para>
+ You can use either the Settings tabs or the
+ <command>VBoxManage</command> command to set up virtual serial
+ ports. For the latter, see <xref linkend="vboxmanage-modifyvm" />
+ for information on the <option>--uart</option>,
+ <option>--uartmode</option> and <option>--uarttype</option>
+ options.
+ </para>
+
+ <para>
+ You can configure up to four virtual serial ports per virtual
+ machine. For each device, you must set the following:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Port Number:</emphasis> This determines
+ the serial port that the virtual machine should see. For best
+ results, use the traditional values as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ COM1: I/O base 0x3F8, IRQ 4
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ COM2: I/O base 0x2F8, IRQ 3
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ COM3: I/O base 0x3E8, IRQ 4
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ COM4: I/O base 0x2E8, IRQ 3
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can also configure a user-defined serial port. Enter an
+ I/O base address and interrupt (IRQ).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Port Mode:</emphasis> What the virtual
+ port is connected to. For each virtual serial port, you have
+ the following options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Disconnected:</emphasis> The guest
+ will see the device, but it will behave as if no cable had
+ been connected to it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Device:</emphasis> Connects the
+ virtual serial port to a physical serial port on your
+ host. On a Windows host, this will be a name like
+ <literal>COM1</literal>. On Linux or Oracle Solaris hosts,
+ it will be a device node like
+ <filename>/dev/ttyS0</filename>. &product-name; will then
+ simply redirect all data received from and sent to the
+ virtual serial port to the physical device.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Pipe:</emphasis> Configure
+ &product-name; to connect the virtual serial port to a
+ software pipe on the host. This depends on your host OS,
+ as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On a Windows host, data will be sent and received
+ through a named pipe. The pipe name must be in the
+ format
+ <filename>\\.\pipe\<replaceable>name</replaceable></filename>
+ where <replaceable>name</replaceable> should identify
+ the virtual machine but may be freely chosen.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On a Mac OS, Linux, or Oracle Solaris host, a local
+ domain socket is used instead. The socket filename
+ must be chosen such that the user running
+ &product-name; has sufficient privileges to create and
+ write to it. The <filename>/tmp</filename> directory
+ is often a good candidate.
+ </para>
+
+ <para>
+ On Linux there are various tools which can connect to
+ a local domain socket or create one in server mode.
+ The most flexible tool is <command>socat</command> and
+ is available as part of many distributions.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In this case, you can configure whether &product-name;
+ should create the named pipe, or the local domain socket
+ non-Windows hosts, itself or whether &product-name; should
+ assume that the pipe or socket exists already. With the
+ <command>VBoxManage</command> command-line options, this
+ is referred to as server mode or client mode,
+ respectively.
+ </para>
+
+ <para>
+ For a direct connection between two virtual machines,
+ corresponding to a null-modem cable, simply configure one
+ VM to create a pipe or socket and another to attach to it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Raw File:</emphasis> Send the
+ virtual serial port output to a file. This option is very
+ useful for capturing diagnostic output from a guest. Any
+ file may be used for this purpose, as long as the user
+ running &product-name; has sufficient privileges to create
+ and write to the file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">TCP Socket:</emphasis> Useful for
+ forwarding serial traffic over TCP/IP, acting as a server,
+ or it can act as a TCP client connecting to other servers.
+ This option enables a remote machine to directly connect
+ to the guest's serial port using TCP.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">TCP Server:</emphasis> Deselect
+ the <emphasis role="bold">Connect to Existing
+ Pipe/Socket</emphasis> check box and specify the port
+ number in the
+ <emphasis role="bold">Path/Address</emphasis> field.
+ This is typically 23 or 2023. Note that on UNIX-like
+ systems you will have to use a port a number greater
+ than 1024 for regular users.
+ </para>
+
+ <para>
+ The client can use software such as
+ <command>PuTTY</command> or the
+ <command>telnet</command> command line tool to access
+ the TCP Server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">TCP Client:</emphasis> To create
+ a virtual null-modem cable over the Internet or LAN,
+ the other side can connect using TCP by specifying
+ <literal><replaceable>hostname</replaceable>:<replaceable>port</replaceable></literal>
+ in the <emphasis role="bold">Path/Address</emphasis>
+ field. The TCP socket will act in client mode if you
+ select the <emphasis role="bold">Connect to Existing
+ Pipe/Socket</emphasis> check box.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ Up to four serial ports can be configured per virtual machine, but
+ you can pick any port numbers out of the above. However, serial
+ ports cannot reliably share interrupts. If both ports are to be
+ used at the same time, they must use different interrupt levels,
+ for example COM1 and COM2, but not COM1 and COM3.
+ </para>
+
+ </sect1>
+
+ <sect1 id="usb-support">
+
+ <title>USB Support</title>
+
+ <sect2 id="settings-usb">
+
+ <title>USB Settings</title>
+
+ <para>
+ The <emphasis role="bold">USB</emphasis> section in a virtual
+ machine's <emphasis role="bold">Settings</emphasis> window
+ enables you to configure &product-name;'s sophisticated USB
+ support.
+ </para>
+
+ <para>
+ &product-name; can enable virtual machines to access the USB
+ devices on your host directly. To achieve this, &product-name;
+ presents the guest OS with a virtual USB controller. As soon as
+ the guest system starts using a USB device, it will appear as
+ unavailable on the host.
+ </para>
+
+ <note>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Be careful with USB devices that are currently in use on
+ the host. For example, if you allow your guest to connect
+ to your USB hard disk that is currently mounted on the
+ host, when the guest is activated, it will be disconnected
+ from the host without a proper shutdown. This may cause
+ data loss.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Oracle Solaris hosts have a few known limitations
+ regarding USB support. See <xref linkend="KnownIssues" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </note>
+
+ <para>
+ In addition to allowing a guest access to your local USB
+ devices, &product-name; even enables your guests to connect to
+ remote USB devices by use of the VirtualBox Remote Desktop
+ Extension (VRDE). See <xref linkend="usb-over-rdp" />.
+ </para>
+
+ <para>
+ To enable USB for a VM, select the <emphasis role="bold">Enable
+ USB Controller</emphasis> check box. The following settings are
+ available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB Controller:</emphasis> Selects a
+ controller with the specified level of USB support, as
+ follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ OHCI for USB 1.1
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EHCI for USB 2.0. This also enables OHCI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ xHCI for USB 3.0. This supports all USB speeds.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ The xHCI and EHCI controllers are shipped as an
+ &product-name; extension package, which must be installed
+ separately. See <xref linkend="intro-installing" />.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB Device Filters:</emphasis> When
+ USB support is enabled for a VM, you can determine in detail
+ which devices will be automatically attached to the guest.
+ For this, you can create filters by specifying certain
+ properties of the USB device. USB devices with a matching
+ filter will be automatically passed to the guest once they
+ are attached to the host. USB devices without a matching
+ filter can be passed manually to the guest, for example by
+ using the <emphasis role="bold">Devices</emphasis>,
+ <emphasis role="bold">USB</emphasis> menu.
+ </para>
+
+ <para>
+ Clicking on the <emphasis role="bold">+</emphasis> button to
+ the right of the <emphasis role="bold">USB Device
+ Filters</emphasis> window creates a new filter. You can give
+ the filter a name, for later reference, and specify the
+ filter criteria. The more criteria you specify, the more
+ precisely devices will be selected. For instance, if you
+ specify only a vendor ID of 046d, all devices produced by
+ Logitech will be available to the guest. If you fill in all
+ fields, on the other hand, the filter will only apply to a
+ particular device model from a particular vendor, and not
+ even to other devices of the same type with a different
+ revision and serial number.
+ </para>
+
+ <para>
+ In detail, the following criteria are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Vendor and Product ID.</emphasis>
+ With USB, each vendor of USB products carries an
+ identification number that is unique world-wide, called
+ the <emphasis>vendor ID</emphasis>. Similarly, each line
+ of products is assigned a <emphasis>product
+ ID</emphasis> number. Both numbers are commonly written
+ in hexadecimal, and a colon separates the vendor from
+ the product ID. For example,
+ <literal>046d:c016</literal> stands for Logitech as a
+ vendor, and the M-UV69a Optical Wheel Mouse product.
+ </para>
+
+ <para>
+ Alternatively, you can also specify
+ <emphasis role="bold">Manufacturer</emphasis> and
+ <emphasis role="bold">Product</emphasis> by name.
+ </para>
+
+ <para>
+ To list all the USB devices that are connected to your
+ host machine with their respective vendor IDs and
+ product IDs, use the following command:
+ </para>
+
+<screen>VBoxManage list usbhost</screen>
+
+ <para>
+ On Windows, you can also see all USB devices that are
+ attached to your system in the Device Manager. On Linux,
+ you can use the <command>lsusb</command> command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Serial Number.</emphasis> While
+ vendor ID and product ID are quite specific to identify
+ USB devices, if you have two identical devices of the
+ same brand and product line, you will also need their
+ serial numbers to filter them out correctly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Remote.</emphasis> This setting
+ specifies whether the device will be local only, remote
+ only, such as over VRDP, or either.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ On a Windows host, you will need to unplug and reconnect a
+ USB device to use it after creating a filter for it.
+ </para>
+
+ <para>
+ As an example, you could create a new USB filter and specify
+ a vendor ID of 046d for Logitech, Inc, a manufacturer index
+ of 1, and "not remote". Then any USB devices on the host
+ system produced by Logitech, Inc with a manufacturer index
+ of 1 will be visible to the guest system.
+ </para>
+
+ <para>
+ Several filters can select a single device. For example, a
+ filter which selects all Logitech devices, and one which
+ selects a particular webcam.
+ </para>
+
+ <para>
+ You can deactivate filters without deleting them by
+ deselecting the check box next to the filter name.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="usb-implementation-notes">
+
+ <title>Implementation Notes for Windows and Linux Hosts</title>
+
+ <para>
+ On Windows hosts, a kernel mode device driver provides USB proxy
+ support. It implements both a USB monitor, which enables
+ &product-name; to capture devices when they are plugged in, and
+ a USB device driver to claim USB devices for a particular
+ virtual machine. System reboots are not necessary after
+ installing the driver. Also, you do not need to replug devices
+ for &product-name; to claim them.
+ </para>
+
+ <para>
+ On supported Linux hosts, &product-name; accesses USB devices
+ through special files in the file system. When &product-name; is
+ installed, these are made available to all users in the
+ <literal>vboxusers</literal> system group. In order to be able
+ to access USB from guest systems, make sure that you are a
+ member of this group.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="shared-folders">
+
+ <title>Shared Folders</title>
+
+ <para>
+ Shared folders enable you to easily exchange data between a
+ virtual machine and your host. This feature requires that the
+ &product-name; Guest Additions be installed in a virtual machine
+ and is described in detail in <xref linkend="sharedfolders" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="user-interface">
+
+ <title>User Interface</title>
+
+ <para>
+ The <emphasis role="bold">User Interface</emphasis> section
+ enables you to change certain aspects of the user interface of
+ this VM.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Menu Bar:</emphasis> This widget enables
+ you to disable menus by clicking on the menu to release it,
+ menu entries by deselecting the check box of the entry to
+ disable it and the complete menu bar by deselecting the
+ rightmost check box.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Mini ToolBar:</emphasis> In full screen
+ or seamless mode, &product-name; can display a small toolbar
+ that contains some of the items that are normally available
+ from the virtual machine's menu bar. This toolbar reduces
+ itself to a small gray line unless you move the mouse over it.
+ With the toolbar, you can return from full screen or seamless
+ mode, control machine execution or enable certain devices. If
+ you do not want to see the toolbar, disable this setting.
+ </para>
+
+ <para>
+ The second setting enables you to show the toolbar at the top
+ of the screen, instead of showing it at the bottom.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Status Bar:</emphasis> This widget
+ enables you to disable icons on the status bar by deselecting
+ the check box of an icon to disable it, to rearrange icons by
+ dragging and dropping the icon, and to disable the complete
+ status bar by deselecting the leftmost check box.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="efi">
+
+ <title>Alternative Firmware (EFI)</title>
+
+ <para>
+ &product-name; includes experimental support for the Extensible
+ Firmware Interface (EFI), which is an industry standard intended
+ to replace the legacy BIOS as the primary interface for
+ bootstrapping computers and certain system services later.
+ </para>
+
+ <para>
+ By default, &product-name; uses the BIOS firmware for virtual
+ machines. To use EFI for a given virtual machine, you can enable
+ EFI in the machine's <emphasis role="bold">Settings</emphasis>
+ dialog. See <xref linkend="settings-motherboard"/>. Alternatively,
+ use the <command>VBoxManage</command> command line interface as
+ follows:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --firmware efi</screen>
+
+ <para>
+ To switch back to using the BIOS:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --firmware bios</screen>
+
+ <para>
+ One notable user of EFI is Apple Mac OS X. More recent Linux
+ versions and Windows releases, starting with Vista, also offer
+ special versions that can be booted using EFI.
+ </para>
+
+ <para>
+ Another possible use of EFI in &product-name; is development and
+ testing of EFI applications, without booting any OS.
+ </para>
+
+ <para>
+ Note that the &product-name; EFI support is experimental and will
+ be enhanced as EFI matures and becomes more widespread. Mac OS X,
+ Linux, and newer Windows guests are known to work fine. Windows 7
+ guests are unable to boot with the &product-name; EFI
+ implementation.
+ </para>
+
+ <sect2 id="efividmode">
+
+ <title>Video Modes in EFI</title>
+
+ <para>
+ EFI provides two distinct video interfaces: GOP (Graphics Output
+ Protocol) and UGA (Universal Graphics Adapter). Modern OSes,
+ such as Mac OS X, generally use GOP, while some older ones still
+ use UGA. &product-name; provides a configuration option to
+ control the graphics resolution for both interfaces, making the
+ difference mostly irrelevant for users.
+ </para>
+
+ <para>
+ The default resolution is 1024x768. To select a graphics
+ resolution for EFI, use the following
+ <command>VBoxManage</command> command:
+ </para>
+
+<screen>VBoxManage setextradata "VM name" VBoxInternal2/EfiGraphicsResolution HxV</screen>
+
+ <para>
+ Determine the horizontal resolution H and the vertical
+ resolution V from the following list of default resolutions:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ VGA
+ </term>
+
+ <listitem>
+ <para>
+ 640x480, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ SVGA
+ </term>
+
+ <listitem>
+ <para>
+ 800x600, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ XGA
+ </term>
+
+ <listitem>
+ <para>
+ 1024x768, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ XGA+
+ </term>
+
+ <listitem>
+ <para>
+ 1152x864, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ HD
+ </term>
+
+ <listitem>
+ <para>
+ 1280x720, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WXGA
+ </term>
+
+ <listitem>
+ <para>
+ 1280x800, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ SXGA
+ </term>
+
+ <listitem>
+ <para>
+ 1280x1024, 32bpp, 5:4
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ SXGA+
+ </term>
+
+ <listitem>
+ <para>
+ 1400x1050, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WXGA+
+ </term>
+
+ <listitem>
+ <para>
+ 1440x900, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ HD+
+ </term>
+
+ <listitem>
+ <para>
+ 1600x900, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ UXGA
+ </term>
+
+ <listitem>
+ <para>
+ 1600x1200, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WSXGA+
+ </term>
+
+ <listitem>
+ <para>
+ 1680x1050, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Full HD
+ </term>
+
+ <listitem>
+ <para>
+ 1920x1080, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WUXGA
+ </term>
+
+ <listitem>
+ <para>
+ 1920x1200, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ DCI 2K
+ </term>
+
+ <listitem>
+ <para>
+ 2048x1080, 32bpp, 19:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Full HD+
+ </term>
+
+ <listitem>
+ <para>
+ 2160x1440, 32bpp, 3:2
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Unnamed
+ </term>
+
+ <listitem>
+ <para>
+ 2304x1440, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ QHD
+ </term>
+
+ <listitem>
+ <para>
+ 2560x1440, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WQXGA
+ </term>
+
+ <listitem>
+ <para>
+ 2560x1600, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ QWXGA+
+ </term>
+
+ <listitem>
+ <para>
+ 2880x1800, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ QHD+
+ </term>
+
+ <listitem>
+ <para>
+ 3200x1800, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WQSXGA
+ </term>
+
+ <listitem>
+ <para>
+ 3200x2048, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ 4K UHD
+ </term>
+
+ <listitem>
+ <para>
+ 3840x2160, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WQUXGA
+ </term>
+
+ <listitem>
+ <para>
+ 3840x2400, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ DCI 4K
+ </term>
+
+ <listitem>
+ <para>
+ 4096x2160, 32bpp, 19:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ HXGA
+ </term>
+
+ <listitem>
+ <para>
+ 4096x3072, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ UHD+
+ </term>
+
+ <listitem>
+ <para>
+ 5120x2880, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WHXGA
+ </term>
+
+ <listitem>
+ <para>
+ 5120x3200, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ WHSXGA
+ </term>
+
+ <listitem>
+ <para>
+ 6400x4096, 32bpp, 16:10
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ HUXGA
+ </term>
+
+ <listitem>
+ <para>
+ 6400x4800, 32bpp, 4:3
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ 8K UHD2
+ </term>
+
+ <listitem>
+ <para>
+ 7680x4320, 32bpp, 16:9
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ If this list of default resolution does not cover your needs,
+ see <xref linkend="customvesa" />. Note that the color depth
+ value specified in a custom video mode must be specified. Color
+ depths of 8, 16, 24, and 32 are accepted. EFI assumes a color
+ depth of 32 by default.
+ </para>
+
+ <para>
+ The EFI default video resolution settings can only be changed
+ when the VM is powered off.
+ </para>
+
+ </sect2>
+
+ <sect2 id="efibootargs">
+
+ <title>Specifying Boot Arguments</title>
+
+ <para>
+ It is currently not possible to manipulate EFI variables from
+ within a running guest. For example, setting the
+ <literal>boot-args</literal> variable by running the
+ <command>nvram</command> tool in a Mac OS X guest will not work.
+ As an alternative method,
+ <literal>VBoxInternal2/EfiBootArgs</literal> extradata can be
+ passed to a VM in order to set the <literal>boot-args</literal>
+ variable. To change the <literal>boot-args</literal> EFI
+ variable, use the following command:
+ </para>
+
+<screen>VBoxManage setextradata "VM name" VBoxInternal2/EfiBootArgs &lt;value&gt;</screen>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_ChangeLog.xml b/doc/manual/en_US/user_ChangeLog.xml
new file mode 100644
index 00000000..5a2567e7
--- /dev/null
+++ b/doc/manual/en_US/user_ChangeLog.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="ChangeLog">
+
+ <title>Change Log</title>
+
+ <para>
+ This section summarizes the changes between &product-name; versions.
+ Note that this change log is not exhaustive and not all changes are
+ listed.
+ </para>
+
+ <para>
+ &product-name; version numbers consist of three numbers separated by
+ dots where the first and second number represent the major version
+ and the third number the minor version. Minor version numbers of
+ official releases are always even. An odd minor version number
+ represents an internal development or test build. In addition, each
+ build contains a revision number.
+ </para>
+
+ <xi:include href="user_ChangeLogImpl.xml" xpointer="xpointer(/chapter/*)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <sect1 id="change-log-older">
+
+ <title>Change Logs for Legacy Versions</title>
+
+ <para>
+ To view the change log for a legacy version of VirtualBox see the
+ documentation for the relevant &product-name; release.
+ </para>
+
+ <para>
+ Change logs are also available at:
+ </para>
+
+ <para>
+ <ulink url="https://www.virtualbox.org/wiki/Changelog" />.
+ </para>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Frontends.xml b/doc/manual/en_US/user_Frontends.xml
new file mode 100644
index 00000000..399b12f0
--- /dev/null
+++ b/doc/manual/en_US/user_Frontends.xml
@@ -0,0 +1,1210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="remotevm">
+
+ <title>Remote Virtual Machines</title>
+
+ <sect1 id="vrde">
+
+ <title>Remote Display (VRDP Support)</title>
+
+ <para>
+ &product-name; can display virtual machines remotely, meaning that
+ a virtual machine can execute on one computer even though the
+ machine will be displayed on a second computer, and the machine
+ will be controlled from there as well, as if the virtual machine
+ was running on that second computer.
+ </para>
+
+ <para>
+ For maximum flexibility, &product-name; implements remote machine
+ display through a generic extension interface called the
+ VirtualBox Remote Desktop Extension (VRDE). The base open source
+ &product-name; package only provides this interface, while
+ implementations can be supplied by third parties with
+ &product-name; extension packages, which must be installed
+ separately from the base package. See
+ <xref linkend="intro-installing" />.
+ </para>
+
+ <para>
+ Oracle provides support for the VirtualBox Remote Display Protocol
+ (VRDP) in such an &product-name; extension package.
+ </para>
+
+ <para>
+ VRDP is a backwards-compatible extension to Microsoft's Remote
+ Desktop Protocol (RDP). As a result, you can use any standard RDP
+ client to control the remote VM.
+ </para>
+
+ <para>
+ Even when the extension is installed, the VRDP server is disabled
+ by default. It can easily be enabled on a per-VM basis either in
+ the VirtualBox Manager in the
+ <emphasis role="bold">Display</emphasis> settings, see
+ <xref linkend="settings-display" />, or with the
+ <command>VBoxManage</command> command, as follows:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrde on</screen>
+
+ <para>
+ By default, the VRDP server uses TCP port <literal>3389</literal>.
+ You will need to change the default port if you run more than one
+ VRDP server, since the port can only be used by one server at a
+ time. You might also need to change it on Windows hosts since the
+ default port might already be used by the RDP server that is built
+ into Windows itself. Ports 5000 through 5050 are typically not
+ used and might be a good choice.
+ </para>
+
+ <para>
+ The port can be changed either in the
+ <emphasis role="bold">Display</emphasis> settings of the graphical
+ user interface or with the <option>--vrdeport</option> option of
+ the <command>VBoxManage modifyvm</command> command. You can
+ specify a comma-separated list of ports or ranges of ports. Use a
+ dash between two port numbers to specify a range. The VRDP server
+ will bind to <emphasis>one</emphasis> of the available ports from
+ the specified list. For example, <command>VBoxManage modifyvm
+ <replaceable>VM-name</replaceable> --vrdeport
+ 5000,5010-5012</command> configures the server to bind to one of
+ the ports 5000, 5010, 5011, or 5012. See
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <para>
+ The actual port used by a running VM can be either queried with
+ the <command>VBoxManage showvminfo</command> command or seen in
+ the GUI on the <emphasis role="bold">Runtime</emphasis> tab of the
+ <emphasis role="bold">Session Information</emphasis> dialog, which
+ is accessible from the <emphasis role="bold">Machine</emphasis>
+ menu of the VM window.
+ </para>
+
+ <para>
+ &product-name; supports IPv6. If the host OS supports IPv6 the
+ VRDP server will automatically listen for IPv6 connections in
+ addition to IPv4.
+ </para>
+
+ <sect2 id="rdp-viewers">
+
+ <title>Common Third-Party RDP Viewers</title>
+
+ <para>
+ Since VRDP is backwards-compatible to RDP, you can use any
+ standard RDP viewer to connect to such a remote virtual machine.
+ For this to work, you must specify the IP address of your
+ <emphasis>host</emphasis> system, not of the virtual machine, as
+ the server address to connect to. You must also specify the port
+ number that the VRDP server is using.
+ </para>
+
+ <para>
+ The following examples are for the most common RDP viewers:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On Windows, you can use the Microsoft Terminal Services
+ Connector, <command>mstsc.exe</command>, that is included
+ with Windows. Press the Windows key + R, to display the
+ <emphasis role="bold">Run</emphasis> dialog. Enter
+ <command>mstsc</command> to start the program. You can also
+ find the program in <emphasis role="bold">Start</emphasis>,
+ <emphasis role="bold">All Programs</emphasis>,
+ <emphasis role="bold">Accessories</emphasis>,
+ <emphasis role="bold">Remote Desktop Connection</emphasis>.
+ If you use the <emphasis role="bold">Run</emphasis> dialog,
+ you can enter options directly. For example:
+ </para>
+
+<screen>mstsc 1.2.3.4:3389</screen>
+
+ <para>
+ Replace <literal>1.2.3.4</literal> with the host IP address,
+ and <literal>3389</literal> with a different port, if
+ necessary.
+ </para>
+
+ <note>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ IPv6 addresses must be enclosed in square brackets to
+ specify a port. For example: <literal>mstsc
+ [fe80::1:2:3:4]:3389</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When connecting to localhost in order to test the
+ connection, the addresses <literal>localhost</literal>
+ and <literal>127.0.0.1</literal> might not work using
+ <command>mstsc.exe</command>. Instead, the address
+ <literal>127.0.0.2[:3389]</literal> has to be used.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>
+ On other systems, you can use the standard open source
+ <command>rdesktop</command> program. This ships with most
+ Linux distributions, but &product-name; also comes with a
+ modified variant of <command>rdesktop</command> for remote
+ USB support. See <xref linkend="usb-over-rdp" />.
+ </para>
+
+ <para>
+ With <command>rdesktop</command>, use a command line such as
+ the following:
+ </para>
+
+<screen>$ rdesktop -a 16 -N 1.2.3.4:3389</screen>
+
+ <para>
+ Replace <literal>1.2.3.4</literal> with the host IP address,
+ and <literal>3389</literal> with a different port, if
+ necessary. The <option>-a 16</option> option requests a
+ color depth of 16 bits per pixel, which we recommend. For
+ best performance, after installation of the guest operating
+ system, you should set its display color depth to the same
+ value. The <option>-N</option> option enables use of the
+ NumPad keys.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can use the Remmina remote desktop client with VRDP.
+ This application is included with some Linux distributions,
+ such as Debian and Ubuntu.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you run the KDE desktop, you can use
+ <command>krdc</command>, the KDE RDP viewer. A typical
+ command line is as follows:
+ </para>
+
+<screen>$ krdc rdp://1.2.3.4:3389</screen>
+
+ <para>
+ Replace <literal>1.2.3.4</literal> with the host IP address,
+ and <literal>3389</literal> with a different port, if
+ necessary. The <literal>rdp:// </literal> prefix is required
+ with <command>krdc</command> to switch it into RDP mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ With Sun Ray thin clients you can use
+ <command>uttsc</command>, which is part of the Sun Ray
+ Windows Connector package. See the Sun Ray documentation for
+ details.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxheadless">
+
+ <title>VBoxHeadless, the Remote Desktop Server</title>
+
+ <para>
+ While any VM started from the VirtualBox Manager is capable of
+ running virtual machines remotely, it is not convenient to have
+ to run the full GUI if you never want to have VMs displayed
+ locally in the first place. In particular, if you are running
+ server hardware whose only purpose is to host VMs, and all your
+ VMs are supposed to run remotely over VRDP, then it is pointless
+ to have a graphical user interface on the server at all. This is
+ especially true for Linux or Oracle Solaris hosts, as the
+ VirtualBox Manager comes with dependencies on the Qt and SDL
+ libraries. This is inconvenient if you would rather not have the
+ X Window system on your server at all.
+ </para>
+
+ <para>
+ &product-name; therefore comes with a front-end called
+ <command>VBoxHeadless</command>, which produces no visible
+ output on the host at all, but still can optionally deliver VRDP
+ data. This front-end has no dependencies on the X Window system
+ on Linux and Oracle Solaris hosts.
+ </para>
+
+ <note>
+ <para>
+ In legacy releases of &product-name;, the headless server was
+ called <command>VBoxVRDP</command>. For backwards
+ compatibility, the &product-name; installation still includes
+ an executable with that name.
+ </para>
+ </note>
+
+ <para>
+ To start a virtual machine with <command>VBoxHeadless</command>,
+ you have the following options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use the <command>VBoxManage</command> command, as follows:
+ </para>
+
+<screen>$ VBoxManage startvm <replaceable>VM-name</replaceable> --type headless</screen>
+
+ <para>
+ The <option>--type</option> option causes &product-name; to
+ use <command>VBoxHeadless</command> as the front-end to the
+ internal virtualization engine, instead of the Qt front-end.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the <command>VBoxHeadless</command> command, as follows:
+ </para>
+
+<screen>VBoxHeadless --startvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></screen>
+
+ <para>
+ This way of starting the VM helps troubleshooting problems
+ reported by <command>VBoxManage startvm</command>, because
+ you can sometimes see more detailed error messages,
+ especially for early failures before the VM execution is
+ started. In normal situations <command>VBoxManage
+ startvm</command> is preferred, since it runs the VM
+ directly as a background process which has to be done
+ explicitly when directly starting with
+ <command>VBoxHeadless</command>. The full documentation of
+ the command is in <xref linkend="man_vboxheadless"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start <command>VBoxHeadless</command> from the VirtualBox
+ Manager GUI, by pressing the Shift key when starting a
+ virtual machine or by selecting
+ <emphasis role="bold">Headless Start</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ When you use the <command>VBoxHeadless</command> command to
+ start a VM, the VRDP server will be enabled according to the VM
+ configuration. You can override the VM's setting using
+ <option>--vrde</option> command line parameter. To enable the
+ VRDP server, start the VM as follows:
+ </para>
+
+<screen>VBoxHeadless --startvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable> --vrde on</screen>
+
+ <para>
+ To disable the VRDP server:
+ </para>
+
+<screen>VBoxHeadless --startvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable> --vrde off</screen>
+
+ <para>
+ To have the VRDP server enabled depending on the VM
+ configuration, as for other front-ends:
+ </para>
+
+<screen>VBoxHeadless --startvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable> --vrde config</screen>
+
+ <para>
+ This command is the same as the following:
+ </para>
+
+<screen>VBoxHeadless --startvm <replaceable>uuid</replaceable>|<replaceable>vmname</replaceable></screen>
+
+ <para>
+ If you start the VM with <command>VBoxManage startvm</command>
+ then the configuration settings of the VM are always used.
+ </para>
+
+ </sect2>
+
+ <sect2 id="headless-vm-steps">
+
+ <title>Step by Step: Creating a Virtual Machine on a Headless Server</title>
+
+ <para>
+ The following instructions describe how to create a virtual
+ machine on a headless server over a network connection. This
+ example creates a virtual machine, establishes an RDP connection
+ and installs a guest operating system. All of these tasks are
+ done without having to touch the headless server. You need the
+ following prerequisites:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ &product-name; on a server machine with a supported host
+ operating system. The &product-name; Extension Pack for the
+ VRDP server must be installed, see <xref linkend="vrde"/>.
+ The procedures assume a Linux server is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An ISO file accessible from the server, containing the
+ installation data for the guest operating system to install.
+ Windows XP is used in the example.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A terminal connection to that host through which you can
+ access a command line, such as <command>ssh</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An RDP viewer on the remote client. See
+ <xref linkend="rdp-viewers" /> for examples.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Note that on the server machine, since we will only use the
+ headless server, Qt and the X Window system are not required.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ On the headless server, create a new virtual machine. For
+ example:
+ </para>
+
+<screen>VBoxManage createvm --name "Windows XP" --ostype WindowsXP --register</screen>
+
+ <para>
+ If you do not specify <option>--register</option>, you will
+ have to manually use the <command>registervm</command>
+ command later.
+ </para>
+
+ <para>
+ You do not need to specify <option>--ostype</option>, but
+ doing so selects some sensible default values for certain VM
+ parameters. For example, the RAM size and the type of the
+ virtual network device. To get a complete list of supported
+ operating systems you can use the following command:
+ </para>
+
+<screen>VBoxManage list ostypes</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make sure the settings for the VM are appropriate for the
+ guest operating system that we will install. For example:
+ </para>
+
+<screen>VBoxManage modifyvm "Windows XP" --memory 256 --acpi on --boot1 dvd --nic1 nat</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create a virtual hard disk for the VM. For example, to
+ create a 10 GB virtual hard disk:
+ </para>
+
+<screen>VBoxManage createhd --filename "WinXP.vdi" --size 10000</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add an IDE Controller to the new VM. For example:
+ </para>
+
+<screen>VBoxManage storagectl "Windows XP" --name "IDE Controller"
+ --add ide --controller PIIX4</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Set the VDI file you created as the first virtual hard disk
+ of the new VM. For example:
+ </para>
+
+<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
+ --port 0 --device 0 --type hdd --medium "WinXP.vdi"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Attach the ISO file that contains the operating system
+ installation that you want to install later to the virtual
+ machine. This is done so that the VM can boot from it.
+ </para>
+
+<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
+ --port 0 --device 1 --type dvddrive --medium /full/path/to/iso.iso</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Enable the VirtualBox Remote Desktop Extension, the VRDP
+ server, as follows:
+ </para>
+
+<screen>VBoxManage modifyvm "Windows XP" --vrde on</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start the virtual machine using the
+ <command>VBoxHeadless</command> command:
+ </para>
+
+<screen>VBoxHeadless --startvm "Windows XP"</screen>
+
+ <para>
+ If the configuration steps worked, you should see a
+ copyright notice. If you are returned to the command line,
+ then something did not work correctly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On the client machine, start the RDP viewer and connect to
+ the server. See <xref linkend="rdp-viewers" /> for details
+ of how to use various common RDP viewers.
+ </para>
+
+ <para>
+ The installation routine of your guest operating system
+ should be displayed in the RDP viewer.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="usb-over-rdp">
+
+ <title>Remote USB</title>
+
+ <para>
+ As a special feature additional to the VRDP support,
+ &product-name; also supports remote USB devices over the wire.
+ That is, an &product-name; guest that runs on one computer can
+ access the USB devices of the remote computer on which the VRDP
+ data is being displayed the same way as USB devices that are
+ connected to the actual host. This enables running of virtual
+ machines on an &product-name; host that acts as a server, where
+ a client can connect from elsewhere that needs only a network
+ adapter and a display capable of running an RDP viewer. When USB
+ devices are plugged into the client, the remote &product-name;
+ server can access them.
+ </para>
+
+ <para>
+ For these remote USB devices, the same filter rules apply as for
+ other USB devices. See <xref linkend="settings-usb" />. All you
+ have to do is specify Remote, or Any, when setting up these
+ rules.
+ </para>
+
+ <para>
+ Accessing remote USB devices is only possible if the RDP client
+ supports this extension. On Linux and Oracle Solaris hosts, the
+ &product-name; installation provides a suitable VRDP client
+ called <command>rdesktop-vrdp</command>. Some versions of
+ <command>uttsc</command>, a client tailored for the use with Sun
+ Ray thin clients, also support accessing remote USB devices. RDP
+ clients for other platforms will be provided in future
+ &product-name; versions.
+ </para>
+
+ <para>
+ To make a remote USB device available to a VM,
+ <command>rdesktop-vrdp</command> should be started as follows:
+ </para>
+
+<screen>rdesktop-vrdp -r usb -a 16 -N my.host.address</screen>
+
+ <para>
+ See <xref linkend="ts_usb-linux" /> for further details on how
+ to properly set up the permissions for USB devices. Furthermore
+ it is advisable to disable automatic loading of any host driver
+ on the remote host which might work on USB devices to ensure
+ that the devices are accessible by the RDP client. If the setup
+ was properly done on the remote host, plug and unplug events are
+ visible in the VBox.log file of the VM.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vbox-auth">
+
+ <title>RDP Authentication</title>
+
+ <para>
+ For each virtual machine that is remotely accessible using RDP,
+ you can individually determine if and how client connections are
+ authenticated. For this, use the <command>VBoxManage
+ modifyvm</command> command with the
+ <option>--vrdeauthtype</option> option. See
+ <xref linkend="vboxmanage-modifyvm" />. The following methods of
+ authentication are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">null</emphasis> method means that
+ there is no authentication at all. Any client can connect to
+ the VRDP server and thus the virtual machine. This is very
+ insecure and only to be recommended for private networks.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">external</emphasis> method
+ provides external authentication through a special
+ authentication library. &product-name; ships with two
+ special authentication libraries:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ The default authentication library,
+ <command>VBoxAuth</command>, authenticates against user
+ credentials of the hosts. Depending on the host
+ platform, this means the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On Linux hosts, <command>VBoxAuth.so</command>
+ authenticates users against the host's PAM system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Windows hosts, <command>VBoxAuth.dll</command>
+ authenticates users against the host's WinLogon
+ system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Mac OS X hosts, <command>VBoxAuth.dylib</command>
+ authenticates users against the host's directory
+ service.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In other words, the external method by default performs
+ authentication with the user accounts that exist on the
+ host system. Any user with valid authentication
+ credentials is accepted. For example, the username does
+ not have to correspond to the user running the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An additional library called
+ <command>VBoxAuthSimple</command> performs
+ authentication against credentials configured in the
+ <literal>extradata</literal> section of a virtual
+ machine's XML settings file. This is probably the
+ simplest way to get authentication that does not depend
+ on a running and supported guest. The following steps
+ are required:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Enable <command>VBoxAuthSimple</command> with the
+ following command:
+ </para>
+
+<screen>VBoxManage setproperty vrdeauthlibrary "VBoxAuthSimple"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ To enable the library for a particular VM, you must
+ switch authentication to external, as follows:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeauthtype external</screen>
+
+ <para>
+ Replace <replaceable>VM-name</replaceable> with the
+ VM name or UUID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You then need to configure users and passwords by
+ writing items into the machine's extradata. Since
+ the XML machine settings file, into whose
+ <literal>extradata</literal> section the password
+ needs to be written, is a plain text file,
+ &product-name; uses hashes to encrypt passwords. The
+ following command must be used:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxAuthSimple/users/<replaceable>user</replaceable>" <replaceable>hash</replaceable></screen>
+
+ <para>
+ Replace <replaceable>VM-name</replaceable> with the
+ VM name or UUID, <replaceable>user</replaceable>
+ with the user name who should be allowed to log in
+ and <replaceable>hash</replaceable> with the
+ encrypted password. The following command example
+ obtains the hash value for the password
+ <literal>secret</literal>:
+ </para>
+
+<screen>$ VBoxManage internalcommands passwordhash "secret"
+2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen>
+
+ <para>
+ You then use <command>VBoxManage
+ setextradata</command> to store this value in the
+ machine's <literal>extradata</literal> section.
+ </para>
+
+ <para>
+ As a combined example, to set the password for the
+ user <literal>john</literal> and the machine
+ <literal>My VM</literal> to
+ <literal>secret</literal>, use this command:
+ </para>
+
+<screen>VBoxManage setextradata "My VM" "VBoxAuthSimple/users/john"
+ 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen>
+ </listitem>
+
+ </orderedlist>
+ </listitem>
+
+ </orderedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">guest</emphasis> authentication
+ method performs authentication with a special component that
+ comes with the Guest Additions. As a result, authentication
+ is not performed on the host, but with the guest user
+ accounts.
+ </para>
+
+ <para>
+ This method is currently still in testing and not yet
+ supported.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition to the methods described above, you can replace the
+ default external authentication module with any other module.
+ For this, &product-name; provides a well-defined interface that
+ enables you to write your own authentication module. This is
+ described in detail in the &product-name; Software Development
+ Kit (SDK) reference. See <xref linkend="VirtualBoxAPI" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vrde-crypt">
+
+ <title>RDP Encryption</title>
+
+ <para>
+ RDP features data stream encryption, which is based on the RC4
+ symmetric cipher, with keys up to 128-bit. The RC4 keys are
+ replaced at regular intervals, every 4096 packets.
+ </para>
+
+ <para>
+ RDP provides the following different authentication methods:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">RDP 4</emphasis> authentication was
+ used historically. With RDP 4, the RDP client does not
+ perform any checks in order to verify the identity of the
+ server it connects to. Since user credentials can be
+ obtained using a man in the middle (MITM) attack, RDP4
+ authentication is insecure and should generally not be used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">RDP 5.1</emphasis> authentication
+ employs a server certificate for which the client possesses
+ the public key. This way it is guaranteed that the server
+ possess the corresponding private key. However, as this
+ hard-coded private key became public some years ago, RDP 5.1
+ authentication is also insecure.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">RDP 5.2 or later</emphasis>
+ authentication uses Enhanced RDP Security, which means that
+ an external security protocol is used to secure the
+ connection. RDP 4 and RDP 5.1 use Standard RDP Security. The
+ VRDP server supports Enhanced RDP Security with TLS protocol
+ and, as a part of the TLS handshake, sends the server
+ certificate to the client.
+ </para>
+
+ <para>
+ The <literal>Security/Method</literal> VRDE property sets
+ the desired security method, which is used for a connection.
+ Valid values are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Negotiate.</emphasis> Both
+ Enhanced (TLS) and Standard RDP Security connections are
+ allowed. The security method is negotiated with the
+ client. This is the default setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">RDP.</emphasis> Only Standard RDP
+ Security is accepted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">TLS.</emphasis> Only Enhanced RDP
+ Security is accepted. The client must support TLS.
+ </para>
+
+ <para>
+ The version of OpenSSL used by &product-name; supports
+ TLS versions 1.0, 1.1, 1.2, and 1.3.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For example, the following command enables a client to use
+ either Standard or Enhanced RDP Security connection:
+ </para>
+
+<screen>vboxmanage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty "Security/Method=negotiate"</screen>
+
+ <para>
+ If the <literal>Security/Method</literal> property is set to
+ either Negotiate or TLS, the TLS protocol will be
+ automatically used by the server, if the client supports
+ TLS. However, in order to use TLS the server must possess
+ the Server Certificate, the Server Private Key and the
+ Certificate Authority (CA) Certificate. The following
+ example shows how to generate a server certificate.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Create a CA self signed certificate.
+ </para>
+
+<screen>openssl req -new -x509 -days 365 -extensions v3_ca \
+ -keyout ca_key_private.pem -out ca_cert.pem</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Generate a server private key and a request for signing.
+ </para>
+
+<screen>openssl genrsa -out server_key_private.pem
+openssl req -new -key server_key_private.pem -out server_req.pem</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Generate the server certificate.
+ </para>
+
+<screen>openssl x509 -req -days 365 -in server_req.pem \
+ -CA ca_cert.pem -CAkey ca_key_private.pem -set_serial 01 -out server_cert.pem</screen>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ The server must be configured to access the required files.
+ For example:
+ </para>
+
+<screen>vboxmanage modifyvm <replaceable>VM-name</replaceable> \
+ --vrdeproperty "Security/CACertificate=path/ca_cert.pem"</screen>
+
+<screen>vboxmanage modifyvm <replaceable>VM-name</replaceable> \
+ --vrdeproperty "Security/ServerCertificate=path/server_cert.pem"</screen>
+
+<screen>vboxmanage modifyvm <replaceable>VM-name</replaceable> \
+ --vrdeproperty "Security/ServerPrivateKey=path/server_key_private.pem"</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ As the client that connects to the server determines what type
+ of encryption will be used, with <command>rdesktop</command>,
+ the Linux RDP viewer, use the <option>-4</option> or
+ <option>-5</option> options.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vrde-multiconnection">
+
+ <title>Multiple Connections to the VRDP Server</title>
+
+ <para>
+ The VRDP server of &product-name; supports multiple simultaneous
+ connections to the same running VM from different clients. All
+ connected clients see the same screen output and share a mouse
+ pointer and keyboard focus. This is similar to several people
+ using the same computer at the same time, taking turns at the
+ keyboard.
+ </para>
+
+ <para>
+ The following command enables multiple connection mode:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdemulticon on</screen>
+
+ </sect2>
+
+ <sect2 id="vrde-multimonitor">
+
+ <title>Multiple Remote Monitors</title>
+
+ <para>
+ To access two or more remote VM displays you have to enable the
+ VRDP multiconnection mode. See
+ <xref linkend="vrde-multiconnection"/>.
+ </para>
+
+ <para>
+ The RDP client can select the virtual monitor number to connect
+ to using the <literal>domain</literal> login parameter
+ (<option>-d</option>). If the parameter ends with
+ <literal>@</literal> followed by a number, &product-name;
+ interprets this number as the screen index. The primary guest
+ screen is selected with <literal>@1</literal>, the first
+ secondary screen is <literal>@2</literal>, and so on.
+ </para>
+
+ <para>
+ The Microsoft RDP 6 client does not let you specify a separate
+ domain name. Instead, enter
+ <literal><replaceable>domain</replaceable>\<replaceable>username</replaceable></literal>
+ in the <emphasis role="bold">Username</emphasis> field. For
+ example, <literal>@2\<replaceable>name</replaceable></literal>.
+ <replaceable>name</replaceable> must be supplied, and must be
+ the name used to log in if the VRDP server is set up to require
+ credentials. If it is not, you may use any text as the username.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vrde-videochannel">
+
+ <title>VRDP Video Redirection</title>
+
+ <para>
+ The VRDP server can redirect video streams from the guest to the
+ RDP client. Video frames are compressed using the JPEG algorithm
+ allowing a higher compression ratio than standard RDP bitmap
+ compression methods. It is possible to increase the compression
+ ratio by lowering the video quality.
+ </para>
+
+ <para>
+ The VRDP server automatically detects video streams in a guest
+ as frequently updated rectangular areas. As a result, this
+ method works with any guest operating system without having to
+ install additional software in the guest. In particular, the
+ Guest Additions are not required.
+ </para>
+
+ <para>
+ On the client side, however, currently only the Windows 7 Remote
+ Desktop Connection client supports this feature. If a client
+ does not support video redirection, the VRDP server falls back
+ to regular bitmap updates.
+ </para>
+
+ <para>
+ The following command enables video redirection:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdevideochannel on</screen>
+
+ <para>
+ The quality of the video is defined as a value from 10 to 100
+ percent, representing a JPEG compression level, where lower
+ numbers mean lower quality but higher compression. The quality
+ can be changed using the following command:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdevideochannelquality 75</screen>
+
+ </sect2>
+
+ <sect2 id="vrde-customization">
+
+ <title>VRDP Customization</title>
+
+ <para>
+ You can disable display output, mouse and keyboard input, audio,
+ remote USB, or clipboard individually in the VRDP server.
+ </para>
+
+ <para>
+ The following commands change the corresponding server settings:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableDisplay=1
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableInput=1
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableUSB=1
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableAudio=1
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableClipboard=1
+$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableUpstreamAudio=1</screen>
+
+ <para>
+ To reenable a feature, use a similar command without the
+ trailing 1. For example:
+ </para>
+
+<screen>$ VBoxManage modifyvm <replaceable>VM-name</replaceable> --vrdeproperty Client/DisableDisplay=</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="teleporting">
+
+ <title>Teleporting</title>
+
+ <para>
+ &product-name; supports <emphasis>teleporting</emphasis>.
+ Teleporting is moving a virtual machine over a network from one
+ &product-name; host to another, while the virtual machine is
+ running. This works regardless of the host operating system that
+ is running on the hosts. You can teleport virtual machines between
+ Oracle Solaris and Mac OS X hosts, for example.
+ </para>
+
+ <para>
+ Teleporting requires that a machine be currently running on one
+ host, which is called the <emphasis>source</emphasis>. The host to
+ which the virtual machine will be teleported is called the
+ <emphasis>target</emphasis>. The machine on the target is then
+ configured to wait for the source to contact the target. The
+ machine's running state will then be transferred from the source
+ to the target with minimal downtime.
+ </para>
+
+ <para>
+ Teleporting happens over any TCP/IP network. The source and the
+ target only need to agree on a TCP/IP port which is specified in
+ the teleporting settings.
+ </para>
+
+ <para>
+ At this time, there are a few prerequisites for this to work, as
+ follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On the target host, you must configure a virtual machine in
+ &product-name; with exactly the same hardware settings as the
+ machine on the source that you want to teleport. This does not
+ apply to settings which are merely descriptive, such as the VM
+ name, but obviously for teleporting to work, the target
+ machine must have the same amount of memory and other hardware
+ settings. Otherwise teleporting will fail with an error
+ message.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The two virtual machines on the source and the target must
+ share the same storage, hard disks as well as floppy disks and
+ CD/DVD images. This means that they either use the same iSCSI
+ targets or that the storage resides somewhere on the network
+ and both hosts have access to it using NFS or SMB/CIFS.
+ </para>
+
+ <para>
+ This also means that neither the source nor the target machine
+ can have any snapshots.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To configure teleporting, perform the following steps:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ On the <emphasis>target</emphasis> host, configure the virtual
+ machine to wait for a teleport request to arrive when it is
+ started, instead of actually attempting to start the machine.
+ This is done with the following <command>VBoxManage</command>
+ command:
+ </para>
+
+<screen>VBoxManage modifyvm <replaceable>targetvmname</replaceable> --teleporter on --teleporterport <replaceable>port</replaceable></screen>
+
+ <para>
+ <replaceable>targetvmname</replaceable> is the name of the
+ virtual machine on the target host and
+ <replaceable>port</replaceable> is a TCP/IP port number to be
+ used on both the source and the target hosts. For example, use
+ 6000. See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start the VM on the target host. Instead of running, the VM
+ shows a progress dialog, indicating that it is waiting for a
+ teleport request to arrive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Start the VM on the <emphasis>source</emphasis> host as usual.
+ When it is running and you want it to be teleported, issue the
+ following command on the source host:
+ </para>
+
+<screen>VBoxManage controlvm <replaceable>sourcevmname</replaceable> teleport --host <replaceable>targethost</replaceable> --port <replaceable>port</replaceable></screen>
+
+ <para>
+ where <replaceable>sourcevmname</replaceable> is the name of
+ the virtual machine on the source host, which is the machine
+ that is currently running.
+ <replaceable>targethost</replaceable> is the host or IP name
+ of the target host on which the machine is waiting for the
+ teleport request, and <replaceable>port</replaceable> must be
+ the same number as specified in the command on the target
+ host. See <xref linkend="vboxmanage-controlvm" />.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ For testing, you can also teleport machines on the same host. In
+ that case, use localhost as the hostname on both the source and
+ the target host.
+ </para>
+
+ <note>
+ <para>
+ In rare cases, if the CPUs of the source and the target are very
+ different, teleporting can fail with an error message, or the
+ target may hang. This may happen especially if the VM is running
+ application software that is highly optimized to run on a
+ particular CPU without correctly checking that certain CPU
+ features are actually present. &product-name; filters what CPU
+ capabilities are presented to the guest operating system.
+ Advanced users can attempt to restrict these virtual CPU
+ capabilities with the <command>VBoxManage modifyvm
+ --cpuid</command> command. See
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </note>
+
+ </sect1>
+
+ <xi:include href="user_man_VBoxHeadless.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</chapter>
diff --git a/doc/manual/en_US/user_Glossary.xml b/doc/manual/en_US/user_Glossary.xml
new file mode 100644
index 00000000..0b88ca03
--- /dev/null
+++ b/doc/manual/en_US/user_Glossary.xml
@@ -0,0 +1,700 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glossary 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;
+]>
+<glossary id="Glossary">
+ <glossdiv>
+
+ <title>A</title>
+
+ <glossentry><glossterm>ACPI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Advanced Configuration and Power Interface, an industry
+ specification for BIOS and hardware extensions to configure PC
+ hardware and perform power management. Windows 2000 and later,
+ as well as Linux 2.4 and later support ACPI. Windows can only
+ enable or disable ACPI support at installation time.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>AHCI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Advanced Host Controller Interface, the interface that
+ supports SATA devices such as hard disks. See
+ <xref
+ linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>AMD-V</glossterm>
+
+ <glossdef>
+
+ <para>
+ The hardware virtualization features built into modern AMD
+ processors. See <xref linkend="hwvirt" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>API</glossterm>
+
+ <glossdef>
+
+ <para>
+ Application Programming Interface.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>APIC</glossterm>
+
+ <glossdef>
+
+ <para>
+ Advanced Programmable Interrupt Controller, a newer version of
+ the original PC PIC (programmable interrupt controller). Most
+ modern CPUs contain an on-chip APIC, called a local APIC. Many
+ systems also contain an I/O APIC (input output APIC) as a
+ separate chip which provides more than 16 IRQs. Windows 2000
+ and later use a different kernel if they detect an I/O APIC
+ during installation. Therefore, an I/O APIC must not be
+ removed after installation.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>ATA</glossterm>
+
+ <glossdef>
+
+ <para>
+ Advanced Technology Attachment, an industry standard for hard
+ disk interfaces which is synonymous with IDE. See
+ <xref
+ linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>B</title>
+
+ <glossentry><glossterm>BIOS</glossterm>
+
+ <glossdef>
+
+ <para>
+ Basic Input/Output System, the firmware built into most
+ personal computers which is responsible of initializing the
+ hardware after the computer has been turned on and then
+ booting an operating system. &product-name; ships with its own
+ virtual BIOS that runs when a virtual machine is started.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>C</title>
+
+ <glossentry><glossterm>COM</glossterm>
+
+ <glossdef>
+
+ <para>
+ Microsoft Component Object Model, a programming infrastructure
+ for modular software. COM enables applications to provide
+ application programming interfaces which can be accessed from
+ various other programming languages and applications.
+ &product-name; makes use of COM both internally and externally
+ to provide a comprehensive API to 3rd party developers.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>D</title>
+
+ <glossentry><glossterm>DHCP</glossterm>
+
+ <glossdef>
+
+ <para>
+ Dynamic Host Configuration Protocol. This enables a networking
+ device in a network to acquire its IP address and other
+ networking details automatically, in order to avoid having to
+ configure all devices in a network with fixed IP addresses.
+ &product-name; has a built-in DHCP server that delivers an IP
+ addresses to a virtual machine when networking is configured
+ to NAT. See <xref
+ linkend="networkingdetails" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>E</title>
+
+ <glossentry><glossterm>EFI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Extensible Firmware Interface, a firmware built into computers
+ which is designed to replace the aging BIOS. Originally
+ designed by Intel, most modern operating systems can now boot
+ on computers which have EFI instead of a BIOS built into them.
+ See <xref
+ linkend="efi" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>EHCI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Enhanced Host Controller Interface, the interface that
+ implements the USB 2.0 standard.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>G</title>
+
+ <glossentry><glossterm>GUI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Graphical User Interface. Commonly used as an antonym to a
+ "command line interface". In the context of &product-name;, we
+ sometimes refer to the main graphical
+ <command>VirtualBox</command> program as the "GUI", to
+ differentiate it from the <command>VBoxManage</command>
+ interface.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>GUID</glossterm>
+
+ <glossdef>
+
+ <para>
+ See UUID.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>I</title>
+
+ <glossentry><glossterm>IDE</glossterm>
+
+ <glossdef>
+
+ <para>
+ Integrated Drive Electronics, an industry standard for hard
+ disk interfaces. See <xref linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>I/O APIC</glossterm>
+
+ <glossdef>
+
+ <para>
+ See APIC.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>iSCSI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Internet SCSI. See <xref linkend="storage-iscsi" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>M</title>
+
+ <glossentry><glossterm>MAC</glossterm>
+
+ <glossdef>
+
+ <para>
+ Media Access Control, a part of an Ethernet network card. A
+ MAC address is a 6-byte number which identifies a network
+ card. It is typically written in hexadecimal notation where
+ the bytes are separated by colons, such as
+ <literal>00:17:3A:5E:CB:08</literal>.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>MSI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Message Signaled Interrupts, as supported by modern chipsets
+ such as the ICH9. See <xref linkend="settings-motherboard" />.
+ As opposed to traditional pin-based interrupts, with MSI, a
+ small amount of data can accompany the actual interrupt
+ message. This reduces the amount of hardware pins required and
+ allows for more interrupts and better performance.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>N</title>
+
+ <glossentry><glossterm>NAT</glossterm>
+
+ <glossdef>
+
+ <para>
+ Network Address Translation. A technique to share networking
+ interfaces by which an interface modifies the source and/or
+ target IP addresses of network packets according to specific
+ rules. Commonly employed by routers and firewalls to shield an
+ internal network from the Internet, &product-name; can use NAT
+ to easily share a host's physical networking hardware with its
+ virtual machines. See <xref
+ linkend="network_nat" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>O</title>
+
+ <glossentry><glossterm>OVF</glossterm>
+
+ <glossdef>
+
+ <para>
+ Open Virtualization Format, a cross-platform industry standard
+ to exchange virtual appliances between virtualization
+ products. See <xref linkend="ovf" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>P</title>
+
+ <glossentry><glossterm>PAE</glossterm>
+
+ <glossdef>
+
+ <para>
+ Physical Address Extension. This enables access to more than 4
+ GB of RAM, even in 32-bit environments. See
+ <xref linkend="settings-general-advanced" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>PIC</glossterm>
+
+ <glossdef>
+
+ <para>
+ See APIC.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>PXE</glossterm>
+
+ <glossdef>
+
+ <para>
+ Preboot Execution Environment, an industry standard for
+ booting PC systems from remote network locations. It includes
+ DHCP for IP configuration and TFTP for file transfer. Using
+ UNDI, a hardware independent driver stack for accessing the
+ network card from bootstrap code is available.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>R</title>
+
+ <glossentry><glossterm>RDP</glossterm>
+
+ <glossdef>
+
+ <para>
+ Remote Desktop Protocol, a protocol developed by Microsoft as
+ an extension to the ITU T.128 and T.124 video conferencing
+ protocol. With RDP, a PC system can be controlled from a
+ remote location using a network connection over which data is
+ transferred in both directions. Typically graphics updates and
+ audio are sent from the remote machine and keyboard and mouse
+ input events are sent from the client. An &product-name;
+ extension package by Oracle provides VRDP, an enhanced
+ implementation of the relevant standards which is largely
+ compatible with Microsoft's RDP implementation. See
+ <xref linkend="vrde" /> for details.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>S</title>
+
+ <glossentry><glossterm>SAS</glossterm>
+
+ <glossdef>
+
+ <para>
+ Serial Attached SCSI, an industry standard for hard disk
+ interfaces. See <xref linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>SATA</glossterm>
+
+ <glossdef>
+
+ <para>
+ Serial ATA, an industry standard for hard disk interfaces. See
+ <xref linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>SCSI</glossterm>
+
+ <glossdef>
+
+ <para>
+ Small Computer System Interface. An industry standard for data
+ transfer between devices, especially for storage. See
+ <xref
+ linkend="harddiskcontrollers" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>SMP</glossterm>
+
+ <glossdef>
+
+ <para>
+ Symmetrical Multiprocessing, meaning that the resources of a
+ computer are shared between several processors. These can
+ either be several processor chips or, as is more common with
+ modern hardware, multiple CPU cores in one processor.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>SSD</glossterm>
+
+ <glossdef>
+
+ <para>
+ Solid-state drive, uses microchips for storing data in a
+ computer system. Compared to classical hard-disks they are
+ having no mechanical components like spinning disks.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>T</title>
+
+ <glossentry><glossterm>TAR</glossterm>
+
+ <glossdef>
+
+ <para>
+ A widely used file format for archiving. Originally, this
+ stood for Tape ARchive and was already supported by very early
+ UNIX versions for backing up data on tape. The file format is
+ still widely used today. For example, with OVF archives using
+ an <filename>.ova</filename> file extension. See
+ <xref
+ linkend="ovf" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>U</title>
+
+ <glossentry><glossterm>UUID</glossterm>
+
+ <glossdef>
+
+ <para>
+ A Universally Unique Identifier, often also called GUID
+ (Globally Unique Identifier). A UUID is a string of numbers
+ and letters which can be computed dynamically and is
+ guaranteed to be unique. Generally, it is used as a global
+ handle to identify entities. &product-name; makes use of UUIDs
+ to identify VMs, Virtual Disk Images (VDI files), and other
+ entities.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>V</title>
+
+ <glossentry><glossterm>VM</glossterm>
+
+ <glossdef>
+
+ <para>
+ Virtual Machine. A virtual computer that &product-name;
+ enables you to run on top of your actual hardware. See
+ <xref
+ linkend="virtintro" /> for details.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>VMM</glossterm>
+
+ <glossdef>
+
+ <para>
+ Virtual Machine Manager. The component of &product-name; that
+ controls VM execution. See
+ <xref linkend="technical-components" /> for a list of
+ &product-name; components.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>VRDE</glossterm>
+
+ <glossdef>
+
+ <para>
+ VirtualBox Remote Desktop Extension. This interface is built
+ into &product-name; to allow &product-name; extension packages
+ to supply remote access to virtual machines. An &product-name;
+ extension package by Oracle provides VRDP support. See
+ <xref linkend="vrde" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>VRDP</glossterm>
+
+ <glossdef>
+
+ <para>
+ See RDP.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>VT-x</glossterm>
+
+ <glossdef>
+
+ <para>
+ The hardware virtualization features built into modern Intel
+ processors. See <xref linkend="hwvirt" />.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+ <glossdiv>
+
+ <title>X</title>
+
+ <glossentry><glossterm>xHCI</glossterm>
+
+ <glossdef>
+
+ <para>
+ eXtended Host Controller Interface, the interface that
+ implements the USB 3.0 standard.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>XML</glossterm>
+
+ <glossdef>
+
+ <para>
+ The eXtensible Markup Language, a metastandard for all kinds
+ of textual information. XML only specifies how data in the
+ document is organized generally and does not prescribe how to
+ semantically organize content.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry><glossterm>XPCOM</glossterm>
+
+ <glossdef>
+
+ <para>
+ Mozilla Cross Platform Component Object Model, a programming
+ infrastructure developed by the Mozilla browser project which
+ is similar to Microsoft COM and enables applications to
+ provide a modular programming interface. &product-name; makes
+ use of XPCOM on Linux both internally and externally to
+ provide a comprehensive API to third-party developers.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+ </glossdiv>
+
+</glossary>
diff --git a/doc/manual/en_US/user_GuestAdditions.xml b/doc/manual/en_US/user_GuestAdditions.xml
new file mode 100644
index 00000000..30d98c19
--- /dev/null
+++ b/doc/manual/en_US/user_GuestAdditions.xml
@@ -0,0 +1,2478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="vdis" />.
+ </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 Mac OS X 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</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 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>
+
+ </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-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>
+
+ </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-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> dialog.
+ </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 the VirtualBox Manager, 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
+ VirtualBox Manager, 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 Mac OS X, Linux, or Oracle Solaris host is required.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Currently only 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 creation of symlinks for a
+ shared folder as follows:
+ </para>
+
+<screen>VBoxManage setextradata "VM name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/<replaceable>sharename</replaceable> 1</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <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 the VirtualBox Manager.
+ 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 VirtualBox Manager 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 Mac OS X 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>
+(C) 2005-2019 Oracle Corporation
+All rights reserved.
+
+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>
+(C) 2005-2019 Oracle Corporation
+All rights reserved.
+
+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>
+(C) 2005-2019 Oracle Corporation
+All rights reserved.
+
+Name: /VirtualBox/GuestInfo/OS/Release, value: 2.6.28-18-generic,
+ timestamp: 1265813265835667000, flags: &lt;NULL&gt;
+Name: /VirtualBox/GuestInfo/OS/Version, value: #59-Ubuntu SMP Thu Jan 28 01:23:03 UTC 2010,
+ timestamp: 1265813265836305000, flags: &lt;NULL&gt;
+ ...</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>
+
+ <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.
+ </para>
+
+ <para>
+ In the guest VM, select
+ <emphasis role="bold">Machine</emphasis>,
+ <emphasis role="bold">File Manager</emphasis>.
+ </para>
+
+ <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 a 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 Mac OS X hosts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Memory ballooning does not work with large pages enabled.
+ To turn off large pages support for a VM, run
+ <command>VBoxManage modifyvm
+ <replaceable>vmname</replaceable> --largepages
+ 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" --guestmemoryballoon 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 Mac OS X 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" --pagefusion 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,
+ through the view menu or through
+ <code>VBoxManage controlvm "vmname" setscreenlayout</code>.
+ On guest operating systems with X11/Wayland desktops this is
+ put into effect by either of two following services:
+ </para>
+
+ <screen>
+ VBoxClient --vmsvga
+ VBoxDRMClient
+ </screen>
+
+ <para>
+ Here 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 <code>VBoxDRMClient</code>
+ is always used, in order to work around bugs.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Since the mentioned 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, lightdm. This default behavior can be changed by setting
+ the guest property <code>/VirtualBox/GuestAdd/DRMResize</code>
+ of the virtual machine to any value. Please refer to
+ <xref linkend="guestadd-guestprops" /> for updating guest
+ properties. When this guest property is set then
+ <code>VBoxDRMClient</code> is started during the guest OS boot
+ and stays active all the time, for both ithe display manager
+ login screen and the desktop session.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect3 id="guestadd-resizing-linux-limitations">
+
+ <title>Known Limitations</title>
+ <para>
+ <code>VBoxDRMClient</code> is not able to handle arbitrary guest
+ monitor topologies. Specifically, disabling a guest monitor
+ (except the last one) invalidates the monitor topology due to
+ limitations in the Linux kernel module <code>vmwgfx.ko</code>.
+ iFor example, when the guest is configured to have 4 monitors
+ it is not recommended to disable the 2nd or 3rd monitor.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Installation.xml b/doc/manual/en_US/user_Installation.xml
new file mode 100644
index 00000000..41c36afe
--- /dev/null
+++ b/doc/manual/en_US/user_Installation.xml
@@ -0,0 +1,1405 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="installation">
+
+ <title>Installation Details</title>
+
+ <para>
+ As installation of &product-name; varies depending on your host
+ operating system, the following sections provide installation
+ instructions for Windows, Mac OS X, Linux, and Oracle Solaris.
+ </para>
+
+ <sect1 id="installation_windows">
+
+ <title>Installing on Windows Hosts</title>
+
+ <sect2 id="install-win-prereq">
+
+ <title>Prerequisites</title>
+
+ <para>
+ For the various versions of Windows that are supported as host
+ operating systems, please refer to
+ <xref linkend="hostossupport" />.
+ </para>
+
+ <para>
+ In addition, Windows Installer must be present on your system.
+ This should be the case for all supported Windows platforms.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-win-performing">
+
+ <title>Performing the Installation</title>
+
+ <para>
+ The &product-name; installation can be started in either of the
+ following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ By double-clicking on the executable file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ By entering the following command:
+ </para>
+
+<screen>VirtualBox-&lt;version&gt;-&lt;revision&gt;-Win.exe -extract</screen>
+
+ <para>
+ This will extract the installer into a temporary directory,
+ along with the .MSI file. Run the following command to
+ perform the installation:
+ </para>
+
+<screen>msiexec /i VirtualBox-&lt;version&gt;-&lt;revision&gt;-Win.msi</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Using either way displays the installation
+ <emphasis role="bold">Welcome</emphasis> dialog and enables you
+ to choose where to install &product-name;, and which components
+ to install. In addition to the &product-name; application, the
+ following components are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB support.</emphasis> This package
+ contains special drivers for your Windows host that
+ &product-name; requires to fully support USB devices inside
+ your virtual machines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Networking.</emphasis> This package
+ contains extra networking drivers for your Windows host that
+ &product-name; needs to support Bridged Networking. This
+ enables your VM's virtual network cards to be accessed from
+ other machines on your physical network.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Python support.</emphasis> This
+ package contains Python scripting support for the
+ &product-name; API, see <xref linkend="VirtualBoxAPI" />.
+ For this to work, an already working Windows Python
+ installation on the system is required.
+ </para>
+
+ <para>
+ See, for example:
+ <ulink url="http://www.python.org/download/windows/" />.
+ </para>
+
+ <note>
+ <para>
+ Python version at least 2.6 is required. Python 3 is also
+ supported.
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Depending on your Windows configuration, you may see warnings
+ about unsigned drivers, or similar. Click
+ <emphasis role="bold">Continue</emphasis> for these warnings, as
+ otherwise &product-name; might not function correctly after
+ installation.
+ </para>
+
+ <para>
+ The installer will create an &product-name; group in the Windows
+ <emphasis role="bold">Start</emphasis> menu, which enables you
+ to launch the application and access its documentation.
+ </para>
+
+ <para>
+ With standard settings, &product-name; will be installed for all
+ users on the local system. If this is not wanted, you must
+ invoke the installer by first extracting as follows:
+ </para>
+
+<screen>VirtualBox.exe -extract</screen>
+
+ <para>
+ Then, run either of the following commands on the extracted .MSI
+ file. This will install &product-name; only for the current
+ user.
+ </para>
+
+<screen>VirtualBox.exe -msiparams ALLUSERS=2</screen>
+
+<screen>msiexec /i VirtualBox-&lt;version&gt;-Win.msi ALLUSERS=2</screen>
+
+ <para>
+ If you do not want to install all features of &product-name;,
+ you can set the optional <literal>ADDLOCAL</literal> parameter
+ to explicitly name the features to be installed. The following
+ features are available:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ VBoxApplication
+ </term>
+
+ <listitem>
+ <para>
+ Main binaries of &product-name;.
+ </para>
+
+ <note>
+ <para>
+ This feature must not be absent, since it contains the
+ minimum set of files to have working &product-name;
+ installation.
+ </para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ VBoxUSB
+ </term>
+
+ <listitem>
+ <para>
+ USB support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ VBoxNetwork
+ </term>
+
+ <listitem>
+ <para>
+ All networking support. This includes the VBoxNetworkFlt
+ and VBoxNetworkAdp features.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ VBoxNetworkFlt
+ </term>
+
+ <listitem>
+ <para>
+ Bridged networking support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ VBoxNetworkAdp
+ </term>
+
+ <listitem>
+ <para>
+ Host-only networking support
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ VBoxPython
+ </term>
+
+ <listitem>
+ <para>
+ Python support
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ For example, to only install USB support along with the main
+ binaries, run either of the following commands:
+ </para>
+
+<screen>VirtualBox.exe -msiparams ADDLOCAL=VBoxApplication,VBoxUSB</screen>
+
+<screen>msiexec /i VirtualBox-&lt;version&gt;-Win.msi ADDLOCAL=VBoxApplication,VBoxUSB</screen>
+
+ <para>
+ The user is able to choose between NDIS5 and NDIS6 host network
+ filter drivers during the installation. This is done using a
+ command line parameter, <literal>NETWORKTYPE</literal>. The
+ NDIS6 driver is the default for most supported Windows hosts.
+ For some legacy Windows versions, the installer will
+ automatically select the NDIS5 driver and this cannot be
+ changed.
+ </para>
+
+ <para>
+ You can force an install of the legacy NDIS5 host network filter
+ driver by specifying <literal>NETWORKTYPE=NDIS5</literal>. For
+ example, to install the NDIS5 driver on Windows 7 use either of
+ the following commands:
+ </para>
+
+<screen>VirtualBox.exe -msiparams NETWORKTYPE=NDIS5</screen>
+
+<screen>msiexec /i VirtualBox-&lt;version&gt;-Win;.msi NETWORKTYPE=NDIS5</screen>
+
+ </sect2>
+
+ <sect2 id="install-win-uninstall">
+
+ <title>Uninstallation</title>
+
+ <para>
+ As &product-name; uses the standard Microsoft Windows installer,
+ &product-name; can be safely uninstalled at any time. Click the
+ program entry in the <emphasis role="bold">Add/Remove
+ Programs</emphasis> list in the Windows Control Panel.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-win-unattended">
+
+ <title>Unattended Installation</title>
+
+ <para>
+ Unattended installations can be performed using the standard MSI
+ support.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-win-public-props">
+
+ <title>Public Properties</title>
+
+ <para>
+ Public properties can be specified with the MSI API, to control
+ additional behavior and features of the Windows host installer.
+ Use either of the following commands:
+ </para>
+
+<screen>VirtualBox.exe -msiparams NAME=VALUE [...]</screen>
+
+<screen>msiexec /i VirtualBox-&lt;version&gt;-Win.msi NAME=VALUE [...]</screen>
+
+ <para>
+ The following public properties are available.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ VBOX_INSTALLDESKTOPSHORTCUT
+ </para>
+
+ <para>
+ Specifies whether or not an &product-name; icon on the
+ desktop should be created.
+ </para>
+
+ <para>
+ Set to <literal>1</literal> to enable, <literal>0</literal>
+ to disable. Default is 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBOX_INSTALLQUICKLAUNCHSHORTCUT
+ </para>
+
+ <para>
+ Specifies whether or not an &product-name; icon in the Quick
+ Launch Bar should be created.
+ </para>
+
+ <para>
+ Set to <literal>1</literal> to enable, <literal>0</literal>
+ to disable. Default is 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBOX_REGISTERFILEEXTENSIONS
+ </para>
+
+ <para>
+ Specifies whether or not the file extensions .vbox,
+ .vbox-extpack, .ovf, .ova, .vdi, .vmdk, .vhd and .vdd should
+ be associated with &product-name;. Files of these types then
+ will be opened with &product-name;.
+ </para>
+
+ <para>
+ Set to <literal>1</literal> to enable, <literal>0</literal>
+ to disable. Default is 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBOX_START
+ </para>
+
+ <para>
+ Specifies whether to start &product-name; right after
+ successful installation.
+ </para>
+
+ <para>
+ Set to <literal>1</literal> to enable, <literal>0</literal>
+ to disable. Default is 1.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="installation-mac">
+
+ <title>Installing on Mac OS X Hosts</title>
+
+ <sect2 id="install-mac-performing">
+
+ <title>Performing the Installation</title>
+
+ <para>
+ For Mac OS X hosts, &product-name; ships in a
+ <filename>dmg</filename> disk image file. Perform the following
+ steps to install on a Mac OS X host:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Double-click on the <filename>dmg</filename> file, to mount
+ the contents.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A window opens, prompting you to double-click on the
+ <filename>VirtualBox.pkg</filename> installer file displayed
+ in that window.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ This starts the installer, which enables you to select where
+ to install &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An &product-name; icon is added to the
+ <filename>Applications</filename> folder in the Finder.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="install-mac-uninstall">
+
+ <title>Uninstallation</title>
+
+ <para>
+ To uninstall &product-name;, open the disk image
+ <filename>dmg</filename> file and double-click on the uninstall
+ icon shown.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-mac-unattended">
+
+ <title>Unattended Installation</title>
+
+ <para>
+ To perform a non-interactive installation of &product-name; you
+ can use the command line version of the installer application.
+ </para>
+
+ <para>
+ Mount the <filename>dmg</filename> disk image file, as described
+ in the installation procedure, or use the following command
+ line:
+ </para>
+
+<screen>hdiutil attach /path/to/VirtualBox-xyz.dmg</screen>
+
+ <para>
+ Open a terminal session and run the following command:
+ </para>
+
+<screen>sudo installer -pkg /Volumes/VirtualBox/VirtualBox.pkg -target /Volumes/Macintosh\ HD</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="install-linux-host">
+
+ <title>Installing on Linux Hosts</title>
+
+ <sect2 id="install-linux-prereq">
+
+ <title>Prerequisites</title>
+
+ <para>
+ For the various versions of Linux that are supported as host
+ operating systems, see <xref linkend="hostossupport" />.
+ </para>
+
+ <para>
+ You may need to install the following packages on your Linux
+ system before starting the installation. Some systems will do
+ this for you automatically when you install &product-name;.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Qt 5.3.2 or later. Qt 5.6.2 or later is recommended.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SDL 1.2.7 or later. This graphics library is typically
+ called <filename>libsdl</filename> or similar.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ These packages are only required if you want to run the
+ &product-name; graphical user interfaces. In particular,
+ <command>VirtualBox</command>, the graphical VirtualBox
+ Manager, requires both Qt and SDL. If you only want to run
+ <command>VBoxHeadless</command>, neither Qt nor SDL are
+ required.
+ </para>
+ </note>
+
+ </sect2>
+
+ <sect2 id="externalkernelmodules">
+
+ <title>The &product-name; Kernel Modules</title>
+
+ <para>
+ In order to run other operating systems in virtual machines
+ alongside your main operating system, &product-name; needs to
+ integrate very tightly with your system. To do this it installs
+ a driver module called <command>vboxdrv</command> into the
+ system kernel. The kernel is the part of the operating system
+ which controls your processor and physical hardware. Without
+ this kernel module, you can still use the VirtualBox Manager to
+ configure virtual machines, but they will not start.
+ </para>
+
+ <para>
+ Network drivers called <command>vboxnetflt</command> and
+ <command>vboxnetadp</command> are also installed. They enable
+ virtual machines to make more use of your computer's network
+ capabilities and are needed for any virtual machine networking
+ beyond the basic NAT mode.
+ </para>
+
+ <para>
+ Since distributing driver modules separately from the kernel is
+ not something which Linux supports well, the &product-name;
+ install process creates the modules on the system where they
+ will be used. This means that you may need to install some
+ software packages from the distribution which are needed for the
+ build process. Required packages may include the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ GNU compiler (GCC)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GNU Make (make)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Kernel header files
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Also ensure that all system updates have been installed and that
+ your system is running the most up-to-date kernel for the
+ distribution.
+ </para>
+
+ <note>
+ <para>
+ The running kernel and the kernel header files must be updated
+ to matching versions.
+ </para>
+ </note>
+
+ <para>
+ The following list includes some details of the required files
+ for some common distributions. Start by finding the version name
+ of your kernel, using the command <command>uname -r</command> in
+ a terminal. The list assumes that you have not changed too much
+ from the original installation, in particular that you have not
+ installed a different kernel type.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ With Debian and Ubuntu-based distributions, you must install
+ the correct version of the
+ <filename>linux-headers</filename>, usually whichever of
+ <filename>linux-headers-generic</filename>,
+ <filename>linux-headers-amd64</filename>,
+ <filename>linux-headers-i686</filename> or
+ <filename>linux-headers-i686-pae</filename> best matches the
+ kernel version name. Also, the
+ <filename>linux-kbuild</filename> package if it exists.
+ Basic Ubuntu releases should have the correct packages
+ installed by default.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Fedora, Red Hat, Oracle Linux and many other RPM-based
+ systems, the kernel version sometimes has a code of letters
+ or a word close to the end of the version name. For example
+ "uek" for the Oracle Unbreakable Enterprise Kernel or
+ "default" or "desktop" for the standard kernels. In this
+ case, the package name is
+ <filename>kernel-uek-devel</filename> or equivalent. If
+ there is no such code, it is usually
+ <filename>kernel-devel</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On some SUSE and openSUSE Linux versions, you may need to
+ install the <filename>kernel-source</filename> and
+ <filename>kernel-syms</filename> packages.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you suspect that something has gone wrong with module
+ installation, check that your system is set up as described
+ above and try running the following command, as root:
+ </para>
+
+<screen>rcvboxdrv setup</screen>
+
+ <sect3 id="kernel-modules-efi-secure-boot">
+
+ <title>Kernel Modules and UEFI Secure Boot</title>
+
+ <para>
+ If you are running on a system using UEFI (Unified Extensible
+ Firmware Interface) Secure Boot, you may need to sign the
+ following kernel modules before you can load them:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>vboxdrv</command>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vboxnetadp</command>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vboxnetflt</command>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vboxpci</command>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See your system documentation for details of the kernel module
+ signing process.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="install-linux-performing">
+
+ <title>Performing the Installation</title>
+
+ <para>
+ &product-name; is available in a number of package formats
+ native to various common Linux distributions. See
+ <xref linkend="hostossupport"/>. In addition, there is an
+ alternative generic installer (.run) which you can use on
+ supported Linux distributions.
+ </para>
+
+ <sect3 id="install-linux-debian-ubuntu">
+
+ <title>Installing &product-name; from a Debian or Ubuntu Package</title>
+
+ <para>
+ Download the appropriate package for your distribution. The
+ following example assumes that you are installing to a 64-bit
+ Ubuntu Xenial system. Use <command>dpkg</command> to install
+ the Debian package,as follows:
+ </para>
+
+<screen>sudo dpkg -i virtualbox-<replaceable>version-number</replaceable>_Ubuntu_xenial_amd64.deb</screen>
+
+ <para>
+ The installer will also try to build kernel modules suitable
+ for the current running kernel. If the build process is not
+ successful you will be shown a warning and the package will be
+ left unconfigured. Look at
+ <filename>/var/log/vbox-install.log</filename> to find out why
+ the compilation failed. You may have to install the
+ appropriate Linux kernel headers, see
+ <xref linkend="externalkernelmodules" />. After correcting any
+ problems, run the following command:
+ </para>
+
+<screen>sudo rcvboxdrv setup</screen>
+
+ <para>
+ This will start a second attempt to build the module.
+ </para>
+
+ <para>
+ If a suitable kernel module was found in the package or the
+ module was successfully built, the installation script will
+ attempt to load that module. If this fails, please see
+ <xref linkend="ts_linux-kernelmodule-fails-to-load" /> for
+ further information.
+ </para>
+
+ <para>
+ Once &product-name; has been successfully installed and
+ configured, you can start it by clicking
+ <emphasis role="bold">VirtualBox</emphasis> in your
+ <emphasis role="bold">Start</emphasis> menu or from the
+ command line. See <xref linkend="startingvboxonlinux" />.
+ </para>
+
+ </sect3>
+
+ <sect3 id="install-linux-alt-installer">
+
+ <title>Using the Alternative Generic Installer (VirtualBox.run)</title>
+
+ <para>
+ The alternative generic installer performs the following
+ steps:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Unpacks the application files to the target directory
+ <filename>/opt/VirtualBox/</filename>, which cannot be
+ changed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Builds and installs the &product-name; kernel modules:
+ <command>vboxdrv</command>, <command>vboxnetflt</command>,
+ and <command>vboxnetadp</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Creates <filename>/sbin/rcvboxdrv</filename>, an init
+ script to start the &product-name; kernel module.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Creates a new system group called
+ <literal>vboxusers</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Creates symbolic links in <filename>/usr/bin</filename> to
+ a shell script <filename>/opt/VirtualBox/VBox</filename>
+ which does some sanity checks and dispatches to the actual
+ executables: <command>VirtualBox</command>,
+ <command>VBoxVRDP</command>,
+ <command>VBoxHeadless</command> and
+ <command>VBoxManage</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Creates
+ <filename>/etc/udev/rules.d/60-vboxdrv.rules</filename>, a
+ description file for udev, if that is present, which makes
+ the USB devices accessible to all users in the
+ <literal>vboxusers</literal> group.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Writes the installation directory to
+ <filename>/etc/vbox/vbox.cfg</filename>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The installer must be executed as root with either
+ <literal>install</literal> or <literal>uninstall</literal> as
+ the first parameter. For example:
+ </para>
+
+<screen>sudo ./VirtualBox.run install</screen>
+
+ <para>
+ Or if you do not have the <command>sudo</command> command
+ available, run the following as root instead:
+ </para>
+
+<screen>./VirtualBox.run install</screen>
+
+ <para>
+ Add every user who needs to access USB devices from a
+ VirtualBox guests to the group <literal>vboxusers</literal>.
+ Either use the OS user management tools or run the following
+ command as root:
+ </para>
+
+<screen>sudo usermod -a -G vboxusers username</screen>
+
+ <note>
+ <para>
+ The <command>usermod</command> command of some older Linux
+ distributions does not support the <option>-a</option>
+ option, which adds the user to the given group without
+ affecting membership of other groups. In this case, find out
+ the current group memberships with the
+ <command>groups</command> command and add all these groups
+ in a comma-separated list to the command line after the
+ <option>-G</option> option. For example: <command>usermod -G
+ <replaceable>group1</replaceable>,<replaceable>group2</replaceable>,vboxusers
+ <replaceable>username</replaceable></command>.
+ </para>
+ </note>
+
+ </sect3>
+
+ <sect3 id="install-linux-manual">
+
+ <title>Performing a Manual Installation</title>
+
+ <para>
+ If you cannot use the shell script installer described in
+ <xref linkend="install-linux-alt-installer"/>, you can perform
+ a manual installation. Run the installer as follows:
+ </para>
+
+<screen>./VirtualBox.run --keep --noexec</screen>
+
+ <para>
+ This will unpack all the files needed for installation in the
+ directory <literal>install</literal> under the current
+ directory. The &product-name; application files are contained
+ in <filename>VirtualBox.tar.bz2</filename> which you can
+ unpack to any directory on your system. For example:
+ </para>
+
+<screen>sudo mkdir /opt/VirtualBox
+sudo tar jxf ./install/VirtualBox.tar.bz2 -C /opt/VirtualBox</screen>
+
+ <para>
+ To run the same example as root, use the following commands:
+ </para>
+
+<screen>mkdir /opt/VirtualBox
+tar jxf ./install/VirtualBox.tar.bz2 -C /opt/VirtualBox</screen>
+
+ <para>
+ The sources for &product-name;'s kernel module are provided in
+ the <filename>src</filename> directory. To build the module,
+ change to the directory and use the following command:
+ </para>
+
+<screen>make</screen>
+
+ <para>
+ If everything builds correctly, run the following command to
+ install the module to the appropriate module directory:
+ </para>
+
+<screen>sudo make install</screen>
+
+ <para>
+ In case you do not have sudo, switch the user account to root
+ and run the following command:
+ </para>
+
+<screen>make install</screen>
+
+ <para>
+ The &product-name; kernel module needs a device node to
+ operate. The above <command>make</command> command will tell
+ you how to create the device node, depending on your Linux
+ system. The procedure is slightly different for a classical
+ Linux setup with a <filename>/dev</filename> directory, a
+ system with the now deprecated <command>devfs</command> and a
+ modern Linux system with <command>udev</command>.
+ </para>
+
+ <para>
+ On certain Linux distributions, you might experience
+ difficulties building the module. You will have to analyze the
+ error messages from the build system to diagnose the cause of
+ the problems. In general, make sure that the correct Linux
+ kernel sources are used for the build process.
+ </para>
+
+ <para>
+ Note that the <filename>/dev/vboxdrv</filename> kernel module
+ device node must be owned by root:root and must be
+ read/writable only for the user.
+ </para>
+
+ <para>
+ Next, you install the system initialization script for the
+ kernel module and activate the initialization script using the
+ right method for your distribution, as follows:
+ </para>
+
+<screen>cp /opt/VirtualBox/vboxdrv.sh /sbin/rcvboxdrv</screen>
+
+ <para>
+ This example assumes you installed &product-name; to the
+ <filename>/opt/VirtualBox</filename> directory.
+ </para>
+
+ <para>
+ Create a configuration file for &product-name;, as follows:
+ </para>
+
+<screen>mkdir /etc/vbox
+echo INSTALL_DIR=/opt/VirtualBox &gt; /etc/vbox/vbox.cfg</screen>
+
+ <para>
+ Create the following symbolic links:
+ </para>
+
+<screen>ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VirtualBox
+ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VBoxManage
+ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VBoxHeadless</screen>
+
+ </sect3>
+
+ <sect3 id="install-linux-update-uninstall">
+
+ <title>Updating and Uninstalling &product-name;</title>
+
+ <para>
+ Before updating or uninstalling &product-name;, you must
+ terminate any virtual machines which are currently running and
+ exit the &product-name; or VBoxSVC applications. To update
+ &product-name;, simply run the installer of the updated
+ version. To uninstall &product-name;, run the installer as
+ follows:
+ </para>
+
+<screen>sudo ./VirtualBox.run uninstall</screen>
+
+ <para>
+ As root, you can use the following command:
+ </para>
+
+<screen>./VirtualBox.run uninstall</screen>
+
+ <para>
+ You can uninstall the .run package as follows:
+ </para>
+
+<screen>/opt/VirtualBox/uninstall.sh</screen>
+
+ <para>
+ To manually uninstall &product-name;, perform the manual
+ installation steps in reverse order.
+ </para>
+
+ </sect3>
+
+ <sect3 id="install-linux-debian-automatic">
+
+ <title>Automatic Installation of Debian Packages</title>
+
+ <para>
+ The Debian packages will request some user feedback when
+ installed for the first time. The debconf system is used to
+ perform this task. To prevent any user interaction during
+ installation, default values can be defined. A file
+ <literal>vboxconf</literal> can contain the following debconf
+ settings:
+ </para>
+
+<screen>virtualbox virtualbox/module-compilation-allowed boolean true
+virtualbox virtualbox/delete-old-modules boolean true</screen>
+
+ <para>
+ The first line enables compilation of the vboxdrv kernel
+ module if no module was found for the current kernel. The
+ second line enables the package to delete any old vboxdrv
+ kernel modules compiled by previous installations.
+ </para>
+
+ <para>
+ These default settings can be applied prior to the
+ installation of the &product-name; Debian package, as follows:
+ </para>
+
+<screen>debconf-set-selections vboxconf</screen>
+
+ <para>
+ In addition there are some common configuration options that
+ can be set prior to the installation. See
+ <xref
+ linkend="linux_install_opts" />.
+ </para>
+
+ </sect3>
+
+ <sect3 id="install-linux-rpm-automatic">
+
+ <title>Automatic Installation of RPM Packages</title>
+
+ <para>
+ The RPM format does not provide a configuration system
+ comparable to the debconf system. See
+ <xref linkend="linux_install_opts" /> for how to set some
+ common installation options provided by &product-name;.
+ </para>
+
+ </sect3>
+
+ <sect3 id="linux_install_opts">
+
+ <title>Automatic Installation Options</title>
+
+ <para>
+ To configure the installation process for .deb and .rpm
+ packages, you can create a response file named
+ <filename>/etc/default/virtualbox</filename>. The automatic
+ generation of the udev rule can be prevented with the
+ following setting:
+ </para>
+
+<screen>INSTALL_NO_UDEV=1</screen>
+
+ <para>
+ The creation of the group vboxusers can be prevented as
+ follows:
+ </para>
+
+<screen>INSTALL_NO_GROUP=1</screen>
+
+ <para>
+ If the following line is specified, the package installer will
+ not try to build the <command>vboxdrv</command> kernel module
+ if no module fitting the current kernel was found.
+ </para>
+
+<screen>INSTALL_NO_VBOXDRV=1</screen>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="install-linux-vboxusers">
+
+ <title>The vboxusers Group</title>
+
+ <para>
+ The Linux installers create the system user group
+ <literal>vboxusers</literal> during installation. Any system
+ user who is going to use USB devices from &product-name; guests
+ must be a member of that group. A user can be made a member of
+ the group <literal>vboxusers</literal> either by using the
+ desktop user and group tools, or with the following command:
+ </para>
+
+<screen>sudo usermod -a -G vboxusers username</screen>
+
+ </sect2>
+
+ <sect2 id="startingvboxonlinux">
+
+ <title>Starting &product-name; on Linux</title>
+
+ <para>
+ The easiest way to start an &product-name; program is by running
+ the program of your choice (<command>VirtualBox</command>,
+ <command>VBoxManage</command>, or
+ <command>VBoxHeadless</command>) from a terminal. These are
+ symbolic links to <command>VBox.sh</command> that start the
+ required program for you.
+ </para>
+
+ <para>
+ The following detailed instructions should only be of interest
+ if you wish to execute &product-name; without installing it
+ first. You should start by compiling the
+ <command>vboxdrv</command> kernel module and inserting it into
+ the Linux kernel. &product-name; consists of a service daemon,
+ <command>VBoxSVC</command>, and several application programs.
+ The daemon is automatically started if necessary. All
+ &product-name; applications will communicate with the daemon
+ through UNIX local domain sockets. There can be multiple daemon
+ instances under different user accounts and applications can
+ only communicate with the daemon running under the user account
+ as the application. The local domain socket resides in a
+ subdirectory of your system's directory for temporary files
+ called <filename>.vbox-&lt;username&gt;-ipc</filename>. In case
+ of communication problems or server startup problems, you may
+ try to remove this directory.
+ </para>
+
+ <para>
+ All &product-name; applications (<command>VirtualBox</command>,
+ <command>VBoxManage</command>, and
+ <command>VBoxHeadless</command>) require the &product-name;
+ directory to be in the library path, as follows:
+ </para>
+
+<screen>LD_LIBRARY_PATH=. ./VBoxManage showvminfo "Windows XP"</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="install-solaris-host">
+
+ <title>Installing on Oracle Solaris Hosts</title>
+
+ <para>
+ For the specific versions of Oracle Solaris that are supported as
+ host operating systems, see <xref linkend="hostossupport" />.
+ </para>
+
+ <para>
+ If you have a previously installed instance of &product-name; on
+ your Oracle Solaris host, please uninstall it first before
+ installing a new instance. See
+ <xref linkend="uninstall-solaris-host" /> for uninstall
+ instructions.
+ </para>
+
+ <sect2 id="install-solaris-performing">
+
+ <title>Performing the Installation</title>
+
+ <para>
+ &product-name; is available as a standard Oracle Solaris
+ package. Download the &product-name; SunOS package, which
+ includes the 64-bit version of &product-name;. <emphasis>The
+ installation must be performed as root and from the global
+ zone</emphasis>. This is because the &product-name; installer
+ loads kernel drivers, which cannot be done from non-global
+ zones. To verify which zone you are currently in, execute the
+ <command>zonename</command> command.
+ </para>
+
+ <para>
+ To start installation, run the following commands:
+ </para>
+
+<screen>gunzip -cd VirtualBox-<replaceable>version-number</replaceable>-SunOS.tar.gz | tar xvf -</screen>
+
+ <para>
+ The &product-name; kernel package is integrated into the main
+ package. Install the &product-name; package as follows:
+ </para>
+
+<screen>pkgadd -d VirtualBox-<replaceable>version-number</replaceable>-SunOS.pkg</screen>
+
+ <para>
+ The installer will then prompt you to enter the package you wish
+ to install. Choose <emphasis role="bold">1</emphasis> or
+ <emphasis role="bold">all</emphasis> and proceed. Next the
+ installer will ask you if you want to allow the postinstall
+ script to be executed. Choose <emphasis role="bold">y</emphasis>
+ and proceed, as it is essential to execute this script which
+ installs the &product-name; kernel module. Following this
+ confirmation the installer will install &product-name; and
+ execute the postinstall setup script.
+ </para>
+
+ <para>
+ Once the postinstall script has been executed your installation
+ is now complete. You may now safely delete the uncompressed
+ package and <filename>autoresponse</filename> files from your
+ system. &product-name; is installed in
+ <filename>/opt/VirtualBox</filename>.
+ </para>
+
+ <note>
+ <para>
+ If you need to use &product-name; from non-global zones, see
+ <xref linkend="solaris-zones" />.
+ </para>
+ </note>
+
+ </sect2>
+
+ <sect2 id="install-solaris-vboxuser">
+
+ <title>The vboxuser Group</title>
+
+ <para>
+ The installer creates the system user group
+ <literal>vboxuser</literal> during installation for Oracle
+ Solaris hosts that support the USB features required by
+ &product-name;. Any system user who is going to use USB devices
+ from &product-name; guests must be a member of this group. A
+ user can be made a member of this group either by using the
+ desktop user and group tools or by running the following command
+ as root:
+ </para>
+
+<screen>usermod -G vboxuser username</screen>
+
+ <para>
+ Note that adding an active user to the
+ <literal>vboxuser</literal> group will require the user to log
+ out and then log in again. This should be done manually after
+ successful installation of the package.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-solaris-starting">
+
+ <title>Starting &product-name; on Oracle Solaris</title>
+
+ <para>
+ The easiest way to start an &product-name; program is by running
+ the program of your choice (<command>VirtualBox</command>,
+ <command>VBoxManage</command>, or
+ <command>VBoxHeadless</command>) from a terminal. These are
+ symbolic links to <command>VBox.sh</command> that start the
+ required program for you.
+ </para>
+
+ <para>
+ Alternatively, you can directly invoke the required programs
+ from <filename>/opt/VirtualBox</filename>. Using the links
+ provided is easier as you do not have to enter the full path.
+ </para>
+
+ <para>
+ You can configure some elements of the
+ <command>VirtualBox</command> Qt GUI, such as fonts and colours,
+ by running <command>VBoxQtconfig</command> from the terminal.
+ </para>
+
+ </sect2>
+
+ <sect2 id="uninstall-solaris-host">
+
+ <title>Uninstallation</title>
+
+ <para>
+ Uninstallation of &product-name; on Oracle Solaris requires root
+ permissions. To perform the uninstallation, start a root
+ terminal session and run the following command:
+ </para>
+
+<screen>pkgrm SUNWvbox</screen>
+
+ <para>
+ After confirmation, this will remove &product-name; from your
+ system.
+ </para>
+
+ </sect2>
+
+ <sect2 id="install-solaris-unattended">
+
+ <title>Unattended Installation</title>
+
+ <para>
+ To perform a non-interactive installation of &product-name;
+ there is a response file named
+ <filename>autoresponse</filename>. The installer uses this for
+ responses to inputs, rather than prompting the user.
+ </para>
+
+ <para>
+ Extract the tar.gz package as described in
+ <xref linkend="install-solaris-performing"/>. Then open a root
+ terminal session and run the following command:
+ </para>
+
+<screen>pkgadd -d VirtualBox-<replaceable>version-number</replaceable>-SunOS-x86 -n -a autoresponse SUNWvbox</screen>
+
+ <para>
+ To perform a non-interactive uninstallation, open a root
+ terminal session and run the following command:
+ </para>
+
+<screen>pkgrm -n -a /opt/VirtualBox/autoresponse SUNWvbox</screen>
+
+ </sect2>
+
+ <sect2 id="solaris-zones">
+
+ <title>Configuring a Zone for Running &product-name;</title>
+
+ <para>
+ Assuming that &product-name; has already been installed into
+ your zone, you need to give the zone access to &product-name;'s
+ device node. This is done by performing the following steps.
+ Start a root terminal and run the following command:
+ </para>
+
+<screen>zonecfg -z <replaceable>vboxzone</replaceable></screen>
+
+ <para>
+ Replace <replaceable>vboxzone</replaceable> with the name of the
+ zone where you intend to run &product-name;.
+ </para>
+
+ <para>
+ Use <command>zonecfg</command> to add the
+ <literal>device</literal> resource and <literal>match</literal>
+ properties to the zone, as follows:
+ </para>
+
+<screen>zonecfg:vboxzone&gt;add device
+zonecfg:vboxzone:device&gt;set match=/dev/vboxdrv
+zonecfg:vboxzone:device&gt;end
+zonecfg:vboxzone&gt;add device
+zonecfg:vboxzone:device&gt;set match=/dev/vboxdrvu
+zonecfg:vboxzone:device&gt;end
+zonecfg:vboxzone&gt;exit</screen>
+
+ <para>
+ On Oracle Solaris 11 or later, you may also add a device for
+ <filename>/dev/vboxusbmon</filename>, similar to that shown
+ above.
+ </para>
+
+ <para>
+ If you are not using sparse root zones, you will need to
+ loopback mount <filename>/opt/VirtualBox</filename> from the
+ global zone into the non-global zone at the same path. This is
+ specified below using the <literal>dir</literal> attribute and
+ the <literal>special</literal> attribute. For example:
+ </para>
+
+<screen>zonecfg:vboxzone&gt;add fs
+zonecfg:vboxzone:device&gt;set dir=/opt/VirtualBox
+zonecfg:vboxzone:device&gt;set special=/opt/VirtualBox
+zonecfg:vboxzone:device&gt;set type=lofs
+zonecfg:vboxzone:device&gt;end
+zonecfg:vboxzone&gt;exit</screen>
+
+ <para>
+ Reboot the zone using <command>zoneadm</command> and you should
+ be able to run &product-name; from within the configured zone.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Introduction.xml b/doc/manual/en_US/user_Introduction.xml
new file mode 100644
index 00000000..a75280eb
--- /dev/null
+++ b/doc/manual/en_US/user_Introduction.xml
@@ -0,0 +1,4801 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="Introduction">
+
+ <title>First Steps</title>
+
+ <para>
+ Welcome to &product-name;.
+ </para>
+
+ <para>
+ &product-name; is a cross-platform virtualization application. What
+ does that mean? For one thing, it installs on your existing Intel or
+ AMD-based computers, whether they are running Windows, Mac OS X,
+ Linux, or Oracle Solaris operating systems (OSes). Secondly, it
+ extends the capabilities of your existing computer so that it can
+ run multiple OSes, inside multiple virtual machines, at the same
+ time. As an example, you can run Windows and Linux on your Mac, run
+ Windows Server 2016 on your Linux server, run Linux on your Windows
+ PC, and so on, all alongside your existing applications. You can
+ install and run as many virtual machines as you like. The only
+ practical limits are disk space and memory.
+ </para>
+
+ <para>
+ &product-name; is deceptively simple yet also very powerful. It can
+ run everywhere from small embedded systems or desktop class machines
+ all the way up to datacenter deployments and even Cloud
+ environments.
+ </para>
+
+ <para>
+ The following screenshot shows how &product-name;, installed on an
+ Apple Mac OS X computer, is running Windows Server 2016 in a virtual
+ machine window.
+ </para>
+
+ <figure id="fig-win2016-intro">
+ <title>Windows Server 2016 Virtual Machine, Displayed on a Mac OS X Host</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-vista-running.png"
+ width="14cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ In this User Manual, we will begin simply with a quick introduction
+ to virtualization and how to get your first virtual machine running
+ with the easy-to-use &product-name; graphical user interface.
+ Subsequent chapters will go into much more detail covering more
+ powerful tools and features, but fortunately, it is not necessary to
+ read the entire User Manual before you can use &product-name;.
+ </para>
+
+ <para>
+ You can find a summary of &product-name;'s capabilities in
+ <xref linkend="features-overview" />. For existing &product-name;
+ users who just want to find out what is new in this release, see the
+ <xref linkend="ChangeLog"/>.
+ </para>
+
+ <sect1 id="virt-why-useful">
+
+ <title>Why is Virtualization Useful?</title>
+
+ <para>
+ The techniques and features that &product-name; provides are
+ useful in the following scenarios:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Running multiple operating systems
+ simultaneously.</emphasis> &product-name; enables you to run
+ more than one OS at a time. This way, you can run software
+ written for one OS on another, such as Windows software on
+ Linux or a Mac, without having to reboot to use it. Since you
+ can configure what kinds of <emphasis>virtual</emphasis>
+ hardware should be presented to each such OS, you can install
+ an old OS such as DOS or OS/2 even if your real computer's
+ hardware is no longer supported by that OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Easier software
+ installations.</emphasis> Software vendors can use virtual
+ machines to ship entire software configurations. For example,
+ installing a complete mail server solution on a real machine
+ can be a tedious task. With &product-name;, such a complex
+ setup, often called an <emphasis>appliance</emphasis>, can be
+ packed into a virtual machine. Installing and running a mail
+ server becomes as easy as importing such an appliance into
+ &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Testing and disaster
+ recovery.</emphasis> Once installed, a virtual machine and its
+ virtual hard disks can be considered a
+ <emphasis>container</emphasis> that can be arbitrarily frozen,
+ woken up, copied, backed up, and transported between hosts.
+ </para>
+
+ <para>
+ On top of that, with the use of another &product-name; feature
+ called <emphasis>snapshots</emphasis>, one can save a
+ particular state of a virtual machine and revert back to that
+ state, if necessary. This way, one can freely experiment with
+ a computing environment. If something goes wrong, such as
+ problems after installing software or infecting the guest with
+ a virus, you can easily switch back to a previous snapshot and
+ avoid the need of frequent backups and restores.
+ </para>
+
+ <para>
+ Any number of snapshots can be created, allowing you to travel
+ back and forward in virtual machine time. You can delete
+ snapshots while a VM is running to reclaim disk space.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Infrastructure consolidation.</emphasis>
+ Virtualization can significantly reduce hardware and
+ electricity costs. Most of the time, computers today only use
+ a fraction of their potential power and run with low average
+ system loads. A lot of hardware resources as well as
+ electricity is thereby wasted. So, instead of running many
+ such physical computers that are only partially used, one can
+ pack many virtual machines onto a few powerful hosts and
+ balance the loads between them.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="virtintro">
+
+ <title>Some Terminology</title>
+
+ <para>
+ When dealing with virtualization, and also for understanding the
+ following chapters of this documentation, it helps to acquaint
+ oneself with a bit of crucial terminology, especially the
+ following terms:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host operating system (host
+ OS).</emphasis> This is the OS of the physical computer on
+ which &product-name; was installed. There are versions of
+ &product-name; for Windows, Mac OS X, Linux, and Oracle
+ Solaris hosts. See <xref linkend="hostossupport" />.
+ </para>
+
+ <para>
+ Most of the time, this manual discusses all &product-name;
+ versions together. There may be platform-specific differences
+ which we will point out where appropriate.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest operating system (guest
+ OS).</emphasis> This is the OS that is running inside the
+ virtual machine. Theoretically, &product-name; can run any x86
+ OS such as DOS, Windows, OS/2, FreeBSD, and OpenBSD. But to
+ achieve near-native performance of the guest code on your
+ machine, we had to go through a lot of optimizations that are
+ specific to certain OSes. So while your favorite OS
+ <emphasis>may</emphasis> run as a guest, we officially support
+ and optimize for a select few, which include the most common
+ OSes.
+ </para>
+
+ <para>
+ See <xref linkend="guestossupport" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Virtual machine (VM).</emphasis> This is
+ the special environment that &product-name; creates for your
+ guest OS while it is running. In other words, you run your
+ guest OS <emphasis>in</emphasis> a VM. Normally, a VM is shown
+ as a window on your computer's desktop. Depending on which of
+ the various frontends of &product-name; you use, the VM might
+ be shown in full screen mode or remotely on another computer.
+ </para>
+
+ <para>
+ Internally, &product-name; treats a VM as a set of parameters
+ that specify its behavior. Some parameters describe hardware
+ settings, such as the amount of memory and number of CPUs
+ assigned. Other parameters describe the state information,
+ such as whether the VM is running or saved.
+ </para>
+
+ <para>
+ You can view these VM settings in the VirtualBox Manager
+ window, the <emphasis role="bold">Settings</emphasis> dialog,
+ and by running the <command>VBoxManage</command> command. See
+ <xref linkend="vboxmanage" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest Additions.</emphasis> This refers
+ to special software packages which are shipped with
+ &product-name; but designed to be installed
+ <emphasis>inside</emphasis> a VM to improve performance of the
+ guest OS and to add extra features. See
+ <xref linkend="guestadditions" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="features-overview">
+
+ <title>Features Overview</title>
+
+ <para>
+ The following is a brief outline of &product-name;'s main
+ features:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Portability.</emphasis> &product-name;
+ runs on a large number of 64-bit host operating systems. See
+ <xref linkend="hostossupport" />.
+ </para>
+
+ <para>
+ &product-name; is a so-called <emphasis>hosted</emphasis>
+ hypervisor, sometimes referred to as a <emphasis>type
+ 2</emphasis> hypervisor. Whereas a
+ <emphasis>bare-metal</emphasis> or <emphasis>type 1</emphasis>
+ hypervisor would run directly on the hardware, &product-name;
+ requires an existing OS to be installed. It can thus run
+ alongside existing applications on that host.
+ </para>
+
+ <para>
+ To a very large degree, &product-name; is functionally
+ identical on all of the host platforms, and the same file and
+ image formats are used. This enables you to run virtual
+ machines created on one host on another host with a different
+ host OS. For example, you can create a virtual machine on
+ Windows and then run it under Linux.
+ </para>
+
+ <para>
+ In addition, virtual machines can easily be imported and
+ exported using the Open Virtualization Format (OVF), an
+ industry standard created for this purpose. You can even
+ import OVFs that were created with a different virtualization
+ software. See <xref linkend="ovf" />.
+ </para>
+
+ <para>
+ For users of &oci; the functionality extends to exporting and
+ importing virtual machines to and from the cloud. This
+ simplifies development of applications and deployment to the
+ production environment. See
+ <xref linkend="cloud-export-oci"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest Additions: shared folders,
+ seamless windows, 3D virtualization.</emphasis> The
+ &product-name; Guest Additions are software packages which can
+ be installed <emphasis>inside</emphasis> of supported guest
+ systems to improve their performance and to provide additional
+ integration and communication with the host system. After
+ installing the Guest Additions, a virtual machine will support
+ automatic adjustment of video resolutions, seamless windows,
+ accelerated 3D graphics and more. See
+ <xref linkend="guestadditions" />.
+ </para>
+
+ <para>
+ In particular, Guest Additions provide for <emphasis>shared
+ folders</emphasis>, which let you access files on the host
+ system from within a guest machine. See
+ <xref linkend="sharedfolders" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Great hardware support.</emphasis> Among
+ other features, &product-name; supports the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest multiprocessing
+ (SMP).</emphasis> &product-name; can present up to 32
+ virtual CPUs to each virtual machine, irrespective of how
+ many CPU cores are physically present on your host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB device support.</emphasis>
+ &product-name; implements a virtual USB controller and
+ enables you to connect arbitrary USB devices to your
+ virtual machines without having to install device-specific
+ drivers on the host. USB support is not limited to certain
+ device categories. See <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Hardware compatibility.</emphasis>
+ &product-name; virtualizes a vast array of virtual
+ devices, among them many devices that are typically
+ provided by other virtualization platforms. That includes
+ IDE, SCSI, and SATA hard disk controllers, several virtual
+ network cards and sound cards, virtual serial and parallel
+ ports and an Input/Output Advanced Programmable Interrupt
+ Controller (I/O APIC), which is found in many computer
+ systems. This enables easy cloning of disk images from
+ real machines and importing of third-party virtual
+ machines into &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Full ACPI support.</emphasis> The
+ Advanced Configuration and Power Interface (ACPI) is fully
+ supported by &product-name;. This enables easy cloning of
+ disk images from real machines or third-party virtual
+ machines into &product-name;. With its unique
+ <emphasis>ACPI power status support</emphasis>,
+ &product-name; can even report to ACPI-aware guest OSes
+ the power status of the host. For mobile systems running
+ on battery, the guest can thus enable energy saving and
+ notify the user of the remaining power, for example in
+ full screen modes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Multiscreen resolutions.</emphasis>
+ &product-name; virtual machines support screen resolutions
+ many times that of a physical screen, allowing them to be
+ spread over a large number of screens attached to the host
+ system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Built-in iSCSI support.</emphasis>
+ This unique feature enables you to connect a virtual
+ machine directly to an iSCSI storage server without going
+ through the host system. The VM accesses the iSCSI target
+ directly without the extra overhead that is required for
+ virtualizing hard disks in container files. See
+ <xref linkend="storage-iscsi" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">PXE Network boot.</emphasis> The
+ integrated virtual network cards of &product-name; fully
+ support remote booting using the Preboot Execution
+ Environment (PXE).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Multigeneration branched
+ snapshots.</emphasis> &product-name; can save arbitrary
+ snapshots of the state of the virtual machine. You can go back
+ in time and revert the virtual machine to any such snapshot
+ and start an alternative VM configuration from there,
+ effectively creating a whole snapshot tree. See
+ <xref linkend="snapshots" />. You can create and delete
+ snapshots while the virtual machine is running.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VM groups.</emphasis> &product-name;
+ provides a groups feature that enables the user to organize
+ and control virtual machines collectively, as well as
+ individually. In addition to basic groups, it is also possible
+ for any VM to be in more than one group, and for groups to be
+ nested in a hierarchy. This means you can have groups of
+ groups. In general, the operations that can be performed on
+ groups are the same as those that can be applied to individual
+ VMs: Start, Pause, Reset, Close (Save state, Send Shutdown,
+ Poweroff), Discard Saved State, Show in File System, Sort.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Clean architecture and unprecedented
+ modularity.</emphasis> &product-name; has an extremely modular
+ design with well-defined internal programming interfaces and a
+ clean separation of client and server code. This makes it easy
+ to control it from several interfaces at once. For example,
+ you can start a VM simply by clicking on a button in the
+ &product-name; graphical user interface and then control that
+ machine from the command line, or even remotely. See
+ <xref linkend="frontends" />.
+ </para>
+
+ <para>
+ Due to its modular architecture, &product-name; can also
+ expose its full functionality and configurability through a
+ comprehensive <emphasis role="bold">software development kit
+ (SDK),</emphasis> which enables integration of &product-name;
+ with other software systems. See
+ <xref linkend="VirtualBoxAPI" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Remote machine display.</emphasis> The
+ VirtualBox Remote Desktop Extension (VRDE) enables
+ high-performance remote access to any running virtual machine.
+ This extension supports the Remote Desktop Protocol (RDP)
+ originally built into Microsoft Windows, with special
+ additions for full client USB support.
+ </para>
+
+ <para>
+ The VRDE does not rely on the RDP server that is built into
+ Microsoft Windows. Instead, the VRDE is plugged directly into
+ the virtualization layer. As a result, it works with guest
+ OSes other than Windows, even in text mode, and does not
+ require application support in the virtual machine either. The
+ VRDE is described in detail in <xref linkend="vrde" />.
+ </para>
+
+ <para>
+ On top of this special capacity, &product-name; offers you
+ more unique features:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Extensible RDP
+ authentication.</emphasis> &product-name; already supports
+ Winlogon on Windows and PAM on Linux for RDP
+ authentication. In addition, it includes an easy-to-use
+ SDK which enables you to create arbitrary interfaces for
+ other methods of authentication. See
+ <xref linkend="vbox-auth" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">USB over RDP.</emphasis> Using RDP
+ virtual channel support, &product-name; also enables you
+ to connect arbitrary USB devices locally to a virtual
+ machine which is running remotely on an &product-name; RDP
+ server. See <xref linkend="usb-over-rdp" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="hostossupport">
+
+ <title>Supported Host Operating Systems</title>
+
+ <para>
+ Currently, &product-name; runs on the following host OSes:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Windows hosts (64-bit):</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Windows 8.1
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 RTM (1507 / 2015 LTSB) build 10240
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 Anniversary Update (1607 / 2016 LTSB) build
+ 14393
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 Fall Creators Update (1709) build 16299
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 April 2018 Update (1803) build 17134
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 October 2018 Update (1809 / 2019 LTSC) build
+ 17763
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 May 2019 Update (19H1 / 1903) build 18362
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows 10 November 2019 Update (19H2 / 1909) build 18363
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Server 2012
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Server 2012 R2
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Server 2016
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Server 2019
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Mac OS X hosts (64-bit):</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ 10.13 (High Sierra)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 10.14 (Mojave)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 10.15 (Catalina)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Intel hardware is required. See also
+ <xref linkend="KnownIssues" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Linux hosts (64-bit).</emphasis>
+ Includes the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Ubuntu 18.04 LTS, 19.03 and 19.10
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Debian GNU/Linux 9 ("Stretch") and 10 ("Buster")
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Oracle Linux 6, 7 and 8
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ CentOS/Red Hat Enterprise Linux 6, 7 and 8
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fedora 30 and 31
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Gentoo Linux
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SUSE Linux Enterprise server 12 and 15
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ openSUSE Leap 15.1
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ It should be possible to use &product-name; on most systems
+ based on Linux kernel 2.6, 3.x, 4.x or 5.x using either the
+ &product-name; installer or by doing a manual installation.
+ See <xref linkend="install-linux-host" />. However, the
+ formally tested and supported Linux distributions are those
+ for which we offer a dedicated package.
+ </para>
+
+ <para>
+ Note that Linux 2.4-based host OSes are no longer supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Oracle Solaris hosts (64-bit
+ only).</emphasis> The following versions are supported with
+ the restrictions listed in <xref linkend="KnownIssues" />:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Oracle Solaris 11
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Note that any feature which is marked as
+ <emphasis>experimental</emphasis> is not supported. Feedback and
+ suggestions about such features are welcome.
+ </para>
+
+ <sect2 id="hostcpurequirements">
+
+ <title>Host CPU Requirements</title>
+
+ <para>
+ SSE2 (Streaming SIMD Extensions 2) support is required for host
+ CPUs.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="intro-installing">
+
+ <title>Installing &product-name; and Extension Packs</title>
+
+ <para>
+ &product-name; comes in many different packages, and installation
+ depends on your host OS. If you have installed software before,
+ installation should be straightforward. On each host platform,
+ &product-name; uses the installation method that is most common
+ and easy to use. If you run into trouble or have special
+ requirements, see <xref linkend="installation" /> for details
+ about the various installation methods.
+ </para>
+
+ <para>
+ &product-name; is split into the following components:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Base package.</emphasis> The base
+ package consists of all open source components and is licensed
+ under the GNU General Public License V2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Extension packs.</emphasis> Additional
+ extension packs can be downloaded which extend the
+ functionality of the &product-name; base package. Currently,
+ Oracle provides a single extension pack, available from:
+ <ulink url="http://www.virtualbox.org" />. The extension pack
+ provides the following added functionality:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The virtual USB 2.0 (EHCI) device. See
+ <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The virtual USB 3.0 (xHCI) device. See
+ <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VirtualBox Remote Desktop Protocol (VRDP) support. See
+ <xref linkend="vrde" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Host webcam passthrough. See
+ <xref linkend="webcam-passthrough" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Intel PXE boot ROM.
+ </para>
+ </listitem>
+
+<!-- <listitem>
+ <para>
+ Experimental support for PCI passthrough on Linux hosts.
+ See <xref linkend="pcipassthrough" />.
+ </para>
+ </listitem>-->
+
+ <listitem>
+ <para>
+ Disk image encryption with AES algorithm. See
+ <xref linkend="diskencryption" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Cloud integration features. See <xref linkend="ovf"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ &product-name; extension packages have a
+ <filename>.vbox-extpack</filename> file name extension. To
+ install an extension, simply double-click on the package file
+ and a <emphasis role="bold">Network Operations
+ Manager</emphasis> window is shown to guide you through the
+ required steps.
+ </para>
+
+ <para>
+ To view the extension packs that are currently installed,
+ start the VirtualBox Manager, as shown in
+ <xref linkend="intro-starting"/>. From the
+ <emphasis role="bold">File</emphasis> menu, select
+ <emphasis role="bold">Preferences</emphasis>. In the window
+ that displays, go to the
+ <emphasis role="bold">Extensions</emphasis> category. This
+ shows you the extensions which are currently installed, and
+ enables you to remove a package or add a new package.
+ </para>
+
+ <para>
+ Alternatively, you can use the <command>VBoxManage</command>
+ command line. See <xref linkend="vboxmanage-extpack" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="intro-starting">
+
+ <title>Starting &product-name;</title>
+
+ <para>
+ After installation, you can start &product-name; as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On a Windows host, in the
+ <emphasis role="bold">Programs</emphasis> menu, click on the
+ item in the <emphasis role="bold">VirtualBox</emphasis> group.
+ On some Windows platforms, you can also enter
+ <command>VirtualBox</command> in the search box of the
+ <emphasis role="bold">Start</emphasis> menu.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On a Mac OS X host, in the Finder, double-click on the
+ <emphasis role="bold">VirtualBox</emphasis> item in the
+ Applications folder. You may want to drag this item onto your
+ Dock.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On a Linux or Oracle Solaris host, depending on your desktop
+ environment, an &product-name; item may have been placed in
+ either the System or System Tools group of your
+ <emphasis role="bold">Applications</emphasis> menu.
+ Alternatively, you can enter <command>VirtualBox</command> in
+ a terminal window.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ When you start &product-name; for the first time, a window like
+ the following is displayed:
+ </para>
+
+ <figure id="fig-vbox-manager-initial">
+ <title>VirtualBox Manager Window, After Initial Startup</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtualbox-main-empty.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ This window is called the <emphasis role="bold">VirtualBox
+ Manager</emphasis>. The left pane will later list all your virtual
+ machines. Since you have not yet created any virtual machines,
+ this list is empty. The <emphasis role="bold">Tools</emphasis>
+ button provides access to user tools, such as the Virtual Media
+ Manager.
+ </para>
+
+ <para>
+ The pane on the right displays the properties of the currently
+ selected virtual machine. Since you do not have any machines yet,
+ the pane displays a welcome message.
+ </para>
+
+ <para>
+ The buttons on the right pane are used to create and work with
+ VMs.
+ </para>
+
+ <para>
+ The following figure gives an idea of what &product-name; might
+ look like after you have created some VMs.
+ </para>
+
+ <figure id="fig-vbox-manager-populated">
+ <title>VirtualBox Manager Window, After Creating Virtual Machines</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtualbox-main.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ </sect1>
+
+ <sect1 id="gui-createvm">
+
+ <title>Creating Your First Virtual Machine</title>
+
+ <para>
+ Click <emphasis role="bold">New</emphasis> in the VirtualBox
+ Manager window. A wizard is shown, to guide you through setting up
+ a new virtual machine (VM).
+ </para>
+
+ <figure id="fig-new-vm-name">
+ <title>Creating a New Virtual Machine: Name and Operating System</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vm-1.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ On the following pages, the wizard will ask you for the bare
+ minimum of information that is needed to create a VM, in
+ particular:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">Name</emphasis> of the VM you choose
+ is shown in the machine list of the VirtualBox Manager window
+ and is also used for the VM's files on disk.
+ </para>
+
+ <para>
+ Be sure to assign each VM an informative name that describes
+ the OS and software running on the VM. For example,
+ <literal>Windows 10 with Visio</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">Machine Folder</emphasis> is the
+ location where VMs are stored on your computer. The default
+ folder location is shown.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For <emphasis role="bold">Operating System Type</emphasis>,
+ select the OS that you want to install. The supported OSes are
+ grouped. If you want to install something very unusual that is
+ not listed, select <emphasis role="bold">Other</emphasis>.
+ Depending on your selection, &product-name; will enable or
+ disable certain VM settings that your guest OS may require.
+ This is particularly important for 64-bit guests. See
+ <xref linkend="intro-64bitguests" />. It is therefore
+ recommended to always set it to the correct value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On the next page, select the <emphasis role="bold">Memory
+ (RAM)</emphasis> that &product-name; should allocate every
+ time the virtual machine is started. The amount of memory
+ given here will be taken away from your host machine and
+ presented to the guest OS, which will report this size as the
+ virtual computer's installed RAM.
+ </para>
+
+ <caution>
+ <para>
+ Choose this setting carefully. The memory you give to the VM
+ will not be available to your host OS while the VM is
+ running, so do not specify more than you can spare.
+ </para>
+
+ <para>
+ For example, if your host machine has 4 GB of RAM and you
+ enter 2048 MB as the amount of RAM for a particular virtual
+ machine, you will only have 2 GB left for all the other
+ software on your host while the VM is running. If you run
+ two VMs at the same time, even more memory will be allocated
+ for the second VM, which may not even be able to start if
+ that memory is not available.
+ </para>
+
+ <para>
+ On the other hand, you should specify as much as your guest
+ OS and your applications will require to run properly. A
+ guest OS may require at least 1 or 2 GB of memory to install
+ and boot up. For best performance, more memory than that may
+ be required.
+ </para>
+ </caution>
+
+ <para>
+ Always ensure that the host OS has enough RAM remaining. If
+ insufficient RAM remains, the system might excessively swap
+ memory to the hard disk, which effectively brings the host
+ system to a standstill.
+ </para>
+
+ <para>
+ As with the other settings, you can change this setting later,
+ after you have created the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Next, you must specify a <emphasis role="bold">Virtual Hard
+ Disk</emphasis> for your VM.
+ </para>
+
+ <para>
+ There are many and potentially complicated ways in which
+ &product-name; can provide hard disk space to a VM, see
+ <xref linkend="storage" />, but the most common way is to use
+ a large image file on your physical hard disk, whose contents
+ &product-name; presents to your VM as if it were a complete
+ hard disk. This file then represents an entire hard disk, so
+ you can even copy it to another host and use it with another
+ &product-name; installation.
+ </para>
+
+ <para>
+ The wizard displays the following window:
+ </para>
+
+ <figure id="fig-new-vm-hard-disk">
+ <title>Creating a New Virtual Machine: Hard Disk</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vm-2.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ At this screen, you have the following options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To create a new, empty virtual hard disk, click the
+ <emphasis role="bold">Create</emphasis> button.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can pick an <emphasis>existing</emphasis> disk image
+ file.
+ </para>
+
+ <para>
+ The drop-down list presented in the window lists all disk
+ images which are currently remembered by &product-name;.
+ These disk images are currently attached to a virtual
+ machine, or have been attached to a virtual machine.
+ </para>
+
+ <para>
+ Alternatively, click on the small
+ <emphasis role="bold">folder icon</emphasis> next to the
+ drop-down list. In the displayed file dialog, you can
+ click <emphasis role="bold">Add</emphasis> to select any
+ disk image file on your host disk.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you are using &product-name; for the first time, you will
+ want to create a new disk image. Click the
+ <emphasis role="bold">Create</emphasis> button.
+ </para>
+
+ <para>
+ This displays another window, the <emphasis role="bold">Create
+ Virtual Hard Disk Wizard</emphasis> wizard. This wizard helps
+ you to create a new disk image file in the new virtual
+ machine's folder.
+ </para>
+
+ <para>
+ &product-name; supports the following types of image files:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A <emphasis role="bold">dynamically allocated
+ file</emphasis> only grows in size when the guest actually
+ stores data on its virtual hard disk. Therefore, this file
+ is small initially. As the drive is filled with data, the
+ file grows to the specified size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A <emphasis role="bold">fixed-size file</emphasis>
+ immediately occupies the file specified, even if only a
+ fraction of that virtual hard disk space is actually in
+ use. While occupying much more space, a fixed-size file
+ incurs less overhead and is therefore slightly faster than
+ a dynamically allocated file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For details about the differences, see
+ <xref linkend="vdidetails" />.
+ </para>
+
+ <para>
+ To prevent your physical hard disk (host OS) from filling up,
+ &product-name; limits the size of the image file. But the
+ image file must be large enough to hold the contents of the
+ guest OS and the applications you want to install. For a
+ Windows or Linux guest, you will probably need several
+ gigabytes for any serious use. The limit of the image file
+ size can be changed later, see
+ <xref linkend="vboxmanage-modifymedium"/>.
+ </para>
+
+ <figure id="fig-new-vm-vdi">
+ <title>Creating a New Virtual Machine: File Location and Size</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vdi-1.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ After having selected or created your image file, click
+ <emphasis role="bold">Next</emphasis> to go to the next page.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Create</emphasis>, to create your
+ new virtual machine. The virtual machine is displayed in the
+ list on the left side of the VirtualBox Manager window, with
+ the name that you entered initially.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <note>
+ <para>
+ After becoming familiar with the use of wizards, consider using
+ the Expert Mode available in some wizards. Where available, this
+ is selectable using a button, and speeds up the process of using
+ wizards.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="intro-running">
+
+ <title>Running Your Virtual Machine</title>
+
+ <para>
+ To start a virtual machine, you have several options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Double-click on the VM's entry in the list in the VirtualBox
+ Manager window.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Select the VM's entry in the list in the VirtualBox Manager
+ window, and click <emphasis role="bold">Start</emphasis> at
+ the top of the window.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Go to the <filename>VirtualBox VMs</filename> folder in your
+ system user's home directory. Find the subdirectory of the
+ machine you want to start and double-click on the machine
+ settings file. This file has a <filename>.vbox</filename> file
+ extension.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Starting a virtual machine displays a new window, and the virtual
+ machine which you selected will boot up. Everything which would
+ normally be seen on the virtual system's monitor is shown in the
+ window. See the screenshot image in
+ <xref linkend="Introduction"/>.
+ </para>
+
+ <para>
+ In general, you can use the virtual machine as you would use a
+ real computer. There are couple of points worth mentioning
+ however.
+ </para>
+
+ <sect2 id="intro-starting-vm-first-time">
+
+ <title>Starting a New VM for the First Time</title>
+
+ <para>
+ When a VM is started for the first time, the
+ <emphasis role="bold">First Start Wizard</emphasis>, is
+ displayed. This wizard helps you to select an installation
+ medium. Since the VM is created empty, it would otherwise behave
+ just like a real computer with no OS installed. It will do
+ nothing and display an error message that no bootable OS was
+ found.
+ </para>
+
+ <para>
+ For this reason, the wizard helps you to select a medium to
+ install an OS from.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If you have physical CD or DVD media from which you want to
+ install your guest OS, such as a Windows installation CD or
+ DVD, put the media into your host's CD or DVD drive.
+ </para>
+
+ <para>
+ In the wizard's drop-down list of installation media, select
+ <emphasis role="bold">Host Drive</emphasis> with the correct
+ drive letter. In the case of a Linux host, choose a device
+ file. This will allow your VM to access the media in your
+ host drive, and you can proceed to install from there.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you have downloaded installation media from the Internet
+ in the form of an ISO image file such as with a Linux
+ distribution, you would normally burn this file to an empty
+ CD or DVD and proceed as described above. With
+ &product-name; however, you can skip this step and mount the
+ ISO file directly. &product-name; will then present this
+ file as a CD or DVD-ROM drive to the virtual machine, much
+ like it does with virtual hard disk images.
+ </para>
+
+ <para>
+ In this case, the wizard's drop-down list contains a list of
+ installation media that were previously used with
+ &product-name;.
+ </para>
+
+ <para>
+ If your medium is not in the list, especially if you are
+ using &product-name; for the first time, click the small
+ folder icon next to the drop-down list to display a standard
+ file dialog. Here you can pick an image file on your host
+ disks.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ After completing the choices in the wizard, you will be able to
+ install your OS.
+ </para>
+
+ </sect2>
+
+ <sect2 id="keyb_mouse_normal">
+
+ <title>Capturing and Releasing Keyboard and Mouse</title>
+
+ <para>
+ &product-name; provides a virtual USB tablet device to new
+ virtual machines through which mouse events are communicated to
+ the guest OS. If you are running a modern guest OS that can
+ handle such devices, mouse support may work out of the box
+ without the mouse being <emphasis>captured</emphasis> as
+ described below. See <xref linkend="settings-motherboard" />.
+ </para>
+
+ <para>
+ Otherwise, if the virtual machine detects only standard PS/2
+ mouse and keyboard devices, since the OS in the virtual machine
+ does not know that it is not running on a real computer, it
+ expects to have exclusive control over your keyboard and mouse.
+ But unless you are running the VM in full screen mode, your VM
+ needs to share keyboard and mouse with other applications and
+ possibly other VMs on your host.
+ </para>
+
+ <para>
+ After installing a guest OS and before you install the Guest
+ Additions, described later, either your VM or the rest of your
+ computer can "own" the keyboard and the mouse. Both cannot own
+ the keyboard and mouse at the same time. You will see a
+ <emphasis>second</emphasis> mouse pointer which is always
+ confined to the limits of the VM window. You activate the VM by
+ clicking inside it.
+ </para>
+
+ <para>
+ To return ownership of keyboard and mouse to your host OS,
+ &product-name; reserves a special key on your keyboard: the
+ <emphasis>Host key</emphasis>. By default, this is the
+ <emphasis>right Ctrl key</emphasis> on your keyboard. On a Mac
+ host, the default Host key is the left Command key. You can
+ change this default in the &product-name; Global Settings. See
+ <xref linkend="globalsettings" />. The current setting for the
+ Host key is always displayed at the bottom right of your VM
+ window.
+ </para>
+
+ <figure id="fig-host-key">
+ <title>Host Key Setting on the Virtual Machine Task Bar</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-hostkey.png"
+ width="7cm" />
+ </imageobject>
+ </mediaobject>
+
+ </figure>
+
+ <para>
+ This means the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Your <emphasis role="bold">keyboard</emphasis> is owned by
+ the VM if the VM window on your host desktop has the
+ keyboard focus. If you have many windows open in your guest
+ OS, the window that has the focus in your VM is used. This
+ means that if you want to enter text within your VM, click
+ on the title bar of your VM window first.
+ </para>
+
+ <para>
+ To release keyboard ownership, press the Host key. As
+ explained above, this is typically the right Ctrl key.
+ </para>
+
+ <para>
+ Note that while the VM owns the keyboard, some key
+ sequences, such as Alt+Tab, will no longer be seen by the
+ host, but will go to the guest instead. After you press the
+ Host key to reenable the host keyboard, all key presses will
+ go through the host again, so that sequences such as Alt+Tab
+ will no longer reach the guest. For technical reasons it may
+ not be possible for the VM to get all keyboard input even
+ when it does own the keyboard. Examples of this are the
+ Ctrl+Alt+Del sequence on Windows hosts or single keys
+ grabbed by other applications on X11 hosts such as the GNOME
+ desktop Locate Pointer feature.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Your <emphasis role="bold">mouse</emphasis> is owned by the
+ VM only after you have clicked in the VM window. The host
+ mouse pointer will disappear, and your mouse will drive the
+ guest's pointer instead of your normal mouse pointer.
+ </para>
+
+ <para>
+ Note that mouse ownership is independent of that of the
+ keyboard. Even after you have clicked on a titlebar to be
+ able to enter text into the VM window, your mouse is not
+ necessarily owned by the VM yet.
+ </para>
+
+ <para>
+ To release ownership of your mouse by the VM, press the Host
+ key.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ As this behavior is inconvenient, &product-name; provides a set
+ of tools and device drivers for guest systems called the
+ &product-name; Guest Additions. These tools make VM keyboard and
+ mouse operations much more seamless. Most importantly, the Guest
+ Additions suppress the second "guest" mouse pointer and make
+ your host mouse pointer work directly in the guest. See
+ <xref linkend="guestadditions" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="specialcharacters">
+
+ <title>Typing Special Characters</title>
+
+ <para>
+ Some OSes expect certain key combinations to initiate certain
+ procedures. The key combinations that you type into a VM might
+ target the host OS, the &product-name; software, or the guest
+ OS. The recipient of these keypresses depends on a number of
+ factors, including the key combination itself.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Host OSes reserve certain key combinations for themselves.
+ For example, you cannot use the
+ <emphasis role="bold">Ctrl+Alt+Delete</emphasis> combination
+ to reboot the guest OS in your VM because this key
+ combination is usually hard-wired into the host OS. So, even
+ though both the Windows and Linux OSes intercept this key
+ combination, only the host OS would be rebooted.
+ </para>
+
+ <para>
+ On Linux and Oracle Solaris hosts, which use the X Window
+ System, the key combination
+ <emphasis role="bold">Ctrl+Alt+Backspace</emphasis> normally
+ resets the X server and restarts the entire graphical user
+ interface. As the X server intercepts this combination,
+ pressing it will usually restart your
+ <emphasis>host</emphasis> graphical user interface and kill
+ all running programs, including &product-name;, in the
+ process.
+ </para>
+
+ <para>
+ On Linux hosts supporting virtual terminals, the key
+ combination <emphasis role="bold">Ctrl+Alt+Fx</emphasis>,
+ where Fx is one of the function keys from F1 to F12,
+ normally enables you to switch between virtual terminals. As
+ with <emphasis role="bold">Ctrl+Alt+Delete</emphasis>, these
+ combinations are intercepted by the host OS and therefore
+ always switch terminals on the <emphasis>host</emphasis>.
+ </para>
+
+ <para>
+ If, instead, you want to send these key combinations to the
+ <emphasis>guest</emphasis> OS in the virtual machine, you
+ will need to use one of the following methods:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use the items in the
+ <emphasis role="bold">Input</emphasis>,
+ <emphasis role="bold">Keyboard</emphasis> menu of the
+ virtual machine window. This menu includes the settings
+ <emphasis role="bold">Insert Ctrl+Alt+Delete</emphasis>
+ and <emphasis role="bold">Insert
+ Ctrl+Alt+Backspace</emphasis>. However, the latter
+ setting affects only Linux guests or Oracle Solaris
+ guests.
+ </para>
+
+ <para>
+ This menu also includes an option for inserting the Host
+ key combination.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use special key combinations with the Host key, which is
+ normally the right Control key. &product-name; then
+ translates the following key combinations for the VM:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host key + Del</emphasis>
+ sends <emphasis role="bold">Ctrl+Alt+Del</emphasis>
+ to reboot the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host key +
+ Backspace</emphasis> sends
+ <emphasis role="bold">Ctrl+Alt+Backspace</emphasis>
+ to restart the graphical user interface of a Linux
+ or Oracle Solaris guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host key + Function
+ key</emphasis>. For example, use this key
+ combination to simulate
+ <emphasis role="bold">Ctrl+Alt+Fx</emphasis> to
+ switch between virtual terminals in a Linux guest.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ For some other keyboard combinations such as
+ <emphasis role="bold">Alt+Tab</emphasis> to switch between
+ open windows, &product-name; enables you to configure
+ whether these combinations will affect the host or the
+ guest, if a virtual machine currently has the focus. This is
+ a global setting for all virtual machines and can be found
+ under <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Preferences</emphasis>,
+ <emphasis role="bold">Input</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A soft keyboard can be used to input key combinations in the
+ guest. See <xref linkend="soft-keyb"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="intro-removable-media-changing">
+
+ <title>Changing Removable Media</title>
+
+ <para>
+ While a virtual machine is running, you can change removable
+ media in the <emphasis role="bold">Devices</emphasis> menu of
+ the VM's window. Here you can select in detail what
+ &product-name; presents to your VM as a CD, DVD, or floppy
+ drive.
+ </para>
+
+ <para>
+ The settings are the same as those available for the VM in the
+ <emphasis role="bold">Settings</emphasis> dialog of the
+ &product-name; main window. But as the
+ <emphasis role="bold">Settings</emphasis> dialog is disabled
+ while the VM is in the Running or Saved state, the
+ <emphasis role="bold">Devices</emphasis> menu saves you from
+ having to shut down and restart the VM every time you want to
+ change media.
+ </para>
+
+ <para>
+ Using the <emphasis role="bold">Devices</emphasis> menu, you can
+ attach the host drive to the guest or select a floppy or DVD
+ image, as described in <xref linkend="settings-storage" />.
+ </para>
+
+ <para>
+ The <emphasis role="bold">Devices</emphasis> menu also includes
+ an option for creating a virtual ISO (VISO) from selected files
+ on the host.
+ </para>
+
+ </sect2>
+
+ <sect2 id="intro-resize-window">
+
+ <title>Resizing the Machine's Window</title>
+
+ <para>
+ You can resize the VM's window while that VM is running. When
+ you do, the window is scaled as follows:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ If you have <emphasis role="bold">scaled mode</emphasis>
+ enabled, then the virtual machine's screen will be scaled to
+ the size of the window. This can be useful if you have many
+ machines running and want to have a look at one of them
+ while it is running in the background. Alternatively, it
+ might be useful to enlarge a window if the VM's output
+ screen is very small, for example because you are running an
+ old OS in it.
+ </para>
+
+ <para>
+ To enable scaled mode, press <emphasis role="bold">Host key
+ + C</emphasis>, or select <emphasis role="bold">Scaled
+ Mode</emphasis> from the
+ <emphasis role="bold">View</emphasis> menu in the VM window.
+ To leave scaled mode, press <emphasis role="bold">Host key +
+ C </emphasis>again.
+ </para>
+
+ <para>
+ The aspect ratio of the guest screen is preserved when
+ resizing the window. To ignore the aspect ratio, press
+ <emphasis role="bold">Shift</emphasis> during the resize
+ operation.
+ </para>
+
+ <para>
+ See <xref linkend="KnownIssues" /> for additional remarks.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you have the Guest Additions installed and they support
+ automatic <emphasis role="bold">resizing</emphasis>, the
+ Guest Additions will automatically adjust the screen
+ resolution of the guest OS. For example, if you are running
+ a Windows guest with a resolution of 1024x768 pixels and you
+ then resize the VM window to make it 100 pixels wider, the
+ Guest Additions will change the Windows display resolution
+ to 1124x768.
+ </para>
+
+ <para>
+ See <xref linkend="guestadditions" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Otherwise, if the window is bigger than the VM's screen, the
+ screen will be centered. If it is smaller, then scroll bars
+ will be added to the machine window.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="intro-save-machine-state">
+
+ <title>Saving the State of the Machine</title>
+
+ <para>
+ When you click on the <emphasis role="bold">Close</emphasis>
+ button of your virtual machine window, at the top right of the
+ window, just like you would close any other window on your
+ system, &product-name; asks you whether you want to save or
+ power off the VM. As a shortcut, you can also press
+ <emphasis role="bold">Host key + Q</emphasis>.
+ </para>
+
+ <figure id="fig-vm-close">
+ <title>Closing Down a Virtual Machine</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-close.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ The difference between the three options is crucial. They mean
+ the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Save the machine state:</emphasis>
+ With this option, &product-name;
+ <emphasis>freezes</emphasis> the virtual machine by
+ completely saving its state to your local disk.
+ </para>
+
+ <para>
+ When you start the VM again later, you will find that the VM
+ continues exactly where it was left off. All your programs
+ will still be open, and your computer resumes operation.
+ Saving the state of a virtual machine is thus in some ways
+ similar to suspending a laptop computer by closing its lid.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Send the shutdown signal.</emphasis>
+ This will send an ACPI shutdown signal to the virtual
+ machine, which has the same effect as if you had pressed the
+ power button on a real computer. This should trigger a
+ proper shutdown mechanism from within the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Power off the machine:</emphasis> With
+ this option, &product-name; also stops running the virtual
+ machine, but <emphasis>without</emphasis> saving its state.
+ </para>
+
+ <warning>
+ <para>
+ This is equivalent to pulling the power plug on a real
+ computer without shutting it down properly. If you start
+ the machine again after powering it off, your OS will have
+ to reboot completely and may begin a lengthy check of its
+ virtual system disks. As a result, this should not
+ normally be done, since it can potentially cause data loss
+ or an inconsistent state of the guest system on disk.
+ </para>
+ </warning>
+
+ <para>
+ As an exception, if your virtual machine has any snapshots,
+ see <xref linkend="snapshots"/>, you can use this option to
+ quickly <emphasis
+ role="bold">restore the current
+ snapshot</emphasis> of the virtual machine. In that case,
+ powering off the machine will not disrupt its state, but any
+ changes made since that snapshot was taken will be lost.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The <emphasis role="bold">Discard</emphasis> button in the
+ VirtualBox Manager window discards a virtual machine's saved
+ state. This has the same effect as powering it off, and the same
+ warnings apply.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="gui-vmgroups">
+
+ <title>Using VM Groups</title>
+
+ <para>
+ VM groups enable the user to create ad hoc groups of VMs, and to
+ manage and perform functions on them collectively, as well as
+ individually.
+ </para>
+
+ <para>
+ The following figure shows VM groups displayed in VirtualBox
+ Manager.
+ </para>
+
+ <figure id="fig-vm-groups">
+ <title>Groups of Virtual Machines</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-groups.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+
+ </figure>
+
+ <para>
+ The following features are available for groups:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Create a group using the VirtualBox Manager. Do one of the
+ following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Drag one VM on top of another VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Select multiple VMs and select
+ <emphasis role="bold">Group</emphasis> from the
+ right-click menu.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create and manage a group using the command line. Do one of
+ the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Create a group and assign a VM. For example:
+ </para>
+
+<screen>VBoxManage modifyvm "vm01" --groups "/TestGroup"</screen>
+
+ <para>
+ This command creates a group "TestGroup" and attaches the
+ VM "vm01" to that group.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Detach a VM from the group, and delete the group if empty.
+ For example:
+ </para>
+
+<screen>VBoxManage modifyvm "vm01" --groups ""</screen>
+
+ <para>
+ This command detaches all groups from the VM "vm01" and
+ deletes the empty group.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create multiple groups. For example:
+ </para>
+
+<screen>VBoxManage modifyvm "vm01" --groups "/TestGroup,/TestGroup2"</screen>
+
+ <para>
+ This command creates the groups "TestGroup" and "TestGroup2",
+ if they do not exist, and attaches the VM "vm01" to both of
+ them.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create nested groups, having a group hierarchy. For example:
+ </para>
+
+<screen>VBoxManage modifyvm "vm01" --groups "/TestGroup/TestGroup2"</screen>
+
+ <para>
+ This command attaches the VM "vm01" to the subgroup
+ "TestGroup2" of the "TestGroup" group.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The following is a summary of group commands: Start, Pause,
+ Reset, Close (save state, send shutdown signal, poweroff),
+ Discard Saved State, Show in File System, Sort.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="snapshots">
+
+ <title>Snapshots</title>
+
+ <para>
+ With snapshots, you can save a particular state of a virtual
+ machine for later use. At any later time, you can revert to that
+ state, even though you may have changed the VM considerably since
+ then. A snapshot of a virtual machine is thus similar to a machine
+ in Saved state, but there can be many of them, and these saved
+ states are preserved.
+ </para>
+
+ <para>
+ To see the snapshots of a virtual machine, click on the machine
+ name in VirtualBox Manager. Then click the
+ <emphasis role="bold">List</emphasis> icon next to the machine
+ name, and select <emphasis role="bold">Snapshots</emphasis>. Until
+ you take a snapshot of the machine, the list of snapshots will be
+ empty except for the <emphasis role="bold">Current
+ State</emphasis> item, which represents the "now" point in the
+ lifetime of the virtual machine.
+ </para>
+
+ <sect2 id="snapshots-take-restore-delete">
+
+ <title>Taking, Restoring, and Deleting Snapshots</title>
+
+ <para>
+ There are three operations related to snapshots, as follows:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Take a snapshot</emphasis>. This makes
+ a copy of the machine's current state, to which you can go
+ back at any given time later.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ If your VM is running, select <emphasis role="bold">Take
+ Snapshot</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> pull-down menu
+ of the VM window.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If your VM is in either the Saved or the Powered Off
+ state, as displayed next to the VM name in the
+ &product-name; main window, click the
+ <emphasis role="bold">List</emphasis> icon next to the
+ machine name and select
+ <emphasis role="bold">Snapshots</emphasis>. The
+ snapshots window is shown. Do one of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Click the <emphasis role="bold">Take</emphasis>
+ icon.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Right-click on the <emphasis role="bold">Current
+ State </emphasis>item in the list and select
+ <emphasis role="bold">Take</emphasis>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In either case, a window is displayed prompting you for a
+ snapshot name. This name is purely for reference purposes to
+ help you remember the state of the snapshot. For example, a
+ useful name would be "Fresh installation from scratch, no
+ Guest Additions", or "Service Pack 3 just installed". You
+ can also add a longer text in the
+ <emphasis role="bold">Description</emphasis> field.
+ </para>
+
+ <para>
+ Your new snapshot will then appear in the snapshots list.
+ Underneath your new snapshot, you will see an item called
+ <emphasis role="bold">Current State</emphasis>, signifying
+ that the current state of your VM is a variation based on
+ the snapshot you took earlier. If you later take another
+ snapshot, you will see that they are displayed in sequence,
+ and that each subsequent snapshot is derived from an earlier
+ one.
+ </para>
+
+ <figure id="fig-snapshots-list">
+ <title>Snapshots List For a Virtual Machine</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/snapshots-1.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ &product-name; imposes no limits on the number of snapshots
+ you can take. The only practical limitation is disk space on
+ your host. Each snapshot stores the state of the virtual
+ machine and thus occupies some disk space. See
+ <xref linkend="snapshots-contents"/> for details on what is
+ stored in a snapshot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Restore a snapshot</emphasis>. In the
+ list of snapshots, right-click on any snapshot you have
+ taken and select <emphasis role="bold">Restore</emphasis>.
+ By restoring a snapshot, you go back or forward in time. The
+ current state of the machine is lost, and the machine is
+ restored to the exact state it was in when the snapshot was
+ taken.
+ </para>
+
+ <note>
+ <para>
+ Restoring a snapshot will affect the virtual hard drives
+ that are connected to your VM, as the entire state of the
+ virtual hard drive will be reverted as well. This means
+ also that all files that have been created since the
+ snapshot and all other file changes <emphasis>will be
+ lost. </emphasis>In order to prevent such data loss while
+ still making use of the snapshot feature, it is possible
+ to add a second hard drive in
+ <emphasis>write-through</emphasis> mode using the
+ <command>VBoxManage</command> interface and use it to
+ store your data. As write-through hard drives are
+ <emphasis>not</emphasis> included in snapshots, they
+ remain unaltered when a machine is reverted. See
+ <xref linkend="hdimagewrites" />.
+ </para>
+ </note>
+
+ <para>
+ To avoid losing the current state when restoring a snapshot,
+ you can create a new snapshot before the restore operation.
+ </para>
+
+ <para>
+ By restoring an earlier snapshot and taking more snapshots
+ from there, it is even possible to create a kind of
+ alternate reality and to switch between these different
+ histories of the virtual machine. This can result in a whole
+ tree of virtual machine snapshots, as shown in the
+ screenshot above.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Delete a snapshot</emphasis>. This
+ does not affect the state of the virtual machine, but only
+ releases the files on disk that &product-name; used to store
+ the snapshot data, thus freeing disk space. To delete a
+ snapshot, right-click on the snapshot name in the snapshots
+ tree and select <emphasis role="bold">Delete</emphasis>.
+ Snapshots can be deleted even while a machine is running.
+ </para>
+
+ <note>
+ <para>
+ Whereas taking and restoring snapshots are fairly quick
+ operations, deleting a snapshot can take a considerable
+ amount of time since large amounts of data may need to be
+ copied between several disk image files. Temporary disk
+ files may also need large amounts of disk space while the
+ operation is in progress.
+ </para>
+ </note>
+
+ <para>
+ There are some situations which cannot be handled while a VM
+ is running, and you will get an appropriate message that you
+ need to perform this snapshot deletion when the VM is shut
+ down.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="snapshots-contents">
+
+ <title>Snapshot Contents</title>
+
+ <para>
+ Think of a snapshot as a point in time that you have preserved.
+ More formally, a snapshot consists of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The snapshot contains a complete copy of the VM settings,
+ including the hardware configuration, so that when you
+ restore a snapshot, the VM settings are restored as well.
+ For example, if you changed the hard disk configuration or
+ the VM's system settings, that change is undone when you
+ restore the snapshot.
+ </para>
+
+ <para>
+ The copy of the settings is stored in the machine
+ configuration, an XML text file, and thus occupies very
+ little space.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The complete state of all the virtual disks attached to the
+ machine is preserved. Going back to a snapshot means that
+ all changes that had been made to the machine's disks, file
+ by file and bit by bit, will be undone as well. Files that
+ were since created will disappear, files that were deleted
+ will be restored, changes to files will be reverted.
+ </para>
+
+ <para>
+ Strictly speaking, this is only true for virtual hard disks
+ in "normal" mode. You can configure disks to behave
+ differently with snapshots, see
+ <xref linkend="hdimagewrites" />. In technical terms, it is
+ not the virtual disk itself that is restored when a snapshot
+ is restored. Instead, when a snapshot is taken,
+ &product-name; creates differencing images which contain
+ only the changes since the snapshot were taken. When the
+ snapshot is restored, &product-name; throws away that
+ differencing image, thus going back to the previous state.
+ This is both faster and uses less disk space. For the
+ details, which can be complex, see
+ <xref linkend="diffimages" />.
+ </para>
+
+ <para>
+ Creating the differencing image as such does not occupy much
+ space on the host disk initially, since the differencing
+ image will initially be empty and grow dynamically later
+ with each write operation to the disk. The longer you use
+ the machine after having created the snapshot, however, the
+ more the differencing image will grow in size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you took a snapshot while the machine was running, the
+ memory state of the machine is also saved in the snapshot.
+ This is in the same way that memory can be saved when you
+ close a VM window. When you restore such a snapshot,
+ execution resumes at exactly the point when the snapshot was
+ taken.
+ </para>
+
+ <para>
+ The memory state file can be as large as the memory size of
+ the VM and will therefore occupy considerable disk space.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="configbasics">
+
+ <title>Virtual Machine Configuration</title>
+
+ <para>
+ When you select a virtual machine from the list in the VirtualBox
+ Manager window, you will see a summary of that machine's settings
+ on the right.
+ </para>
+
+ <para>
+ Clicking on <emphasis role="bold">Settings</emphasis> displays a
+ window, where you can configure many of the properties of the
+ selected VM. But be careful when changing VM settings. It is
+ possible to change all VM settings after installing a guest OS,
+ but certain changes might prevent a guest OS from functioning
+ correctly if done after installation.
+ </para>
+
+ <note>
+ <para>
+ The <emphasis role="bold">Settings</emphasis> button is disabled
+ while a VM is either in the Running or Saved state. This is
+ because the <emphasis role="bold">Settings</emphasis> dialog
+ enables you to change fundamental characteristics of the virtual
+ machine that is created for your guest OS. For example, the
+ guest OS may not perform well if half of its memory is taken
+ away. As a result, if the
+ <emphasis role="bold">Settings</emphasis> button is disabled,
+ shut down the current VM first.
+ </para>
+ </note>
+
+ <para>
+ &product-name; provides a wide range of parameters that can be
+ changed for a virtual machine. The various settings that can be
+ changed in the <emphasis role="bold">Settings</emphasis> window
+ are described in detail in <xref linkend="BasicConcepts" />. Even
+ more parameters are available when using the
+ <command>VBoxManage</command> command line interface. See
+ <xref linkend="vboxmanage" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="intro-removing">
+
+ <title>Removing and Moving Virtual Machines</title>
+
+ <para>
+ You can remove a VM from &product-name; or move the VM and its
+ associated files, such as disk images, to another location on the
+ host.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Removing a VM.</emphasis> To remove a
+ VM, right-click on the VM in the VirtualBox Manager's machine
+ list and select <emphasis role="bold">Remove</emphasis>.
+ </para>
+
+ <para>
+ The confirmation dialog enables you to specify whether to only
+ remove the VM from the list of machines or to remove the files
+ associated with the VM.
+ </para>
+
+ <para>
+ Note that the <emphasis role="bold">Remove</emphasis> menu
+ item is disabled while a VM is running.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Moving a VM.</emphasis> To move a VM to
+ a new location on the host, right-click on the VM in the
+ VirtualBox Manager's machine list and select
+ <emphasis
+ role="bold">Move</emphasis>.
+ </para>
+
+ <para>
+ The file dialog prompts you to specify a new location for the
+ VM.
+ </para>
+
+ <para>
+ When you move a VM, &product-name; configuration files are
+ updated automatically to use the new location on the host.
+ </para>
+
+ <para>
+ Note that the <emphasis role="bold">Move</emphasis> menu item
+ is disabled while a VM is running.
+ </para>
+
+ <para>
+ You can also use the <command>VBoxManage movevm</command>
+ command to move a VM. See <xref linkend="vboxmanage-movevm"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For information about removing or moving a disk image file from
+ &product-name;, see <xref linkend="vdis"/>.
+ </para>
+
+ </sect1>
+
+ <sect1 id="clone">
+
+ <title>Cloning Virtual Machines</title>
+
+ <para>
+ You can create a full copy or a linked copy of an existing VM.
+ This copy is called a <emphasis>clone</emphasis>. You might use a
+ cloned VM to experiment with a VM configuration, to test different
+ guest OS levels, or to back up a VM.
+ </para>
+
+ <para>
+ The <emphasis role="bold">Clone Virtual Machine</emphasis> wizard
+ guides you through the cloning process.
+ </para>
+
+ <figure id="fig-clone-wizard">
+ <title>The Clone Virtual Machine Wizard</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/clone-vm.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ Start the wizard by clicking
+ <emphasis role="bold">Clone</emphasis> in the right-click menu of
+ the VirtualBox Manager's machine list or in the
+ <emphasis role="bold">Snapshots</emphasis> view of the selected
+ VM.
+ </para>
+
+ <para>
+ Specify a new <emphasis role="bold">Name</emphasis> for the clone.
+ You can choose a <emphasis role="bold">Path</emphasis> for the
+ cloned virtual machine, otherwise &product-name; uses the default
+ machines folder.
+ </para>
+
+ <para>
+ The <emphasis role="bold">Clone Type</emphasis> option specifies
+ whether to create a clone linked to the source VM or to create a
+ fully independent clone:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Full Clone:</emphasis> Copies all
+ dependent disk images to the new VM folder. A full clone can
+ operate fully without the source VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Linked Clone:</emphasis> Creates new
+ differencing disk images based on the source VM disk images.
+ If you select the current state of the source VM as the clone
+ point, &product-name; creates a new snapshot.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The <emphasis role="bold">Snapshots</emphasis> option specifies
+ whether to create a clone of the current machine state only or of
+ everything.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Everything:</emphasis> Clones the
+ current machine state and all its snapshots.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Current Machine State and All
+ Children:</emphasis>. Clones a VM snapshot and all its child
+ snapshots.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following clone options are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">MAC Address Policy:</emphasis> Specifies
+ how to retain network card MAC addresses when cloning the VM.
+ </para>
+
+ <para>
+ For example, the <emphasis role="bold">Generate New MAC
+ Addresses For All Network Adapters</emphasis> value assigns a
+ new MAC address to each network card during cloning. This is
+ the default setting. This is the best option when both the
+ source VM and the cloned VM must operate on the same network.
+ Other values enable you to retain the existing MAC addresses
+ in the cloned VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Keep Disk Names:</emphasis> Retains the
+ disk image names when cloning the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Keep Hardware UUIDs:</emphasis> Retains
+ the hardware universally unique identifiers (UUIDs) when
+ cloning the VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The duration of the clone operation depends on the size and number
+ of attached disk images. In addition, the clone operation saves
+ all the differencing disk images of a snapshot.
+ </para>
+
+ <para>
+ Note that the <emphasis role="bold">Clone</emphasis> menu item is
+ disabled while a machine is running.
+ </para>
+
+ <para>
+ You can also use the <command>VBoxManage clonevm</command> command
+ to clone a VM. See <xref linkend="vboxmanage-clonevm" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="ovf">
+
+ <title>Importing and Exporting Virtual Machines</title>
+
+ <para>
+ &product-name; can import and export virtual machines in the
+ following formats:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Open Virtualization Format
+ (OVF).</emphasis> This is the industry-standard format. See
+ <xref linkend="ovf-about"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Cloud service formats.</emphasis> Export
+ to and import from cloud services such as &oci; is supported.
+ See <xref linkend="cloud-integration"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect2 id="ovf-about">
+
+ <title>About the OVF Format</title>
+
+ <para>
+ OVF is a cross-platform standard supported by many
+ virtualization products which enables the creation of ready-made
+ virtual machines that can then be imported into a hypervisor
+ such as &product-name;. &product-name; makes OVF import and
+ export easy to do, using the VirtualBox Manager window or the
+ command-line interface.
+ </para>
+
+ <para>
+ Using OVF enables packaging of <emphasis>virtual
+ appliances</emphasis>. These are disk images, together with
+ configuration settings that can be distributed easily. This way
+ one can offer complete ready-to-use software packages, including
+ OSes with applications, that need no configuration or
+ installation except for importing into &product-name;.
+ </para>
+
+ <note>
+ <para>
+ The OVF standard is complex, and support in &product-name; is
+ an ongoing process. In particular, no guarantee is made that
+ &product-name; supports all appliances created by other
+ virtualization software. For a list of known limitations, see
+ <xref linkend="KnownIssues" />.
+ </para>
+ </note>
+
+ <para>
+ Appliances in OVF format can appear in the following variants:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ They can come in several files, as one or several disk
+ images, typically in the widely-used VMDK format. See
+ <xref linkend="vdidetails" />. They also include a textual
+ description file in an XML dialect with an
+ <filename>.ovf</filename> extension. These files must then
+ reside in the same directory for &product-name; to be able
+ to import them.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Alternatively, the above files can be packed together into a
+ single archive file, typically with an
+ <filename>.ova</filename> extension. Such archive files use
+ a variant of the TAR archive format and can therefore be
+ unpacked outside of &product-name; with any utility that can
+ unpack standard TAR files.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ OVF cannot describe snapshots that were taken for a virtual
+ machine. As a result, when you export a virtual machine that
+ has snapshots, only the current state of the machine will be
+ exported. The disk images in the export will have a
+ <emphasis>flattened</emphasis> state identical to the current
+ state of the virtual machine.
+ </para>
+ </note>
+
+ </sect2>
+
+ <sect2 id="ovf-import-appliance">
+
+ <title>Importing an Appliance in OVF Format</title>
+
+ <para>
+ The following steps show how to import an appliance in OVF
+ format.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Double-click on the OVF or OVA file.
+ </para>
+
+ <para>
+ &product-name; creates file type associations automatically
+ for any OVF and OVA files on your host OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Select <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Import Appliance</emphasis> from the
+ VirtualBox Manager window.
+ </para>
+
+ <para>
+ From the file dialog, go to the file with either the
+ <filename>.ovf</filename> or the <filename>.ova</filename>
+ file extension.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Import</emphasis> to open the
+ <emphasis role="bold">Appliance Settings</emphasis> screen.
+ </para>
+
+ <figure id="fig-import-appliance">
+ <title>Appliance Settings Screen for Import Appliance</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/ovf-import.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+
+ </figure>
+
+ <para>
+ This screen shows the VMs described in the OVF or OVA file
+ and enables you to change the VM settings.
+ </para>
+
+ <para>
+ By default, membership of VM groups is preserved on import
+ for VMs that were initially exported from &product-name;.
+ You can change this behavior by using the
+ <emphasis
+ role="bold">Primary Group</emphasis>
+ setting for the VM.
+ </para>
+
+ <para>
+ The following global settings apply to all of the VMs that
+ you import:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Base Folder:</emphasis> Specifies
+ the directory on the host in which to store the imported
+ VMs.
+ </para>
+
+ <para>
+ If an appliance has multiple VMs, you can specify a
+ different directory for each VM by editing the
+ <emphasis role="bold">Base Folder</emphasis> setting for
+ the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">MAC Address Policy:</emphasis>
+ Reinitializes the MAC addresses of network cards in your
+ VMs prior to import, by default. You can override the
+ default behavior and preserve the MAC addresses on
+ import.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Import Hard Drives as
+ VDI:</emphasis> Imports hard drives in the VDI format
+ rather than in the default VMDK format.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Import</emphasis> to import the
+ appliance.
+ </para>
+
+ <para>
+ &product-name; copies the disk images and creates local VMs
+ with the settings described on the
+ <emphasis role="bold">Appliance Settings</emphasis> screen.
+ The imported VMs are shown in the list of VMs in VirtualBox
+ Manager.
+ </para>
+
+ <para>
+ Because disk images are large, the VMDK images that are
+ included with virtual appliances are shipped in a compressed
+ format that cannot be used directly by VMs. So, the images
+ are first unpacked and copied, which might take several
+ minutes.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ You can use the <command>VBoxManage import</command> command to
+ import an appliance. See <xref linkend="vboxmanage-import" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ovf-export-appliance">
+
+ <title>Exporting an Appliance in OVF Format</title>
+
+ <para>
+ The following steps show how to export an appliance in OVF
+ format.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Select <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold"> Export Appliance</emphasis> to open
+ the <emphasis role="bold">Export Virtual
+ Appliance</emphasis> wizard.
+ </para>
+
+ <para>
+ From the initial window, you can combine several VMs into an
+ OVF appliance.
+ </para>
+
+ <para>
+ Select one or more VMs to export, and click
+ <emphasis role="bold">Next</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">Appliance Settings</emphasis>
+ screen enables you to select the following settings:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Format:</emphasis> Selects the
+ <emphasis role="bold">Open Virtualization
+ Format</emphasis> value for the output files.
+ </para>
+
+ <para>
+ The <emphasis role="bold">&oci;</emphasis> value exports
+ the appliance to &oci;. See
+ <xref linkend="cloud-export-oci"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">File:</emphasis> Selects the
+ location in which to store the exported files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">MAC Address Policy:</emphasis>
+ Specifies whether to retain or reassign network card MAC
+ addresses on export.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Write Manifest File:</emphasis>
+ Enables you to include a manifest file in the exported
+ archive file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Include ISO Image
+ Files:</emphasis> Enables you to include ISO image files
+ in the exported archive file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Next</emphasis> to show the
+ <emphasis role="bold">Virtual System Settings</emphasis>
+ screen.
+ </para>
+
+ <para>
+ You can edit settings for the virtual appliance. For
+ example, you can change the name of the virtual appliance or
+ add product information, such as vendor details or license
+ text.
+ </para>
+
+ <para>
+ Double-click the appropriate field to change its value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Export</emphasis> to begin the
+ export process. Note that this operation might take several
+ minutes.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ You can use the <command>VBoxManage export</command> command to
+ export an appliance. See <xref linkend="vboxmanage-export" />.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="cloud-integration">
+
+ <title>Integrating with &oci;</title>
+
+ <para>
+ This section describes how to use the features of &product-name;
+ to integrate with &oci;.
+ </para>
+
+ <para>
+ Integrating with &oci; involves the following steps:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Prepare for &oci;
+ Integration.</emphasis> Before using &product-name; with &oci;
+ there are some initial configuration steps you may need to do.
+ See <xref linkend="cloud-integration-steps"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Use &product-name; with
+ &oci;.</emphasis> <xref linkend="cloud-vbox-oci-tasks"/>
+ describes how you can use &product-name; with &oci;.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect2 id="cloud-integration-steps">
+
+ <title>Preparing for &oci; Integration</title>
+
+ <para>
+ Perform the following configuration steps before using
+ &product-name; to integrate with your &oci; account.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Install the Extension Pack.</emphasis>
+ Cloud integration features are only available when you
+ install the &product-name; Extension Pack. See
+ <xref linkend="intro-installing"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Create a key pair.</emphasis> Generate
+ an API signing key pair that is used for API requests to
+ &oci;. See <xref linkend="cloud-create-api-keypair"/>.
+ </para>
+
+ <para>
+ Upload the public key of the key pair from your client
+ device to the cloud service. See
+ <xref linkend="cloud-upload-public-key"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Create a cloud profile.</emphasis> The
+ cloud profile contains resource identifiers for your cloud
+ account, such as your user OCID, and details of your key
+ pair. See <xref linkend="cloud-create-cloud-profile"/>.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-create-api-keypair">
+
+ <title>Creating an API Signing Key Pair</title>
+
+ <para></para>
+
+ <para>
+ To use the cloud integration features of &product-name;, you
+ must generate an API signing key pair that is used for API
+ requests to &oci;.
+ </para>
+
+ <para>
+ Your API requests are signed with your private key, and &oci;
+ uses the public key to verify the authenticity of the request.
+ You must upload the public key to the &oci; Console.
+ </para>
+
+ <note>
+ <para>
+ This key pair is not the same SSH key that you use to access
+ compute instances on &oci;.
+ </para>
+ </note>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ (Optional) Create a <filename>.oci</filename> directory to
+ store the key pair.
+ </para>
+
+<screen>$ mkdir ~/.oci</screen>
+
+ <para>
+ The key pair is usually installed in the
+ <filename>.oci</filename> folder in your home directory. For
+ example, <filename>~/.oci</filename> on a Linux system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Generate the private key.
+ </para>
+
+ <para>
+ Use the <command>openssl</command> command.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To generate a private key with a passphrase:
+ </para>
+
+<screen>$ openssl genrsa -out ~/.oci/oci_api_key.pem -aes128 2048 </screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ To generate a private key without a passphrase:
+ </para>
+
+<screen>$ openssl genrsa -out ~/.oci/oci_api_key.pem 2048</screen>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Change permissions for the private key.
+ </para>
+
+<screen>$ chmod 600 ~/.oci/oci_api_key.pem</screen>
+
+ <para>
+ Generate the public key.
+ </para>
+
+<screen>$ openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem</screen>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-upload-public-key">
+
+ <title>Uploading the Public Key to &oci;</title>
+
+ <para>
+ Use the following steps to upload your public key to &oci;.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Log in to the &oci; Console.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Display the <emphasis role="bold">User Settings</emphasis>
+ page.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Profile</emphasis>,
+ <emphasis role="bold">User Settings</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Display your current API signing keys.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Resources</emphasis>,
+ <emphasis role="bold">API Keys</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Upload the public key.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Add Public Key</emphasis>.
+ </para>
+
+ <para>
+ The <emphasis role="bold">Add Public Key</emphasis> dialog
+ is displayed.
+ </para>
+
+ <figure id="fig-upload-key-oci">
+ <title>Upload Public Key Dialog in &oci; Console</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/upload-key.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+
+ </figure>
+
+ <para>
+ Select one of the following options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Choose Public Key File.</emphasis>
+ This option enables you to browse to the public key file
+ on your local hard disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Paste Public Keys.</emphasis> This
+ option enables you to paste the contents of the public
+ key file into the window in the dialog box.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Click <emphasis role="bold">Add</emphasis> to upload the
+ public key.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-create-cloud-profile">
+
+ <title>Creating a Cloud Profile</title>
+
+ <para>
+ &product-name; uses a <emphasis>cloud profile</emphasis> to
+ connect to &oci;. A cloud profile is a text file that contains
+ details of your key files and Oracle Cloud Identifier (OCID)
+ resource identifiers for your cloud account, such as the
+ following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Fingerprint of the public
+ key.</emphasis> To obtain the fingerprint, you can use the
+ <command>openssl</command> command:
+ </para>
+
+<screen>$ openssl rsa -pubout -outform DER -in ~/.oci/oci_api_key.pem | openssl md5 -c</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Location of the private key on the
+ client device.</emphasis> Specify the full path to the
+ private key.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">(Optional) Passphrase for the private
+ key.</emphasis>. This is only required if the key is
+ encrypted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Region</emphasis>. Shown on the &oci;
+ Console. Click
+ <emphasis role="bold">Administration</emphasis>,
+ <emphasis role="bold">Tenancy Details</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Tenancy OCID.</emphasis> Shown on the
+ &oci; Console. Click
+ <emphasis role="bold">Administration</emphasis>,
+ <emphasis role="bold">Tenancy Details</emphasis>.
+ </para>
+
+ <para>
+ A link enables you to copy the Tenancy OCID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Compartment OCID.</emphasis> Shown on
+ the &oci; Console. Click
+ <emphasis role="bold">Identity</emphasis>,
+ <emphasis role="bold">Compartments</emphasis>.
+ </para>
+
+ <para>
+ A link enables you to copy the Compartment OCID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">User OCID.</emphasis> Shown on the
+ &oci; Console. Click
+ <emphasis role="bold">Profile</emphasis>,
+ <emphasis role="bold">User Settings</emphasis>.
+ </para>
+
+ <para>
+ A link enables you to copy the User OCID.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can create a cloud profile in the following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Automatically, by using the <emphasis role="bold">Cloud
+ Profile Manager</emphasis>. See
+ <xref linkend="cloud-using-cloud-profile-manager"/>.
+ </para>
+
+ <para>
+ The Cloud Profile Manager is a component of &product-name;
+ that enables you to create, edit, and manage cloud profiles
+ for your cloud service accounts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Automatically, by using the <command>VBoxManage
+ cloudprofile</command> command. See
+ <xref linkend="vboxmanage-cloudprofile"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Manually, by creating an <filename>oci_config</filename>
+ file in your &product-name; global configuration directory.
+ For example, this is
+ <filename>$HOME/.config/VirtualBox/oci_config</filename> on
+ a Linux host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Manually, by creating a <filename>config</filename> file in
+ your &oci; configuration directory. For example, this is
+ <filename>$HOME/.oci/config</filename> on a Linux host.
+ </para>
+
+ <para>
+ This is the same file that is used by the &oci; command line
+ interface.
+ </para>
+
+ <para>
+ &product-name; automatically uses the
+ <filename>config</filename> file if no cloud profile file is
+ present in your global configuration directory.
+ Alternatively, you can import this file manually into the
+ Cloud Profile Manager.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-using-cloud-profile-manager">
+
+ <title>Using the Cloud Profile Manager</title>
+
+ <para>
+ This section describes how to use the Cloud Profile Manager to
+ create a cloud profile.
+ </para>
+
+ <para>
+ To open the Cloud Profile Manager click
+ <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Cloud Profile Manager</emphasis> in the
+ VirtualBox Manager window.
+ </para>
+
+ <figure id="fig-cloud-profile-manager">
+ <title>The Cloud Profile Manager</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/cloud-profile-manager.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ You can use the Cloud Profile Manager in the following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To create a new cloud profile automatically
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To create a cloud profile by importing settings from your
+ &oci; configuration file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Perform the following steps to create a new cloud profile
+ automatically, using the Cloud Profile Manager:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Click the <emphasis role="bold">Add</emphasis> icon and
+ specify a <emphasis role="bold">Name</emphasis> for the
+ profile.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Properties</emphasis> and
+ specify the following property values for the profile:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Compartment OCID
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fingerprint of the public key
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Location of the private key on the client device
+ </para>
+ </listitem>
+
+<!-- <listitem>
+ <para>
+ (Optional) Passphrase for the private key, if the key is
+ encrypted
+ </para>
+ </listitem>-->
+
+ <listitem>
+ <para>
+ Region OCID
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Tenancy OCID
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ User OCID
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Some of these are settings for your &oci; account, which you
+ can view from the &oci; Console.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Apply</emphasis> to save your
+ changes.
+ </para>
+
+ <para>
+ The cloud profile settings are saved in the
+ <filename>oci_config</filename> file in your &product-name;
+ global settings directory.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ Perform the following steps to import an existing &oci;
+ configuration file into the Cloud Profile Manager:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Ensure that a <filename>config</filename> file is present in
+ your &oci; configuration directory. For example, this is
+ <filename>$HOME/.oci/config</filename> on a Linux host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click the <emphasis role="bold">Import</emphasis> icon to
+ open a dialog that prompts you to import cloud profiles from
+ external files.
+ </para>
+
+ <warning>
+ <para>
+ This action overwrites any cloud profiles that are in your
+ &product-name; global settings directory.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Import</emphasis>.
+ </para>
+
+ <para>
+ Your cloud profile settings are saved to the
+ <filename>oci_config</filename> file in your &product-name;
+ global settings directory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Properties</emphasis> to show
+ the cloud profile settings.
+ </para>
+
+ <para>
+ Double-click on the appropriate field to change the value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Apply</emphasis> to save your
+ changes.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-vbox-oci-tasks">
+
+ <title>Using &product-name; With &oci;</title>
+
+ <para>
+ This section describes how you can use &product-name; with &oci;
+ to do the following tasks:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Export an &product-name; VM to &oci;. See
+ <xref linkend="cloud-export-oci"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Import a cloud instance into &product-name;. See
+ <xref linkend="cloud-import-oci"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create a new cloud instance from a custom image stored on
+ &oci;. See <xref linkend="cloud-new-vm"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the <command>VBoxManage</command> commands to integrate
+ with &oci; and perform cloud operations. See
+ <xref linkend="cloud-using-cli"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="cloud-export-oci">
+
+ <title>Exporting an Appliance to &oci;</title>
+
+ <para>
+ &product-name; supports the export of VMs to an &oci; service.
+ The exported VM is stored on &oci; as a custom Linux image. You
+ can configure whether a cloud instance is created and started
+ after the export process has completed.
+ </para>
+
+ <note>
+ <para>
+ Before you export a VM to &oci;, you must prepare the VM as
+ described in <xref linkend="cloud-export-oci-prepare-vm"/>.
+ </para>
+ </note>
+
+ <para>
+ Use the following steps to export a VM to &oci;:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Select <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Export Appliance</emphasis> to open
+ the <emphasis role="bold">Export Virtual
+ Appliance</emphasis> wizard.
+ </para>
+
+ <para>
+ Select a VM to export and click
+ <emphasis role="bold">Next</emphasis> to open the
+ <emphasis role="bold">Appliance Settings</emphasis> screen.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ From the <emphasis role="bold">Format</emphasis> drop-down
+ list, select <emphasis role="bold">&oci;</emphasis>.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Account</emphasis> drop-down
+ list, select the cloud profile for your &oci; account.
+ </para>
+
+ <para>
+ The list after the <emphasis role="bold">Account</emphasis>
+ field shows the profile settings for your cloud account.
+ </para>
+
+ <figure id="fig-export-appliance-oci">
+ <title>Appliance Settings Screen, Showing Cloud Profile and Machine Creation
+ Settings</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/export-appliance-oci.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ In the <emphasis role="bold">Machine Creation</emphasis>
+ field, select an option to configure settings for a cloud
+ instance created when you export to &oci;. The options
+ enable you to do one of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Configure settings for the cloud instance
+ <emphasis>after</emphasis> you have finished exporting
+ the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Configure settings for the cloud instance
+ <emphasis>before</emphasis> you start to export the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Do not create a cloud instance when you export the VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Click <emphasis role="bold">Next</emphasis> to make an API
+ request to the &oci; service and open the
+ <emphasis role="bold">Virtual System Settings</emphasis>
+ screen.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Edit storage settings used for the exported
+ virtual machine in &oci;. You can change the following
+ settings:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The name of the bucket used to store the exported files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Whether to store the custom image in &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The name for the custom image in &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The launch mode for the custom image.
+ </para>
+
+ <para>
+ <emphasis role="bold">Paravirtualized</emphasis> mode
+ gives improved performance and should be suitable for
+ most &product-name; VMs.
+ </para>
+
+ <para>
+ <emphasis role="bold">Emulated</emphasis> mode is
+ suitable for legacy OS images.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Click <emphasis role="bold">Export</emphasis> to continue.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Depending on the selection in the
+ <emphasis role="bold">Machine Creation</emphasis> field, the
+ <emphasis role="bold">Cloud Virtual Machine
+ Settings</emphasis> screen may be displayed before or after
+ export. This screen enables you to configure settings for
+ the cloud instance, such as Shape and Disk Size.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Create</emphasis>. The VM is
+ exported to &oci;.
+ </para>
+
+ <para>
+ Depending on the <emphasis role="bold">Machine
+ Creation</emphasis> setting, a cloud instance may be started
+ after upload to &oci; is completed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Monitor the export process by using the &oci; Console.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ You can also use the <command>VBoxManage export</command>
+ command to export a VM to &oci;. See
+ <xref linkend="vboxmanage-export-cloud"/>.
+ </para>
+
+ <sect3 id="cloud-export-oci-prepare-vm">
+
+ <title>Preparing a VM for Export to &oci;</title>
+
+ <para>
+ &oci; provides the option to import a custom Linux image.
+ Before an &product-name; image can be exported to &oci;, the
+ custom image needs to be prepared to ensure that instances
+ launched from the custom image can boot correctly and that
+ network connections will work. This section provides advice on
+ how to prepare a Linux image for export from &product-name;.
+ </para>
+
+ <para>
+ The following list shows some tasks to consider when preparing
+ an Oracle Linux VM for export:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Use DHCP for network
+ addresses.</emphasis> Configure the VM to use a DHCP
+ server to allocate network addresses, rather than using a
+ static IP address. The &oci; instance will then be
+ allocated an IP address automatically.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Do not specify a MAC
+ address.</emphasis> The network interface configuration
+ for the VM must not specify the MAC address.
+ </para>
+
+ <para>
+ Remove the HWADDR setting from the
+ <filename>/etc/sysconfig/ifcfg-<replaceable>devicename</replaceable></filename>
+ network script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Disable persistent network device
+ naming rules.</emphasis> This means that the &oci;
+ instance will use the same network device names as the VM.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Change the GRUB kernel parameters.
+ </para>
+
+ <para>
+ Add <literal>net.ifnames=0</literal> and
+ <literal>biosdevname=0</literal> as kernel parameter
+ values to the <literal>GRUB_CMDLINE_LINUX</literal>
+ variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Update the GRUB configuration.
+ </para>
+
+<screen># grub2-mkconfig -o /boot/grub2/grub.cfg</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disable any <literal>udev</literal> rules for network
+ device naming.
+ </para>
+
+ <para>
+ For example, if an automated <literal>udev</literal>
+ rule exists for <literal>net-persistence</literal>:
+ </para>
+
+<screen># cd /etc/udev/rules.d
+# rm -f 70-persistent-net.rules
+# ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules</screen>
+ </listitem>
+
+ </orderedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable the serial
+ console.</emphasis> This enables you to troubleshoot the
+ instance when it is running on &oci;.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Edit the <filename>/etc/default/grub</filename> file,
+ as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove the <literal>resume</literal> setting from
+ the kernel parameters. This setting slows down
+ boot time significantly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Replace <literal>GRUB_TERMINAL="gfxterm"</literal>
+ with <literal>GRUB_TERMINAL="console
+ serial"</literal>. This configures use of the
+ serial console instead of a graphical terminal.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>GRUB_SERIAL_COMMAND="serial --unit=0
+ --speed=115200"</literal>. This configures the
+ serial connection.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>console=tty0
+ console=ttyS0,115200</literal> to the
+ <literal>GRUB_CMDLINE_LINUX</literal> variable.
+ This adds the serial console to the Linux kernel
+ boot parameters.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Regenerate the GRUB configuration.
+ </para>
+
+<screen># grub2-mkconfig -o /boot/grub2/grub.cfg</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ To verify the changes, reboot the machine and run the
+ <command>dmesg</command> command to look for the
+ updated kernel parameters.
+ </para>
+
+<screen># dmesg |grep console=ttyS0</screen>
+ </listitem>
+
+ </orderedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Enable paravirtualized device
+ support.</emphasis> You do this by adding the
+ <literal>virtio</literal> drivers to the
+ <literal>initrd</literal> for the VM.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ This procedure works only on machines with a Linux
+ kernel of version 3.4 or later. Check that the VM is
+ running a supported kernel:
+ </para>
+
+<screen># uname -a</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the <literal>dracut</literal> tool to rebuild
+ <literal>initrd</literal>. Add the
+ <literal>qemu</literal> module, as follows:
+ </para>
+
+<screen># dracut –-logfile /var/log/Dracut.log –-force –-add qemu</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Verify that the <literal>virtio</literal> drivers are
+ now present in <literal>initrd</literal>.
+ </para>
+
+<screen> # lsinitrd |grep virtio</screen>
+ </listitem>
+
+ </orderedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For more information about importing a custom Linux image into
+ &oci;, see also:
+ </para>
+
+ <para>
+ <ulink url="https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/importingcustomimagelinux.htm" />
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="cloud-import-oci">
+
+ <title>Importing an Instance from &oci;</title>
+
+ <para>
+ Perform the following steps to import a cloud instance from
+ &oci; into &product-name;:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Select <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Import Appliance</emphasis> to open
+ the <emphasis role="bold">Import Virtual
+ Appliance</emphasis> wizard.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Source</emphasis> drop-down
+ list, select <emphasis role="bold">&oci;</emphasis>.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Account</emphasis> drop-down
+ list, select the cloud profile for your &oci; account.
+ </para>
+
+ <para>
+ The list after the <emphasis role="bold">Account</emphasis>
+ field shows the profile settings for your cloud account.
+ </para>
+
+ <para>
+ Choose the required cloud instance from the list in the
+ <emphasis role="bold">Machines</emphasis> field.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Next</emphasis> to make an API
+ request to the &oci; service and display the
+ <emphasis role="bold">Appliance Settings</emphasis> screen.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Edit settings for the new local virtual machine.
+ </para>
+
+ <para>
+ For example, you can edit the VM name and description.
+ </para>
+
+ <figure id="fig-import-instance-oci">
+ <title>Import Cloud Instance Screen, Showing Profile Settings and VM Settings</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/import-instance.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ Click <emphasis role="bold">Import</emphasis> to import the
+ instance from &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Monitor the import process by using the &oci; Console.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ You can also use the <command>VBoxManage import</command>
+ command to import an instance from &oci;. See
+ <xref linkend="vboxmanage-import-cloud"/>.
+ </para>
+
+ <simplesect id="import-instance-sequence">
+
+ <title>Importing an Instance: Overview of Events</title>
+
+ <para>
+ The following describes the sequence of events when you import
+ an instance from &oci;.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A custom image is created from the boot volume of the
+ instance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The custom image is exported to an &oci; object and is
+ stored using Object Storage in the bucket specified by the
+ user.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The &oci; object is downloaded to the local host. The
+ object is a TAR archive which contains a boot volume of
+ the instance in QCOW2 format and a JSON file containing
+ metadata related to the instance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The boot volume of the instance is extracted from the
+ archive and a new VMDK image is created by converting the
+ boot volume into the VMDK format. The VMDK image is
+ registered with &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A new VM is created using the VMDK image for the cloud
+ instance.
+ </para>
+
+ <para>
+ By default, the new VM is not started after import from
+ &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The downloaded TAR archive is deleted after a successful
+ import.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </simplesect>
+
+ </sect2>
+
+ <sect2 id="cloud-new-vm">
+
+ <title>Creating New Cloud Instances from a Custom Image</title>
+
+ <para>
+ You can use &product-name; to create new instances from a custom
+ image on your cloud service.
+ </para>
+
+ <para>
+ <xref linkend="cloud-export-oci"/> describes how to create a
+ custom image when you are exporting a VM to &oci;. Using a
+ custom image means that you can quickly create cloud instances
+ without having to upload your image to the cloud service every
+ time.
+ </para>
+
+ <para>
+ Perform the following steps to create a new cloud instance on
+ &oci;:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Select <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">New Cloud VM</emphasis> to open the
+ <emphasis role="bold">Create Cloud Virtual
+ Machine</emphasis> wizard.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ From the <emphasis role="bold">Destination</emphasis>
+ drop-down list, select
+ <emphasis role="bold">&oci;</emphasis>.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Account</emphasis> drop-down
+ list, select the cloud profile for your &oci; account.
+ </para>
+
+ <para>
+ The list after the <emphasis role="bold">Account</emphasis>
+ field shows the profile settings for your cloud account.
+ </para>
+
+ <para>
+ In the <emphasis role="bold">Images</emphasis> list, select
+ from the custom images available on &oci;.
+ </para>
+
+ <figure id="fig-newcloudvm">
+ <title>New Cloud VM Wizard, Showing List of Custom Images</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/newcloudvm.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ Click <emphasis role="bold">Next</emphasis> to make an API
+ request to the &oci; service and open the
+ <emphasis role="bold">Cloud Virtual Machine
+ Settings</emphasis> screen.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Edit settings used for the new instance on &oci;.
+ </para>
+
+ <para>
+ For example, you can edit the Disk Size and Shape used for
+ the VM instance and the networking configuration.
+ </para>
+
+ <para>
+ Click <emphasis role="bold">Create</emphasis> to create the
+ new cloud instance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Monitor the instance creation process by using the &oci;
+ Console.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ You can also use the <command>VBoxManage cloud
+ instance</command> command to create and manage instances on a
+ cloud service. See <xref linkend="vboxmanage-cloud"/>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="cloud-using-cli">
+
+ <title>Using VBoxManage Commands With &oci;</title>
+
+ <para>
+ This section includes some examples of how
+ <command>VBoxManage</command> commands can be used to integrate
+ with &oci; and perform common cloud operations.
+ </para>
+
+ <para>
+ <emphasis role="bold">Creating a Cloud Profile</emphasis>
+ </para>
+
+ <para>
+ To create a cloud profile called <literal>vbox-oci</literal>:
+ </para>
+
+<screen>VBoxManage cloudprofile --provider "OCI" --profile="vbox-oci" add \
+--clouduser="ocid1.user.oc1..." --keyfile="/home/username/.oci/oci_api_key.pem" \
+--tenancy="ocid1.tenancy.oc1..." --compartment="ocid1.compartment.oc1..." --region="us-ashburn-1"
+</screen>
+
+ <para>
+ The new cloud profile is added to the
+ <filename>oci_config</filename> file in your &product-name;
+ global configuration directory. For example, this is
+ <filename>$HOME/.VirtualBox/oci_config</filename> on a Windows
+ host.
+ </para>
+
+ <para>
+ <emphasis role="bold">Listing Cloud Instances</emphasis>
+ </para>
+
+ <para>
+ To list the instances in your &oci; compartment:
+ </para>
+
+<screen>VBoxManage cloud --provider="OCI" --profile="vbox-oci" list instances
+</screen>
+
+ <para>
+ <emphasis role="bold">Exporting an &product-name; VM to the
+ Cloud</emphasis>
+ </para>
+
+ <para>
+ To export a VM called <literal>myVM</literal> and create a cloud
+ instance called <literal>myVM_Cloud</literal>:
+ </para>
+
+<screen>VBoxManage export myVM --output OCI:// --cloud 0 --vmname myVM_Cloud \
+--cloudprofile "vbox-oci" --cloudbucket myBucket \
+--cloudshape VM.Standard2.1 --clouddomain US-ASHBURN-AD-1 --clouddisksize 50 \
+--cloudocivcn ocid1.vcn.oc1... --cloudocisubnet ocid1.subnet.oc1... \
+--cloudkeepobject true --cloudlaunchinstance true --cloudpublicip true
+ </screen>
+
+ <para>
+ <emphasis role="bold">Importing a Cloud Instance Into
+ &product-name;</emphasis>
+ </para>
+
+ <para>
+ To import a cloud instance and create an &product-name; VM
+ called <literal>oci_Import</literal>:
+ </para>
+
+<screen>VBoxManage import OCI:// --cloud --vmname oci_Import --memory 4000
+--cpus 3 --ostype FreeBSD_64 --cloudprofile "vbox-oci"
+--cloudinstanceid ocid1.instance.oc1... --cloudbucket myBucket
+ </screen>
+
+ <para>
+ <emphasis role="bold">Creating a New Cloud Instance From a
+ Custom Image</emphasis>
+ </para>
+
+ <para>
+ To create a new cloud instance from a custom image on &oci;:
+ </para>
+
+<screen>VBoxManage cloud --provider="OCI" --profile="vbox-oci" instance create \
+--domain-name="oraclecloud.com" --image-id="ocid1.image.oc1..." --display-name="myInstance" \
+--shape="VM.Standard2.1" --subnet="ocid1.subnet.oc1..."</screen>
+
+ <para>
+ <emphasis role="bold">Terminating a Cloud Instance</emphasis>
+ </para>
+
+ <para>
+ To terminate an instance in your compartment on &oci;:
+ </para>
+
+<screen>VBoxManage cloud --provider="OCI" --profile="vbox-oci" instance terminate \
+--id="ocid1.instance.oc1..." </screen>
+
+ <para>
+ For more details about the available commands for cloud
+ operations, see <xref linkend="vboxmanage-cloud"/>.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="globalsettings">
+
+ <title>Global Settings</title>
+
+ <para>
+ The <emphasis role="bold">Global Settings</emphasis> dialog can be
+ displayed using the <emphasis role="bold">File</emphasis> menu, by
+ clicking the <emphasis role="bold">Preferences</emphasis> item.
+ This dialog offers a selection of settings, most of which apply to
+ all virtual machines of the current user. The
+ <emphasis role="bold">Extensions</emphasis> option applies to the
+ entire system.
+ </para>
+
+ <para>
+ The following settings are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">General.</emphasis> Enables the user to
+ specify the default folder or directory for VM files, and the
+ VRDP Authentication Library.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Input.</emphasis> Enables the user to
+ specify the Host key. This is the key that toggles whether the
+ cursor is in the focus of the VM or the Host OS windows, see
+ <xref linkend="keyb_mouse_normal"/>. The Host key is also used
+ to trigger certain VM actions, see
+ <xref linkend="specialcharacters"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Update.</emphasis> Enables the user to
+ specify various settings for Automatic Updates.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Language.</emphasis> Enables the user to
+ specify the GUI language.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Display.</emphasis> Enables the user to
+ specify the screen resolution, and its width and height. A
+ default scale factor can be specified for all guest screens.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Network.</emphasis> Enables the user to
+ configure the details of NAT networks. See
+ <xref linkend="network_nat_service"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Extensions.</emphasis> Enables the user
+ to list and manage the installed extension packages.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Proxy.</emphasis> Enables the user to
+ configure a HTTP Proxy Server.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="frontends">
+
+ <title>Alternative Front-Ends</title>
+
+ <para>
+ As briefly mentioned in <xref linkend="features-overview" />,
+ &product-name; has a very flexible internal design that enables
+ you to use multiple interfaces to control the same virtual
+ machines. For example, you can start a virtual machine with the
+ VirtualBox Manager window and then stop it from the command line.
+ With &product-name;'s support for the Remote Desktop Protocol
+ (RDP), you can even run virtual machines remotely on a headless
+ server and have all the graphical output redirected over the
+ network.
+ </para>
+
+ <para>
+ The following front-ends are shipped in the standard
+ &product-name; package:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VirtualBox.</emphasis> This is the
+ VirtualBox Manager, a graphical user interface that uses the
+ Qt toolkit. This interface is described throughout this
+ manual. While this is the simplest and easiest front-end to
+ use, some of the more advanced &product-name; features are not
+ included.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VBoxManage.</emphasis> A command-line
+ interface for automated and detailed control of every aspect
+ of &product-name;. See
+ <xref
+ linkend="vboxmanage" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VBoxHeadless.</emphasis> A front-end
+ that produces no visible output on the host at all, but can
+ act as a RDP server if the VirtualBox Remote Desktop Extension
+ (VRDE) is installed and enabled for the VM. As opposed to the
+ other graphical interfaces, the headless front-end requires no
+ graphics support. This is useful, for example, if you want to
+ host your virtual machines on a headless Linux server that has
+ no X Window system installed. See
+ <xref linkend="vboxheadless" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If the above front-ends still do not satisfy your particular
+ needs, it is possible to create yet another front-end to the
+ complex virtualization engine that is the core of &product-name;,
+ as the &product-name; core neatly exposes all of its features in a
+ clean API. See <xref linkend="VirtualBoxAPI" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="soft-keyb">
+
+ <title>Soft Keyboard</title>
+
+ <para>
+ &product-name; provides a <emphasis>soft keyboard</emphasis> that
+ enables you to input keyboard characters on the guest. A soft
+ keyboard is an on-screen keyboard that can be used as an
+ alternative to a physical keyboard. See
+ <xref linkend="soft-keyb-using"/> for details of how to use the
+ soft keyboard.
+ </para>
+
+ <caution>
+ <para>
+ For best results, ensure that the keyboard layout configured on
+ the guest OS matches the keyboard layout used by the soft
+ keyboard. &product-name; does not do this automatically.
+ </para>
+ </caution>
+
+ <figure id="fig-soft-keyb">
+ <title>Soft Keyboard in a Guest Virtual Machine</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/softkeybd.png"
+ width="14cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ The soft keyboard can be used in the following scenarios:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ When the physical keyboard on the host is not the same as the
+ keyboard layout configured on the guest. For example, if the
+ guest is configured to use an international keyboard, but the
+ host keyboard is US English.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To send special key combinations to the guest. Note that some
+ common key combinations are also available in the
+ <emphasis role="bold">Input</emphasis>,
+ <emphasis role="bold">Keyboard</emphasis> menu of the guest VM
+ window. See <xref linkend="specialcharacters"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For guests in kiosk mode, where a physical keyboard is not
+ present.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using nested virtualization, the soft keyboard provides a
+ method of sending key presses to a guest.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ By default, the soft keyboard includes some common international
+ keyboard layouts. You can copy and modify these to meet your own
+ requirements. See <xref linkend="soft-keyb-custom"/>.
+ </para>
+
+ <sect2 id="soft-keyb-using">
+
+ <title>Using the Soft Keyboard</title>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Display the soft keyboard.
+ </para>
+
+ <para>
+ In the guest VM window, select
+ <emphasis role="bold">Input</emphasis>,
+ <emphasis role="bold">Keyboard</emphasis>,
+ <emphasis role="bold">Soft Keyboard</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Select the required keyboard layout.
+ </para>
+
+ <para>
+ The name of the current keyboard layout is displayed in the
+ task bar of the soft keyboard window. This is the previous
+ keyboard layout that was used.
+ </para>
+
+ <para>
+ Click the <emphasis role="bold">Layout List</emphasis> icon
+ in the task bar of the soft keyboard window. The
+ <emphasis role="bold">Layout List</emphasis> window is
+ displayed.
+ </para>
+
+ <para>
+ Select the required keyboard layout from the entries in the
+ <emphasis role="bold">Layout List</emphasis> window.
+ </para>
+
+ <para>
+ The keyboard display graphic is updated to show the
+ available input keys.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the soft keyboard to enter keyboard characters on the
+ guest.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Modifier keys such as Shift, Ctrl, and Alt are available
+ on the soft keyboard. Click once to select the modifier
+ key, click twice to lock the modifier key.
+ </para>
+
+ <para>
+ The <emphasis role="bold">Reset the Keyboard and Release
+ All Keys</emphasis> icon can be used to release all
+ pressed modifier keys, both on the host and the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To change the look of the soft keyboard, click the
+ <emphasis role="bold">Settings</emphasis> icon in the
+ task bar. You can change colors used in the keyboard
+ graphic, and can hide or show sections of the keyboard,
+ such as the NumPad or multimedia keys.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="soft-keyb-custom">
+
+ <title>Creating a Custom Keyboard Layout</title>
+
+ <para>
+ You can use one of the supplied default keyboard layouts as the
+ starting point to create a custom keyboard layout.
+ </para>
+
+ <note>
+ <para>
+ To permananently save a custom keyboard layout, you must save
+ it to file. Otherwise, any changes you make are discarded when
+ you close down the <emphasis role="bold">Soft
+ Keyboard</emphasis> window.
+ </para>
+
+ <para>
+ Custom keyboard layouts that you save are stored as an XML
+ file on the host, in the <filename>keyboardLayouts</filename>
+ folder in the global configuration data directory. For
+ example, in
+ <filename>$HOME/.config/VirtualBox/keyboardLayouts</filename>
+ on a Linux host.
+ </para>
+ </note>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Display the <emphasis role="bold">Layout List</emphasis>.
+ </para>
+
+ <para>
+ Click the <emphasis role="bold">Layout List</emphasis> icon
+ in the task bar of the soft keyboard window.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make a copy of an existing keyboard layout.
+ </para>
+
+ <para>
+ Highlight the required layout and click the
+ <emphasis role="bold">Copy the Selected Layout</emphasis>
+ icon.
+ </para>
+
+ <para>
+ A new layout entry with a name suffix of
+ <literal>-Copy</literal> is created.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Edit the new keyboard layout.
+ </para>
+
+ <para>
+ Highlight the new layout in the <emphasis role="bold">Layout
+ List</emphasis> and click the <emphasis role="bold">Edit the
+ Selected Layout</emphasis> icon.
+ </para>
+
+ <para>
+ Enter a new name for the layout.
+ </para>
+
+ <para>
+ Edit keys in the new layout. Click on the key that you want
+ to edit and enter new key captions in the
+ <emphasis role="bold">Captions</emphasis> fields.
+ </para>
+
+ <para>
+ The keyboard graphic is updated with the new captions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Save the layout to file. This means that your
+ custom keyboard layout will be available for future use.
+ </para>
+
+ <para>
+ Highlight the new layout in the <emphasis role="bold">Layout
+ List</emphasis> and click the <emphasis role="bold">Save the
+ Selected Layout into File</emphasis> icon.
+ </para>
+
+ <para>
+ Any custom layouts that you create can later be removed from
+ the Layout List, by highlighting and clicking the
+ <emphasis role="bold">Delete the Selected Layout</emphasis>
+ icon.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_KnownIssues.xml b/doc/manual/en_US/user_KnownIssues.xml
new file mode 100644
index 00000000..e7e3c633
--- /dev/null
+++ b/doc/manual/en_US/user_KnownIssues.xml
@@ -0,0 +1,464 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="KnownIssues">
+
+ <title>Known Limitations</title>
+
+ <sect1 id="ExperimentalFeatures">
+
+ <title>Experimental Features</title>
+
+ <para>
+ Some &product-name; features are labeled as experimental. Such
+ features are provided on an "as-is" basis and are not formally
+ supported. However, feedback and suggestions about such features
+ are welcome. A comprehensive list of experimental features is as
+ follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Hardware 3D acceleration support for Windows, Linux, and
+ Oracle Solaris guests
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Hardware 2D video playback acceleration support for Windows
+ guests
+ </para>
+ </listitem>
+
+<!-- <listitem>
+ <para>
+ PCI passthrough (Linux hosts only)
+ </para>
+ </listitem>-->
+
+ <listitem>
+ <para>
+ Mac OS X guests (Mac OS X hosts only)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ ICH9 chipset emulation
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EFI firmware
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Host CD/DVD drive passthrough
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support of iSCSI using internal networking
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Using &product-name; and Hyper-V on the same host
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="KnownProblems">
+
+ <title>Known Issues</title>
+
+ <para>
+ The following section describes known problems with this release
+ of &product-name;. Unless marked otherwise, these issues are
+ planned to be fixed in later releases.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Poor performance when using &product-name; and
+ <emphasis role="bold">Hyper-V</emphasis> on the same host. To
+ fix this, certain Windows features like "Hyper-V Platform",
+ "Virtual Machine Platform" and "Windows Hypervisor Platform"
+ must be turned off, followed by a host reboot.
+ </para>
+
+ <para>
+ Additionally, the Microsoft Device Guard and Credential Guard
+ hardware readiness tool might have to be used in order to turn
+ off more features. For example, by running the following
+ command:
+ </para>
+
+<screen>.\DG_Readiness_Tool_vX.X.ps1 -Disable -AutoReboot</screen>
+
+ <note>
+ <para>
+ Disabling Device Guard and Credential Guard features will
+ have an impact on the overall security of the host. Please
+ contact your Administrator beforehand regarding this.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>
+ The following <emphasis role="bold">Guest SMP (multiprocessor)
+ limitations</emphasis> exist:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Poor performance</emphasis> with
+ 32-bit guests on AMD CPUs. This affects mainly Windows and
+ Oracle Solaris guests, but possibly also some Linux kernel
+ revisions. Partially solved for 32-bit Windows NT, 2000,
+ XP, and 2003 guests. Requires the Guest Additions to be
+ installed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Poor performance</emphasis> with
+ 32-bit guests on certain Intel CPU models that do not
+ include virtual APIC hardware optimization support. This
+ affects mainly Windows and Oracle Solaris guests, but
+ possibly also some Linux kernel revisions. Partially
+ solved for 32-bit Windows NT, 2000, XP, and 2003 guests.
+ Requires the Guest Additions to be installed.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">NX (no execute, data execution
+ prevention)</emphasis> only works for guests running on 64-bit
+ hosts and requires that hardware virtualization be enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest control.</emphasis> On Windows
+ guests, a process started using the guest control execute
+ support will not be able to display a graphical user interface
+ <emphasis>unless</emphasis> the user account under which it is
+ running is currently logged in and has a desktop session.
+ </para>
+
+ <para>
+ Also, to use accounts without or with an empty password, the
+ guest's group policy must be changed. To do so, open the group
+ policy editor on the command line by typing
+ <command>gpedit.msc</command>, open the key <literal>Computer
+ Configuration\Windows Settings\Security Settings\Local
+ Policies\Security Options</literal> and change the value of
+ <literal>Accounts: Limit local account use of blank passwords
+ to console logon only</literal> to Disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Compacting virtual disk images is
+ limited to VDI files.</emphasis> The <command>VBoxManage
+ modifymedium --compact</command> command is currently only
+ implemented for VDI files. At the moment the only way to
+ optimize the size of a virtual disk images in other formats,
+ such as VMDK or VHD, is to clone the image and then use the
+ cloned image in the VM configuration.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">OVF import/export:</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ OVF localization, with multiple languages in a single OVF
+ file, is not yet supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Some OVF sections like StartupSection,
+ DeploymentOptionSection, and InstallSection are ignored.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ OVF environment documents, including their property
+ sections and appliance configuration with ISO images, are
+ not yet supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remote files using HTTP or other mechanisms are not yet
+ supported.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither <emphasis role="bold">scale mode</emphasis> nor
+ <emphasis role="bold">seamless mode</emphasis> work correctly
+ with guests using OpenGL 3D features, such as with
+ Compiz-enabled window managers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The RDP server in the &product-name; extension pack supports
+ only audio streams in format 22.05kHz stereo 16-bit. If the
+ RDP client requests any other audio format there will be no
+ audio.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Preserving the aspect ratio in scale mode works only on
+ Windows hosts and on Mac OS X hosts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On <emphasis role="bold">Mac OS X hosts,</emphasis> the
+ following features are not yet implemented:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Numlock emulation
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ CPU frequency metric
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Memory ballooning
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Mac OS X guests:</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Mac OS X guests can only run on a certain host hardware.
+ For details about license and host hardware limitations.
+ See <xref linkend="intro-macosxguests" /> and check the
+ Apple software license conditions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; does not provide Guest Additions for Mac OS
+ X at this time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The graphics resolution currently defaults to 1024x768 as
+ Mac OS X falls back to the built-in EFI display support.
+ See <xref linkend="efividmode" /> for more information on
+ how to change EFI video modes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Mac OS X guests only work with one CPU assigned to the VM.
+ Support for SMP will be provided in a future release.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Depending on your system and version of Mac OS X, you
+ might experience guest hangs after some time. This can be
+ fixed by turning off energy saving. Set the timeout to
+ "Never" in the system preferences.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ By default, the &product-name; EFI enables debug output of
+ the Mac OS X kernel to help you diagnose boot problems.
+ Note that there is a lot of output and not all errors are
+ fatal. They would also show when using a physical Apple
+ Macintosh computer. You can turn off these messages by
+ using the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal2/EfiBootArgs" " "</screen>
+
+ <para>
+ To revert to the previous behavior, use the following
+ command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal2/EfiBootArgs" ""</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ It is currently not possible to start a Mac OS X guest in
+ safe mode by specifying the <option>-x</option> option in
+ <literal>VBoxInternal2/EfiBootArgs</literal> extradata.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Oracle Solaris hosts:</emphasis>
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ USB support on Oracle Solaris hosts requires Oracle
+ Solaris 11 version snv_124 or later. Webcams and other
+ isochronous devices are known to have poor performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Host Webcam passthrough is restricted to 640x480 frames at
+ 20 frames per second due to limitations in the Oracle
+ Solaris V4L2 API. This may be addressed in a future Oracle
+ Solaris release.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No ACPI information, such as battery status or power
+ source, is reported to the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No support for using wireless adapters with bridged
+ networking.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Crossbow-based bridged networking on Oracle Solaris 11
+ hosts does not work directly with aggregate links.
+ However, you can use <command>dladm</command> to manually
+ create a VNIC over the aggregate link and use that with a
+ VM. This limitation does not exist in Oracle Solaris 11u1
+ build 17 and later.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither virtio nor Intel PRO/1000 drivers for
+ <emphasis role="bold">Windows XP guests</emphasis> support
+ segmentation offloading. Therefore Windows XP guests have
+ slower transmission rates comparing to other guest types.
+ Refer to MS Knowledge base article 842264 for additional
+ information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Guest Additions for OS/2.</emphasis>
+ Seamless windows and automatic guest resizing will probably
+ never be implemented due to inherent limitations of the OS/2
+ graphics system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Some guest operating systems predating ATAPI CD-ROMs may
+ exhibit long delays or entirely fail to boot in certain
+ configurations. This is most likely to happen when an
+ IDE/ATAPI CD-ROM exists alone on a primary or secondary IDE
+ channel.
+ </para>
+
+ <para>
+ Affected operating systems are MS OS/2 1.21: fails to boot
+ with an error message referencing COUNTRY.SYS and MS OS/2 1.3:
+ long boot delays. To avoid such problems, disable the emulated
+ IDE/ATAPI CD-ROM. The guest OS cannot use this device, anyway.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Networking.xml b/doc/manual/en_US/user_Networking.xml
new file mode 100644
index 00000000..24c05596
--- /dev/null
+++ b/doc/manual/en_US/user_Networking.xml
@@ -0,0 +1,1562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="networkingdetails">
+
+ <title>Virtual Networking</title>
+
+ <para>
+ As mentioned in <xref linkend="settings-network" />, &product-name;
+ provides up to eight virtual PCI Ethernet cards for each virtual
+ machine. For each such card, you can individually select the
+ following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The hardware that will be virtualized.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The virtualization mode that the virtual card operates in, with
+ respect to your physical networking hardware on the host.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Four of the network cards can be configured in the
+ <emphasis role="bold">Network</emphasis> section of the
+ <emphasis role="bold">Settings</emphasis> dialog in the graphical
+ user interface of &product-name;. You can configure all eight
+ network cards on the command line using <command>VBoxManage
+ modifyvm</command>. See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <para>
+ This chapter explains the various networking settings in more
+ detail.
+ </para>
+
+ <sect1 id="nichardware">
+
+ <title>Virtual Networking Hardware</title>
+
+ <para>
+ For each card, you can individually select what kind of
+ <emphasis>hardware</emphasis> will be presented to the virtual
+ machine. &product-name; can virtualize the following types of
+ networking hardware:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ AMD PCNet PCI II (Am79C970A)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ AMD PCNet FAST III (Am79C973), the default setting
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Intel PRO/1000 MT Desktop (82540EM)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Intel PRO/1000 T Server (82543GC)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Intel PRO/1000 MT Server (82545EM)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Paravirtualized network adapter (virtio-net)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The PCNet FAST III is the default because it is supported by
+ nearly all operating systems, as well as by the GNU GRUB boot
+ manager. As an exception, the Intel PRO/1000 family adapters are
+ chosen for some guest operating system types that no longer ship
+ with drivers for the PCNet card, such as Windows Vista.
+ </para>
+
+ <para>
+ The Intel PRO/1000 MT Desktop type works with Windows Vista and
+ later versions. The T Server variant of the Intel PRO/1000 card is
+ recognized by Windows XP guests without additional driver
+ installation. The MT Server variant facilitates OVF imports from
+ other platforms.
+ </para>
+
+ <para>
+ The Paravirtualized network adapter (virtio-net) is special. If
+ you select this adapter, then &product-name; does
+ <emphasis>not</emphasis> virtualize common networking hardware
+ that is supported by common guest operating systems. Instead,
+ &product-name; expects a special software interface for
+ virtualized environments to be provided by the guest, thus
+ avoiding the complexity of emulating networking hardware and
+ improving network performance. &product-name; provides support for
+ the industry-standard <emphasis>virtio</emphasis> networking
+ drivers, which are part of the open source KVM project.
+ </para>
+
+ <para>
+ The virtio networking drivers are available for the following
+ guest operating systems:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Linux kernels version 2.6.25 or later can be configured to
+ provide virtio support. Some distributions have also
+ back-ported virtio to older kernels.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For Windows 2000, XP, and Vista, virtio drivers can be
+ downloaded and installed from the KVM project web page:
+ </para>
+
+ <para>
+ <ulink
+ url="http://www.linux-kvm.org/page/WindowsGuestDrivers" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ &product-name; also has limited support for <emphasis>jumbo
+ frames</emphasis>. These are networking packets with more than
+ 1500 bytes of data, provided that you use the Intel card
+ virtualization and bridged networking. Jumbo frames are not
+ supported with the AMD networking devices. In those cases, jumbo
+ packets will silently be dropped for both the transmit and the
+ receive direction. Guest operating systems trying to use this
+ feature will observe this as a packet loss, which may lead to
+ unexpected application behavior in the guest. This does not cause
+ problems with guest operating systems in their default
+ configuration, as jumbo frames need to be explicitly enabled.
+ </para>
+
+ </sect1>
+
+ <sect1 id="networkingmodes">
+
+ <title>Introduction to Networking Modes</title>
+
+ <para>
+ Each of the networking adapters can be separately configured to
+ operate in one of the following modes:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Not attached.</emphasis> In this mode,
+ &product-name; reports to the guest that a network card is
+ present, but that there is no connection. This is as if no
+ Ethernet cable was plugged into the card. Using this mode, it
+ is possible to <emphasis>pull</emphasis> the virtual Ethernet
+ cable and disrupt the connection, which can be useful to
+ inform a guest operating system that no network connection is
+ available and enforce a reconfiguration.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Network Address Translation
+ (NAT)</emphasis>. If all you want is to browse the Web,
+ download files, and view email inside the guest, then this
+ default mode should be sufficient for you, and you can skip
+ the rest of this section. Please note that there are certain
+ limitations when using Windows file sharing. See
+ <xref linkend="nat-limitations" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">NAT Network.</emphasis> A NAT network is
+ a type of internal network that allows outbound connections.
+ See <xref linkend="network_nat_service"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Bridged networking.</emphasis> This is
+ for more advanced networking needs, such as network
+ simulations and running servers in a guest. When enabled,
+ &product-name; connects to one of your installed network cards
+ and exchanges network packets directly, circumventing your
+ host operating system's network stack.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Internal networking.</emphasis> This can
+ be used to create a different kind of software-based network
+ which is visible to selected virtual machines, but not to
+ applications running on the host or to the outside world.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host-only networking.</emphasis> This
+ can be used to create a network containing the host and a set
+ of virtual machines, without the need for the host's physical
+ network interface. Instead, a virtual network interface,
+ similar to a loopback interface, is created on the host,
+ providing connectivity among virtual machines and the host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold"> Generic networking.</emphasis> Rarely
+ used modes which share the same generic network interface, by
+ allowing the user to select a driver which can be included
+ with &product-name; or be distributed in an extension pack.
+ </para>
+
+ <para>
+ The following sub-modes are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">UDP Tunnel:</emphasis> Used to
+ interconnect virtual machines running on different hosts
+ directly, easily, and transparently, over an existing
+ network infrastructure.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VDE (Virtual Distributed Ethernet)
+ networking:</emphasis> Used to connect to a Virtual
+ Distributed Ethernet switch on a Linux or a FreeBSD host.
+ At the moment this option requires compilation of
+ &product-name; from sources, as the Oracle packages do not
+ include it.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following table provides an overview of the most important
+ networking modes.
+ </para>
+
+ <table id="table-networking-modes" tabstyle="oracle-all">
+ <title>Overview of Networking Modes</title>
+ <tgroup cols="6">
+ <colspec align="left" />
+ <colspec align="center" />
+ <colspec align="center" />
+ <colspec align="center" />
+ <colspec align="center" />
+ <colspec align="center" />
+ <thead valign="middle">
+ <row>
+ <entry><emphasis role="bold">Mode</emphasis></entry>
+ <entry><para>
+ <emphasis role="bold">VM&rarr;Host</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">VM&larr;Host</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">VM1&harr;VM2</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">VM&rarr;Net/LAN</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">VM&larr;Net/LAN</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody valign="middle">
+ <row>
+ <entry><para>
+ Host-only
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry align="center"><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Internal
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Bridged
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ NAT
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <link linkend="natforward">Port forward</link>
+ </para></entry>
+ <entry><para>
+ &ndash;
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <link linkend="natforward">Port forward</link>
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ NATservice
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <link linkend="network_nat_service">Port forward</link>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">+</emphasis>
+ </para></entry>
+ <entry><para>
+ <link linkend="network_nat_service">Port forward</link>
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ The following sections describe the available network modes in
+ more detail.
+ </para>
+
+ </sect1>
+
+ <sect1 id="network_nat">
+
+ <title>Network Address Translation (NAT)</title>
+
+ <para>
+ Network Address Translation (NAT) is the simplest way of accessing
+ an external network from a virtual machine. Usually, it does not
+ require any configuration on the host network and guest system.
+ For this reason, it is the default networking mode in
+ &product-name;.
+ </para>
+
+ <para>
+ A virtual machine with NAT enabled acts much like a real computer
+ that connects to the Internet through a router. The router, in
+ this case, is the &product-name; networking engine, which maps
+ traffic from and to the virtual machine transparently. In
+ &product-name; this router is placed between each virtual machine
+ and the host. This separation maximizes security since by default
+ virtual machines cannot talk to each other.
+ </para>
+
+ <para>
+ The disadvantage of NAT mode is that, much like a private network
+ behind a router, the virtual machine is invisible and unreachable
+ from the outside internet. You cannot run a server this way unless
+ you set up port forwarding. See <xref linkend="natforward"/>.
+ </para>
+
+ <para>
+ The network frames sent out by the guest operating system are
+ received by &product-name;'s NAT engine, which extracts the TCP/IP
+ data and resends it using the host operating system. To an
+ application on the host, or to another computer on the same
+ network as the host, it looks like the data was sent by the
+ &product-name; application on the host, using an IP address
+ belonging to the host. &product-name; listens for replies to the
+ packages sent, and repacks and resends them to the guest machine
+ on its private network.
+ </para>
+
+ <note>
+ <para>
+ Even though the NAT engine separates the VM from the host, the
+ VM has access to the host's loopback interface and the network
+ services running on it. The host's loopback interface is
+ accessible as IP address 10.0.2.2. This access to the host's
+ loopback interface can be extremely useful in some cases, for
+ example when running a web application under development in the
+ VM and the database server on the loopback interface on the
+ host.
+ </para>
+ </note>
+
+ <para>
+ The virtual machine receives its network address and configuration
+ on the private network from a DHCP server integrated into
+ &product-name;. The IP address thus assigned to the virtual
+ machine is usually on a completely different network than the
+ host. As more than one card of a virtual machine can be set up to
+ use NAT, the first card is connected to the private network
+ 10.0.2.0, the second card to the network 10.0.3.0 and so on. If
+ you need to change the guest-assigned IP range, see
+ <xref linkend="changenat" />.
+ </para>
+
+ <sect2 id="natforward">
+
+ <title>Configuring Port Forwarding with NAT</title>
+
+ <para>
+ As the virtual machine is connected to a private network
+ internal to &product-name; and invisible to the host, network
+ services on the guest are not accessible to the host machine or
+ to other computers on the same network. However, like a physical
+ router, &product-name; can make selected services available to
+ the world outside the guest through <emphasis>port
+ forwarding</emphasis>. This means that &product-name; listens to
+ certain ports on the host and resends all packets which arrive
+ there to the guest, on the same or a different port.
+ </para>
+
+ <para>
+ To an application on the host or other physical or virtual
+ machines on the network, it looks as though the service being
+ proxied is actually running on the host. This also means that
+ you cannot run the same service on the same ports on the host.
+ However, you still gain the advantages of running the service in
+ a virtual machine. For example, services on the host machine or
+ on other virtual machines cannot be compromised or crashed by a
+ vulnerability or a bug in the service, and the service can run
+ in a different operating system than the host system.
+ </para>
+
+ <para>
+ To configure port forwarding you can use the graphical
+ <emphasis role="bold">Port Forwarding</emphasis> editor which
+ can be found in the <emphasis role="bold">Network
+ Settings</emphasis> dialog for network adaptors configured to
+ use NAT. Here, you can map host ports to guest ports to allow
+ network traffic to be routed to a specific port in the guest.
+ </para>
+
+ <para>
+ Alternatively, the command line tool
+ <command>VBoxManage</command> can be used. See
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <para>
+ You will need to know which ports on the guest the service uses
+ and to decide which ports to use on the host. You may want to
+ use the same ports on the guest and on the host. You can use any
+ ports on the host which are not already in use by a service. For
+ example, to set up incoming NAT connections to an
+ <command>ssh</command> server in the guest, use the following
+ command:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"</screen>
+
+ <para>
+ In the above example, all TCP traffic arriving on port 2222 on
+ any host interface will be forwarded to port 22 in the guest.
+ The protocol name <literal>tcp</literal> is a mandatory
+ attribute defining which protocol should be used for forwarding,
+ <literal>udp</literal> could also be used. The name
+ <literal>guestssh</literal> is purely descriptive and will be
+ auto-generated if omitted. The number after
+ <option>--natpf</option> denotes the network card, as with other
+ <command>VBoxManage</command> commands.
+ </para>
+
+ <para>
+ To remove this forwarding rule, use the following command:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --natpf1 delete "guestssh"</screen>
+
+ <para>
+ If for some reason the guest uses a static assigned IP address
+ not leased from the built-in DHCP server, it is required to
+ specify the guest IP when registering the forwarding rule, as
+ follows:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"</screen>
+
+ <para>
+ This example is identical to the previous one, except that the
+ NAT engine is being told that the guest can be found at the
+ 10.0.2.19 address.
+ </para>
+
+ <para>
+ To forward <emphasis>all</emphasis> incoming traffic from a
+ specific host interface to the guest, specify the IP of that
+ host interface as follows:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"</screen>
+
+ <para>
+ This example forwards all TCP traffic arriving on the localhost
+ interface at 127.0.0.1 through port 2222 to port 22 in the
+ guest.
+ </para>
+
+ <para>
+ It is possible to configure incoming NAT connections while the
+ VM is running, see <xref linkend="vboxmanage-controlvm"/>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="nat-tftp">
+
+ <title>PXE Booting with NAT</title>
+
+ <para>
+ PXE booting is now supported in NAT mode. The NAT DHCP server
+ provides a boot file name of the form
+ <filename><replaceable>vmname</replaceable>.pxe</filename> if
+ the directory <literal>TFTP</literal> exists in the directory
+ where the user's <filename>VirtualBox.xml</filename> file is
+ kept. It is the responsibility of the user to provide
+ <filename><replaceable>vmname</replaceable>.pxe</filename>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="nat-limitations">
+
+ <title>NAT Limitations</title>
+
+ <para>
+ There are some limitations of NAT mode which users should be
+ aware of, as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">ICMP protocol limitations.</emphasis>
+ Some frequently used network debugging tools, such as
+ <command>ping</command> or <command>traceroute</command>,
+ rely on the ICMP protocol for sending and receiving
+ messages. &product-name; ICMP support has some limitations,
+ meaning <command>ping</command> should work but some other
+ tools may not work reliably.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Receiving of UDP
+ broadcasts.</emphasis> The guest does not reliably receive
+ UDP broadcasts. In order to save resources, it only listens
+ for a certain amount of time after the guest has sent UDP
+ data on a particular port. As a consequence, NetBios name
+ resolution based on broadcasts does not always work, but
+ WINS always works. As a workaround, you can use the numeric
+ IP of the desired server in the
+ <filename>\\<replaceable>server</replaceable>\<replaceable>share</replaceable></filename>
+ notation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Some protocols are not
+ supported.</emphasis> Protocols other than TCP and UDP are
+ not supported. GRE is not supported. This means some VPN
+ products, such as PPTP from Microsoft, cannot be used. There
+ are other VPN products which use only TCP and UDP.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Forwarding host ports below
+ 1024.</emphasis> On UNIX-based hosts, such as Linux, Oracle
+ Solaris, and Mac OS X, it is not possible to bind to ports
+ below 1024 from applications that are not run by
+ <literal>root</literal>. As a result, if you try to
+ configure such a port forwarding, the VM will refuse to
+ start.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ These limitations normally do not affect standard network use.
+ But the presence of NAT has also subtle effects that may
+ interfere with protocols that are normally working. One example
+ is NFS, where the server is often configured to refuse
+ connections from non-privileged ports, which are those ports not
+ below 1024.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="network_nat_service">
+
+ <title>Network Address Translation Service</title>
+
+ <para>
+ The Network Address Translation (NAT) service works in a similar
+ way to a home router, grouping the systems using it into a network
+ and preventing systems outside of this network from directly
+ accessing systems inside it, but letting systems inside
+ communicate with each other and with systems outside using TCP and
+ UDP over IPv4 and IPv6.
+ </para>
+
+ <para>
+ A NAT service is attached to an internal network. Virtual machines
+ which are to make use of it should be attached to that internal
+ network. The name of internal network is chosen when the NAT
+ service is created and the internal network will be created if it
+ does not already exist. The following is an example command to
+ create a NAT network:
+ </para>
+
+<screen>VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable</screen>
+
+ <para>
+ Here, natnet1 is the name of the internal network to be used and
+ 192.168.15.0/24 is the network address and mask of the NAT service
+ interface. By default in this static configuration the gateway
+ will be assigned the address 192.168.15.1, the address following
+ the interface address, though this is subject to change. To attach
+ a DHCP server to the internal network, modify the example command
+ as follows:
+ </para>
+
+<screen>VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable --dhcp on</screen>
+
+ <para>
+ To add a DHCP server to an existing network, use the following
+ command:
+ </para>
+
+<screen>VBoxManage natnetwork modify --netname natnet1 --dhcp on</screen>
+
+ <para>
+ To disable the DHCP server, use the following command:
+ </para>
+
+<screen>VBoxManage natnetwork modify --netname natnet1 --dhcp off</screen>
+
+ <para>
+ A DHCP server provides a list of registered nameservers, but does
+ not map servers from the 127/8 network.
+ </para>
+
+ <para>
+ To start the NAT service, use the following command:
+ </para>
+
+<screen>VBoxManage natnetwork start --netname natnet1</screen>
+
+ <para>
+ If the network has a DHCP server attached then it will start
+ together with the NAT network service.
+ </para>
+
+ <para>
+ To stop the NAT network service, together with any DHCP server:
+ </para>
+
+<screen>VBoxManage natnetwork stop --netname natnet1</screen>
+
+ <para>
+ To delete the NAT network service:
+ </para>
+
+<screen>VBoxManage natnetwork remove --netname natnet1</screen>
+
+ <para>
+ This command does not remove the DHCP server if one is enabled on
+ the internal network.
+ </para>
+
+ <para>
+ Port-forwarding is supported, using the
+ <option>--port-forward-4</option> switch for IPv4 and
+ <option>--port-forward-6</option> for IPv6. For example:
+ </para>
+
+<screen>VBoxManage natnetwork modify \
+ --netname natnet1 --port-forward-4 "ssh:tcp:[]:1022:[192.168.15.5]:22"</screen>
+
+ <para>
+ This adds a port-forwarding rule from the host's TCP 1022 port to
+ the port 22 on the guest with IP address 192.168.15.5. Host port,
+ guest port and guest IP are mandatory. To delete the rule, use the
+ following command:
+ </para>
+
+<screen>VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete ssh</screen>
+
+ <para>
+ It is possible to bind a NAT service to specified interface. For
+ example:
+ </para>
+
+<screen>VBoxManage setextradata global "NAT/win-nat-test-0/SourceIp4" 192.168.1.185</screen>
+
+ <para>
+ To see the list of registered NAT networks, use the following
+ command:
+ </para>
+
+<screen>VBoxManage list natnetworks</screen>
+
+ <para>
+ NAT networks can also be created, deleted, and configured using
+ the VirtualBox Manager. Click
+ <emphasis role="bold">File</emphasis>,<emphasis role="bold">
+ Preferences</emphasis> and select the
+ <emphasis role="bold">Network</emphasis> page.
+ </para>
+
+ <note>
+ <para>
+ Even though the NAT service separates the VM from the host, the
+ VM has access to the host's loopback interface and the network
+ services running on it. The host's loopback interface is
+ accessible as IP address 10.0.2.2 (assuming the default
+ configuration, in other configurations it's the respective
+ address in the configured IPv4 or IPv6 network range). This
+ access to the host's loopback interface can be extremely useful
+ in some cases, for example when running a web application under
+ development in the VM and the database server on the loopback
+ interface on the host.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="network_bridged">
+
+ <title>Bridged Networking</title>
+
+ <para>
+ With bridged networking, &product-name; uses a device driver on
+ your <emphasis>host</emphasis> system that filters data from your
+ physical network adapter. This driver is therefore called a
+ <emphasis>net filter</emphasis> driver. This enables
+ &product-name; to intercept data from the physical network and
+ inject data into it, effectively creating a new network interface
+ in software. When a guest is using such a new software interface,
+ it looks to the host system as though the guest were physically
+ connected to the interface using a network cable. The host can
+ send data to the guest through that interface and receive data
+ from it. This means that you can set up routing or bridging
+ between the guest and the rest of your network.
+ </para>
+
+ <note>
+ <para>
+ Even though TAP interfaces are no longer necessary on Linux for
+ bridged networking, you <emphasis>can</emphasis> still use TAP
+ interfaces for certain advanced setups, since you can connect a
+ VM to any host interface.
+ </para>
+ </note>
+
+ <para>
+ To enable bridged networking, open the
+ <emphasis role="bold">Settings</emphasis> dialog of a virtual
+ machine, go to the <emphasis role="bold">Network</emphasis> page
+ and select <emphasis role="bold">Bridged Network</emphasis> in the
+ drop-down list for the <emphasis role="bold">Attached
+ To</emphasis> field. Select a host interface from the list at the
+ bottom of the page, which contains the physical network interfaces
+ of your systems. On a typical MacBook, for example, this will
+ allow you to select between en1: AirPort, which is the wireless
+ interface, and en0: Ethernet, which represents the interface with
+ a network cable.
+ </para>
+
+ <note>
+ <para>
+ Bridging to a wireless interface is done differently from
+ bridging to a wired interface, because most wireless adapters do
+ not support promiscuous mode. All traffic has to use the MAC
+ address of the host's wireless adapter, and therefore
+ &product-name; needs to replace the source MAC address in the
+ Ethernet header of an outgoing packet to make sure the reply
+ will be sent to the host interface. When &product-name; sees an
+ incoming packet with a destination IP address that belongs to
+ one of the virtual machine adapters it replaces the destination
+ MAC address in the Ethernet header with the VM adapter's MAC
+ address and passes it on. &product-name; examines ARP and DHCP
+ packets in order to learn the IP addresses of virtual machines.
+ </para>
+ </note>
+
+ <para>
+ Depending on your host operating system, the following limitations
+ apply:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Mac OS X hosts.</emphasis> Functionality
+ is limited when using AirPort, the Mac's wireless networking
+ system, for bridged networking. Currently, &product-name;
+ supports only IPv4 and IPv6 over AirPort. For other protocols,
+ such as IPX, you must choose a wired interface.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Linux hosts.</emphasis> Functionality is
+ limited when using wireless interfaces for bridged networking.
+ Currently, &product-name; supports only IPv4 and IPv6 over
+ wireless. For other protocols, such as IPX, you must choose a
+ wired interface.
+ </para>
+
+ <para>
+ Also, setting the MTU to less than 1500 bytes on wired
+ interfaces provided by the sky2 driver on the Marvell Yukon II
+ EC Ultra Ethernet NIC is known to cause packet losses under
+ certain conditions.
+ </para>
+
+ <para>
+ Some adapters strip VLAN tags in hardware. This does not allow
+ you to use VLAN trunking between VM and the external network
+ with pre-2.6.27 Linux kernels, or with host operating systems
+ other than Linux.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Oracle Solaris hosts.</emphasis> There
+ is no support for using wireless interfaces. Filtering guest
+ traffic using IPFilter is also not completely supported due to
+ technical restrictions of the Oracle Solaris networking
+ subsystem. These issues may be addressed in later releases of
+ Oracle Solaris 11.
+ </para>
+
+ <para>
+ On Oracle Solaris 11 hosts build 159 and above, it is possible
+ to use Oracle Solaris Crossbow Virtual Network Interfaces
+ (VNICs) directly with &product-name; without any additional
+ configuration other than each VNIC must be exclusive for every
+ guest network interface.
+ </para>
+
+ <para>
+ When using VLAN interfaces with &product-name;, they must be
+ named according to the PPA-hack naming scheme, such as
+ e1000g513001. Otherwise, the guest may receive packets in an
+ unexpected format.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="network_internal">
+
+ <title>Internal Networking</title>
+
+ <para>
+ Internal Networking is similar to bridged networking in that the
+ VM can directly communicate with the outside world. However, the
+ outside world is limited to other VMs on the same host which
+ connect to the same internal network.
+ </para>
+
+ <para>
+ Even though technically, everything that can be done using
+ internal networking can also be done using bridged networking,
+ there are security advantages with internal networking. In bridged
+ networking mode, all traffic goes through a physical interface of
+ the host system. It is therefore possible to attach a packet
+ sniffer such as Wireshark to the host interface and log all
+ traffic that goes over it. If, for any reason, you prefer two or
+ more VMs on the same machine to communicate privately, hiding
+ their data from both the host system and the user, bridged
+ networking therefore is not an option.
+ </para>
+
+ <para>
+ Internal networks are created automatically as needed. There is no
+ central configuration. Every internal network is identified simply
+ by its name. Once there is more than one active virtual network
+ card with the same internal network ID, the &product-name; support
+ driver will automatically <emphasis>wire</emphasis> the cards and
+ act as a network switch. The &product-name; support driver
+ implements a complete Ethernet switch and supports both
+ broadcast/multicast frames and promiscuous mode.
+ </para>
+
+ <para>
+ In order to attach a VM's network card to an internal network, set
+ its networking mode to Internal Networking. There are two ways to
+ accomplish this:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use the VM's <emphasis role="bold">Settings</emphasis> dialog
+ in the VirtualBox Manager. In the
+ <emphasis role="bold">Network</emphasis> category of the
+ settings dialog, select <emphasis role="bold">Internal
+ Network</emphasis> from the drop-down list of networking
+ modes. Select the name of an existing internal network from
+ the drop-down list below, or enter a new name into the
+ <emphasis role="bold">Name</emphasis> field.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the command line, for example:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --nic&lt;x&gt; intnet</screen>
+
+ <para>
+ Optionally, you can specify a network name with the command:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --intnet&lt;x&gt; "network name"</screen>
+
+ <para>
+ If you do not specify a network name, the network card will be
+ attached to the network <literal>intnet</literal> by default.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Unless you configure the virtual network cards in the guest
+ operating systems that are participating in the internal network
+ to use static IP addresses, you may want to use the DHCP server
+ that is built into &product-name; to manage IP addresses for the
+ internal network. See <xref linkend="vboxmanage-dhcpserver" />.
+ </para>
+
+ <para>
+ As a security measure, by default, the Linux implementation of
+ internal networking only allows VMs running under the same user ID
+ to establish an internal network. However, it is possible to
+ create a shared internal networking interface, accessible by users
+ with different user IDs.
+ </para>
+
+ </sect1>
+
+ <sect1 id="network_hostonly">
+
+ <title>Host-Only Networking</title>
+
+ <para>
+ Host-only networking can be thought of as a hybrid between the
+ bridged and internal networking modes. As with bridged networking,
+ the virtual machines can talk to each other and the host as if
+ they were connected through a physical Ethernet switch. As with
+ internal networking, a physical networking interface need not be
+ present, and the virtual machines cannot talk to the world outside
+ the host since they are not connected to a physical networking
+ interface.
+ </para>
+
+ <para>
+ When host-only networking is used, &product-name; creates a new
+ software interface on the host which then appears next to your
+ existing network interfaces. In other words, whereas with bridged
+ networking an existing physical interface is used to attach
+ virtual machines to, with host-only networking a new
+ <emphasis>loopback</emphasis> interface is created on the host.
+ And whereas with internal networking, the traffic between the
+ virtual machines cannot be seen, the traffic on the loopback
+ interface on the host can be intercepted.
+ </para>
+
+ <para>
+ Host-only networking is particularly useful for preconfigured
+ virtual appliances, where multiple virtual machines are shipped
+ together and designed to cooperate. For example, one virtual
+ machine may contain a web server and a second one a database, and
+ since they are intended to talk to each other, the appliance can
+ instruct &product-name; to set up a host-only network for the two.
+ A second, bridged, network would then connect the web server to
+ the outside world to serve data to, but the outside world cannot
+ connect to the database.
+ </para>
+
+ <para>
+ To enable a host-only network interface for a virtual machine, do
+ either of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Go to the <emphasis role="bold">Network</emphasis> page in the
+ virtual machine's <emphasis role="bold">Settings</emphasis>
+ dialog and select an <emphasis role="bold">Adapter</emphasis>
+ tab. Ensure that the <emphasis role="bold">Enable Network
+ Adapter</emphasis> check box is selected and choose
+ <emphasis role="bold">Host-Only Adapter</emphasis> for the
+ <emphasis role="bold">Attached To</emphasis> field.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On the command line, use <command>VBoxManage modifyvm
+ <replaceable>"vmname</replaceable>
+ --nic<replaceable>x</replaceable> hostonly</command>. See
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For host-only networking, as with internal networking, you may
+ find the DHCP server useful that is built into &product-name;.
+ This is enabled by default and manages the IP addresses in the
+ host-only network. Without the DHCP server you would need to
+ configure all IP addresses statically.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ In the VirtualBox Manager you can configure the DHCP server by
+ choosing <emphasis role="bold">File</emphasis>,
+ <emphasis role="bold">Host Network Manager</emphasis>. The
+ Host Network Manager lists all host-only networks which are
+ presently in use. Select the network name and then use the
+ <emphasis role="bold">DHCP Server</emphasis> tab to configure
+ DHCP server settings.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Alternatively, you can use the <command>VBoxManage
+ dhcpserver</command> command. See
+ <xref linkend="vboxmanage-dhcpserver" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ On Linux and Mac OS X hosts the number of host-only interfaces
+ is limited to 128. There is no such limit for Oracle Solaris and
+ Windows hosts.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="network_udp_tunnel">
+
+ <title>UDP Tunnel Networking</title>
+
+ <para>
+ This networking mode enables you to interconnect virtual machines
+ running on different hosts.
+ </para>
+
+ <para>
+ Technically this is done by encapsulating Ethernet frames sent or
+ received by the guest network card into UDP/IP datagrams, and
+ sending them over any network available to the host.
+ </para>
+
+ <para>
+ UDP Tunnel mode has the following parameters:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Source UDP port:</emphasis> The port on
+ which the host listens. Datagrams arriving on this port from
+ any source address will be forwarded to the receiving part of
+ the guest network card.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Destination address:</emphasis> IP
+ address of the target host of the transmitted data.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Destination UDP port:</emphasis> Port
+ number to which the transmitted data is sent.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ When interconnecting two virtual machines on two different hosts,
+ their IP addresses must be swapped. On a single host, source and
+ destination UDP ports must be swapped.
+ </para>
+
+ <para>
+ In the following example, host 1 uses the IP address 10.0.0.1 and
+ host 2 uses IP address 10.0.0.2. To configure using the
+ command-line:
+ </para>
+
+<screen> VBoxManage modifyvm "VM 01 on host 1" --nic&lt;x&gt; generic
+ VBoxManage modifyvm "VM 01 on host 1" --nicgenericdrv&lt;x&gt; UDPTunnel
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; dest=10.0.0.2
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; sport=10001
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; dport=10002</screen>
+
+<screen> VBoxManage modifyvm "VM 02 on host 2" --nic&lt;y&gt; generic
+ VBoxManage modifyvm "VM 02 on host 2" --nicgenericdrv&lt;y&gt; UDPTunnel
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; dest=10.0.0.1
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; sport=10002
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; dport=10001</screen>
+
+ <para>
+ Of course, you can always interconnect two virtual machines on the
+ same host, by setting the destination address parameter to
+ 127.0.0.1 on both. It will act similarly to an internal network in
+ this case. However, the host can see the network traffic which it
+ could not in the normal internal network case.
+ </para>
+
+ <note>
+ <para>
+ On UNIX-based hosts, such as Linux, Oracle Solaris, and Mac OS
+ X, it is not possible to bind to ports below 1024 from
+ applications that are not run by <literal>root</literal>. As a
+ result, if you try to configure such a source UDP port, the VM
+ will refuse to start.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="network_vde">
+
+ <title>VDE Networking</title>
+
+ <para>
+ Virtual Distributed Ethernet (VDE) is a flexible, virtual network
+ infrastructure system, spanning across multiple hosts in a secure
+ way. It enables L2/L3 switching, including spanning-tree protocol,
+ VLANs, and WAN emulation. It is an optional part of &product-name;
+ which is only included in the source code.
+ </para>
+
+ <para>
+ VDE is a project developed by Renzo Davoli, Associate Professor at
+ the University of Bologna, Italy.
+ </para>
+
+ <para>
+ The basic building blocks of the infrastructure are VDE switches,
+ VDE plugs, and VDE wires which interconnect the switches.
+ </para>
+
+ <para>
+ The &product-name; VDE driver has a single parameter: VDE network.
+ This is the name of the VDE network switch socket to which the VM
+ will be connected.
+ </para>
+
+ <para>
+ The following basic example shows how to connect a virtual machine
+ to a VDE switch.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Create a VDE switch:
+ </para>
+
+<screen>vde_switch -s /tmp/switch1</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Configure VMs using the command-line:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --nic&lt;x&gt; generic</screen>
+
+<screen>VBoxManage modifyvm "VM name" --nicgenericdrv&lt;x&gt; VDE</screen>
+
+ <para>
+ To connect to an automatically allocated switch port:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --nicproperty&lt;x&gt; network=/tmp/switch1</screen>
+
+ <para>
+ To connect to a specific switch port
+ <replaceable>n</replaceable>:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --nicproperty&lt;x&gt; network=/tmp/switch1[&lt;n&gt;]</screen>
+
+ <para>
+ This command can be useful for VLANs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ (Optional) Map between a VDE switch port and a VLAN.
+ </para>
+
+ <para>
+ Using the switch command line:
+ </para>
+
+<screen>vde$ vlan/create &lt;VLAN&gt;</screen>
+
+<screen>vde$ port/setvlan &lt;port&gt; &lt;VLAN&gt;</screen>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ VDE is available on Linux and FreeBSD hosts only. It is only
+ available if the VDE software and the VDE plugin library from the
+ VirtualSquare project are installed on the host system.
+ </para>
+
+ <note>
+ <para>
+ For Linux hosts, the shared library libvdeplug.so must be
+ available in the search path for shared libraries.
+ </para>
+ </note>
+
+ <para>
+ For more information on setting up VDE networks, please see the
+ documentation accompanying the software. See also
+ <ulink url="http://wiki.virtualsquare.org" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="network_bandwidth_limit">
+
+ <title>Limiting Bandwidth for Network Input/Output</title>
+
+ <para>
+ &product-name; supports limiting of the maximum bandwidth used for
+ network transmission. Several network adapters of one VM may share
+ limits through bandwidth groups. It is possible to have more than
+ one such limit.
+ </para>
+
+ <note>
+ <para>
+ &product-name; shapes VM traffic only in the transmit direction,
+ delaying the packets being sent by virtual machines. It does not
+ limit the traffic being received by virtual machines.
+ </para>
+ </note>
+
+ <para>
+ Limits are configured through <command>VBoxManage</command>. The
+ following example creates a bandwidth group named Limit, sets the
+ limit to 20 Mbps and assigns the group to the first and second
+ adapters of the VM:
+ </para>
+
+<screen>VBoxManage bandwidthctl "VM name" add Limit --type network --limit 20m
+VBoxManage modifyvm "VM name" --nicbandwidthgroup1 Limit
+VBoxManage modifyvm "VM name" --nicbandwidthgroup2 Limit</screen>
+
+ <para>
+ All adapters in a group share the bandwidth limit, meaning that in
+ the example above the bandwidth of both adapters combined can
+ never exceed 20 Mbps. However, if one adapter does not require
+ bandwidth the other can use the remaining bandwidth of its group.
+ </para>
+
+ <para>
+ The limits for each group can be changed while the VM is running,
+ with changes being picked up immediately. The following example
+ changes the limit for the group created in the previous example to
+ 100 Kbps:
+ </para>
+
+<screen>VBoxManage bandwidthctl "VM name" set Limit --limit 100k</screen>
+
+ <para>
+ To completely disable shaping for the first adapter of VM use the
+ following command:
+ </para>
+
+<screen>VBoxManage modifyvm "VM name" --nicbandwidthgroup1 none</screen>
+
+ <para>
+ It is also possible to disable shaping for all adapters assigned
+ to a bandwidth group while VM is running, by specifying the zero
+ limit for the group. For example, for the bandwidth group named
+ Limit:
+ </para>
+
+<screen>VBoxManage bandwidthctl "VM name" set Limit --limit 0</screen>
+
+ </sect1>
+
+ <sect1 id="network_performance">
+
+ <title>Improving Network Performance</title>
+
+ <para>
+ &product-name; provides a variety of virtual network adapters that
+ can be attached to the host's network in a number of ways.
+ Depending on which types of adapters and attachments are used the
+ network performance will be different. Performance-wise the virtio
+ network adapter is preferable over Intel PRO/1000 emulated
+ adapters, which are preferred over the PCNet family of adapters.
+ Both virtio and Intel PRO/1000 adapters enjoy the benefit of
+ segmentation and checksum offloading. Segmentation offloading is
+ essential for high performance as it allows for less context
+ switches, dramatically increasing the sizes of packets that cross
+ the VM/host boundary.
+ </para>
+
+ <note>
+ <para>
+ Neither virtio nor Intel PRO/1000 drivers for Windows XP support
+ segmentation offloading. Therefore Windows XP guests never reach
+ the same transmission rates as other guest types. Refer to MS
+ Knowledge base article 842264 for additional information.
+ </para>
+ </note>
+
+ <para>
+ Three attachment types: Internal, Bridged, and Host-Only, have
+ nearly identical performance. The Internal type is a little bit
+ faster and uses less CPU cycles as the packets never reach the
+ host's network stack. The NAT attachment type is the slowest and
+ most secure of all attachment types, as it provides network
+ address translation. The generic driver attachment is special and
+ cannot be considered as an alternative to other attachment types.
+ </para>
+
+ <para>
+ The number of CPUs assigned to VM does not improve network
+ performance and in some cases may hurt it due to increased
+ concurrency in the guest.
+ </para>
+
+ <para>
+ Here is a short summary of things to check in order to improve
+ network performance:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Whenever possible use the virtio network adapter. Otherwise,
+ use one of the Intel PRO/1000 adapters.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use a Bridged attachment instead of NAT.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make sure segmentation offloading is enabled in the guest OS.
+ Usually it will be enabled by default. You can check and
+ modify offloading settings using the
+ <command>ethtool</command> command on Linux guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Perform a full detailed analysis of network traffic on the
+ VM's network adaptor using a third party tool such as
+ Wireshark. To do this, a promiscuous mode policy needs to be
+ used on the VM's network adaptor. Use of this mode is only
+ possible on the following network types: NAT Network, Bridged
+ Adapter, Internal Network, and Host-Only Adapter.
+ </para>
+
+ <para>
+ To setup a promiscuous mode policy, either select from the
+ drop down list located in the <emphasis role="bold">Network
+ Settings</emphasis> dialog for the network adaptor or use the
+ command line tool <command>VBoxManage</command>. See
+ <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <para>
+ Promiscuous mode policies are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>deny</literal>, which hides any traffic not
+ intended for the VM's network adaptor. This is the default
+ setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>allow-vms</literal>, which hides all host traffic
+ from the VM's network adaptor, but allows it to see
+ traffic from and to other VMs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>allow-all</literal>, which removes all
+ restrictions. The VM's network adaptor sees all traffic.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Preface.xml b/doc/manual/en_US/user_Preface.xml
new file mode 100644
index 00000000..8f21579c
--- /dev/null
+++ b/doc/manual/en_US/user_Preface.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE preface 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;
+]>
+<preface id="user-preface" role="frontmatter">
+
+ <title>Preface</title>
+
+ <para>
+ The <citetitle>&product-name; User Manual</citetitle> provides an
+ introduction to using &product-name;. The manual provides
+ information on how to install &product-name; and use it to create
+ and configure virtual machines.
+ </para>
+
+ <simplesect id="user-preface-audience">
+
+ <title>Audience</title>
+
+ <para>
+ This document is intended for both new and existing users of
+ &product-name;. It is assumed that readers are familiar with Web
+ technologies and have a general understanding of Windows and UNIX
+ platforms.
+ </para>
+
+ </simplesect>
+
+ <simplesect id="user-preface-reldocs">
+
+ <title>Related Documents</title>
+
+ <para>
+ The documentation for this product is available at:
+ </para>
+
+ <para>
+ <ulink url="&ohc-doc-page;" />
+ </para>
+
+ </simplesect>
+
+ <simplesect id="user-preface-convs">
+
+ <title>Conventions</title>
+
+ <para>
+ The following text conventions are used in this document:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">boldface</emphasis>: Boldface type
+ indicates graphical user interface elements associated with an
+ action, or terms defined in text or the glossary.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>italic</emphasis>: Italic type indicates book
+ titles, emphasis, or placeholder variables for which you
+ supply particular values.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>monospace</literal>: Monospace type indicates
+ commands within a paragraph, URLs, code in examples, text that
+ appears on the screen, or text that you enter.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </simplesect>
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../common/oracle-accessibility-en.xml" />
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../common/oracle-support-en.xml" />
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="../common/oracle-diversity.xml" />
+
+</preface>
diff --git a/doc/manual/en_US/user_PrivacyPolicy.xml b/doc/manual/en_US/user_PrivacyPolicy.xml
new file mode 100644
index 00000000..8e165edb
--- /dev/null
+++ b/doc/manual/en_US/user_PrivacyPolicy.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE appendix 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;
+]>
+<appendix id="privacy">
+
+ <title>&product-name; Privacy Information</title>
+
+ <para>
+ Version 5, Dec 13, 2012
+ </para>
+
+ <para>
+ The Oracle Privacy Policies posted on
+ <ulink url="https://www.oracle.com/legal/privacy/privacy-policy.html" />
+ apply to your personal data collected and used by Oracle. The
+ following privacy information describes in more detail which
+ information is exchanged between the &product-name; application and
+ Oracle, and which information is collected by the virtualbox.org
+ website.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 1 virtualbox.org.</emphasis> The
+ "virtualbox.org" website logs anonymous usage information such as
+ your IP address, geographical location, browser type, referral
+ source, length of visit and number of page views while you visit
+ (collectively, "anonymous data"). In addition, but only if you
+ choose to register, the website's bug tracking and forum services
+ store the data you choose to reveal upon registration, such as your
+ user name and contact information.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 2 Cookies.</emphasis> The virtualbox.org
+ website, the bug tracker and the forum services use cookies to
+ identify and track the visiting web browser and, if you have
+ registered, to facilitate login. Most browsers allow you to refuse
+ to accept cookies. While you can still visit the website with
+ cookies disabled, logging into the bug tracker and forum services
+ will most likely not work without them.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 3 &product-name; registration
+ process.</emphasis> The &product-name; application may ask that the
+ user optionally register with Oracle. If you choose to register,
+ your name, e-mail address, country and company will be submitted to
+ Oracle and stored together with the IP address of the submitter as
+ well as product version and platform being used.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 4 Update notifications.</emphasis> The
+ &product-name; application may contact Oracle to find out whether a
+ new version of &product-name; has been released and notify the user
+ if that is the case. In the process, anonymous data such as your IP
+ address and a non-identifying counter, together with the product
+ version and the platform being used, is sent so that the server can
+ find out whether an update is available. By default, this check is
+ performed once a day. You change this interval or disable these
+ checks altogether in the &product-name; preferences.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 5 Usage of personal information.</emphasis>
+ Oracle may use anonymous and personal data collected by the means
+ above for statistical purposes as well as to automatically inform
+ you about new notices related to your posts on the bug tracker and
+ forum services, to administer the website and to contact you due to
+ technical issues. Oracle may also inform you about new product
+ releases related to &product-name;.
+ </para>
+
+ <para>
+ In no event will personal data without your express consent be
+ provided to any third parties, unless Oracle may be required to do
+ so by law or in connection with legal proceedings.
+ </para>
+
+ <para>
+ <emphasis role="bold">§ 6 Updates.</emphasis> Oracle may update the
+ privacy policy at any time by posting a new version at
+ <ulink url="https://www.oracle.com/legal/privacy/privacy-policy.html" />
+ and the privacy information will be kept up to date in the
+ documentation which comes with the &product-name; application. You
+ should check these places occasionally to ensure you are happy with
+ any changes.
+ </para>
+
+</appendix>
diff --git a/doc/manual/en_US/user_Security.xml b/doc/manual/en_US/user_Security.xml
new file mode 100644
index 00000000..e0387e9e
--- /dev/null
+++ b/doc/manual/en_US/user_Security.xml
@@ -0,0 +1,729 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="Security">
+
+ <title>Security Guide</title>
+
+ <sect1 id="security-general">
+
+ <title>General Security Principles</title>
+
+ <para>
+ The following principles are fundamental to using any application
+ securely.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Keep software up to date</emphasis>. One
+ of the principles of good security practise is to keep all
+ software versions and patches up to date. Activate the
+ &product-name; update notification to get notified when a new
+ &product-name; release is available. When updating
+ &product-name;, do not forget to update the Guest Additions.
+ Keep the host operating system as well as the guest operating
+ system up to date.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Restrict network access to critical
+ services.</emphasis> Use proper means, for instance a
+ firewall, to protect your computer and your guests from
+ accesses from the outside. Choosing the proper networking mode
+ for VMs helps to separate host networking from the guest and
+ vice versa.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Follow the principle of least
+ privilege.</emphasis> The principle of least privilege states
+ that users should be given the least amount of privilege
+ necessary to perform their jobs. Always execute &product-name;
+ as a regular user. We strongly discourage anyone from
+ executing &product-name; with system privileges.
+ </para>
+
+ <para>
+ Choose restrictive permissions when creating configuration
+ files, for instance when creating /etc/default/virtualbox, see
+ <xref linkend="linux_install_opts"/>. Mode 0600 is preferred.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Monitor system activity.</emphasis>
+ System security builds on three pillars: good security
+ protocols, proper system configuration and system monitoring.
+ Auditing and reviewing audit records address the third
+ requirement. Each component within a system has some degree of
+ monitoring capability. Follow audit advice in this document
+ and regularly monitor audit records.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Keep up to date on latest security
+ information.</emphasis> Oracle continually improves its
+ software and documentation. Check this note yearly for
+ revisions.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="security-secure-install">
+
+ <title>Secure Installation and Configuration</title>
+
+ <sect2 id="security-secure-install-overview">
+
+ <title>Installation Overview</title>
+
+ <para>
+ The &product-name; base package should be downloaded only from a
+ trusted source, for instance the official website
+ <ulink url="http://www.virtualbox.org" />. The integrity of the
+ package should be verified with the provided SHA256 checksum
+ which can be found on the official website.
+ </para>
+
+ <para>
+ General &product-name; installation instructions for the
+ supported hosts can be found in <xref linkend="installation"/>.
+ </para>
+
+ <para>
+ On Windows hosts, the installer can be used to disable USB
+ support, support for bridged networking, support for host-only
+ networking and the Python language binding. See
+ <xref linkend="installation_windows"/>. All these features are
+ enabled by default but disabling some of them could be
+ appropriate if the corresponding functionality is not required
+ by any virtual machine. The Python language bindings are only
+ required if the &product-name; API is to be used by external
+ Python applications. In particular USB support and support for
+ the two networking modes require the installation of Windows
+ kernel drivers on the host. Therefore disabling those selected
+ features can not only be used to restrict the user to certain
+ functionality but also to minimize the surface provided to a
+ potential attacker.
+ </para>
+
+ <para>
+ The general case is to install the complete &product-name;
+ package. The installation must be done with system privileges.
+ All &product-name; binaries should be executed as a regular user
+ and never as a privileged user.
+ </para>
+
+ <para>
+ The &product-name; Extension Pack provides additional features
+ and must be downloaded and installed separately, see
+ <xref linkend="intro-installing"/>. As for the base package, the
+ SHA256 checksum of the extension pack should be verified. As the
+ installation requires system privileges, &product-name; will ask
+ for the system password during the installation of the extension
+ pack.
+ </para>
+
+ </sect2>
+
+ <sect2 id="security-secure-install-postinstall">
+
+ <title>Post Installation Configuration</title>
+
+ <para>
+ Normally there is no post installation configuration of
+ &product-name; components required. However, on Oracle Solaris
+ and Linux hosts it is necessary to configure the proper
+ permissions for users executing VMs and who should be able to
+ access certain host resources. For instance, Linux users must be
+ member of the <emphasis>vboxusers</emphasis> group to be able to
+ pass USB devices to a guest. If a serial host interface should
+ be accessed from a VM, the proper permissions must be granted to
+ the user to be able to access that device. The same applies to
+ other resources like raw partitions, DVD/CD drives, and sound
+ devices.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="security-features">
+
+ <title>Security Features</title>
+
+ <para>
+ This section outlines the specific security mechanisms offered by
+ &product-name;.
+ </para>
+
+ <sect2 id="security-model">
+
+ <title>The Security Model</title>
+
+ <para>
+ One property of virtual machine monitors (VMMs) like
+ &product-name; is to encapsulate a guest by executing it in a
+ protected environment, a virtual machine, running as a user
+ process on the host operating system. The guest cannot
+ communicate directly with the hardware or other computers but
+ only through the VMM. The VMM provides emulated physical
+ resources and devices to the guest which are accessed by the
+ guest operating system to perform the required tasks. The VM
+ settings control the resources provided to the guest, for
+ example the amount of guest memory or the number of guest
+ processors and the enabled features for that guest. For example
+ remote control, certain screen settings and others. See
+ <xref linkend="generalsettings"/>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="secure-config-vms">
+
+ <title>Secure Configuration of Virtual Machines</title>
+
+ <para>
+ Several aspects of a virtual machine configuration are subject
+ to security considerations.
+ </para>
+
+ <sect3 id="security-networking">
+
+ <title>Networking</title>
+
+ <para>
+ The default networking mode for VMs is NAT which means that
+ the VM acts like a computer behind a router, see
+ <xref linkend="network_nat"/>. The guest is part of a private
+ subnet belonging to this VM and the guest IP is not visible
+ from the outside. This networking mode works without any
+ additional setup and is sufficient for many purposes. Keep in
+ mind that NAT allows access to the host operating system's
+ loopback interface.
+ </para>
+
+ <para>
+ If bridged networking is used, the VM acts like a computer
+ inside the same network as the host, see
+ <xref linkend="network_bridged"/>. In this case, the guest has
+ the same network access as the host and a firewall might be
+ necessary to protect other computers on the subnet from a
+ potential malicious guest as well as to protect the guest from
+ a direct access from other computers. In some cases it is
+ worth considering using a forwarding rule for a specific port
+ in NAT mode instead of using bridged networking.
+ </para>
+
+ <para>
+ Some setups do not require a VM to be connected to the public
+ network at all. Internal networking, see
+ <xref linkend="network_internal"/>, or host-only networking,
+ see <xref linkend="network_hostonly"/>, are often sufficient
+ to connect VMs among each other or to connect VMs only with
+ the host but not with the public network.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security-vrdp-auth">
+
+ <title>VRDP Remote Desktop Authentication</title>
+
+ <para>
+ When using the &product-name; Extension Pack provided by
+ Oracle for VRDP remote desktop support, you can optionally use
+ various methods to configure RDP authentication. The "null"
+ method is very insecure and should be avoided in a public
+ network. See <xref linkend="vbox-auth" />.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security_clipboard">
+
+ <title>Clipboard</title>
+
+ <para>
+ The shared clipboard enables users to share data between the
+ host and the guest. Enabling the clipboard in Bidirectional
+ mode enables the guest to read and write the host clipboard.
+ The Host to Guest mode and the Guest to Host mode limit the
+ access to one direction. If the guest is able to access the
+ host clipboard it can also potentially access sensitive data
+ from the host which is shared over the clipboard.
+ </para>
+
+ <para>
+ If the guest is able to read from and/or write to the host
+ clipboard then a remote user connecting to the guest over the
+ network will also gain this ability, which may not be
+ desirable. As a consequence, the shared clipboard is disabled
+ for new machines.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security-shared-folders">
+
+ <title>Shared Folders</title>
+
+ <para>
+ If any host folder is shared with the guest then a remote user
+ connected to the guest over the network can access these files
+ too as the folder sharing mechanism cannot be selectively
+ disabled for remote users.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security-3d-graphics">
+
+ <title>3D Graphics Acceleration</title>
+
+ <para>
+ Enabling 3D graphics using the Guest Additions exposes the
+ host to additional security risks. See
+ <xref
+ linkend="guestadd-3d" />.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security-cd-dvd-passthrough">
+
+ <title>CD/DVD Passthrough</title>
+
+ <para>
+ Enabling CD/DVD passthrough enables the guest to perform
+ advanced operations on the CD/DVD drive, see
+ <xref linkend="storage-cds"/>. This could induce a security
+ risk as a guest could overwrite data on a CD/DVD medium.
+ </para>
+
+ </sect3>
+
+ <sect3 id="security-usb-passthrough">
+
+ <title>USB Passthrough</title>
+
+ <para>
+ Passing USB devices to the guest provides the guest full
+ access to these devices, see <xref linkend="settings-usb"/>.
+ For instance, in addition to reading and writing the content
+ of the partitions of an external USB disk the guest will be
+ also able to read and write the partition table and hardware
+ data of that disk.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="auth-config-using">
+
+ <title>Configuring and Using Authentication</title>
+
+ <para>
+ The following components of &product-name; can use passwords for
+ authentication:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ When using remote iSCSI storage and the storage server
+ requires authentication, an initiator secret can optionally
+ be supplied with the <command>VBoxManage
+ storageattach</command> command. As long as no settings
+ password is provided, by using the command line option
+ <option>--settingspwfile</option>, then this secret is
+ stored <emphasis>unencrypted</emphasis> in the machine
+ configuration and is therefore potentially readable on the
+ host. See <xref linkend="storage-iscsi" /> and
+ <xref linkend="vboxmanage-storageattach" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using the &product-name; web service to control an
+ &product-name; host remotely, connections to the web service
+ are authenticated in various ways. This is described in
+ detail in the &product-name; Software Development Kit (SDK)
+ reference. See <xref linkend="VirtualBoxAPI" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+<!--
+ <sect2 id="access-control-config-using">
+ <title>Configuring and Using Access Control</title>
+ </sect2>
+
+ <sect2 id="security-audit-config-using">
+ <title>Configuring and Using Security Audit</title>
+ </sect2>
+
+ <sect2 id="security-other-features-config-using">
+ <title>Configuring and Using Other Security Features</title>
+ </sect2>
+ -->
+
+ <sect2 id="pot-insecure">
+
+ <title>Potentially Insecure Operations</title>
+
+ <para>
+ The following features of &product-name; can present security
+ problems:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Enabling 3D graphics using the Guest Additions exposes the
+ host to additional security risks. See
+ <xref
+ linkend="guestadd-3d" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When teleporting a machine, the data stream through which
+ the machine's memory contents are transferred from one host
+ to another is not encrypted. A third party with access to
+ the network through which the data is transferred could
+ therefore intercept that data. An SSH tunnel could be used
+ to secure the connection between the two hosts. But when
+ considering teleporting a VM over an untrusted network the
+ first question to answer is how both VMs can securely access
+ the same virtual disk image with a reasonable performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When Page Fusion, see <xref linkend="guestadd-pagefusion"/>,
+ is enabled, it is possible that a side-channel opens up that
+ enables a malicious guest to determine the address space of
+ another VM running on the same host layout. For example,
+ where DLLs are typically loaded. This information leak in
+ itself is harmless, however the malicious guest may use it
+ to optimize attack against that VM through unrelated attack
+ vectors. It is recommended to only enable Page Fusion if you
+ do not think this is a concern in your setup.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using the &product-name; web service to control an
+ &product-name; host remotely, connections to the web
+ service, over which the API calls are transferred using SOAP
+ XML, are not encrypted. They use plain HTTP by default. This
+ is a potential security risk. For details about the web
+ service, see <xref linkend="VirtualBoxAPI" />.
+ </para>
+
+ <para>
+ The web services are not started by default. See
+ <xref linkend="vboxwebsrv-daemon"/> to find out how to start
+ this service and how to enable SSL/TLS support. It has to be
+ started as a regular user and only the VMs of that user can
+ be controlled. By default, the service binds to localhost
+ preventing any remote connection.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Traffic sent over a UDP Tunnel network attachment is not
+ encrypted. You can either encrypt it on the host network
+ level, with IPsec, or use encrypted protocols in the guest
+ network, such as SSH. The security properties are similar to
+ bridged Ethernet.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Because of shortcomings in older Windows versions, using
+ &product-name; on Windows versions older than Vista with
+ Service Pack 1 is not recommended.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="security-encryption">
+
+ <title>Encryption</title>
+
+ <para>
+ The following components of &product-name; use encryption to
+ protect sensitive data:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ When using the &product-name; Extension Pack provided by
+ Oracle for VRDP remote desktop support, RDP data can
+ optionally be encrypted. See <xref linkend="vrde-crypt" />.
+ Only the Enhanced RDP Security method (RDP5.2) with TLS
+ protocol provides a secure connection. Standard RDP Security
+ (RDP4 and RDP5.1) is vulnerable to a man-in-the-middle
+ attack.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ When using the &product-name; Extension Pack provided by
+ Oracle for disk encryption, the data stored in disk images
+ can optionally be encrypted. See
+ <xref linkend="diskencryption" />. This feature covers disk
+ image content only. All other data for a virtual machine is
+ stored unencrypted, including the VM's memory and device
+ state which is stored as part of a saved state, both when
+ created explicitly or part of a snapshot of a running VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+<!--
+ <sect1 id="security-devel">
+ <title>Security Considerations for Developers</title>
+ </sect1>
+ -->
+
+ <sect1 id="security-recommendations">
+
+ <title>Security Recommendations</title>
+
+ <para>
+ This section contains security recommendations for specific
+ issues. By default VirtualBox will configure the VMs to run in a
+ secure manner, however this may not always be possible without
+ additional user actions such as host OS or firmware configuration
+ changes.
+ </para>
+
+ <sect2 id="sec-rec-cve-2018-3646">
+
+ <title>CVE-2018-3646</title>
+
+ <para>
+ This security issue affect a range of Intel CPUs with nested
+ paging. AMD CPUs are expected not to be impacted (pending direct
+ confirmation by AMD). Also the issue does not affect VMs running
+ with hardware virtualization disabled or with nested paging
+ disabled.
+ </para>
+
+ <para>
+ For more information about nested paging, see
+ <xref linkend="nestedpaging" />.
+ </para>
+
+ <para>
+ The following mitigation options are available.
+ </para>
+
+ <sect3>
+
+ <title>Disable Nested Paging</title>
+
+ <para>
+ By disabling nested paging (EPT), the VMM will construct page
+ tables shadowing the ones in the guest. It is no possible for
+ the guest to insert anything fishy into the page tables, since
+ the VMM carefully validates each entry before shadowing it.
+ </para>
+
+ <para>
+ As a side effect of disabling nested paging, several CPU
+ features will not be made available to the guest. Among these
+ features are AVX, AVX2, XSAVE, AESNI, and POPCNT. Not all
+ guests may be able to cope with dropping these features after
+ installation. Also, for some guests, especially in SMP
+ configurations, there could be stability issues arising from
+ disabling nested paging. Finally, some workloads may
+ experience a performance degradation.
+ </para>
+
+ </sect3>
+
+ <sect3>
+
+ <title>Flushing the Level 1 Data Cache</title>
+
+ <para>
+ This aims at removing potentially sensitive data from the
+ level 1 data cache when running guest code. However, it is
+ made difficult by hyper-threading setups sharing the level 1
+ cache and thereby potentially letting the other thread in a
+ pair refill the cache with data the user does not want the
+ guest to see. In addition, flushing the level 1 data cache is
+ usually not without performance side effects.
+ </para>
+
+ <para>
+ Up to date CPU microcode is a prerequisite for the cache
+ flushing mitigations. Some host OSes may install these
+ automatically, though it has traditionally been a task best
+ performed by the system firmware. So, please check with your
+ system / mainboard manufacturer for the latest firmware
+ update.
+ </para>
+
+ <para>
+ We recommend disabling hyper threading on the host. This is
+ traditionally done from the firmware setup, but some OSes also
+ offers ways disable HT. In some cases it may be disabled by
+ default, but please verify as the effectiveness of the
+ mitigation depends on it.
+ </para>
+
+ <para>
+ The default action taken by VirtualBox is to flush the level 1
+ data cache when a thread is scheduled to execute guest code,
+ rather than on each VM entry. This reduces the performance
+ impact, while making the assumption that the host OS will not
+ handle security sensitive data from interrupt handlers and
+ similar without taking precautions.
+ </para>
+
+ <para>
+ A more aggressive flushing option is provided via the
+ <command>VBoxManage modifyvm</command>
+ <option>--l1d-flush-on-vm-entry</option> option. When enabled
+ the level 1 data cache will be flushed on every VM entry. The
+ performance impact is greater than with the default option,
+ though this of course depends on the workload. Workloads
+ producing a lot of VM exits (like networking, VGA access, and
+ similiar) will probably be most impacted.
+ </para>
+
+ <para>
+ For users not concerned by this security issue, the default
+ mitigation can be disabled using the <command>VBoxManage
+ modifyvm name --l1d-flush-on-sched off</command> command.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="sec-rec-cve-2018-12126-et-al">
+
+ <title>CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091</title>
+
+ <para>
+ These security issues affect a range of Intel CPUs starting with
+ Nehalem. The CVE-2018-12130 also affects some Atom Silvermont,
+ Atom Airmont, and Knights family CPUs, however the scope is so
+ limited that the host OS should deal with it and &product-name;
+ is therefore not affected. Leaks only happens when entering and
+ leaving C states.
+ </para>
+
+ <para>
+ The following mitigation option is available.
+ </para>
+
+ <sect3>
+
+ <title>Buffer Overwriting and Disabling Hyper-Threading</title>
+
+ <para>
+ First, up to date CPU microcode is a prerequisite for the
+ buffer overwriting (clearing) mitigations. Some host OSes may
+ install these automatically, though it has traditionally been
+ a task best performed by the system firmware. Please check
+ with your system or mainboard manufacturer for the latest
+ firmware update.
+ </para>
+
+ <para>
+ This mitigation aims at removing potentially sensitive data
+ from the affected buffers before running guest code. Since
+ this means additional work each time the guest is scheduled,
+ there might be some performance side effects.
+ </para>
+
+ <para>
+ We recommend disabling hyper-threading (HT) on hosts affected
+ by CVE-2018-12126 and CVE-2018-12127, because the affected
+ sets of buffers are normally shared between thread pairs and
+ therefore cause leaks between the threads. This is
+ traditionally done from the firmware setup, but some OSes also
+ offers ways disable HT. In some cases it may be disabled by
+ default, but please verify as the effectiveness of the
+ mitigation depends on it.
+ </para>
+
+ <para>
+ The default action taken by &product-name; is to clear the
+ affected buffers when a thread is scheduled to execute guest
+ code, rather than on each VM entry. This reduces the
+ performance impact, while making the assumption that the host
+ OS will not handle security sensitive data from interrupt
+ handlers and similar without taking precautions.
+ </para>
+
+ <para>
+ The <command>VBoxManage modifyvm</command> command provides a
+ more aggressive flushing option is provided by means of the
+ <option>--mds-clear-on-vm-entry</option> option. When enabled
+ the affected buffers will be cleared on every VM entry. The
+ performance impact is greater than with the default option,
+ though this of course depends on the workload. Workloads
+ producing a lot of VM exits (like networking, VGA access, and
+ similiar) will probably be most impacted.
+ </para>
+
+ <para>
+ For users not concerned by this security issue, the default
+ mitigation can be disabled using the <command>VBoxManage
+ modifyvm name --mds-clear-on-sched off</command> command.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Storage.xml b/doc/manual/en_US/user_Storage.xml
new file mode 100644
index 00000000..56f28d14
--- /dev/null
+++ b/doc/manual/en_US/user_Storage.xml
@@ -0,0 +1,1800 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="storage">
+
+ <title>Virtual Storage</title>
+
+ <para>
+ As the virtual machine will most probably expect to see a hard disk
+ built into its virtual computer, &product-name; must be able to
+ present real storage to the guest as a virtual hard disk. There are
+ presently three methods by which to achieve this:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ &product-name; can use large image files on a real hard disk and
+ present them to a guest as a virtual hard disk. This is the most
+ common method, described in <xref linkend="vdidetails" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ iSCSI storage servers can be attached to &product-name;. This is
+ described in <xref linkend="storage-iscsi" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can allow a virtual machine to access one of your host disks
+ directly. This is an advanced feature, described in
+ <xref linkend="rawdisk" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Each such virtual storage device, such as an image file, iSCSI
+ target, or physical hard disk, needs to be connected to the virtual
+ hard disk controller that &product-name; presents to a virtual
+ machine. This is explained in the next section.
+ </para>
+
+ <sect1 id="harddiskcontrollers">
+
+ <title>Hard Disk Controllers</title>
+
+ <para>
+ In a computing device, hard disks and CD/DVD drives are connected
+ to a device called a hard disk controller, which drives hard disk
+ operation and data transfers. &product-name; can emulate the most
+ common types of hard disk controllers typically found in computing
+ devices: IDE, SATA (AHCI), SCSI, SAS, USB-based, NVMe and
+ virtio-scsi mass storage devices.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">IDE (ATA)</emphasis> controllers are a
+ backwards-compatible yet very advanced extension of the disk
+ controller in the IBM PC/AT (1984). Initially, this interface
+ worked only with hard disks, but was later extended to also
+ support CD-ROM drives and other types of removable media. In
+ physical PCs, this standard uses flat ribbon parallel cables
+ with 40 or 80 wires. Each such cable can connect two devices,
+ called device 0 and device 1, to a controller. Typical PCs had
+ two connectors for such cables. As a result, support for up to
+ four IDE devices was most common: primary device 0, primary
+ device 1, secondary device 0, and secondary device 1.
+ </para>
+
+ <para>
+ In &product-name;, each virtual machine may have one IDE
+ controller enabled, which gives you up to four virtual storage
+ devices that you can attach to the machine. By default, one of
+ these virtual storage devices, device 0 on the secondary
+ channel, is preconfigured to be the virtual machine's virtual
+ CD/DVD drive. However, you can change the default setting.
+ </para>
+
+ <para>
+ Even if your guest OS has no support for SCSI or SATA devices,
+ it should always be able to see an IDE controller.
+ </para>
+
+ <para>
+ You can also select which exact type of IDE controller
+ hardware &product-name; should present to the virtual machine:
+ PIIX3, PIIX4, or ICH6. This makes no difference in terms of
+ performance, but if you import a virtual machine from another
+ virtualization product, the OS in that machine may expect a
+ particular controller type and crash if it is not found.
+ </para>
+
+ <para>
+ After you have created a new virtual machine with the
+ <emphasis role="bold">New Virtual Machine</emphasis> wizard of
+ the VirtualBox Manager, you will typically see one IDE
+ controller in the machine's
+ <emphasis role="bold">Storage</emphasis> settings. The virtual
+ CD/DVD drive will be attached to one of the four ports of this
+ controller.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Serial ATA (SATA)</emphasis> is a more
+ recent standard than IDE. Compared to IDE, it supports both
+ much higher speeds and more devices per controller. Also, with
+ physical hardware, devices can be added and removed while the
+ system is running. The standard interface for SATA controllers
+ is called Advanced Host Controller Interface (AHCI).
+ </para>
+
+ <para>
+ Like a real SATA controller, &product-name;'s virtual SATA
+ controller operates faster and also consumes fewer CPU
+ resources than the virtual IDE controller. Also, this enables
+ you to connect up to 30 virtual hard disks to one machine
+ instead of just three, when compared to the &product-name; IDE
+ controller with a DVD drive attached.
+ </para>
+
+ <para>
+ For this reason, depending on the selected guest OS,
+ &product-name; uses SATA as the default for newly created
+ virtual machines. One virtual SATA controller is created by
+ default, and the default disk that is created with a new VM is
+ attached to this controller.
+ </para>
+
+ <warning>
+ <para>
+ The entire SATA controller and the virtual disks attached to
+ it, including those in IDE compatibility mode, will not be
+ seen by OSes that do not have device support for AHCI. In
+ particular, <emphasis>there is no support for AHCI in
+ Windows versions before Windows Vista</emphasis>. Legacy
+ Windows versions such as Windows XP, even with SP3
+ installed, will not see such disks unless you install
+ additional drivers. It is possible to switch from IDE to
+ SATA after installation by installing the SATA drivers and
+ changing the controller type in the VM
+ <emphasis role="bold">Settings</emphasis> dialog.
+ </para>
+
+ <para>
+ &product-name; recommends the Intel Matrix Storage drivers,
+ which can be downloaded from
+ <ulink url="http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101" />.
+ </para>
+ </warning>
+
+ <para>
+ To add a SATA controller to a machine for which it has not
+ been enabled by default, either because it was created by an
+ earlier version of &product-name;, or because SATA is not
+ supported by default by the selected guest OS, do the
+ following. Go to the <emphasis role="bold">Storage</emphasis>
+ page of the machine's
+ <emphasis role="bold">Settings</emphasis> dialog, click
+ <emphasis role="bold">Add Controller</emphasis> under the
+ Storage Tree box and then select <emphasis role="bold">Add
+ SATA Controller</emphasis>. The new controller appears as a
+ separate PCI device in the virtual machine, and you can add
+ virtual disks to it.
+ </para>
+
+ <para>
+ To change the IDE compatibility mode settings for the SATA
+ controller, see <xref linkend="vboxmanage-storagectl" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">SCSI</emphasis> is another established
+ industry standard, standing for Small Computer System
+ Interface. SCSI is as a generic interface for data transfer
+ between all kinds of devices, including storage devices. SCSI
+ is still used for connecting some hard disks and tape devices,
+ but it has mostly been displaced in commodity hardware. It is
+ still in common use in high-performance workstations and
+ servers.
+ </para>
+
+ <para>
+ Primarily for compatibility with other virtualization
+ software, &product-name; optionally supports LSI Logic and
+ BusLogic SCSI controllers, to each of which up to fifteen
+ virtual hard disks can be attached.
+ </para>
+
+ <para>
+ To enable a SCSI controller, on the
+ <emphasis role="bold">Storage</emphasis> page of a virtual
+ machine's <emphasis role="bold">Settings</emphasis> dialog,
+ click <emphasis role="bold">Add Controller</emphasis> under
+ the Storage Tree box and then select <emphasis role="bold">Add
+ SCSI Controller</emphasis>. The new controller appears as a
+ separate PCI device in the virtual machine.
+ </para>
+
+ <warning>
+ <para>
+ As with the other controller types, a SCSI controller will
+ only be seen by OSes with device support for it. Windows
+ 2003 and later ships with drivers for the LSI Logic
+ controller, while Windows NT 4.0 and Windows 2000 ships with
+ drivers for the BusLogic controller. Windows XP ships with
+ drivers for neither.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Serial Attached SCSI (SAS)</emphasis> is
+ another bus standard which uses the SCSI command set. As
+ opposed to SCSI physical devices, serial cables are used
+ instead of parallel cables. This simplifies physical device
+ connections. In some ways, therefore, SAS is to SCSI what SATA
+ is to IDE: it enables more reliable and faster connections.
+ </para>
+
+ <para>
+ To support high-end guests which require SAS controllers,
+ &product-name; emulates a LSI Logic SAS controller, which can
+ be enabled much the same way as a SCSI controller. At this
+ time, up to 255 devices can be connected to the SAS
+ controller.
+ </para>
+
+ <warning>
+ <para>
+ As with SATA, the SAS controller will only be seen by OSes
+ with device support for it. In particular, <emphasis>there
+ is no support for SAS in Windows before Windows
+ Vista</emphasis>. So Windows XP, even SP3, will not see such
+ disks unless you install additional drivers.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis role="bold">USB mass storage device
+ class</emphasis> is a standard to connect external storage
+ devices like hard disks or flash drives to a host through USB.
+ All major OSes support these devices and ship generic drivers
+ making third-party drivers superfluous. In particular, legacy
+ OSes without support for SATA controllers may benefit from USB
+ mass storage devices.
+ </para>
+
+ <para>
+ The virtual USB storage controller offered by &product-name;
+ works differently to the other storage controller types. While
+ most storage controllers appear as a single PCI device to the
+ guest with multiple disks attached to it, the USB-based
+ storage controller does not appear as virtual storage
+ controller. Each disk attached to the controller appears as a
+ dedicated USB device to the guest.
+ </para>
+
+ <warning>
+ <para>
+ Booting from drives attached using USB is only supported
+ when EFI is used as the BIOS lacks USB support.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Non volatile memory express
+ (NVMe)</emphasis> is a standard for connecting non volatile
+ memory (NVM) directly over PCI Express to lift the bandwidth
+ limitation of the previously used SATA protocol for
+ solid-state devices. Unlike other standards the command set is
+ very simple in order to achieve maximum throughput and is not
+ compatible with ATA or SCSI. OSes need to support NVMe devices
+ to make use of them. For example, Windows 8.1 added native
+ NVMe support. For Windows 7, native support was added with an
+ update.
+ </para>
+
+ <para>
+ The NVMe controller is part of the extension pack.
+ </para>
+
+ <warning>
+ <para>
+ Booting from drives attached using NVMe is only supported
+ when EFI is used as the BIOS lacks the appropriate driver.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Virtual I/O Device SCSI</emphasis> is a
+ standard to connect virtual storage devices like hard disks or
+ optical drives to a VM. Recent Linux and Windows versions
+ support these devices, but Windows needs additional drivers.
+ Currently virtio-scsi controller support is experimental.
+ </para>
+
+ <warning>
+ <para>
+ The virtio-scsi controller will only be seen by OSes with
+ device support for it. In particular, <emphasis>there is no
+ built-in support in Windows</emphasis>. So Windows will not
+ see such disks unless you install additional drivers.
+ </para>
+ </warning>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In summary, &product-name; gives you the following categories of
+ virtual storage slots:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Four slots attached to the traditional IDE controller, which
+ are always present. One of these is typically a virtual CD/DVD
+ drive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 30 slots attached to the SATA controller, if enabled and
+ supported by the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 15 slots attached to the SCSI controller, if enabled and
+ supported by the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Up to 255 slots attached to the SAS controller, if enabled and
+ supported by the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Eight slots attached to the virtual USB controller, if enabled
+ and supported by the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Up to 255 slots attached to the NVMe controller, if enabled
+ and supported by the guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Up to 256 slots attached to the virtio-scsi controller, if
+ enabled and supported by the guest OS.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Given this large choice of storage controllers, you may not know
+ which one to choose. In general, you should avoid IDE unless it is
+ the only controller supported by your guest. Whether you use SATA,
+ SCSI, or SAS does not make any real difference. The variety of
+ controllers is only supplied by &product-name; for compatibility
+ with existing hardware and other hypervisors.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vdidetails">
+
+ <title>Disk Image Files (VDI, VMDK, VHD, HDD)</title>
+
+ <para>
+ Disk image files reside on the host system and are seen by the
+ guest systems as hard disks of a certain geometry. When a guest OS
+ reads from or writes to a hard disk, &product-name; redirects the
+ request to the image file.
+ </para>
+
+ <para>
+ Like a physical disk, a virtual disk has a size, or capacity,
+ which must be specified when the image file is created. As opposed
+ to a physical disk however, &product-name; enables you to expand
+ an image file after creation, even if it has data already. See
+ <xref linkend="vboxmanage-modifymedium" />.
+ </para>
+
+ <para>
+ &product-name; supports the following types of disk image files:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VDI.</emphasis> Normally, &product-name;
+ uses its own container format for guest hard disks. This is
+ called a Virtual Disk Image (VDI) file. This format is used
+ when you create a new virtual machine with a new disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VMDK.</emphasis> &product-name; also
+ fully supports the popular and open VMDK container format that
+ is used by many other virtualization products, such as VMware.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">VHD.</emphasis> &product-name; also
+ fully supports the VHD format used by Microsoft.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">HDD.</emphasis> Image files of Parallels
+ version 2 (HDD format) are also supported.
+ </para>
+
+ <para>
+ Due to lack of documentation of the format, newer versions
+ such as 3 and 4 are not supported. You can however convert
+ such image files to version 2 format using tools provided by
+ Parallels.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Irrespective of the disk capacity and format, as mentioned in
+ <xref linkend="gui-createvm" />, there are two options for
+ creating a disk image: fixed-size or dynamically allocated.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Fixed-size.</emphasis> If you create a
+ fixed-size image, an image file will be created on your host
+ system which has roughly the same size as the virtual disk's
+ capacity. So, for a 10 GB disk, you will have a 10 GB file.
+ Note that the creation of a fixed-size image can take a long
+ time depending on the size of the image and the write
+ performance of your hard disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Dynamically allocated.</emphasis> For
+ more flexible storage management, use a dynamically allocated
+ image. This will initially be very small and not occupy any
+ space for unused virtual disk sectors, but will grow every
+ time a disk sector is written to for the first time, until the
+ drive reaches the maximum capacity chosen when the drive was
+ created. While this format takes less space initially, the
+ fact that &product-name; needs to expand the image file
+ consumes additional computing resources, so until the disk
+ file size has stabilized, write operations may be slower than
+ with fixed size disks. However, after a time the rate of
+ growth will slow and the average penalty for write operations
+ will be negligible.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vdis">
+
+ <title>The Virtual Media Manager</title>
+
+ <para>
+ &product-name; keeps track of all the hard disk, CD/DVD-ROM, and
+ floppy disk images which are in use by virtual machines. These are
+ often referred to as <emphasis>known media</emphasis> and come
+ from two sources:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ All media currently attached to virtual machines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Registered media, for compatibility with legacy &product-name;
+ versions.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The known media can be viewed and changed using the
+ <emphasis role="bold">Virtual Media Manager</emphasis>, which you
+ can access from the <emphasis role="bold">File</emphasis> menu in
+ the VirtualBox Manager window.
+ </para>
+
+ <figure id="fig-virtual-media-manager">
+ <title>The Virtual Media Manager</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtual-disk-manager.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ The known media are conveniently grouped in separate tabs for the
+ supported formats. These formats are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Hard disk images, either in &product-name;'s own Virtual Disk
+ Image (VDI) format, or in the third-party formats listed in
+ <xref linkend="vdidetails"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ CD/DVD images in standard ISO format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Floppy images in standard RAW format.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For each image, the Virtual Media Manager shows you the full path
+ of the image file and other information, such as the virtual
+ machine the image is currently attached to.
+ </para>
+
+ <para>
+ The Virtual Media Manager enables you to do the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Add</emphasis> an image to the known
+ media.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Create</emphasis> a new disk image.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For virtual hard disks, the <emphasis role="bold">Create
+ Virtual Hard Disk</emphasis> wizard is shown.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For optical disks, the <emphasis role="bold">VISO
+ Creator</emphasis> screen is shown. This enables you to
+ create a virtual ISO from selected files on the host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For floppy disks, the <emphasis role="bold">Floppy Disk
+ Creator</emphasis> screen is shown.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Copy</emphasis> an image to create
+ another one.
+ </para>
+
+ <para>
+ For virtual hard disks, you can specify one of the following
+ target types: VDI, VHD, or VMDK.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Move</emphasis> an image to another
+ location.
+ </para>
+
+ <para>
+ A file dialog prompts you for the new image file location.
+ </para>
+
+ <para>
+ When you use the Virtual Media Manager to move a disk image,
+ &product-name; updates all related configuration files
+ automatically.
+ </para>
+
+ <note>
+ <para>
+ Always use the Virtual Media Manager or the
+ <command>VBoxManage modifymedium</command> command to move a
+ disk image.
+ </para>
+
+ <para>
+ If you use a file management feature of the host OS to move
+ a disk image to a new location, run the <command>VBoxManage
+ modifymedium</command> <option>--setlocation</option>
+ command to configure the new path of the disk image on the
+ host file system. This command updates the &product-name;
+ configuration automatically.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Remove</emphasis> an image from the
+ known media. You can optionally delete the image file when
+ removing the image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Release</emphasis> an image to detach it
+ from a VM. This action only applies if the image is currently
+ attached to a VM as a virtual hard disk.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Search</emphasis> for an image by name
+ or UUID.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ View and edit the <emphasis role="bold">Properties</emphasis>
+ of a disk image.
+ </para>
+
+ <para>
+ Available properties include the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Type:</emphasis> Specifies the
+ snapshot behavior of the disk. See
+ <xref linkend="hdimagewrites"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Location:</emphasis> Specifies the
+ location of the disk image file on the host system. You
+ can use a file dialog to browse for the disk image
+ location.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Description:</emphasis> Specifies a
+ short description of the disk image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Size:</emphasis> Specifies the size
+ of the disk image. You can use the slider to increase or
+ decrease the disk image size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Information:</emphasis> Specifies
+ detailed information about the disk image.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Refresh</emphasis> the property values
+ of the selected disk image.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To perform these actions, highlight the medium in the Virtual
+ Media Manager and then do one of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Click an icon in the Virtual Media Manager task bar.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Right-click the medium and select an option.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Use the <emphasis role="bold">Storage</emphasis> page in a VM's
+ <emphasis role="bold">Settings</emphasis> dialog to create a new
+ disk image. By default, disk images are stored in the VM's folder.
+ </para>
+
+ <para>
+ You can copy hard disk image files to other host systems and then
+ import them in to VMs from the host system. However, some Windows
+ guest OSes may require that you configure the new VM in a similar
+ way to the old one.
+ </para>
+
+ <note>
+ <para>
+ Do not simply make copies of virtual disk images. If you import
+ such a second copy into a VM, &product-name; issues an error
+ because &product-name; assigns a universally unique identifier
+ (UUID) to each disk image to ensure that it is only used one
+ time. See <xref linkend="cloningvdis" />. Also, if you want to
+ copy a VM to another system, use the &product-name; import and
+ export features. See <xref linkend="ovf" />.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="hdimagewrites">
+
+ <title>Special Image Write Modes</title>
+
+ <para>
+ For each virtual disk image supported by &product-name;, you can
+ determine separately how it should be affected by write operations
+ from a virtual machine and snapshot operations. This applies to
+ all of the aforementioned image formats (VDI, VMDK, VHD, or HDD)
+ and irrespective of whether an image is fixed-size or dynamically
+ allocated.
+ </para>
+
+ <para>
+ By default, images are in <emphasis>normal</emphasis> mode. To
+ mark an existing image with one of the non-standard modes listed
+ below, use <command>VBoxManage modifymedium</command>. See
+ <xref linkend="vboxmanage-modifymedium" />. Alternatively, use
+ <command>VBoxManage storageattach</command> to attach the image to
+ a VM and specify the <option>--mtype</option> argument. See
+ <xref linkend="vboxmanage-storageattach" />.
+ </para>
+
+ <para>
+ The available virtual disk image modes are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Normal images</emphasis> have no
+ restrictions on how guests can read from and write to the
+ disk. This is the default image mode.
+ </para>
+
+ <para>
+ When you take a snapshot of your virtual machine as described
+ in <xref linkend="snapshots" />, the state of a normal hard
+ disk is recorded together with the snapshot, and when
+ reverting to the snapshot, its state will be fully reset.
+ </para>
+
+ <para>
+ The image file itself is not reset. Instead, when a snapshot
+ is taken, &product-name; <emphasis>freezes</emphasis> the
+ image file and no longer writes to it. For the write
+ operations from the VM, a second,
+ <emphasis>differencing</emphasis> image file is created which
+ receives only the changes to the original image. See
+ <xref linkend="diffimages"/>.
+ </para>
+
+ <para>
+ While you can attach the same normal image to more than one
+ virtual machine, only one of these virtual machines attached
+ to the same image file can be executed simultaneously, as
+ otherwise there would be conflicts if several machines write
+ to the same image file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Write-through hard disks</emphasis> are
+ completely unaffected by snapshots. Their state is
+ <emphasis>not</emphasis> saved when a snapshot is taken, and
+ not restored when a snapshot is restored.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Shareable hard disks</emphasis> are a
+ variant of write-through hard disks. In principle they behave
+ exactly the same. Their state is <emphasis>not</emphasis>
+ saved when a snapshot is taken, and not restored when a
+ snapshot is restored. The difference only shows if you attach
+ such disks to several VMs. Shareable disks may be attached to
+ several VMs which may run concurrently. This makes them
+ suitable for use by cluster filesystems between VMs and
+ similar applications which are explicitly prepared to access a
+ disk concurrently. Only fixed size images can be used in this
+ way, and dynamically allocated images are rejected.
+ </para>
+
+ <warning>
+ <para>
+ This is an expert feature, and misuse can lead to data loss,
+ as regular filesystems are not prepared to handle
+ simultaneous changes by several parties.
+ </para>
+ </warning>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Immutable images</emphasis> only
+ remember write accesses temporarily while the virtual machine
+ is running. All changes are lost when the virtual machine is
+ powered on the next time. As a result, as opposed to Normal
+ images, the same immutable image can be used with several
+ virtual machines without restrictions.
+ </para>
+
+ <para>
+ Creating an immutable image makes little sense since it would
+ be initially empty and lose its contents with every machine
+ restart. You would have a disk that is always unformatted when
+ the machine starts up. Instead, you can first create a normal
+ image and then later mark it as immutable when you decide that
+ the contents are useful.
+ </para>
+
+ <para>
+ If you take a snapshot of a machine with immutable images,
+ then on every machine power-up, those images are reset to the
+ state of the last (current) snapshot, instead of the state of
+ the original immutable image.
+ </para>
+
+ <note>
+ <para>
+ As a special exception, immutable images are
+ <emphasis>not</emphasis> reset if they are attached to a
+ machine in a saved state or whose last snapshot was taken
+ while the machine was running. This is called an
+ <emphasis>online snapshot</emphasis>. As a result, if the
+ machine's current snapshot is an online snapshot, its
+ immutable images behave exactly like the a normal image. To
+ reenable the automatic resetting of such images, delete the
+ current snapshot of the machine.
+ </para>
+ </note>
+
+ <para>
+ &product-name; never writes to an immutable image directly at
+ all. All write operations from the machine are directed to a
+ differencing image. The next time the VM is powered on, the
+ differencing image is reset so that every time the VM starts,
+ its immutable images have exactly the same content.
+ </para>
+
+ <para>
+ The differencing image is only reset when the machine is
+ powered on from within &product-name;, not when you reboot by
+ requesting a reboot from within the machine. This is also why
+ immutable images behave as described above when snapshots are
+ also present, which use differencing images as well.
+ </para>
+
+ <para>
+ If the automatic discarding of the differencing image on VM
+ startup does not fit your needs, you can turn it off using the
+ <option>autoreset</option> parameter of <command>VBoxManage
+ modifymedium</command>. See
+ <xref linkend="vboxmanage-modifymedium"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Multiattach mode images</emphasis> can
+ be attached to more than one virtual machine at the same time,
+ even if these machines are running simultaneously. For each
+ virtual machine to which such an image is attached, a
+ differencing image is created. As a result, data that is
+ written to such a virtual disk by one machine is not seen by
+ the other machines to which the image is attached. Each
+ machine creates its own write history of the multiattach
+ image.
+ </para>
+
+ <para>
+ Technically, a multiattach image behaves identically to an
+ immutable image except the differencing image is not reset
+ every time the machine starts.
+ </para>
+
+ <para>
+ This mode is useful for sharing files which are almost never
+ written, for instance picture galleries, where every guest
+ changes only a small amount of data and the majority of the
+ disk content remains unchanged. The modified blocks are stored
+ in differencing images which remain relatively small and the
+ shared content is stored only once at the host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Read-only images</emphasis> are used
+ automatically for CD/DVD images, since CDs/DVDs can never be
+ written to.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following scenario illustrates the differences between the
+ various image modes, with respect to snapshots.
+ </para>
+
+ <para>
+ Assume you have installed your guest OS in your VM, and you have
+ taken a snapshot. Later, your VM is infected with a virus and you
+ would like to go back to the snapshot. With a normal hard disk
+ image, you simply restore the snapshot, and the earlier state of
+ your hard disk image will be restored as well and your virus
+ infection will be undone. With an immutable hard disk, all it
+ takes is to shut down and power on your VM, and the virus
+ infection will be discarded. With a write-through image however,
+ you cannot easily undo the virus infection by means of
+ virtualization, but will have to disinfect your virtual machine
+ like a real computer.
+ </para>
+
+ <para>
+ You might find write-through images useful if you want to preserve
+ critical data irrespective of snapshots. As you can attach more
+ than one image to a VM, you may want to have one immutable image
+ for the OS and one write-through image for your data files.
+ </para>
+
+ </sect1>
+
+ <sect1 id="diffimages">
+
+ <title>Differencing Images</title>
+
+ <para>
+ The previous section mentioned differencing images and how they
+ are used with snapshots, immutable images, and multiple disk
+ attachments. This section describes in more detail how
+ differencing images work.
+ </para>
+
+ <para>
+ A differencing image is a special disk image that only holds the
+ differences to another image. A differencing image by itself is
+ useless, it must always refer to another image. The differencing
+ image is then typically referred to as a
+ <emphasis>child</emphasis>, which holds the differences to its
+ <emphasis>parent</emphasis>.
+ </para>
+
+ <para>
+ When a differencing image is active, it receives all write
+ operations from the virtual machine instead of its parent. The
+ differencing image only contains the sectors of the virtual hard
+ disk that have changed since the differencing image was created.
+ When the machine reads a sector from such a virtual hard disk, it
+ looks into the differencing image first. If the sector is present,
+ it is returned from there. If not, &product-name; looks into the
+ parent. In other words, the parent becomes
+ <emphasis>read-only</emphasis>. It is never written to again, but
+ it is read from if a sector has not changed.
+ </para>
+
+ <para>
+ Differencing images can be chained. If another differencing image
+ is created for a virtual disk that already has a differencing
+ image, then it becomes a <emphasis>grandchild</emphasis> of the
+ original parent. The first differencing image then becomes
+ read-only as well, and write operations only go to the
+ second-level differencing image. When reading from the virtual
+ disk, &product-name; needs to look into the second differencing
+ image first, then into the first if the sector was not found, and
+ then into the original image.
+ </para>
+
+ <para>
+ There can be an unlimited number of differencing images, and each
+ image can have more than one child. As a result, the differencing
+ images can form a complex tree with parents, siblings, and
+ children, depending on how complex your machine configuration is.
+ Write operations always go to the one <emphasis>active</emphasis>
+ differencing image that is attached to the machine, and for read
+ operations, &product-name; may need to look up all the parents in
+ the chain until the sector in question is found. You can view such
+ a tree in the Virtual Media Manager.
+ </para>
+
+ <figure id="fig-diff-images">
+ <title>Differencing Images, Shown in Virtual Media Manager</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtual-disk-manager2.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ In all of these situations, from the point of view of the virtual
+ machine, the virtual hard disk behaves like any other disk. While
+ the virtual machine is running, there is a slight run-time I/O
+ overhead because &product-name; might need to look up sectors
+ several times. This is not noticeable however since the tables
+ with sector information are always kept in memory and can be
+ looked up quickly.
+ </para>
+
+ <para>
+ Differencing images are used in the following situations:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Snapshots.</emphasis> When you create a
+ snapshot, as explained in the previous section, &product-name;
+ <emphasis>freezes</emphasis> the images attached to the
+ virtual machine and creates differencing images for each image
+ that is not in <emphasis>write-through</emphasis> mode. From
+ the point of view of the virtual machine, the virtual disks
+ continue to operate before, but all write operations go into
+ the differencing images. Each time you create another
+ snapshot, for each hard disk attachment, another differencing
+ image is created and attached, forming a chain or tree.
+ </para>
+
+ <para>
+ In the above screenshot, you see that the original disk image
+ is now attached to a snapshot, representing the state of the
+ disk when the snapshot was taken.
+ </para>
+
+ <para>
+ If you <emphasis>restore</emphasis> a snapshot, and want to go
+ back to the exact machine state that was stored in the
+ snapshot, the following happens:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ &product-name; copies the virtual machine settings that
+ were copied into the snapshot back to the virtual machine.
+ As a result, if you have made changes to the machine
+ configuration since taking the snapshot, they are undone.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the snapshot was taken while the machine was running,
+ it contains a saved machine state, and that state is
+ restored as well. After restoring the snapshot, the
+ machine will then be in Saved state and resume execution
+ from there when it is next started. Otherwise the machine
+ will be in Powered Off state and do a full boot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For each disk image attached to the machine, the
+ differencing image holding all the write operations since
+ the current snapshot was taken is thrown away, and the
+ original parent image is made active again. If you
+ restored the root snapshot, then this will be the root
+ disk image for each attachment. Otherwise, some other
+ differencing image descended from it. This effectively
+ restores the old machine state.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you later <emphasis>delete</emphasis> a snapshot in order
+ to free disk space, for each disk attachment, one of the
+ differencing images becomes obsolete. In this case, the
+ differencing image of the disk attachment cannot simply be
+ deleted. Instead, &product-name; needs to look at each sector
+ of the differencing image and needs to copy it back into its
+ parent. This is called "merging" images and can be a
+ potentially lengthy process, depending on how large the
+ differencing image is. It can also temporarily need a
+ considerable amount of extra disk space, before the
+ differencing image obsoleted by the merge operation is
+ deleted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Immutable images.</emphasis> When an
+ image is switched to immutable mode, a differencing image is
+ created as well. As with snapshots, the parent image then
+ becomes read-only, and the differencing image receives all the
+ write operations. Every time the virtual machine is started,
+ all the immutable images which are attached to it have their
+ respective differencing image thrown away, effectively
+ resetting the virtual machine's virtual disk with every
+ restart.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="cloningvdis">
+
+ <title>Cloning Disk Images</title>
+
+ <para>
+ You can duplicate hard disk image files on the same host to
+ quickly produce a second virtual machine with the same OS setup.
+ However, you should <emphasis>only</emphasis> make copies of
+ virtual disk images using the utility supplied with
+ &product-name;. See <xref linkend="vboxmanage-clonemedium" />.
+ This is because &product-name; assigns a UUID to each disk image,
+ which is also stored inside the image, and &product-name; will
+ refuse to work with two images that use the same number. If you do
+ accidentally try to reimport a disk image which you copied
+ normally, you can make a second copy using the <command>VBoxManage
+ clonevm</command> command and import that instead.
+ </para>
+
+ <para>
+ Note that Linux distributions identify the boot hard disk from the
+ ID of the drive. The ID &product-name; reports for a drive is
+ determined from the UUID of the virtual disk image. So if you
+ clone a disk image and try to boot the copied image the guest
+ might not be able to determine its own boot disk as the UUID
+ changed. In this case you have to adapt the disk ID in your boot
+ loader script, for example
+ <filename>/boot/grub/menu.lst</filename>. The disk ID looks like
+ the following:
+ </para>
+
+<screen>scsi-SATA_VBOX_HARDDISK_VB5cfdb1e2-c251e503</screen>
+
+ <para>
+ The ID for the copied image can be determined as follows:
+ </para>
+
+<screen>hdparm -i /dev/sda</screen>
+
+ </sect1>
+
+ <sect1 id="iocaching">
+
+ <title>Host Input/Output Caching</title>
+
+ <para>
+ &product-name; can optionally disable the I/O caching that the
+ host OS would otherwise perform on disk image files.
+ </para>
+
+ <para>
+ Traditionally, &product-name; has opened disk image files as
+ normal files, which results in them being cached by the host OS
+ like any other file. The main advantage of this is speed: when the
+ guest OS writes to disk and the host OS cache uses delayed
+ writing, the write operation can be reported as completed to the
+ guest OS quickly while the host OS can perform the operation
+ asynchronously. Also, when you start a VM a second time and have
+ enough memory available for the OS to use for caching, large parts
+ of the virtual disk may be in system memory, and the VM can access
+ the data much faster.
+ </para>
+
+ <para>
+ Note that this applies only to image files. Buffering does not
+ occur for virtual disks residing on remote iSCSI storage, which is
+ the more common scenario in enterprise-class setups. See
+ <xref linkend="storage-iscsi" />.
+ </para>
+
+ <para>
+ While buffering is a useful default setting for virtualizing a few
+ machines on a desktop computer, there are some disadvantages to
+ this approach:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Delayed writing through the host OS cache is less secure. When
+ the guest OS writes data, it considers the data written even
+ though it has not yet arrived on a physical disk. If for some
+ reason the write does not happen, such as power failure or
+ host crash, the likelihood of data loss increases.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disk image files tend to be very large. Caching them can
+ therefore quickly use up the entire host OS cache. Depending
+ on the efficiency of the host OS caching, this may slow down
+ the host immensely, especially if several VMs run at the same
+ time. For example, on Linux hosts, host caching may result in
+ Linux delaying all writes until the host cache is nearly full
+ and then writing out all these changes at once, possibly
+ stalling VM execution for minutes. This can result in I/O
+ errors in the guest as I/O requests time out there.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Physical memory is often wasted as guest OSes typically have
+ their own I/O caches, which may result in the data being
+ cached twice, in both the guest and the host caches, for
+ little effect.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ If you decide to disable host I/O caching for the above reasons,
+ &product-name; uses its own small cache to buffer writes, but no
+ read caching since this is typically already performed by the
+ guest OS. In addition, &product-name; fully supports asynchronous
+ I/O for its virtual SATA, SCSI, and SAS controllers through
+ multiple I/O threads.
+ </para>
+
+ <para>
+ Since asynchronous I/O is not supported by IDE controllers, for
+ performance reasons, you may want to leave host caching enabled
+ for your VM's virtual IDE controllers.
+ </para>
+
+ <para>
+ For this reason, &product-name; enables you to configure whether
+ the host I/O cache is used for each I/O controller separately.
+ Either select the <emphasis role="bold">Use Host I/O
+ Cache</emphasis> check box in the
+ <emphasis role="bold">Storage</emphasis> settings for a given
+ virtual storage controller, or use the following
+ <command>VBoxManage</command> command to disable the host I/O
+ cache for a virtual storage controller:
+ </para>
+
+<screen>VBoxManage storagectl "VM name" --name &lt;controllername&gt; --hostiocache off</screen>
+
+ <para>
+ See <xref linkend="vboxmanage-storagectl" />.
+ </para>
+
+ <para>
+ For the above reasons, &product-name; uses SATA controllers by
+ default for new virtual machines.
+ </para>
+
+ </sect1>
+
+ <sect1 id="storage-bandwidth-limit">
+
+ <title>Limiting Bandwidth for Disk Images</title>
+
+ <para>
+ &product-name; supports limiting of the maximum bandwidth used for
+ asynchronous I/O. Additionally it supports sharing limits through
+ bandwidth groups for several images. It is possible to have more
+ than one such limit.
+ </para>
+
+ <para>
+ Limits are configured using <command>VBoxManage</command>. The
+ example below creates a bandwidth group named Limit, sets the
+ limit to 20 MB per second, and assigns the group to the attached
+ disks of the VM:
+ </para>
+
+<screen>VBoxManage bandwidthctl "VM name" add Limit --type disk --limit 20M
+VBoxManage storageattach "VM name" --storagectl "SATA" --port 0 --device 0 --type hdd
+ --medium disk1.vdi --bandwidthgroup Limit
+VBoxManage storageattach "VM name" --storagectl "SATA" --port 1 --device 0 --type hdd
+ --medium disk2.vdi --bandwidthgroup Limit</screen>
+
+ <para>
+ All disks in a group share the bandwidth limit, meaning that in
+ the example above the bandwidth of both images combined can never
+ exceed 20 MBps. However, if one disk does not require bandwidth
+ the other can use the remaining bandwidth of its group.
+ </para>
+
+ <para>
+ The limits for each group can be changed while the VM is running,
+ with changes being picked up immediately. The example below
+ changes the limit for the group created in the example above to 10
+ MBps:
+ </para>
+
+<screen>VBoxManage bandwidthctl "VM name" set Limit --limit 10M</screen>
+
+ </sect1>
+
+ <sect1 id="storage-cds">
+
+ <title>CD/DVD Support</title>
+
+ <para>
+ Virtual CD/DVD drives by default support only reading. The medium
+ configuration is changeable at runtime. You can select between the
+ following options to provide the medium data:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Host Drive</emphasis> defines that the
+ guest can read from the medium in the host drive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Image file</emphasis> gives the guest
+ read-only access to the data in the image. This is typically
+ an ISO file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Empty</emphasis> means a drive without
+ an inserted medium.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Changing between the above, or changing a medium in the host drive
+ that is accessed by a machine, or changing an image file will
+ signal a medium change to the guest OS. The guest OS can then
+ react to the change, for example by starting an installation
+ program.
+ </para>
+
+ <para>
+ Medium changes can be prevented by the guest, and &product-name;
+ reflects that by locking the host drive if appropriate. You can
+ force a medium removal in such situations by using the VirtualBox
+ Manager or the <command>VBoxManage</command> command line tool.
+ Effectively this is the equivalent of the emergency eject which
+ many CD/DVD drives provide, with all associated side effects. The
+ guest OS can issue error messages, just like on real hardware, and
+ guest applications may misbehave. Use this with caution.
+ </para>
+
+ <note>
+ <para>
+ The identification string of the drive provided to the guest,
+ displayed by configuration tools such as the Windows Device
+ Manager, is always VBOX CD-ROM, irrespective of the current
+ configuration of the virtual drive. This is to prevent hardware
+ detection from being triggered in the guest OS every time the
+ configuration is changed.
+ </para>
+ </note>
+
+ <para>
+ The standard CD/DVD emulation enables reading of standard data CD
+ and DVD formats only. As an experimental feature, for additional
+ capabilities, it is possible to give the guest direct access to
+ the CD/DVD host drive by enabling <emphasis>passthrough</emphasis>
+ mode. Depending on the host hardware, this may potentially enable
+ the following things to work:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ CD/DVD writing from within the guest, if the host DVD drive is
+ a CD/DVD writer
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Playing audio CDs
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Playing encrypted DVDs
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To enable host drive passthrough you can use the
+ <option>--passthrough</option> option of the <command>VBoxManage
+ storageattach</command> command. See
+ <xref linkend="vboxmanage-storageattach" />.
+ </para>
+
+ <para>
+ Even if passthrough is enabled, unsafe commands, such as updating
+ the drive firmware, will be blocked. Video CD formats are never
+ supported, not even in passthrough mode, and cannot be played from
+ a virtual machine.
+ </para>
+
+ <para>
+ On Oracle Solaris hosts, passthrough requires running
+ &product-name; with real root permissions due to security measures
+ enforced by the host.
+ </para>
+
+ </sect1>
+
+ <sect1 id="storage-iscsi">
+
+ <title>iSCSI Servers</title>
+
+ <para>
+ iSCSI stands for <emphasis>Internet SCSI</emphasis> and is a
+ standard that supports use of the SCSI protocol over Internet
+ (TCP/IP) connections. Especially with the advent of Gigabit
+ Ethernet, it has become affordable to attach iSCSI storage servers
+ simply as remote hard disks to a computer network. In iSCSI
+ terminology, the server providing storage resources is called an
+ <emphasis>iSCSI target</emphasis>, while the client connecting to
+ the server and accessing its resources is called an
+ <emphasis>iSCSI initiator</emphasis>.
+ </para>
+
+ <para>
+ &product-name; can transparently present iSCSI remote storage to a
+ virtual machine as a virtual hard disk. The guest OS will not see
+ any difference between a virtual disk image (VDI file) and an
+ iSCSI target. To achieve this, &product-name; has an integrated
+ iSCSI initiator.
+ </para>
+
+ <para>
+ &product-name;'s iSCSI support has been developed according to the
+ iSCSI standard and should work with all standard-conforming iSCSI
+ targets. To use an iSCSI target with &product-name;, you must use
+ the command line. See <xref linkend="vboxmanage-storageattach" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboximg-mount">
+
+ <title>vboximg-mount: A Utility for FUSE Mounting a Virtual Disk Image</title>
+
+ <para>
+ <command>vboximg-mount</command> is a command line utility for Mac
+ OS and Linux hosts that provides raw access to an &product-name;
+ virtual disk image on the host system. Use this utility to mount,
+ view, and optionally modify the disk image contents.
+ </para>
+
+ <para>
+ The utility is based on Filesystem in Userspace (FUSE) technology
+ and uses the VirtualBox runtime engine. Ensure that &product-name;
+ is running on the host system.
+ </para>
+
+ <note>
+ <para>
+ When using <command>vboximg-mount</command>, ensure that the
+ following conditions apply:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The disk image is not being used by any other systems, such
+ as by guest VMs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ No VMs are running on the host system.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </note>
+
+ <para>
+ Raw access using FUSE is preferred over direct loopback mounting
+ of virtual disk images, because it is snapshot aware. It can
+ selectively merge disk differencing images in an exposed virtual
+ hard disk, providing historical or up-to-date representations of
+ the virtual disk contents.
+ </para>
+
+ <para>
+ <command>vboximg-mount</command> enables you to view information
+ about registered VMs, their attached disk media, and any
+ snapshots. Also, you can view partition information for a disk
+ image.
+ </para>
+
+ <para>
+ The <command>vboximg-mount </command>command includes experimental
+ read-only access to file systems inside a VM disk image. This
+ feature enables you to extract some files from the disk image
+ without starting the VM and without requiring third-party file
+ system drivers on the host system. FAT, NTFS, ext2, ext3, and ext4
+ file systems are supported.
+ </para>
+
+ <para>
+ Use the <option>--help</option> option to view information about
+ the <command>vboximg-mount</command> command usage. The complete
+ command reference is described in
+ <xref linkend="man_vboximg-mount" />.
+ </para>
+
+ <para>
+ When <command>vboximg-mount</command> mounts an &product-name;
+ disk image, it creates a one level deep file system at a mount
+ point that you specify. The file system includes a device node
+ that represents the synthesized disk image as a readable or
+ readable-writeable bytestream. This bytestream can be mounted
+ either by using the host OS or by using other FUSE-based file
+ systems.
+ </para>
+
+ <sect2 id="vboximg-mount-display">
+
+ <title>Viewing Detailed Information About a Virtual Disk Image</title>
+
+ <para>
+ The following examples show how to use the
+ <command>vboximg-mount</command> command to view information
+ about virtual disk images.
+ </para>
+
+ <para>
+ The following command outputs detailed information about all
+ registered VMs and associated snapshots:
+ </para>
+
+<screen>$ vboximg-mount --list --verbose
+
+ ------------------------------------------------------
+ VM Name: "macOS High Sierra 10.13"
+ UUID: 3887d96d-831c-4187-a55a-567c504ff0e1
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/macOS High Sierra 10.13.vbox
+ -----------------------
+ HDD base: "macOS High Sierra 10.13.vdi"
+ UUID: f9ea7173-6869-4aa9-b487-68023a655980
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/macOS High Sierra 10.13.vdi
+
+ Diff 1:
+ UUID: 98c2bac9-cf37-443d-a935-4e879b70166d
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/
+ Snapshots/{98c2bac9-cf37-443d-a935-4e879b70166d}.vdi
+ Diff 2:
+ UUID: f401f381-7377-40b3-948e-3c61241b1a42
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/
+ Snapshots/{f401f381-7377-40b3-948e-3c61241b1a42}.vdi
+ -----------------------
+ HDD base: "simple_fixed_disk.vdi"
+ UUID: ffba4d7e-1277-489d-8173-22ca7660773d
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/simple_fixed_disk.vdi
+
+ Diff 1:
+ UUID: aecab681-0d2d-468b-8682-93f79dc97a48
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/
+ Snapshots/{aecab681-0d2d-468b-8682-93f79dc97a48}.vdi
+ Diff 2:
+ UUID: 70d6b34d-8422-47fa-8521-3b6929a1971c
+ Location: /Volumes/work/vm_guests/macOS High Sierra 10.13/
+ Snapshots/{70d6b34d-8422-47fa-8521-3b6929a1971c}.vdi
+ ------------------------------------------------------
+ VM Name: "debian"
+ UUID: 5365ab5f-470d-44c0-9863-dad532ee5905
+ Location: /Volumes/work/vm_guests/debian/debian.vbox
+ -----------------------
+ HDD base: "debian.vdi"
+ UUID: 96d2e92e-0d4e-46ab-a0f1-008fdbf997e7
+ Location: /Volumes/work/vm_guests/debian/ol7.vdi
+
+ Diff 1:
+ UUID: f9cc866a-9166-42e9-a503-bbfe9b7312e8
+ Location: /Volumes/work/vm_guests/debian/Snapshots/
+ {f9cc866a-9166-42e9-a503-bbfe9b7312e8}.vdi</screen>
+
+ <para>
+ The following command outputs partition information about the
+ specified disk image:
+ </para>
+
+<screen>$ vboximg-mount --image=f9ea7173-6869-4aa9-b487-68023a655980 --list
+
+ Virtual disk image:
+
+ Path: /Volumes/work/vm_guests/macOS High Sierra 10.13/macOS High Sierra 10.13.vdi
+ UUID: f9ea7173-6869-4aa9-b487-68023a655980
+
+ # Start Sectors Size Offset Type
+ 1 40 409599 199.9M 20480 EFI System
+ 2 409640 67453071 32.1G 209735680 Hierarchical File System Plus (HFS+)
+ 3 67862712 1269535 107.8M 34745708544 Apple Boot (Recovery HD)</screen>
+
+ </sect2>
+
+ <sect2 id="vboximg-mount-steps">
+
+ <title>Mounting a Virtual Disk Image</title>
+
+ <para>
+ The following steps show how to use the
+ <command>vboximg-mount</command> command to mount a partition of
+ a virtual disk image on the host OS.
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Create a mount point on the host OS. For example:
+ </para>
+
+<screen>$ mkdir macos_sysdisk</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ Show partition information about the virtual disk image.
+ </para>
+
+<screen>$ vboximg-mount --image=<replaceable>uuid</replaceable> --list</screen>
+
+ <para>
+ where <replaceable>uuid</replaceable> is the UUID of the
+ disk image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <command>vboximg-mount</command> to perform a FUSE mount
+ of a partition on the virtual disk image. For example:
+ </para>
+
+<screen>$ vboximg-mount --image=<replaceable>uuid</replaceable> -p 2 macos_sysdisk</screen>
+
+ <para>
+ where <replaceable>uuid</replaceable> is the UUID for the
+ disk image.
+ </para>
+
+ <para>
+ In this example, partition 2 is mounted on the
+ <filename>macos_sysdisk</filename> mount point. The mount
+ includes all snapshots for the disk image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use the host OS to mount the <literal>vhdd</literal> device
+ node. The FUSE-mounted device node represents the virtual
+ disk image.
+ </para>
+
+<screen>$ ls macos_sysdisk
+ macOS High Sierra 10.13.vdi vhdd
+$ sudo mount macos_sysdisk/vhdd /mnt</screen>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_Technical.xml b/doc/manual/en_US/user_Technical.xml
new file mode 100644
index 00000000..6fe245aa
--- /dev/null
+++ b/doc/manual/en_US/user_Technical.xml
@@ -0,0 +1,941 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="TechnicalBackground">
+
+ <title>Technical Background</title>
+
+ <para>
+ This chapter provides additional information for readers who are
+ familiar with computer architecture and technology and wish to find
+ out more about how &product-name; works <emphasis>under the
+ hood</emphasis>. The contents of this chapter are not required
+ reading in order to use &product-name; successfully.
+ </para>
+
+ <sect1 id="vboxconfigdata">
+
+ <title>Where &product-name; Stores its Files</title>
+
+ <para>
+ In &product-name;, a virtual machine and its settings are
+ described in a virtual machine settings file in XML format. In
+ addition, most virtual machines have one or more virtual hard
+ disks. These are typically represented by disk images, such as
+ those in VDI format. The location of these files may vary,
+ depending on the host operating system. See
+ <xref linkend="vboxconfigdata-machine-folder"/>.
+ </para>
+
+ <para>
+ Global configuration data for &product-name; is maintained in
+ another location on the host. See
+ <xref linkend="vboxconfigdata-global"/>.
+ </para>
+
+ <sect2 id="vboxconfigdata-machine-folder">
+
+ <title>The Machine Folder</title>
+
+ <para>
+ By default, each virtual machine has a directory on your host
+ computer where all the files of that machine are stored: the XML
+ settings file, with a <filename>.vbox</filename> file extension,
+ and its disk images. This is called the <emphasis>machine
+ folder</emphasis>.
+ </para>
+
+ <para>
+ By default, this machine folder is located in a common folder
+ called <filename>VirtualBox VMs</filename>, which &product-name;
+ creates in the current system user's home directory. The
+ location of this home directory depends on the conventions of
+ the host operating system, as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ On Windows, this is the location returned by the
+ <literal>SHGetFolderPath</literal> function of the Windows
+ system library Shell32.dll, asking for the user profile. A
+ typical location is
+ <filename>C:\Users\<replaceable>username</replaceable></filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Linux, Mac OS X, and Oracle Solaris, this is generally
+ taken from the environment variable
+ <filename>$HOME</filename>, except for the user
+ <literal>root</literal> where it is taken from the account
+ database. This is a workaround for the frequent trouble
+ caused by users using &product-name; in combination with the
+ tool <command>sudo</command>, which by default does not
+ reset the environment variable <filename>$HOME</filename>.
+ </para>
+
+ <para>
+ A typical location on Linux and Oracle Solaris is
+ <filename>/home/<replaceable>username</replaceable></filename>
+ and on Mac OS X is
+ <filename>/Users/<replaceable>username</replaceable></filename>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ For simplicity, we abbreviate the location of the home directory
+ as <filename>$HOME</filename>. Using that convention, the common
+ folder for all virtual machines is <filename>$HOME/VirtualBox
+ VMs</filename>.
+ </para>
+
+ <para>
+ As an example, when you create a virtual machine called "Example
+ VM", &product-name; creates the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A machine folder: <filename>$HOME/VirtualBox VMs/Example
+ VM/</filename>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In the machine folder, a settings file: <filename>Example
+ VM.vbox</filename>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In the machine folder, a virtual disk image:
+ <filename>Example VM.vdi</filename>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ This is the default layout if you use the
+ <emphasis role="bold">Create New Virtual Machine</emphasis>
+ wizard described in <xref linkend="gui-createvm" />. Once you
+ start working with the VM, additional files are added. Log files
+ are in a subfolder called <filename>Logs</filename>, and if you
+ have taken snapshots, they are in a
+ <filename>Snapshots</filename> subfolder. For each VM, you can
+ change the location of its snapshots folder in the VM settings.
+ </para>
+
+ <para>
+ You can change the default machine folder by selecting
+ <emphasis role="bold">Preferences</emphasis> from the
+ <emphasis role="bold">File</emphasis> menu in the &product-name;
+ main window. Then, in the displayed window, click on the
+ <emphasis role="bold">General</emphasis> tab. Alternatively, use
+ the <command>VBoxManage setproperty machinefolder</command>
+ command. See <xref linkend="vboxmanage-setproperty" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxconfigdata-global">
+
+ <title>Global Settings</title>
+
+ <para>
+ In addition to the files for the virtual machines,
+ &product-name; maintains global configuration data in the
+ following directory:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Linux and Oracle Solaris:</emphasis>
+ <filename>$HOME/.config/VirtualBox</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Windows:</emphasis>
+ <filename>$HOME/.VirtualBox</filename>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Mac OS X:</emphasis>
+ <filename>$HOME/Library/VirtualBox</filename>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ &product-name; creates this configuration directory
+ automatically, if necessary. You can specify an alternate
+ configuration directory by either setting the
+ <literal>VBOX_USER_HOME</literal> environment variable, or on
+ Linux or Oracle Solaris by using the standard
+ <literal>XDG_CONFIG_HOME</literal> variable. Since the global
+ <filename>VirtualBox.xml</filename> settings file points to all
+ other configuration files, this enables switching between
+ several &product-name; configurations.
+ </para>
+
+ <para>
+ In this configuration directory, &product-name; stores its
+ global settings file, an XML file called
+ <filename>VirtualBox.xml</filename>. This file includes global
+ configuration options and a list of registered virtual machines
+ with pointers to their XML settings files.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxconfigdata-summary-locations">
+
+ <title>Summary of Configuration Data Locations</title>
+
+ <para>
+ The following table gives a brief overview of the configuration
+ data locations on an &product-name; host.
+ </para>
+
+ <table id="table-config-summary" tabstyle="oracle-all">
+ <title>Configuration File Locations</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry><para>
+ <emphasis role="bold">Setting</emphasis>
+ </para></entry>
+ <entry><para>
+ <emphasis role="bold">Location</emphasis>
+ </para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>
+ Default machines folder
+ </para></entry>
+ <entry><para>
+ <filename>$HOME/VirtualBox VMs</filename>
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Default disk image location
+ </para></entry>
+ <entry><para>
+ In each machine's folder
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Machine settings file extension
+ </para></entry>
+ <entry><para>
+ <filename>.vbox</filename>
+ </para></entry>
+ </row>
+ <row>
+ <entry><para>
+ Media registry
+ </para></entry>
+ <entry><para>
+ Each machine settings file
+ </para>
+
+
+
+ <para>
+ Media registration is done automatically when a
+ storage medium is attached to a VM
+ </para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="vboxconfigdata-XML-files">
+
+ <title>&product-name; XML Files</title>
+
+ <para>
+ &product-name; uses XML for both the machine settings files and
+ the global configuration file,
+ <filename>VirtualBox.xml</filename>.
+ </para>
+
+ <para>
+ All &product-name; XML files are versioned. When a new settings
+ file is created, for example because a new virtual machine is
+ created, &product-name; automatically uses the settings format
+ of the current &product-name; version. These files may not be
+ readable if you downgrade to an earlier version of
+ &product-name;. However, when &product-name; encounters a
+ settings file from an earlier version, such as after upgrading
+ &product-name;, it attempts to preserve the settings format as
+ much as possible. It will only silently upgrade the settings
+ format if the current settings cannot be expressed in the old
+ format, for example because you enabled a feature that was not
+ present in an earlier version of &product-name;.
+ </para>
+
+ <para>
+ In such cases, &product-name; backs up the old settings file in
+ the virtual machine's configuration directory. If you need to go
+ back to the earlier version of &product-name;, then you will
+ need to manually copy these backup files back.
+ </para>
+
+ <para>
+ We intentionally do not document the specifications of the
+ &product-name; XML files, as we must reserve the right to modify
+ them in the future. We therefore strongly suggest that you do
+ not edit these files manually. &product-name; provides complete
+ access to its configuration data through its the
+ <command>VBoxManage</command> command line tool, see
+ <xref linkend="vboxmanage" /> and its API, see
+ <xref linkend="VirtualBoxAPI" />.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="technical-components">
+
+ <title>&product-name; Executables and Components</title>
+
+ <para>
+ &product-name; was designed to be modular and flexible. When the
+ &product-name; graphical user interface (GUI) is opened and a VM
+ is started, at least the following three processes are running:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>VBoxSVC</command>, the &product-name; service process
+ which always runs in the background. This process is started
+ automatically by the first &product-name; client process and
+ exits a short time after the last client exits. The first
+ &product-name; service can be the GUI,
+ <command>VBoxManage</command>,
+ <command>VBoxHeadless</command>, the web service amongst
+ others. The service is responsible for bookkeeping,
+ maintaining the state of all VMs, and for providing
+ communication between &product-name; components. This
+ communication is implemented using COM/XPCOM.
+ </para>
+
+ <note>
+ <para>
+ When we refer to <emphasis>clients</emphasis> here, we mean
+ the local clients of a particular <command>VBoxSVC</command>
+ server process, not clients in a network. &product-name;
+ employs its own client/server design to allow its processes
+ to cooperate, but all these processes run under the same
+ user account on the host operating system, and this is
+ totally transparent to the user.
+ </para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>
+ The GUI process, <command>VirtualBoxVM</command>, a client
+ application based on the cross-platform Qt library. When
+ started without the <option>--startvm</option> option, this
+ application acts as the VirtualBox Manager, displaying the VMs
+ and their settings. It then communicates settings and state
+ changes to <command>VBoxSVC</command> and also reflects
+ changes effected through other means, such as the
+ <command>VBoxManage</command> command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the <command>VirtualBoxVM</command> client application is
+ started with the <option>--startvm</option> argument, it loads
+ the VMM library which includes the actual hypervisor and then
+ runs a virtual machine and provides the input and output for
+ the guest.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Any &product-name; front-end, or client, will communicate with the
+ service process and can both control and reflect the current
+ state. For example, either the VM selector or the VM window or
+ VBoxManage can be used to pause the running VM, and other
+ components will always reflect the changed state.
+ </para>
+
+ <para>
+ The &product-name; GUI application is only one of several
+ available front ends, or clients. The complete list shipped with
+ &product-name; is as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>VirtualBoxVM</command>: The Qt front end implementing
+ the VirtualBox Manager and running VMs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage</command>: A less user-friendly but more
+ powerful alternative. See <xref linkend="vboxmanage" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxHeadless</command>: A VM front end which does not
+ directly provide any video output and keyboard or mouse input,
+ but enables redirection through the VirtualBox Remote Desktop
+ Extension. See <xref linkend="vboxheadless" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vboxwebsrv</command>: The &product-name; web service
+ process which enables control of an &product-name; host
+ remotely. This is described in detail in the &product-name;
+ Software Development Kit (SDK) reference. See
+ <xref linkend="VirtualBoxAPI" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The &product-name; Python shell: A Python alternative to
+ <command>VBoxManage</command>. This is also described in the
+ SDK reference.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Internally, &product-name; consists of many more or less separate
+ components. You may encounter these when analyzing &product-name;
+ internal error messages or log files. These include the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ IPRT: A portable runtime library which abstracts file access,
+ threading, and string manipulation. Whenever &product-name;
+ accesses host operating features, it does so through this
+ library for cross-platform portability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VMM (Virtual Machine Monitor): The heart of the hypervisor.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EM (Execution Manager): Controls execution of guest code.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ TRPM (Trap Manager): Intercepts and processes guest traps and
+ exceptions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ HM (Hardware Acceleration Manager): Provides support for VT-x
+ and AMD-V.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GIM (Guest Interface Manager): Provides support for various
+ paravirtualization interfaces to the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ PDM (Pluggable Device Manager): An abstract interface between
+ the VMM and emulated devices which separates device
+ implementations from VMM internals and makes it easy to add
+ new emulated devices. Through PDM, third-party developers can
+ add new virtual devices to &product-name; without having to
+ change &product-name; itself.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ PGM (Page Manager): A component that controls guest paging.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ TM (Time Manager): Handles timers and all aspects of time
+ inside guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ CFGM (Configuration Manager): Provides a tree structure which
+ holds configuration settings for the VM and all emulated
+ devices.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SSM (Saved State Manager): Saves and loads VM state.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VUSB (Virtual USB): A USB layer which separates emulated USB
+ controllers from the controllers on the host and from USB
+ devices. This component also enables remote USB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ DBGF (Debug Facility): A built-in VM debugger.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; emulates a number of devices to provide the
+ hardware environment that various guests need. Most of these
+ are standard devices found in many PC compatible machines and
+ widely supported by guest operating systems. For network and
+ storage devices in particular, there are several options for
+ the emulated devices to access the underlying hardware. These
+ devices are managed by PDM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Guest Additions for various guest operating systems. This is
+ code that is installed from within a virtual machine. See
+ <xref linkend="guestadditions" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The "Main" component is special. It ties all the above bits
+ together and is the only public API that &product-name;
+ provides. All the client processes listed above use only this
+ API and never access the hypervisor components directly. As a
+ result, third-party applications that use the &product-name;
+ Main API can rely on the fact that it is always well-tested
+ and that all capabilities of &product-name; are fully exposed.
+ It is this API that is described in the &product-name; SDK.
+ See <xref linkend="VirtualBoxAPI" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="hwvirt">
+
+ <title>Hardware Virtualization</title>
+
+ <para>
+ &product-name; enables software in the virtual machine to run
+ directly on the processor of the host, but an array of complex
+ techniques is employed to intercept operations that would
+ interfere with your host. Whenever the guest attempts to do
+ something that could be harmful to your computer and its data,
+ &product-name; steps in and takes action. In particular, for lots
+ of hardware that the guest believes to be accessing,
+ &product-name; simulates a certain <emphasis>virtual</emphasis>
+ environment according to how you have configured a virtual
+ machine. For example, when the guest attempts to access a hard
+ disk, &product-name; redirects these requests to whatever you have
+ configured to be the virtual machine's virtual hard disk. This is
+ normally an image file on your host.
+ </para>
+
+ <para>
+ Unfortunately, the x86 platform was never designed to be
+ virtualized. Detecting situations in which &product-name; needs to
+ take control over the guest code that is executing, as described
+ above, is difficult. To achieve this, &product-name; uses
+ <emphasis>hardware virtualization</emphasis>.
+ </para>
+
+ <para>
+ Intel and AMD processors have support for hardware virtualization.
+ This means that these processors can help &product-name; to
+ intercept potentially dangerous operations that a guest operating
+ system may be attempting and also makes it easier to present
+ virtual hardware to a virtual machine.
+ </para>
+
+ <para>
+ These hardware features differ between Intel and AMD processors.
+ Intel named its technology VT-x, AMD calls theirs AMD-V. The Intel
+ and AMD support for virtualization is very different in detail,
+ but not very different in principle.
+ </para>
+
+ <note>
+ <para>
+ On many systems, the hardware virtualization features first need
+ to be enabled in the BIOS before &product-name; can use them.
+ </para>
+ </note>
+
+ <para>
+ Enabling hardware virtualization is <emphasis>required</emphasis>
+ in the following scenarios:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Certain rare guest operating systems like OS/2 make use of
+ very esoteric processor instructions. For virtual machines
+ that are configured to use such an operating system, hardware
+ virtualization is enabled automatically.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name;'s 64-bit guest and multiprocessing (SMP)
+ support both require hardware virtualization to be enabled.
+ This is not much of a limitation since the vast majority of
+ 64-bit and multicore CPUs ship with hardware virtualization.
+ The exceptions to this rule are some legacy Intel and AMD
+ CPUs.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <warning>
+ <para>
+ Do not run other hypervisors, either open source or commercial
+ virtualization products, together with &product-name;. While
+ several hypervisors can normally be
+ <emphasis>installed</emphasis> in parallel, do not attempt to
+ <emphasis>run</emphasis> several virtual machines from competing
+ hypervisors at the same time. &product-name; cannot track what
+ another hypervisor is currently attempting to do on the same
+ host, and especially if several products attempt to use hardware
+ virtualization features such as VT-x, this can crash the entire
+ host.
+ </para>
+ </warning>
+
+ <para>
+ See <xref linkend="hwvirt-details"/> for a technical discussion of
+ hardware virtualization.
+ </para>
+
+ </sect1>
+
+ <sect1 id="hwvirt-details">
+
+ <title>Details About Hardware Virtualization</title>
+
+ <para>
+ With Intel VT-x, there are two distinct modes of CPU operation:
+ VMX root mode and non-root mode.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ In root mode, the CPU operates much like older generations of
+ processors without VT-x support. There are four privilege
+ levels, called rings, and the same instruction set is
+ supported, with the addition of several virtualization
+ specific instruction. Root mode is what a host operating
+ system without virtualization uses, and it is also used by a
+ hypervisor when virtualization is active.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In non-root mode, CPU operation is significantly different.
+ There are still four privilege rings and the same instruction
+ set, but a new structure called VMCS (Virtual Machine Control
+ Structure) now controls the CPU operation and determines how
+ certain instructions behave. Non-root mode is where guest
+ systems run.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Switching from root mode to non-root mode is called "VM entry",
+ the switch back is "VM exit". The VMCS includes a guest and host
+ state area which is saved/restored at VM entry and exit. Most
+ importantly, the VMCS controls which guest operations will cause
+ VM exits.
+ </para>
+
+ <para>
+ The VMCS provides fairly fine-grained control over what the guests
+ can and cannot do. For example, a hypervisor can allow a guest to
+ write certain bits in shadowed control registers, but not others.
+ This enables efficient virtualization in cases where guests can be
+ allowed to write control bits without disrupting the hypervisor,
+ while preventing them from altering control bits over which the
+ hypervisor needs to retain full control. The VMCS also provides
+ control over interrupt delivery and exceptions.
+ </para>
+
+ <para>
+ Whenever an instruction or event causes a VM exit, the VMCS
+ contains information about the exit reason, often with
+ accompanying detail. For example, if a write to the CR0 register
+ causes an exit, the offending instruction is recorded, along with
+ the fact that a write access to a control register caused the
+ exit, and information about source and destination register. Thus
+ the hypervisor can efficiently handle the condition without
+ needing advanced techniques such as CSAM and PATM described above.
+ </para>
+
+ <para>
+ VT-x inherently avoids several of the problems which software
+ virtualization faces. The guest has its own completely separate
+ address space not shared with the hypervisor, which eliminates
+ potential clashes. Additionally, guest OS kernel code runs at
+ privilege ring 0 in VMX non-root mode, obviating the problems by
+ running ring 0 code at less privileged levels. For example the
+ SYSENTER instruction can transition to ring 0 without causing
+ problems. Naturally, even at ring 0 in VMX non-root mode, any I/O
+ access by guest code still causes a VM exit, allowing for device
+ emulation.
+ </para>
+
+ <para>
+ The biggest difference between VT-x and AMD-V is that AMD-V
+ provides a more complete virtualization environment. VT-x requires
+ the VMX non-root code to run with paging enabled, which precludes
+ hardware virtualization of real-mode code and non-paged
+ protected-mode software. This typically only includes firmware and
+ OS loaders, but nevertheless complicates VT-x hypervisor
+ implementation. AMD-V does not have this restriction.
+ </para>
+
+ <para>
+ Of course hardware virtualization is not perfect. Compared to
+ software virtualization, the overhead of VM exits is relatively
+ high. This causes problems for devices whose emulation requires
+ high number of traps. One example is a VGA device in 16-color
+ mode, where not only every I/O port access but also every access
+ to the framebuffer memory must be trapped.
+ </para>
+
+ </sect1>
+
+ <sect1 id="gimproviders">
+
+ <title>Paravirtualization Providers</title>
+
+ <para>
+ &product-name; enables the exposure of a paravirtualization
+ interface, to facilitate accurate and efficient execution of
+ software within a virtual machine. These interfaces require the
+ guest operating system to recognize their presence and make use of
+ them in order to leverage the benefits of communicating with the
+ &product-name; hypervisor.
+ </para>
+
+ <para>
+ Most modern, mainstream guest operating systems, including Windows
+ and Linux, ship with support for one or more paravirtualization
+ interfaces. Hence, there is typically no need to install
+ additional software in the guest to take advantage of this
+ feature.
+ </para>
+
+ <para>
+ Exposing a paravirtualization provider to the guest operating
+ system does not rely on the choice of host platforms. For example,
+ the <emphasis>Hyper-V</emphasis> paravirtualization provider can
+ be used for VMs to run on any host platform supported by
+ &product-name; and not just Windows.
+ </para>
+
+ <para>
+ &product-name; provides the following interfaces:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Minimal</emphasis>: Announces the
+ presence of a virtualized environment. Additionally, reports
+ the TSC and APIC frequency to the guest operating system. This
+ provider is mandatory for running any Mac OS X guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">KVM</emphasis>: Presents a Linux KVM
+ hypervisor interface which is recognized by Linux kernels
+ version 2.6.25 or later. &product-name;'s implementation
+ currently supports paravirtualized clocks and SMP spinlocks.
+ This provider is recommended for Linux guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Hyper-V</emphasis>: Presents a Microsoft
+ Hyper-V hypervisor interface which is recognized by Windows 7
+ and newer operating systems. &product-name;'s implementation
+ currently supports paravirtualized clocks, APIC frequency
+ reporting, guest debugging, guest crash reporting and relaxed
+ timer checks. This provider is recommended for Windows guests.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="nestedpaging">
+
+ <title>Nested Paging and VPIDs</title>
+
+ <para>
+ In addition to normal hardware virtualization, your processor may
+ also support the following additional sophisticated techniques:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Nested paging implements some memory management in hardware,
+ which can greatly accelerate hardware virtualization since
+ these tasks no longer need to be performed by the
+ virtualization software.
+ </para>
+
+ <para>
+ With nested paging, the hardware provides another level of
+ indirection when translating linear to physical addresses.
+ Page tables function as before, but linear addresses are now
+ translated to "guest physical" addresses first and not
+ physical addresses directly. A new set of paging registers now
+ exists under the traditional paging mechanism and translates
+ from guest physical addresses to host physical addresses,
+ which are used to access memory.
+ </para>
+
+ <para>
+ Nested paging eliminates the overhead caused by VM exits and
+ page table accesses. In essence, with nested page tables the
+ guest can handle paging without intervention from the
+ hypervisor. Nested paging thus significantly improves
+ virtualization performance.
+ </para>
+
+ <para>
+ On AMD processors, nested paging has been available starting
+ with the Barcelona (K10) architecture. They now call it rapid
+ virtualization indexing (RVI). Intel added support for nested
+ paging, which they call extended page tables (EPT), with their
+ Core i7 (Nehalem) processors.
+ </para>
+
+ <para>
+ If nested paging is enabled, the &product-name; hypervisor can
+ also use <emphasis>large pages</emphasis> to reduce TLB usage
+ and overhead. This can yield a performance improvement of up
+ to 5%. To enable this feature for a VM, you use the
+ <command>VBoxManage modifyvm --largepages</command> command.
+ See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+
+ <para>
+ If you have an Intel CPU with EPT, please consult
+ <xref linkend="sec-rec-cve-2018-3646" /> for security concerns
+ regarding EPT.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ On Intel CPUs, a hardware feature called Virtual Processor
+ Identifiers (VPIDs) can greatly accelerate context switching
+ by reducing the need for expensive flushing of the processor's
+ Translation Lookaside Buffers (TLBs).
+ </para>
+
+ <para>
+ To enable these features for a VM, you use the
+ <command>VBoxManage modifyvm --vtxvpid</command> and
+ <command>VBoxManage modifyvm --largepages</command> commands.
+ See <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_ThirdParty.xml b/doc/manual/en_US/user_ThirdParty.xml
new file mode 100644
index 00000000..e13f8ea2
--- /dev/null
+++ b/doc/manual/en_US/user_ThirdParty.xml
@@ -0,0 +1,4813 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE appendix 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;
+]>
+<appendix id="ThirdParty">
+
+ <title>Third-Party Materials and Licenses</title>
+
+ <para>
+ &product-name; incorporates materials from several Open Source
+ software projects. Therefore the use of these materials by
+ &product-name; is governed by different Open Source licenses. This
+ document reproduces these licenses and provides a list of the
+ materials used and their respective licensing conditions. Section 1
+ contains a list of the materials used. Section 2 reproduces the
+ applicable Open Source licenses. For each material, a reference to
+ its license is provided.
+ </para>
+
+ <para>
+ The source code for the materials listed below as well as the rest
+ of the &product-name; code which is released as open source are
+ available at
+ <ulink url="http://www.virtualbox.org" />,
+ both as tarballs for particular releases and as a live SVN
+ repository.
+ </para>
+
+ <sect1 id="third-party-materials">
+
+ <title>Third-Party Materials</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of QEMU which is governed by
+ the licenses in
+ <xref linkend="licX11" xrefstyle="template: %n" /> and
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ (C) 2003-2005 Fabrice Bellard; Copyright (C) 2004-2005 Vassili
+ Karpov (malc); Copyright (c) 2004 Antony T Curtis; Copyright
+ (C) 2003 Jocelyn Mayer
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code which is governed by the license
+ in <xref linkend="licX11" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright 2004 by the Massachusetts Institute of Technology.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code of the BOCHS VGA BIOS which is
+ governed by the license in
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2001, 2002 the LGPL VGABios developers Team.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code of the BOCHS ROM BIOS which is
+ governed by the license in
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2002 MandrakeSoft S.A.; Copyright (C) 2004
+ Fabrice Bellard; Copyright (C) 2005 Struan Bartlett.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains the zlib library which is governed by
+ the license in
+ <xref linkend="licZLIB" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain OpenSSL which is governed by the
+ license in <xref linkend="licSSL" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com). This
+ product includes software written by Tim Hudson
+ (tjh@cryptsoft.com).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain NSPR and XPCOM which is governed by
+ the license in
+ <xref linkend="licMPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) The Authors.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains Slirp which is governed by the license
+ in <xref linkend="licSlirp" xrefstyle="template: %n" /> and
+ was written by Danny Gasparovski.
+ </para>
+
+ <para>
+ Copyright (C) 1995, 1996 All Rights Reserved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains liblzf which is governed by the
+ license in <xref linkend="licLZF" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) 2000-2005 Marc Alexander Lehmann
+ &lt;schmorp@schmorp.de&gt;
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may ship with a modified copy of rdesktop which
+ is governed by the license in
+ <xref linkend="licGPL"
+ xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) Matthew Chapman and others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may ship with a copy of kchmviewer which is
+ governed by the license in
+ <xref linkend="licGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) George Yunaev and others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain Etherboot which is governed by the
+ license in <xref linkend="licGPL" xrefstyle="template: %n" />
+ with the exception that aggregating Etherboot with another
+ work does not require the other work to be released under the
+ same license (see
+ <ulink url="http://etherboot.sourceforge.net/clinks.html" />).
+ Etherboot is
+ </para>
+
+ <para>
+ Copyright (C) Etherboot team.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain iPXE which is governed by the
+ license in <xref linkend="licGPL" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) Michael Brown &lt;mbrown@fensystems.co.uk&gt;
+ and others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code from Wine which is governed by
+ the license in
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright 1993 Bob Amstadt, Copyright 1996 Albrecht Kleine,
+ Copyright 1997 David Faure, Copyright 1998 Morten Welinder,
+ Copyright 1998 Ulrich Weigand, Copyright 1999 Ove Koven
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code from lwIP which is governed by
+ the license in
+ <xref linkend="licLWIP" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2001, 2002 Swedish Institute of Computer
+ Science.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains libxml which is governed by the
+ license in
+ <xref linkend="licLibXML" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 1998-2003 Daniel Veillard.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains libxslt which is governed by the
+ license in
+ <xref linkend="licLibXSLT" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2001-2002 Daniel Veillard and Copyright (C)
+ 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code from the gSOAP XML web services
+ tools, which are licensed under the license in
+ <xref
+ linkend="licgSOAP" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., and
+ others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; ships with the application tunctl (shipped as
+ VBoxTunctl) from the User-mode Linux suite which is governed
+ by the license in
+ <xref linkend="licGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2002 Jeff Dike.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code from Chromium, an OpenGL
+ implementation, which is goverened by the licenses in
+ <xref
+ linkend="licChromium" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) Stanford University, The Regents of the
+ University of California, Red Hat, and others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains libcurl which is governed by the
+ license in
+ <xref linkend="licLibCurl" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 1996-2009, Daniel Stenberg.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains dnsproxy which is governed by the
+ license in <xref linkend="licMIT" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (c) 2003, 2004, 2005 Armin Wolfermann.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain iniparser which is governed by the
+ license in <xref linkend="licMIT" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (c) 2000-2008 by Nicolas Devillard.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains some code from libgd which is governed
+ by the license in
+ <xref linkend="licLibgd" xrefstyle="template: %n"/> and
+ </para>
+
+ <para>
+ Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Pierre-Alain Joye (pierre@libgd.org).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains code from the EFI Development Kit II
+ which is governed by the license in
+ <xref linkend="licBsdIntel" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (c) 2004-2008, Intel Corporation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains libjpeg which is governed by the
+ license in <xref linkend="licJPEG" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain x86 SIMD extension for IJG JPEG
+ library which is governed by the license in
+ <xref linkend="licJPEGSIMD"
+ xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright 2009 Pierre Ossman &lt;ossman@cendio.se&gt; for
+ Cendio AB; Copyright 2010 D. R. Commander; Copyright (C)
+ 1999-2006, MIYASAKA Masaru.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may ship a copy of Qt which is governed by the
+ license in <xref linkend="licLGPL" xrefstyle="template: %n" />
+ and
+ </para>
+
+ <para>
+ Copyright (C) 2010, 2011 Nokia Corporation and/or its
+ subsidiary(-ies).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains parts of the FreeBSD kernel which is
+ governed by the license in
+ <xref linkend="licFreeBsd" xrefstyle="template: %n" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains parts of the NetBSD kernel which is
+ governed by the license in
+ <xref linkend="licNetBsd" xrefstyle="template: %n" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of liblightdm-gobject which
+ is governed by the license in
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2010-2013 Canonical Ltd.; Copyright (C)
+ 2010-2011 Robert Ancell.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of glib which is governed by
+ the license in
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 1995-2011 The Glib team
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of PCRE which is governed by
+ the license in
+ <xref linkend="licPcre" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (c) 1997-2012 University of Cambridge; Copyright(c)
+ 2009-2012 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of libffi which is governed
+ by the license in
+ <xref linkend="licLibffi" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc and
+ others. See source files for details.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of FLTK which is governed by
+ the licenses in
+ <xref linkend="licFltk" xrefstyle="template: %n" /> and
+ <xref linkend="licLGPL" xrefstyle="template: %n"/> and
+ </para>
+
+ <para>
+ Copyright (C) 1991-2012 The FLTK team
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of Expat which is governed by
+ the license in
+ <xref linkend="licExpat" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (c) 1998, 1999, 2000 Thai Open Source Software
+ Center Ltd and Clark Cooper; Copyright (c) 2001, 2002, 2003,
+ 2004, 2005, 2006 Expat maintainers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of Fontconfig which is
+ governed by the license in
+ <xref linkend="licFontconfig" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (C) 2001, 2003 Keith Packard
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; contains portions of Freetype which is governed
+ by the license in
+ <xref linkend="licFreetype" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright 2012 The FreeType Project (www.freetype.org). All
+ rights reserved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain code from the WebM VP8 Codec SDK
+ which is governed by the license in
+ <xref linkend="licVPX" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright (c) 2010, The WebM Project authors. All rights
+ reserved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain code from libopus ("Opus") which is
+ governed by the license in
+ <xref linkend="licOpus" xrefstyle="template: %n" /> and
+ </para>
+
+ <para>
+ Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+ Jean-Marc Valin, Timothy B. Terriberry, CSIRO, Gregory
+ Maxwell, Mark Borgerding, Erik de Castro Lopo
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; may contain portions of FUSE for macOS which is
+ governed by the licenses in
+ <xref linkend="licOsxFuse" xrefstyle="template: %n" /> and
+ <xref linkend="licLGPL" xrefstyle="template: %n"/> and
+ </para>
+
+ <para>
+ Copyright (c) 2011-2017 Benjamin Fleischer; Copyright (c)
+ 2011-2012 Erik Larsson All rights reserved.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="third-party-licenses">
+
+ <title>Third-Party Licenses</title>
+
+ <sect2 id="licGPL">
+
+ <title>GNU General Public License (GPL)</title>
+
+ <para>
+ GNU GENERAL PUBLIC LICENSE Version 2, June 1991
+ </para>
+
+ <para>
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ </para>
+
+ <para>
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ </para>
+
+ <para>
+ Everyone is permitted to copy and distribute verbatim copies of
+ this license document, but changing it is not allowed.
+ </para>
+
+ <para>
+ Preamble
+ </para>
+
+ <para>
+ The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General
+ Public License is intended to guarantee your freedom to share
+ and change free software--to make sure the software is free for
+ all its users. This General Public License applies to most of
+ the Free Software Foundation's software and to any other program
+ whose authors commit to using it. (Some other Free Software
+ Foundation software is covered by the GNU Library General Public
+ License instead.) You can apply it to your programs, too.
+ </para>
+
+ <para>
+ When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure
+ that you have the freedom to distribute copies of free software
+ (and charge for this service if you wish), that you receive
+ source code or can get it if you want it, that you can change
+ the software or use pieces of it in new free programs; and that
+ you know you can do these things.
+ </para>
+
+ <para>
+ To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the
+ rights. These restrictions translate to certain responsibilities
+ for you if you distribute copies of the software, or if you
+ modify it.
+ </para>
+
+ <para>
+ For example, if you distribute copies of such a program, whether
+ gratis or for a fee, you must give the recipients all the rights
+ that you have. You must make sure that they, too, receive or can
+ get the source code. And you must show them these terms so they
+ know their rights.
+ </para>
+
+ <para>
+ We protect your rights with two steps: (1) copyright the
+ software, and (2) offer you this license which gives you legal
+ permission to copy, distribute and/or modify the software.
+ </para>
+
+ <para>
+ Also, for each author's protection and ours, we want to make
+ certain that everyone understands that there is no warranty for
+ this free software. If the software is modified by someone else
+ and passed on, we want its recipients to know that what they
+ have is not the original, so that any problems introduced by
+ others will not reflect on the original authors' reputations.
+ </para>
+
+ <para>
+ Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that redistributors of a
+ free program will individually obtain patent licenses, in effect
+ making the program proprietary. To prevent this, we have made it
+ clear that any patent must be licensed for everyone's free use
+ or not licensed at all.
+ </para>
+
+ <para>
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+ </para>
+
+ <para>
+ GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING,
+ DISTRIBUTION AND MODIFICATION
+ </para>
+
+ <para>
+ 0. This License applies to any program or other work which
+ contains a notice placed by the copyright holder saying it may
+ be distributed under the terms of this General Public License.
+ The "Program", below, refers to any such program or work, and a
+ "work based on the Program" means either the Program or any
+ derivative work under copyright law: that is to say, a work
+ containing the Program or a portion of it, either verbatim or
+ with modifications and/or translated into another language.
+ (Hereinafter, translation is included without limitation in the
+ term "modification".) Each licensee is addressed as "you".
+ </para>
+
+ <para>
+ Activities other than copying, distribution and modification are
+ not covered by this License; they are outside its scope. The act
+ of running the Program is not restricted, and the output from
+ the Program is covered only if its contents constitute a work
+ based on the Program (independent of having been made by running
+ the Program). Whether that is true depends on what the Program
+ does.
+ </para>
+
+ <para>
+ 1. You may copy and distribute verbatim copies of the Program's
+ source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an
+ appropriate copyright notice and disclaimer of warranty; keep
+ intact all the notices that refer to this License and to the
+ absence of any warranty; and give any other recipients of the
+ Program a copy of this License along with the Program.
+ </para>
+
+ <para>
+ You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+ </para>
+
+ <para>
+ 2. You may modify your copy or copies of the Program or any
+ portion of it, thus forming a work based on the Program, and
+ copy and distribute such modifications or work under the terms
+ of Section 1 above, provided that you also meet all of these
+ conditions:
+ </para>
+
+ <para>
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+ </para>
+
+ <para>
+ b) You must cause any work that you distribute or publish, that
+ in whole or in part contains or is derived from the Program or
+ any part thereof, to be licensed as a whole at no charge to all
+ third parties under the terms of this License.
+ </para>
+
+ <para>
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you
+ provide a warranty) and that users may redistribute the program
+ under these conditions, and telling the user how to view a copy
+ of this License. (Exception: if the Program itself is
+ interactive but does not normally print such an announcement,
+ your work based on the Program is not required to print an
+ announcement.)
+ </para>
+
+ <para>
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the
+ Program, and can be reasonably considered independent and
+ separate works in themselves, then this License, and its terms,
+ do not apply to those sections when you distribute them as
+ separate works. But when you distribute the same sections as
+ part of a whole which is a work based on the Program, the
+ distribution of the whole must be on the terms of this License,
+ whose permissions for other licensees extend to the entire
+ whole, and thus to each and every part regardless of who wrote
+ it.
+ </para>
+
+ <para>
+ Thus, it is not the intent of this section to claim rights or
+ contest your rights to work written entirely by you; rather, the
+ intent is to exercise the right to control the distribution of
+ derivative or collective works based on the Program.
+ </para>
+
+ <para>
+ In addition, mere aggregation of another work not based on the
+ Program with the Program (or with a work based on the Program)
+ on a volume of a storage or distribution medium does not bring
+ the other work under the scope of this License.
+ </para>
+
+ <para>
+ 3. You may copy and distribute the Program (or a work based on
+ it, under Section 2) in object code or executable form under the
+ terms of Sections 1 and 2 above provided that you also do one of
+ the following:
+ </para>
+
+ <para>
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Sections 1 and 2 above on a medium customarily used for software
+ interchange; or,
+ </para>
+
+ <para>
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a
+ medium customarily used for software interchange; or,
+ </para>
+
+ <para>
+ c) Accompany it with the information you received as to the
+ offer to distribute corresponding source code. (This alternative
+ is allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+ </para>
+
+ <para>
+ The source code for a work means the preferred form of the work
+ for making modifications to it. For an executable work, complete
+ source code means all the source code for all modules it
+ contains, plus any associated interface definition files, plus
+ the scripts used to control compilation and installation of the
+ executable. However, as a special exception, the source code
+ distributed need not include anything that is normally
+ distributed (in either source or binary form) with the major
+ components (compiler, kernel, and so on) of the operating system
+ on which the executable runs, unless that component itself
+ accompanies the executable.
+ </para>
+
+ <para>
+ If distribution of executable or object code is made by offering
+ access to copy from a designated place, then offering equivalent
+ access to copy the source code from the same place counts as
+ distribution of the source code, even though third parties are
+ not compelled to copy the source along with the object code.
+ </para>
+
+ <para>
+ 4. You may not copy, modify, sublicense, or distribute the
+ Program except as expressly provided under this License. Any
+ attempt otherwise to copy, modify, sublicense or distribute the
+ Program is void, and will automatically terminate your rights
+ under this License. However, parties who have received copies,
+ or rights, from you under this License will not have their
+ licenses terminated so long as such parties remain in full
+ compliance.
+ </para>
+
+ <para>
+ 5. You are not required to accept this License, since you have
+ not signed it. However, nothing else grants you permission to
+ modify or distribute the Program or its derivative works. These
+ actions are prohibited by law if you do not accept this License.
+ Therefore, by modifying or distributing the Program (or any work
+ based on the Program), you indicate your acceptance of this
+ License to do so, and all its terms and conditions for copying,
+ distributing or modifying the Program or works based on it.
+ </para>
+
+ <para>
+ 6. Each time you redistribute the Program (or any work based on
+ the Program), the recipient automatically receives a license
+ from the original licensor to copy, distribute or modify the
+ Program subject to these terms and conditions. You may not
+ impose any further restrictions on the recipients' exercise of
+ the rights granted herein. You are not responsible for enforcing
+ compliance by third parties to this License.
+ </para>
+
+ <para>
+ 7. If, as a consequence of a court judgment or allegation of
+ patent infringement or for any other reason (not limited to
+ patent issues), conditions are imposed on you (whether by court
+ order, agreement or otherwise) that contradict the conditions of
+ this License, they do not excuse you from the conditions of this
+ License. If you cannot distribute so as to satisfy
+ simultaneously your obligations under this License and any other
+ pertinent obligations, then as a consequence you may not
+ distribute the Program at all. For example, if a patent license
+ would not permit royalty-free redistribution of the Program by
+ all those who receive copies directly or indirectly through you,
+ then the only way you could satisfy both it and this License
+ would be to refrain entirely from distribution of the Program.
+ </para>
+
+ <para>
+ If any portion of this section is held invalid or unenforceable
+ under any particular circumstance, the balance of the section is
+ intended to apply and the section as a whole is intended to
+ apply in other circumstances.
+ </para>
+
+ <para>
+ It is not the purpose of this section to induce you to infringe
+ any patents or other property right claims or to contest
+ validity of any such claims; this section has the sole purpose
+ of protecting the integrity of the free software distribution
+ system, which is implemented by public license practices. Many
+ people have made generous contributions to the wide range of
+ software distributed through that system in reliance on
+ consistent application of that system; it is up to the
+ author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose
+ that choice.
+ </para>
+
+ <para>
+ This section is intended to make thoroughly clear what is
+ believed to be a consequence of the rest of this License.
+ </para>
+
+ <para>
+ 8. If the distribution and/or use of the Program is restricted
+ in certain countries either by patents or by copyrighted
+ interfaces, the original copyright holder who places the Program
+ under this License may add an explicit geographical distribution
+ limitation excluding those countries, so that distribution is
+ permitted only in or among countries not thus excluded. In such
+ case, this License incorporates the limitation as if written in
+ the body of this License.
+ </para>
+
+ <para>
+ 9. The Free Software Foundation may publish revised and/or new
+ versions of the General Public License from time to time. Such
+ new versions will be similar in spirit to the present version,
+ but may differ in detail to address new problems or concerns.
+ </para>
+
+ <para>
+ Each version is given a distinguishing version number. If the
+ Program specifies a version number of this License which applies
+ to it and "any later version", you have the option of following
+ the terms and conditions either of that version or of any later
+ version published by the Free Software Foundation. If the
+ Program does not specify a version number of this License, you
+ may choose any version ever published by the Free Software
+ Foundation.
+ </para>
+
+ <para>
+ 10. If you wish to incorporate parts of the Program into other
+ free programs whose distribution conditions are different, write
+ to the author to ask for permission. For software which is
+ copyrighted by the Free Software Foundation, write to the Free
+ Software Foundation; we sometimes make exceptions for this. Our
+ decision will be guided by the two goals of preserving the free
+ status of all derivatives of our free software and of promoting
+ the sharing and reuse of software generally.
+ </para>
+
+ <para>
+ NO WARRANTY
+ </para>
+
+ <para>
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
+ WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
+ LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
+ QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
+ SERVICING, REPAIR OR CORRECTION.
+ </para>
+
+ <para>
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
+ IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
+ MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
+ LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+ INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+ INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
+ OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
+ ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+
+ <para>
+ END OF TERMS AND CONDITIONS
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLGPL">
+
+ <title>GNU Lesser General Public License (LGPL)</title>
+
+ <para>
+ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
+ </para>
+
+ <para>
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is
+ permitted to copy and distribute verbatim copies of this license
+ document, but changing it is not allowed.
+ </para>
+
+ <para>
+ [This is the first released version of the Lesser GPL. It also
+ counts as the successor of the GNU Library Public License,
+ version 2, hence the version number 2.1.]
+ </para>
+
+ <para>
+ Preamble
+ </para>
+
+ <para>
+ The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General
+ Public Licenses are intended to guarantee your freedom to share
+ and change free software--to make sure the software is free for
+ all its users.
+ </para>
+
+ <para>
+ This license, the Lesser General Public License, applies to some
+ specially designated software packages--typically libraries--of
+ the Free Software Foundation and other authors who decide to use
+ it. You can use it too, but we suggest you first think carefully
+ about whether this license or the ordinary General Public
+ License is the better strategy to use in any particular case,
+ based on the explanations below.
+ </para>
+
+ <para>
+ When we speak of free software, we are referring to freedom of
+ use, not price. Our General Public Licenses are designed to make
+ sure that you have the freedom to distribute copies of free
+ software (and charge for this service if you wish); that you
+ receive source code or can get it if you want it; that you can
+ change the software and use pieces of it in new free programs;
+ and that you are informed that you can do these things.
+ </para>
+
+ <para>
+ To protect your rights, we need to make restrictions that forbid
+ distributors to deny you these rights or to ask you to surrender
+ these rights. These restrictions translate to certain
+ responsibilities for you if you distribute copies of the library
+ or if you modify it.
+ </para>
+
+ <para>
+ For example, if you distribute copies of the library, whether
+ gratis or for a fee, you must give the recipients all the rights
+ that we gave you. You must make sure that they, too, receive or
+ can get the source code. If you link other code with the
+ library, you must provide complete object files to the
+ recipients, so that they can relink them with the library after
+ making changes to the library and recompiling it. And you must
+ show them these terms so they know their rights.
+ </para>
+
+ <para>
+ We protect your rights with a two-step method: (1) we copyright
+ the library, and (2) we offer you this license, which gives you
+ legal permission to copy, distribute and/or modify the library.
+ </para>
+
+ <para>
+ To protect each distributor, we want to make it very clear that
+ there is no warranty for the free library. Also, if the library
+ is modified by someone else and passed on, the recipients should
+ know that what they have is not the original version, so that
+ the original author's reputation will not be affected by
+ problems that might be introduced by others.
+ </para>
+
+ <para>
+ Finally, software patents pose a constant threat to the
+ existence of any free program. We wish to make sure that a
+ company cannot effectively restrict the users of a free program
+ by obtaining a restrictive license from a patent holder.
+ Therefore, we insist that any patent license obtained for a
+ version of the library must be consistent with the full freedom
+ of use specified in this license.
+ </para>
+
+ <para>
+ Most GNU software, including some libraries, is covered by the
+ ordinary GNU General Public License. This license, the GNU
+ Lesser General Public License, applies to certain designated
+ libraries, and is quite different from the ordinary General
+ Public License. We use this license for certain libraries in
+ order to permit linking those libraries into non-free programs.
+ </para>
+
+ <para>
+ When a program is linked with a library, whether statically or
+ using a shared library, the combination of the two is legally
+ speaking a combined work, a derivative of the original library.
+ The ordinary General Public License therefore permits such
+ linking only if the entire combination fits its criteria of
+ freedom. The Lesser General Public License permits more lax
+ criteria for linking other code with the library.
+ </para>
+
+ <para>
+ We call this license the "Lesser" General Public License because
+ it does Less to protect the user's freedom than the ordinary
+ General Public License. It also provides other free software
+ developers Less of an advantage over competing non-free
+ programs. These disadvantages are the reason we use the ordinary
+ General Public License for many libraries. However, the Lesser
+ license provides advantages in certain special circumstances.
+ </para>
+
+ <para>
+ For example, on rare occasions, there may be a special need to
+ encourage the widest possible use of a certain library, so that
+ it becomes a de-facto standard. To achieve this, non-free
+ programs must be allowed to use the library. A more frequent
+ case is that a free library does the same job as widely used
+ non-free libraries. In this case, there is little to gain by
+ limiting the free library to free software only, so we use the
+ Lesser General Public License.
+ </para>
+
+ <para>
+ In other cases, permission to use a particular library in
+ non-free programs enables a greater number of people to use a
+ large body of free software. For example, permission to use the
+ GNU C Library in non-free programs enables many more people to
+ use the whole GNU operating system, as well as its variant, the
+ GNU/Linux operating system.
+ </para>
+
+ <para>
+ Although the Lesser General Public License is Less protective of
+ the users' freedom, it does ensure that the user of a program
+ that is linked with the Library has the freedom and the
+ wherewithal to run that program using a modified version of the
+ Library.
+ </para>
+
+ <para>
+ The precise terms and conditions for copying, distribution and
+ modification follow. Pay close attention to the difference
+ between a "work based on the library" and a "work that uses the
+ library". The former contains code derived from the library,
+ whereas the latter must be combined with the library in order to
+ run.
+ </para>
+
+ <para>
+ GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR
+ COPYING, DISTRIBUTION AND MODIFICATION
+ </para>
+
+ <para>
+ 0. This License Agreement applies to any software library or
+ other program which contains a notice placed by the copyright
+ holder or other authorized party saying it may be distributed
+ under the terms of this Lesser General Public License (also
+ called "this License"). Each licensee is addressed as "you".
+ </para>
+
+ <para>
+ A "library" means a collection of software functions and/or data
+ prepared so as to be conveniently linked with application
+ programs (which use some of those functions and data) to form
+ executables.
+ </para>
+
+ <para>
+ The "Library", below, refers to any such software library or
+ work which has been distributed under these terms. A "work based
+ on the Library" means either the Library or any derivative work
+ under copyright law: that is to say, a work containing the
+ Library or a portion of it, either verbatim or with
+ modifications and/or translated straightforwardly into another
+ language. (Hereinafter, translation is included without
+ limitation in the term "modification".)
+ </para>
+
+ <para>
+ "Source code" for a work means the preferred form of the work
+ for making modifications to it. For a library, complete source
+ code means all the source code for all modules it contains, plus
+ any associated interface definition files, plus the scripts used
+ to control compilation and installation of the library.
+ </para>
+
+ <para>
+ Activities other than copying, distribution and modification are
+ not covered by this License; they are outside its scope. The act
+ of running a program using the Library is not restricted, and
+ output from such a program is covered only if its contents
+ constitute a work based on the Library (independent of the use
+ of the Library in a tool for writing it). Whether that is true
+ depends on what the Library does and what the program that uses
+ the Library does.
+ </para>
+
+ <para>
+ 1. You may copy and distribute verbatim copies of the Library's
+ complete source code as you receive it, in any medium, provided
+ that you conspicuously and appropriately publish on each copy an
+ appropriate copyright notice and disclaimer of warranty; keep
+ intact all the notices that refer to this License and to the
+ absence of any warranty; and distribute a copy of this License
+ along with the Library.
+ </para>
+
+ <para>
+ You may charge a fee for the physical act of transferring a
+ copy, and you may at your option offer warranty protection in
+ exchange for a fee.
+ </para>
+
+ <para>
+ 2. You may modify your copy or copies of the Library or any
+ portion of it, thus forming a work based on the Library, and
+ copy and distribute such modifications or work under the terms
+ of Section 1 above, provided that you also meet all of these
+ conditions:
+ </para>
+
+ <para>
+ a) The modified work must itself be a software library.
+ </para>
+
+ <para>
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+ </para>
+
+ <para>
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+ </para>
+
+ <para>
+ d) If a facility in the modified Library refers to a function or
+ a table of data to be supplied by an application program that
+ uses the facility, other than as an argument passed when the
+ facility is invoked, then you must make a good faith effort to
+ ensure that, in the event an application does not supply such
+ function or table, the facility still operates, and performs
+ whatever part of its purpose remains meaningful.
+ </para>
+
+ <para>
+ (For example, a function in a library to compute square roots
+ has a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function
+ must be optional: if the application does not supply it, the
+ square root function must still compute square roots.)
+ </para>
+
+ <para>
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the
+ Library, and can be reasonably considered independent and
+ separate works in themselves, then this License, and its terms,
+ do not apply to those sections when you distribute them as
+ separate works. But when you distribute the same sections as
+ part of a whole which is a work based on the Library, the
+ distribution of the whole must be on the terms of this License,
+ whose permissions for other licensees extend to the entire
+ whole, and thus to each and every part regardless of who wrote
+ it.
+ </para>
+
+ <para>
+ Thus, it is not the intent of this section to claim rights or
+ contest your rights to work written entirely by you; rather, the
+ intent is to exercise the right to control the distribution of
+ derivative or collective works based on the Library.
+ </para>
+
+ <para>
+ In addition, mere aggregation of another work not based on the
+ Library with the Library (or with a work based on the Library)
+ on a volume of a storage or distribution medium does not bring
+ the other work under the scope of this License.
+ </para>
+
+ <para>
+ 3. You may opt to apply the terms of the ordinary GNU General
+ Public License instead of this License to a given copy of the
+ Library. To do this, you must alter all the notices that refer
+ to this License, so that they refer to the ordinary GNU General
+ Public License, version 2, instead of to this License. (If a
+ newer version than version 2 of the ordinary GNU General Public
+ License has appeared, then you can specify that version instead
+ if you wish.) Do not make any other change in these notices.
+ </para>
+
+ <para>
+ Once this change is made in a given copy, it is irreversible for
+ that copy, so the ordinary GNU General Public License applies to
+ all subsequent copies and derivative works made from that copy.
+ </para>
+
+ <para>
+ This option is useful when you wish to copy part of the code of
+ the Library into a program that is not a library.
+ </para>
+
+ <para>
+ 4. You may copy and distribute the Library (or a portion or
+ derivative of it, under Section 2) in object code or executable
+ form under the terms of Sections 1 and 2 above provided that you
+ accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of
+ Sections 1 and 2 above on a medium customarily used for software
+ interchange.
+ </para>
+
+ <para>
+ If distribution of object code is made by offering access to
+ copy from a designated place, then offering equivalent access to
+ copy the source code from the same place satisfies the
+ requirement to distribute the source code, even though third
+ parties are not compelled to copy the source along with the
+ object code.
+ </para>
+
+ <para>
+ 5. A program that contains no derivative of any portion of the
+ Library, but is designed to work with the Library by being
+ compiled or linked with it, is called a "work that uses the
+ Library". Such a work, in isolation, is not a derivative work of
+ the Library, and therefore falls outside the scope of this
+ License.
+ </para>
+
+ <para>
+ However, linking a "work that uses the Library" with the Library
+ creates an executable that is a derivative of the Library
+ (because it contains portions of the Library), rather than a
+ "work that uses the library". The executable is therefore
+ covered by this License. Section 6 states terms for distribution
+ of such executables.
+ </para>
+
+ <para>
+ When a "work that uses the Library" uses material from a header
+ file that is part of the Library, the object code for the work
+ may be a derivative work of the Library even though the source
+ code is not. Whether this is true is especially significant if
+ the work can be linked without the Library, or if the work is
+ itself a library. The threshold for this to be true is not
+ precisely defined by law.
+ </para>
+
+ <para>
+ If such an object file uses only numerical parameters, data
+ structure layouts and accessors, and small macros and small
+ inline functions (ten lines or less in length), then the use of
+ the object file is unrestricted, regardless of whether it is
+ legally a derivative work. (Executables containing this object
+ code plus portions of the Library will still fall under Section
+ 6.) Otherwise, if the work is a derivative of the Library, you
+ may distribute the object code for the work under the terms of
+ Section 6. Any executables containing that work also fall under
+ Section 6, whether or not they are linked directly with the
+ Library itself.
+ </para>
+
+ <para>
+ 6. As an exception to the Sections above, you may also combine
+ or link a "work that uses the Library" with the Library to
+ produce a work containing portions of the Library, and
+ distribute that work under terms of your choice, provided that
+ the terms permit modification of the work for the customer's own
+ use and reverse engineering for debugging such modifications.
+ </para>
+
+ <para>
+ You must give prominent notice with each copy of the work that
+ the Library is used in it and that the Library and its use are
+ covered by this License. You must supply a copy of this License.
+ If the work during execution displays copyright notices, you
+ must include the copyright notice for the Library among them, as
+ well as a reference directing the user to the copy of this
+ License. Also, you must do one of these things:
+ </para>
+
+ <para>
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable
+ linked with the Library, with the complete machine-readable
+ "work that uses the Library", as object code and/or source code,
+ so that the user can modify the Library and then relink to
+ produce a modified executable containing the modified Library.
+ (It is understood that the user who changes the contents of
+ definitions files in the Library will not necessarily be able to
+ recompile the application to use the modified definitions.)
+ </para>
+
+ <para>
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer
+ system, rather than copying library functions into the
+ executable, and (2) will operate properly with a modified
+ version of the library, if the user installs one, as long as the
+ modified version is interface-compatible with the version that
+ the work was made with.
+ </para>
+
+ <para>
+ c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in
+ Subsection 6a, above, for a charge no more than the cost of
+ performing this distribution.
+ </para>
+
+ <para>
+ d) If distribution of the work is made by offering access to
+ copy from a designated place, offer equivalent access to copy
+ the above specified materials from the same place.
+ </para>
+
+ <para>
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+ </para>
+
+ <para>
+ For an executable, the required form of the "work that uses the
+ Library" must include any data and utility programs needed for
+ reproducing the executable from it. However, as a special
+ exception, the materials to be distributed need not include
+ anything that is normally distributed (in either source or
+ binary form) with the major components (compiler, kernel, and so
+ on) of the operating system on which the executable runs, unless
+ that component itself accompanies the executable.
+ </para>
+
+ <para>
+ It may happen that this requirement contradicts the license
+ restrictions of other proprietary libraries that do not normally
+ accompany the operating system. Such a contradiction means you
+ cannot use both them and the Library together in an executable
+ that you distribute.
+ </para>
+
+ <para>
+ 7. You may place library facilities that are a work based on the
+ Library side-by-side in a single library together with other
+ library facilities not covered by this License, and distribute
+ such a combined library, provided that the separate distribution
+ of the work based on the Library and of the other library
+ facilities is otherwise permitted, and provided that you do
+ these two things:
+ </para>
+
+ <para>
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+ </para>
+
+ <para>
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+ </para>
+
+ <para>
+ 8. You may not copy, modify, sublicense, link with, or
+ distribute the Library except as expressly provided under this
+ License. Any attempt otherwise to copy, modify, sublicense, link
+ with, or distribute the Library is void, and will automatically
+ terminate your rights under this License. However, parties who
+ have received copies, or rights, from you under this License
+ will not have their licenses terminated so long as such parties
+ remain in full compliance.
+ </para>
+
+ <para>
+ 9. You are not required to accept this License, since you have
+ not signed it. However, nothing else grants you permission to
+ modify or distribute the Library or its derivative works. These
+ actions are prohibited by law if you do not accept this License.
+ Therefore, by modifying or distributing the Library (or any work
+ based on the Library), you indicate your acceptance of this
+ License to do so, and all its terms and conditions for copying,
+ distributing or modifying the Library or works based on it.
+ </para>
+
+ <para>
+ 10. Each time you redistribute the Library (or any work based on
+ the Library), the recipient automatically receives a license
+ from the original licensor to copy, distribute, link with or
+ modify the Library subject to these terms and conditions. You
+ may not impose any further restrictions on the recipients'
+ exercise of the rights granted herein. You are not responsible
+ for enforcing compliance by third parties with this License.
+ </para>
+
+ <para>
+ 11. If, as a consequence of a court judgment or allegation of
+ patent infringement or for any other reason (not limited to
+ patent issues), conditions are imposed on you (whether by court
+ order, agreement or otherwise) that contradict the conditions of
+ this License, they do not excuse you from the conditions of this
+ License. If you cannot distribute so as to satisfy
+ simultaneously your obligations under this License and any other
+ pertinent obligations, then as a consequence you may not
+ distribute the Library at all. For example, if a patent license
+ would not permit royalty-free redistribution of the Library by
+ all those who receive copies directly or indirectly through you,
+ then the only way you could satisfy both it and this License
+ would be to refrain entirely from distribution of the Library.
+ </para>
+
+ <para>
+ If any portion of this section is held invalid or unenforceable
+ under any particular circumstance, the balance of the section is
+ intended to apply, and the section as a whole is intended to
+ apply in other circumstances.
+ </para>
+
+ <para>
+ It is not the purpose of this section to induce you to infringe
+ any patents or other property right claims or to contest
+ validity of any such claims; this section has the sole purpose
+ of protecting the integrity of the free software distribution
+ system which is implemented by public license practices. Many
+ people have made generous contributions to the wide range of
+ software distributed through that system in reliance on
+ consistent application of that system; it is up to the
+ author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose
+ that choice.
+ </para>
+
+ <para>
+ This section is intended to make thoroughly clear what is
+ believed to be a consequence of the rest of this License.
+ </para>
+
+ <para>
+ 12. If the distribution and/or use of the Library is restricted
+ in certain countries either by patents or by copyrighted
+ interfaces, the original copyright holder who places the Library
+ under this License may add an explicit geographical distribution
+ limitation excluding those countries, so that distribution is
+ permitted only in or among countries not thus excluded. In such
+ case, this License incorporates the limitation as if written in
+ the body of this License.
+ </para>
+
+ <para>
+ 13. The Free Software Foundation may publish revised and/or new
+ versions of the Lesser General Public License from time to time.
+ Such new versions will be similar in spirit to the present
+ version, but may differ in detail to address new problems or
+ concerns.
+ </para>
+
+ <para>
+ Each version is given a distinguishing version number. If the
+ Library specifies a version number of this License which applies
+ to it and "any later version", you have the option of following
+ the terms and conditions either of that version or of any later
+ version published by the Free Software Foundation. If the
+ Library does not specify a license version number, you may
+ choose any version ever published by the Free Software
+ Foundation.
+ </para>
+
+ <para>
+ 14. If you wish to incorporate parts of the Library into other
+ free programs whose distribution conditions are incompatible
+ with these, write to the author to ask for permission. For
+ software which is copyrighted by the Free Software Foundation,
+ write to the Free Software Foundation; we sometimes make
+ exceptions for this. Our decision will be guided by the two
+ goals of preserving the free status of all derivatives of our
+ free software and of promoting the sharing and reuse of software
+ generally.
+ </para>
+
+ <para>
+ NO WARRANTY
+ </para>
+
+ <para>
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+ WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
+ LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
+ QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE
+ LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
+ SERVICING, REPAIR OR CORRECTION.
+ </para>
+
+ <para>
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
+ IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
+ MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
+ LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+ INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+ INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS
+ OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+ YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH
+ ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+
+ <para>
+ END OF TERMS AND CONDITIONS
+ </para>
+
+ </sect2>
+
+ <sect2 id="licMPL">
+
+ <title>Mozilla Public License (MPL)</title>
+
+ <para>
+ MOZILLA PUBLIC LICENSE Version 1.1
+ </para>
+
+ <para>
+ 1. Definitions.
+ </para>
+
+ <para>
+ 1.0.1. "Commercial Use" means distribution or otherwise making
+ the Covered Code available to a third party.
+ </para>
+
+ <para>
+ 1.1. "Contributor" means each entity that creates or contributes
+ to the creation of Modifications.
+ </para>
+
+ <para>
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the
+ Modifications made by that particular Contributor.
+ </para>
+
+ <para>
+ 1.3. "Covered Code" means the Original Code or Modifications or
+ the combination of the Original Code and Modifications, in each
+ case including portions thereof.
+ </para>
+
+ <para>
+ 1.4. "Electronic Distribution Mechanism" means a mechanism
+ generally accepted in the software development community for the
+ electronic transfer of data.
+ </para>
+
+ <para>
+ 1.5. "Executable" means Covered Code in any form other than
+ Source Code.
+ </para>
+
+ <para>
+ 1.6. "Initial Developer" means the individual or entity
+ identified as the Initial Developer in the Source Code notice
+ required by Exhibit A.
+ </para>
+
+ <para>
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this
+ License.
+ </para>
+
+ <para>
+ 1.8. "License" means this document.
+ </para>
+
+ <para>
+ 1.8.1. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+ </para>
+
+ <para>
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any
+ previous Modifications. When Covered Code is released as a
+ series of files, a Modification is:
+ </para>
+
+ <para>
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+ </para>
+
+ <para>
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+ </para>
+
+ <para>
+ 1.10. "Original Code" means Source Code of computer software
+ code which is described in the Source Code notice required by
+ Exhibit A as Original Code, and which, at the time of its
+ release under this License is not already Covered Code governed
+ by this License.
+ </para>
+
+ <para>
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by
+ grantor.
+ </para>
+
+ <para>
+ 1.11. "Source Code" means the preferred form of the Covered Code
+ for making modifications to it, including all modules it
+ contains, plus any associated interface definition files,
+ scripts used to control compilation and installation of an
+ Executable, or source code differential comparisons against
+ either the Original Code or another well known, available
+ Covered Code of the Contributor's choice. The Source Code can be
+ in a compressed or archival form, provided the appropriate
+ decompression or de-archiving software is widely available for
+ no charge.
+ </para>
+
+ <para>
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of,
+ this License or a future version of this License issued under
+ Section 6.1. For legal entities, "You" includes any entity which
+ controls, is controlled by, or is under common control with You.
+ For purposes of this definition, "control" means (a) the power,
+ direct or indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership of
+ more than fifty percent (50%) of the outstanding shares or
+ beneficial ownership of such entity.
+ </para>
+
+ <para>
+ 2. Source Code License.
+ </para>
+
+ <para>
+ 2.1. The Initial Developer Grant. The Initial Developer hereby
+ grants You a world-wide, royalty-free, non-exclusive license,
+ subject to third party intellectual property claims:
+ </para>
+
+ <para>
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+ </para>
+
+ <para>
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+ </para>
+
+ <para>
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+ </para>
+
+ <para>
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+ </para>
+
+ <para>
+ 2.2. Contributor Grant. Subject to third party intellectual
+ property claims, each Contributor hereby grants You a
+ world-wide, royalty-free, non-exclusive license
+ </para>
+
+ <para>
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+ </para>
+
+ <para>
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+ </para>
+
+ <para>
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+ </para>
+
+ <para>
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made
+ by that Contributor.
+ </para>
+
+ <para>
+ 3. Distribution Obligations.
+ </para>
+
+ <para>
+ 3.1. Application of License. The Modifications which You create
+ or to which You contribute are governed by the terms of this
+ License, including without limitation Section 2.2. The Source
+ Code version of Covered Code may be distributed only under the
+ terms of this License or a future version of this License
+ released under Section 6.1, and You must include a copy of this
+ License with every copy of the Source Code You distribute. You
+ may not offer or impose any terms on any Source Code version
+ that alters or restricts the applicable version of this License
+ or the recipients' rights hereunder. However, You may include an
+ additional document offering the additional rights described in
+ Section 3.5.
+ </para>
+
+ <para>
+ 3.2. Availability of Source Code. Any Modification which You
+ create or to which You contribute must be made available in
+ Source Code form under the terms of this License either on the
+ same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via
+ Electronic Distribution Mechanism, must remain available for at
+ least twelve (12) months after the date it initially became
+ available, or at least six (6) months after a subsequent version
+ of that particular Modification has been made available to such
+ recipients. You are responsible for ensuring that the Source
+ Code version remains available even if the Electronic
+ Distribution Mechanism is maintained by a third party.
+ </para>
+
+ <para>
+ 3.3. Description of Modifications. You must cause all Covered
+ Code to which You contribute to contain a file documenting the
+ changes You made to create that Covered Code and the date of any
+ change. You must include a prominent statement that the
+ Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of
+ the Initial Developer in (a) the Source Code, and (b) in any
+ notice in an Executable version or related documentation in
+ which You describe the origin or ownership of the Covered Code.
+ </para>
+
+ <para>
+ 3.4. Intellectual Property Matters
+ </para>
+
+ <para>
+ (a) Third Party Claims. If Contributor has knowledge that a
+ license under a third party's intellectual property rights is
+ required to exercise the rights granted by such Contributor
+ under Sections 2.1 or 2.2, Contributor must include a text file
+ with the Source Code distribution titled "LEGAL" which describes
+ the claim and the party making the claim in sufficient detail
+ that a recipient will know whom to contact. If Contributor
+ obtains such knowledge after the Modification is made available
+ as described in Section 3.2, Contributor shall promptly modify
+ the LEGAL file in all copies Contributor makes available
+ thereafter and shall take other steps (such as notifying
+ appropriate mailing lists or newsgroups) reasonably calculated
+ to inform those who received the Covered Code that new knowledge
+ has been obtained.
+ </para>
+
+ <para>
+ (b) Contributor APIs. If Contributor's Modifications include an
+ application programming interface and Contributor has knowledge
+ of patent licenses which are reasonably necessary to implement
+ that API, Contributor must also include this information in the
+ LEGAL file.
+ </para>
+
+ <para>
+ 3.5. Required Notices. You must duplicate the notice in Exhibit
+ A in each file of the Source Code. If it is not possible to put
+ such notice in a particular Source Code file due to its
+ structure, then You must include such notice in a location (such
+ as a relevant directory) where a user would be likely to look
+ for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described
+ in Exhibit A. You must also duplicate this License in any
+ documentation for the Source Code where You describe recipients'
+ rights or ownership rights relating to Covered Code. You may
+ choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of
+ Covered Code. However, You may do so only on Your own behalf,
+ and not on behalf of the Initial Developer or any Contributor.
+ You must make it absolutely clear than any such warranty,
+ support, indemnity or liability obligation is offered by You
+ alone, and You hereby agree to indemnify the Initial Developer
+ and every Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer.
+ </para>
+
+ <para>
+ 3.6. Distribution of Executable Versions. You may distribute
+ Covered Code in Executable form only if the requirements of
+ Section 3.1-3.5 have been met for that Covered Code, and if You
+ include a notice stating that the Source Code version of the
+ Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously
+ included in any notice in an Executable version, related
+ documentation or collateral in which You describe recipients'
+ rights relating to the Covered Code. You may distribute the
+ Executable version of Covered Code or ownership rights under a
+ license of Your choice, which may contain terms different from
+ this License, provided that You are in compliance with the terms
+ of this License and that the license for the Executable version
+ does not attempt to limit or alter the recipient's rights in the
+ Source Code version from the rights set forth in this License.
+ If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which
+ differ from this License are offered by You alone, not by the
+ Initial Developer or any Contributor. You hereby agree to
+ indemnify the Initial Developer and every Contributor for any
+ liability incurred by the Initial Developer or such Contributor
+ as a result of any such terms You offer.
+ </para>
+
+ <para>
+ 3.7. Larger Works. You may create a Larger Work by combining
+ Covered Code with other code not governed by the terms of this
+ License and distribute the Larger Work as a single product. In
+ such a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Code.
+ </para>
+
+ <para>
+ 4. Inability to Comply Due to Statute or Regulation.If it is
+ impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply
+ with the terms of this License to the maximum extent possible;
+ and (b) describe the limitations and the code they affect. Such
+ description must be included in the LEGAL file described in
+ Section 3.4 and must be included with all distributions of the
+ Source Code. Except to the extent prohibited by statute or
+ regulation, such description must be sufficiently detailed for a
+ recipient of ordinary skill to be able to understand it.
+ </para>
+
+ <para>
+ 5. Application of this License. This License applies to code to
+ which the Initial Developer has attached the notice in Exhibit A
+ and to related Covered Code.
+ </para>
+
+ <para>
+ 6. Versions of the License.
+ </para>
+
+ <para>
+ 6.1. New Versions. Netscape Communications Corporation
+ ("Netscape") may publish revised and/or new versions of the
+ License from time to time. Each version will be given a
+ distinguishing version number.
+ </para>
+
+ <para>
+ 6.2. Effect of New Versions. Once Covered Code has been
+ published under a particular version of the License, You may
+ always continue to use it under the terms of that version. You
+ may also choose to use such Covered Code under the terms of any
+ subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable
+ to Covered Code created under this License.
+ </para>
+
+ <para>
+ 6.3. Derivative Works. If You create or use a modified version
+ of this License (which you may only do in order to apply it to
+ code which is not already Covered Code governed by this
+ License), You must (a) rename Your license so that the phrases
+ "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any
+ confusingly similar phrase do not appear in your license (except
+ to note that your license differs from this License) and (b)
+ otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described
+ in Exhibit A shall not of themselves be deemed to be
+ modifications of this License.)
+ </para>
+
+ <para>
+ 7. DISCLAIMER OF WARRANTY.
+ </para>
+
+ <para>
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE
+ IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
+ OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED
+ CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL
+ DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+ NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE
+ OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+ </para>
+
+ <para>
+ 8. TERMINATION.
+ </para>
+
+ <para>
+ 8.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms herein
+ and fail to cure such breach within 30 days of becoming aware of
+ the breach. All sublicenses to the Covered Code which are
+ properly granted shall survive any termination of this License.
+ Provisions which, by their nature, must remain in effect beyond
+ the termination of this License shall survive.
+ </para>
+
+ <para>
+ 8.2. If You initiate litigation by asserting a patent
+ infringement claim (excluding declaratory judgment actions)
+ against Initial Developer or a Contributor (the Initial
+ Developer or Contributor against whom You file such action is
+ referred to as "Participant") alleging that:
+ </para>
+
+ <para>
+ (a) such Participant's Contributor Version directly or
+ indirectly infringes any patent, then any and all rights granted
+ by such Participant to You under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant terminate
+ prospectively, unless if within 60 days after receipt of notice
+ You either: (i) agree in writing to pay Participant a mutually
+ agreeable reasonable royalty for Your past and future use of
+ Modifications made by such Participant, or (ii) withdraw Your
+ litigation claim with respect to the Contributor Version against
+ such Participant. If within 60 days of notice, a reasonable
+ royalty and payment arrangement are not mutually agreed upon in
+ writing by the parties or the litigation claim is not withdrawn,
+ the rights granted by Participant to You under Sections 2.1
+ and/or 2.2 automatically terminate at the expiration of the 60
+ day notice period specified above.
+ </para>
+
+ <para>
+ (b) any software, hardware, or device, other than such
+ Participant's Contributor Version, directly or indirectly
+ infringes any patent, then any rights granted to You by such
+ Participant under Sections 2.1(b) and 2.2(b) are revoked
+ effective as of the date You first made, used, sold,
+ distributed, or had made, Modifications made by that
+ Participant.
+ </para>
+
+ <para>
+ 8.3. If You assert a patent infringement claim against
+ Participant alleging that such Participant's Contributor Version
+ directly or indirectly infringes any patent where such claim is
+ resolved (such as by license or settlement) prior to the
+ initiation of patent infringement litigation, then the
+ reasonable value of the licenses granted by such Participant
+ under Sections 2.1 or 2.2 shall be taken into account in
+ determining the amount or value of any payment or license.
+ </para>
+
+ <para>
+ 8.4. In the event of termination under Sections 8.1 or 8.2
+ above, all end user license agreements (excluding distributors
+ and resellers) which have been validly granted by You or any
+ distributor hereunder prior to termination shall survive
+ termination.
+ </para>
+
+ <para>
+ 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO
+ LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR
+ OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER
+ CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER
+ OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+ GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY
+ AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY
+ SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
+ THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR
+ DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE
+ TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME
+ JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
+ INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND
+ LIMITATION MAY NOT APPLY TO YOU.
+ </para>
+
+ <para>
+ 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial
+ item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995),
+ consisting of "commercial computer software" and "commercial
+ computer software documentation," as such terms are used in 48
+ C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
+ 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
+ Government End Users acquire Covered Code with only those rights
+ set forth herein.
+ </para>
+
+ <para>
+ 11. MISCELLANEOUS. This License represents the complete
+ agreement concerning subject matter hereof. If any provision of
+ this License is held to be unenforceable, such provision shall
+ be reformed only to the extent necessary to make it enforceable.
+ This License shall be governed by California law provisions
+ (except to the extent applicable law, if any, provides
+ otherwise), excluding its conflict-of-law provisions. With
+ respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the
+ United States of America, any litigation relating to this
+ License shall be subject to the jurisdiction of the Federal
+ Courts of the Northern District of California, with venue lying
+ in Santa Clara County, California, with the losing party
+ responsible for costs, including without limitation, court costs
+ and reasonable attorneys' fees and expenses. The application of
+ the United Nations Convention on Contracts for the International
+ Sale of Goods is expressly excluded. Any law or regulation which
+ provides that the language of a contract shall be construed
+ against the drafter shall not apply to this License.
+ </para>
+
+ <para>
+ 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and
+ the Contributors, each party is responsible for claims and
+ damages arising, directly or indirectly, out of its utilization
+ of rights under this License and You agree to work with Initial
+ Developer and Contributors to distribute such responsibility on
+ an equitable basis. Nothing herein is intended or shall be
+ deemed to constitute any admission of liability.
+ </para>
+
+ <para>
+ 13. MULTIPLE-LICENSED CODE. Initial Developer may designate
+ portions of the Covered Code as "Multiple-Licensed".
+ "Multiple-Licensed" means that the Initial Developer permits you
+ to utilize portions of the Covered Code under Your choice of the
+ NPL or the alternative licenses, if any, specified by the
+ Initial Developer in the file described in Exhibit A.
+ </para>
+
+ <para>
+ EXHIBIT A -Mozilla Public License.
+ </para>
+
+ <para>
+ ``The contents of this file are subject to the Mozilla Public
+ License Version 1.1 (the "License"); you may not use this file
+ except in compliance with the License. You may obtain a copy of
+ the License at http://www.mozilla.org/MPL/
+ </para>
+
+ <para>
+ Software distributed under the License is distributed on an "AS
+ IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ rights and limitations under the License.
+ </para>
+
+ <para>
+ The Original Code is ______________________________________.
+ </para>
+
+ <para>
+ The Initial Developer of the Original Code is
+ ________________________. Portions created by
+ ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+ </para>
+
+ <para>
+ Contributor(s): ______________________________________.
+ </para>
+
+ <para>
+ Alternatively, the contents of this file may be used under the
+ terms of the _____ license (the "[___] License"), in which case
+ the provisions of [______] License are applicable instead of
+ those above. If you wish to allow use of your version of this
+ file only under the terms of the [____] License and not to allow
+ others to use your version of this file under the MPL, indicate
+ your decision by deleting the provisions above and replace them
+ with the notice and other provisions required by the [___]
+ License. If you do not delete the provisions above, a recipient
+ may use your version of this file under either the MPL or the
+ [___] License."
+ </para>
+
+ <para>
+ [NOTE: The text of this Exhibit A may differ slightly from the
+ text of the notices in the Source Code files of the Original
+ Code. You should use the text of this Exhibit A rather than the
+ text found in the Original Code Source Code for Your
+ Modifications.]
+ </para>
+
+ </sect2>
+
+ <sect2 id="licMIT">
+
+ <title>MIT License</title>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licX11">
+
+ <title>X Consortium License (X11)</title>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licZLIB">
+
+ <title>zlib License</title>
+
+ <para>
+ This software is provided 'as-is', without any express or
+ implied warranty. In no event will the authors be held liable
+ for any damages arising from the use of this software.
+ </para>
+
+ <para>
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+ </para>
+
+ <para>
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ </para>
+
+ <para>
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ </para>
+
+ <para>
+ 3. This notice may not be removed or altered from any source
+ distribution.
+ </para>
+
+<screen>Jean-loup Gailly Mark Adler
+jloup@gzip.org madler@alumni.caltech.edu</screen>
+
+ </sect2>
+
+ <sect2 id="licSSL">
+
+ <title>OpenSSL License</title>
+
+ <para>
+ This package is an SSL implementation written by Eric Young
+ (eay@cryptsoft.com). The implementation was written so as to
+ conform with Netscape's SSL.
+ </para>
+
+ <para>
+ This library is free for commercial and non-commercial use as
+ long as the following conditions are adhered to. The following
+ conditions apply to all code found in this distribution, be it
+ the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The
+ SSL documentation included with this distribution is covered by
+ the same copyright terms except that the holder is Tim Hudson
+ (tjh@cryptsoft.com).
+ </para>
+
+ <para>
+ Copyright remains Eric Young's, and as such any Copyright
+ notices in the code are not to be removed. If this package is
+ used in a product, Eric Young should be given attribution as the
+ author of the parts of the library used. This can be in the form
+ of a textual message at program startup or in documentation
+ (online or textual) provided with the package.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <para>
+ 1. Redistributions of source code must retain the copyright
+ notice, this list of conditions and the following disclaimer.
+ </para>
+
+ <para>
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ </para>
+
+ <para>
+ 3. All advertising materials mentioning features or use of this
+ software must display the following acknowledgement: "This
+ product includes cryptographic software written by Eric Young
+ (eay@cryptsoft.com)" The word 'cryptographic' can be left out if
+ the routines from the library being used are not cryptographic
+ related :-).
+ </para>
+
+ <para>
+ 4. If you include any Windows specific code (or a derivative
+ thereof) from the apps directory (application code) you must
+ include an acknowledgement: "This product includes software
+ written by Tim Hudson (tjh@cryptsoft.com)"
+ </para>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ <para>
+ The licence and distribution terms for any publicly available
+ version or derivative of this code cannot be changed. i.e. this
+ code cannot simply be copied and put under another distribution
+ licence [including the GNU Public Licence.]
+ </para>
+
+ </sect2>
+
+ <sect2 id="licSlirp">
+
+ <title>Slirp License</title>
+
+ <para>
+ Copyright (c) 1995,1996 Danny Gasparovski. All rights reserved.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <para>
+ 1. Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+
+ <para>
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ </para>
+
+ <para>
+ 3. All advertising materials mentioning features or use of this
+ software must display the following acknowledgment: This product
+ includes software developed by Danny Gasparovski.
+ </para>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DANNY GASPAROVSKI OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLZF">
+
+ <title>liblzf License</title>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <para>
+ 1. Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+
+ <para>
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ </para>
+
+ <para>
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+ </para>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="liclibping">
+
+ <title>libpng License</title>
+
+ <para>
+ The PNG Reference Library is supplied "AS IS". The Contributing
+ Authors and Group 42, Inc. disclaim all warranties, expressed or
+ implied, including, without limitation, the warranties of
+ merchantability and of fitness for any purpose. The Contributing
+ Authors and Group 42, Inc. assume no liability for direct,
+ indirect, incidental, special, exemplary, or consequential
+ damages, which may result from the use of the PNG Reference
+ Library, even if advised of the possibility of such damage.
+ </para>
+
+ <para>
+ Permission is hereby granted to use, copy, modify, and
+ distribute this source code, or portions hereof, for any
+ purpose, without fee, subject to the following restrictions:
+ </para>
+
+ <para>
+ 1. The origin of this source code must not be misrepresented.
+ </para>
+
+ <para>
+ 2. Altered versions must be plainly marked as such and must not
+ be misrepresented as being the original source.
+ </para>
+
+ <para>
+ 3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.
+ </para>
+
+ <para>
+ The Contributing Authors and Group 42, Inc. specifically permit,
+ without fee, and encourage the use of this source code as a
+ component to supporting the PNG file format in commercial
+ products. If you use this source code in a product,
+ acknowledgment is not required but would be appreciated.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLWIP">
+
+ <title>lwIP License</title>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <para>
+ 1. Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+
+ <para>
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ </para>
+
+ <para>
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+ </para>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLibXML">
+
+ <title>libxml License</title>
+
+ <para>
+ Except where otherwise noted in the source code (e.g. the files
+ hash.c, list.c and the trio files, which are covered by a
+ similar licence but with different Copyright notices) all the
+ files are:
+ </para>
+
+ <para>
+ Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL VEILLARD BE LIABLE
+ FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ </para>
+
+ <para>
+ Except as contained in this notice, the name of Daniel Veillard
+ shall not be used in advertising or otherwise to promote the
+ sale, use or other dealings in this Software without prior
+ written authorization from him.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLibXSLT">
+
+ <title>libxslt Licenses</title>
+
+ <para>
+ Licence for libxslt except libexslt:
+ </para>
+
+ <para>
+ Copyright (C) 2001-2002 Daniel Veillard. All Rights Reserved.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL VEILLARD BE LIABLE
+ FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ </para>
+
+ <para>
+ Except as contained in this notice, the name of Daniel Veillard
+ shall not be used in advertising or otherwise to promote the
+ sale, use or other dealings in this Software without prior
+ written authorization from him.
+ </para>
+
+ <para>
+ Licence for libexslt:
+ </para>
+
+ <para>
+ Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman and
+ Daniel Veillard. All Rights Reserved.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ </para>
+
+ <para>
+ Except as contained in this notice, the name of the authors
+ shall not be used in advertising or otherwise to promote the
+ sale, use or other dealings in this Software without prior
+ written authorization from him.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licgSOAP">
+
+ <title>gSOAP Public License Version 1.3a</title>
+
+ <para>
+ The gSOAP public license is derived from the Mozilla Public
+ License (MPL1.1). The sections that were deleted from the
+ original MPL1.1 text are 1.0.1, 2.1.(c),(d), 2.2.(c),(d),
+ 8.2.(b), 10, and 11. Section 3.8 was added. The modified
+ sections are 2.1.(b), 2.2.(b), 3.2 (simplified), 3.5 (deleted
+ the last sentence), and 3.6 (simplified).
+ </para>
+
+ <para>
+ 1 DEFINITIONS
+ </para>
+
+ <para>
+ 1.1. "Contributor" means each entity that creates or contributes
+ to the creation of Modifications.
+ </para>
+
+ <para>
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the
+ Modifications made by that particular Contributor.
+ </para>
+
+ <para>
+ 1.3. "Covered Code" means the Original Code, or Modifications or
+ the combination of the Original Code, and Modifications, in each
+ case including portions thereof.
+ </para>
+
+ <para>
+ 1.4. "Electronic Distribution Mechanism" means a mechanism
+ generally accepted in the software development community for the
+ electronic transfer of data.
+ </para>
+
+ <para>
+ 1.5. "Executable" means Covered Code in any form other than
+ Source Code.
+ </para>
+
+ <para>
+ 1.6. "Initial Developer" means the individual or entity
+ identified as the Initial Developer in the Source Code notice
+ required by Exhibit A.
+ </para>
+
+ <para>
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this
+ License.
+ </para>
+
+ <para>
+ 1.8. "License" means this document.
+ </para>
+
+ <para>
+ 1.8.1. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+ </para>
+
+ <para>
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any
+ previous Modifications. When Covered Code is released as a
+ series of files, a Modification is:
+ </para>
+
+ <para>
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+ </para>
+
+ <para>
+ B. Any new file that contains any part of the Original Code, or
+ previous Modifications.
+ </para>
+
+ <para>
+ 1.10. "Original Code" means Source Code of computer software
+ code which is described in the Source Code notice required by
+ Exhibit A as Original Code, and which, at the time of its
+ release under this License is not already Covered Code governed
+ by this License.
+ </para>
+
+ <para>
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by
+ grantor.
+ </para>
+
+ <para>
+ 1.11. "Source Code" means the preferred form of the Covered Code
+ for making modifications to it, including all modules it
+ contains, plus any associated interface definition files,
+ scripts used to control compilation and installation of an
+ Executable, or source code differential comparisons against
+ either the Original Code or another well known, available
+ Covered Code of the Contributor's choice. The Source Code can be
+ in a compressed or archival form, provided the appropriate
+ decompression or de-archiving software is widely available for
+ no charge.
+ </para>
+
+ <para>
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of,
+ this License or a future version of this License issued under
+ Section 6.1. For legal entities, "You" includes any entity which
+ controls, is controlled by, or is under common control with You.
+ For purposes of this definition, "control" means (a) the power,
+ direct or indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership of
+ more than fifty percent (50%) of the outstanding shares or
+ beneficial ownership of such entity.
+ </para>
+
+ <para>
+ 2 SOURCE CODE LICENSE.
+ </para>
+
+ <para>
+ 2.1. The Initial Developer Grant.
+ </para>
+
+ <para>
+ The Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license, subject to third party
+ intellectual property claims:
+ </para>
+
+ <para>
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+ </para>
+
+ <para>
+ (b) under patents now or hereafter owned or controlled by
+ Initial Developer, to make, have made, use and sell ("offer to
+ sell and import") the Original Code, Modifications, or portions
+ thereof, but solely to the extent that any such patent is
+ reasonably necessary to enable You to utilize, alone or in
+ combination with other software, the Original Code,
+ Modifications, or any combination or portions thereof.
+ </para>
+
+ <para>
+ (c)
+ </para>
+
+ <para>
+ (d)
+ </para>
+
+ <para>
+ 2.2. Contributor Grant.
+ </para>
+
+ <para>
+ Subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license
+ </para>
+
+ <para>
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+ </para>
+
+ <para>
+ (b) under patents now or hereafter owned or controlled by
+ Contributor, to make, have made, use and sell ("offer to sell
+ and import") the Contributor Version (or portions thereof), but
+ solely to the extent that any such patent is reasonably
+ necessary to enable You to utilize, alone or in combination with
+ other software, the Contributor Version (or portions thereof).
+ </para>
+
+ <para>
+ (c)
+ </para>
+
+ <para>
+ (d)
+ </para>
+
+ <para>
+ 3 DISTRIBUTION OBLIGATIONS.
+ </para>
+
+ <para>
+ 3.1. Application of License.
+ </para>
+
+ <para>
+ The Modifications which You create or to which You contribute
+ are governed by the terms of this License, including without
+ limitation Section 2.2. The Source Code version of Covered Code
+ may be distributed only under the terms of this License or a
+ future version of this License released under Section 6.1, and
+ You must include a copy of this License with every copy of the
+ Source Code You distribute. You may not offer or impose any
+ terms on any Source Code version that alters or restricts the
+ applicable version of this License or the recipients' rights
+ hereunder. However, You may include an additional document
+ offering the additional rights described in Section 3.5.
+ </para>
+
+ <para>
+ 3.2. Availability of Source Code.
+ </para>
+
+ <para>
+ Any Modification created by You will be provided to the Initial
+ Developer in Source Code form and are subject to the terms of
+ the License. 3.3. Description of Modifications.
+ </para>
+
+ <para>
+ You must cause all Covered Code to which You contribute to
+ contain a file documenting the changes You made to create that
+ Covered Code and the date of any change. You must include a
+ prominent statement that the Modification is derived, directly
+ or indirectly, from Original Code provided by the Initial
+ Developer and including the name of the Initial Developer in (a)
+ the Source Code, and (b) in any notice in an Executable version
+ or related documentation in which You describe the origin or
+ ownership of the Covered Code.
+ </para>
+
+ <para>
+ 3.4. Intellectual Property Matters.
+ </para>
+
+ <para>
+ (a) Third Party Claims. If Contributor has knowledge that a
+ license under a third party's intellectual property rights is
+ required to exercise the rights granted by such Contributor
+ under Sections 2.1 or 2.2, Contributor must include a text file
+ with the Source Code distribution titled "LEGAL" which describes
+ the claim and the party making the claim in sufficient detail
+ that a recipient will know whom to contact. If Contributor
+ obtains such knowledge after the Modification is made available
+ as described in Section 3.2, Contributor shall promptly modify
+ the LEGAL file in all copies Contributor makes available
+ thereafter and shall take other steps (such as notifying
+ appropriate mailing lists or newsgroups) reasonably calculated
+ to inform those who received the Covered Code that new knowledge
+ has been obtained.
+ </para>
+
+ <para>
+ (b) Contributor APIs. If Contributor's Modifications include an
+ application programming interface and Contributor has knowledge
+ of patent licenses which are reasonably necessary to implement
+ that API, Contributor must also include this information in the
+ LEGAL file.
+ </para>
+
+ <para>
+ (c) Representations. Contributor represents that, except as
+ disclosed pursuant to Section 3.4(a) above, Contributor believes
+ that Contributor's Modifications are Contributor's original
+ creation(s) and/or Contributor has sufficient rights to grant
+ the rights conveyed by this License.
+ </para>
+
+ <para>
+ 3.5. Required Notices. You must duplicate the notice in Exhibit
+ A in each file of the Source Code. If it is not possible to put
+ such notice in a particular Source Code file due to its
+ structure, then You must include such notice in a location (such
+ as a relevant directory) where a user would be likely to look
+ for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described
+ in Exhibit A. You must also duplicate this License in any
+ documentation for the Source Code where You describe recipients'
+ rights or ownership rights relating to Covered Code. You may
+ choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of
+ Covered Code. However, You may do so only on Your own behalf,
+ and not on behalf of the Initial Developer or any Contributor.
+ </para>
+
+ <para>
+ 3.6. Distribution of Executable Versions. You may distribute
+ Covered Code in Executable form only if the requirements of
+ Section 3.1-3.5 have been met for that Covered Code. You may
+ distribute the Executable version of Covered Code or ownership
+ rights under a license of Your choice, which may contain terms
+ different from this License, provided that You are in compliance
+ with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the
+ recipient's rights in the Source Code version from the rights
+ set forth in this License. If You distribute the Executable
+ version under a different license You must make it absolutely
+ clear that any terms which differ from this License are offered
+ by You alone, not by the Initial Developer or any Contributor.
+ If you distribute executable versions containing Covered Code as
+ part of a product, you must reproduce the notice in Exhibit B in
+ the documentation and/or other materials provided with the
+ product.
+ </para>
+
+ <para>
+ 3.7. Larger Works. You may create a Larger Work by combining
+ Covered Code with other code not governed by the terms of this
+ License and distribute the Larger Work as a single product. In
+ such a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Code.
+ </para>
+
+ <para>
+ 3.8. Restrictions. You may not remove any product
+ identification, copyright, proprietary notices or labels from
+ gSOAP.
+ </para>
+
+ <para>
+ 4 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION.
+ </para>
+
+ <para>
+ If it is impossible for You to comply with any of the terms of
+ this License with respect to some or all of the Covered Code due
+ to statute, judicial order, or regulation then You must: (a)
+ comply with the terms of this License to the maximum extent
+ possible; and (b) describe the limitations and the code they
+ affect. Such description must be included in the LEGAL file
+ described in Section 3.4 and must be included with all
+ distributions of the Source Code. Except to the extent
+ prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be
+ able to understand it.
+ </para>
+
+ <para>
+ 5 APPLICATION OF THIS LICENSE.
+ </para>
+
+ <para>
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+ </para>
+
+ <para>
+ 6 VERSIONS OF THE LICENSE.
+ </para>
+
+ <para>
+ 6.1. New Versions.
+ </para>
+
+ <para>
+ Grantor may publish revised and/or new versions of the License
+ from time to time. Each version will be given a distinguishing
+ version number.
+ </para>
+
+ <para>
+ 6.2. Effect of New Versions.
+ </para>
+
+ <para>
+ Once Covered Code has been published under a particular version
+ of the License, You may always continue to use it under the
+ terms of that version. You may also choose to use such Covered
+ Code under the terms of any subsequent version of the License.
+ </para>
+
+ <para>
+ 6.3. Derivative Works.
+ </para>
+
+ <para>
+ If You create or use a modified version of this License (which
+ you may only do in order to apply it to code which is not
+ already Covered Code governed by this License), You must (a)
+ rename Your license so that the phrase "gSOAP" or any
+ confusingly similar phrase do not appear in your license (except
+ to note that your license differs from this License) and (b)
+ otherwise make it clear that Your version of the license
+ contains terms which differ from the gSOAP Public License.
+ (Filling in the name of the Initial Developer, Original Code or
+ Contributor in the notice described in Exhibit A shall not of
+ themselves be deemed to be modifications of this License.)
+ </para>
+
+ <para>
+ 7 DISCLAIMER OF WARRANTY.
+ </para>
+
+ <para>
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED OR
+ STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE,
+ NONINFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY RIGHTS, AND
+ ANY WARRANTY THAT MAY ARISE BY REASON OF TRADE USAGE, CUSTOM, OR
+ COURSE OF DEALING. WITHOUT LIMITING THE FOREGOING, YOU
+ ACKNOWLEDGE THAT THE SOFTWARE IS PROVIDED "AS IS" AND THAT THE
+ AUTHORS DO NOT WARRANT THE SOFTWARE WILL RUN UNINTERRUPTED OR
+ ERROR FREE. LIMITED LIABILITY THE ENTIRE RISK AS TO RESULTS AND
+ PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU. UNDER NO
+ CIRCUMSTANCES WILL THE AUTHORS BE LIABLE FOR ANY SPECIAL,
+ INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+ KIND OR NATURE WHATSOEVER, WHETHER BASED ON CONTRACT, WARRANTY,
+ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE,
+ ARISING OUT OF OR IN ANY WAY RELATED TO THE SOFTWARE, EVEN IF
+ THE AUTHORS HAVE BEEN ADVISED ON THE POSSIBILITY OF SUCH DAMAGE
+ OR IF SUCH DAMAGE COULD HAVE BEEN REASONABLY FORESEEN, AND
+ NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
+ EXCLUSIVE REMEDY PROVIDED. SUCH LIMITATION ON DAMAGES INCLUDES,
+ BUT IS NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, LOST
+ PROFITS, LOSS OF DATA OR SOFTWARE, WORK STOPPAGE, COMPUTER
+ FAILURE OR MALFUNCTION OR IMPAIRMENT OF OTHER GOODS. IN NO EVENT
+ WILL THE AUTHORS BE LIABLE FOR THE COSTS OF PROCUREMENT OF
+ SUBSTITUTE SOFTWARE OR SERVICES. YOU ACKNOWLEDGE THAT THIS
+ SOFTWARE IS NOT DESIGNED FOR USE IN ON-LINE EQUIPMENT IN
+ HAZARDOUS ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR FACILITIES,
+ AIRCRAFT NAVIGATION OR CONTROL, OR LIFE-CRITICAL APPLICATIONS.
+ THE AUTHORS EXPRESSLY DISCLAIM ANY LIABILITY RESULTING FROM USE
+ OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS
+ ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RESPECT OF ANY ACTIONS
+ OR CLAIMS BASED ON THE USE OF THE SOFTWARE IN ANY SUCH ON-LINE
+ EQUIPMENT IN HAZARDOUS ENVIRONMENTS BY YOU. FOR PURPOSES OF THIS
+ PARAGRAPH, THE TERM "LIFE-CRITICAL APPLICATION" MEANS AN
+ APPLICATION IN WHICH THE FUNCTIONING OR MALFUNCTIONING OF THE
+ SOFTWARE MAY RESULT DIRECTLY OR INDIRECTLY IN PHYSICAL INJURY OR
+ LOSS OF HUMAN LIFE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS
+ AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+ </para>
+
+ <para>
+ 8 TERMINATION.
+ </para>
+
+ <para>
+ 8.1.
+ </para>
+
+ <para>
+ This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail
+ to cure such breach within 30 days of becoming aware of the
+ breach. All sublicenses to the Covered Code which are properly
+ granted shall survive any termination of this License.
+ Provisions which, by their nature, must remain in effect beyond
+ the termination of this License shall survive.
+ </para>
+
+ <para>
+ 8.2.
+ </para>
+
+ <para>
+ 8.3.
+ </para>
+
+ <para>
+ If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved
+ (such as by license or settlement) prior to the initiation of
+ patent infringement litigation, then the reasonable value of the
+ licenses granted by such Participant under Sections 2.1 or 2.2
+ shall be taken into account in determining the amount or value
+ of any payment or license.
+ </para>
+
+ <para>
+ 8.4. In the event of termination under Sections 8.1 or 8.2
+ above, all end user license agreements (excluding distributors
+ and resellers) which have been validly granted by You or any
+ distributor hereunder prior to termination shall survive
+ termination.
+ </para>
+
+ <para>
+ 9 LIMITATION OF LIABILITY.
+ </para>
+
+ <para>
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE
+ TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE,
+ COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL
+ DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED
+ OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY
+ SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE
+ LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW
+ THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL
+ DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+ </para>
+
+ <para>
+ 10 U.S. GOVERNMENT END USERS.
+ </para>
+
+ <para>
+ 11 MISCELLANEOUS.
+ </para>
+
+ <para>
+ 12 RESPONSIBILITY FOR CLAIMS.
+ </para>
+
+ <para>
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any
+ admission of liability.
+ </para>
+
+ <para>
+ EXHIBIT A.
+ </para>
+
+ <para>
+ "The contents of this file are subject to the gSOAP Public
+ License Version 1.3 (the "License"); you may not use this file
+ except in compliance with the License. You may obtain a copy of
+ the License at
+ <ulink url="http://www.cs.fsu.edu/~engelen/soaplicense.html" />.
+ Software distributed under the License is distributed on an "AS
+ IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ rights and limitations under the License.
+ </para>
+
+ <para>
+ The Original Code of the gSOAP Software is: stdsoap.h,
+ stdsoap2.h, stdsoap.c, stdsoap2.c, stdsoap.cpp, stdsoap2.cpp,
+ soapcpp2.h, soapcpp2.c, soapcpp2_lex.l, soapcpp2_yacc.y,
+ error2.h, error2.c, symbol2.c, init2.c, soapdoc2.html, and
+ soapdoc2.pdf, httpget.h, httpget.c, stl.h, stldeque.h,
+ stllist.h, stlvector.h, stlset.h.
+ </para>
+
+ <para>
+ The Initial Developer of the Original Code is Robert A. van
+ Engelen. Portions created by Robert A. van Engelen are Copyright
+ (C) 2001-2004 Robert A. van Engelen, Genivia inc. All Rights
+ Reserved.
+ </para>
+
+ <para>
+ Contributor(s): "________________________." [Note: The text of
+ this Exhibit A may differ slightly form the text of the notices
+ in the Source Code files of the Original code. You should use
+ the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+ </para>
+
+ <para>
+ EXHIBIT B.
+ </para>
+
+ <para>
+ "Part of the software embedded in this product is gSOAP
+ software. Portions created by gSOAP are Copyright (C) 2001-2004
+ Robert A. van Engelen, Genivia inc. All Rights Reserved. THE
+ SOFTWARE IN THIS PRODUCT WAS IN PART PROVIDED BY GENIVIA INC AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE."
+ </para>
+
+ </sect2>
+
+ <sect2 id="licChromium">
+
+ <title>Chromium Licenses</title>
+
+ <sect3>
+
+ <title>Main License</title>
+
+ <para>
+ Copyright (c) 2002, Stanford University All rights reserved.
+ </para>
+
+ <para>
+ Some portions of Chromium are copyrighted by individiual
+ organizations. Please see the files COPYRIGHT.LLNL and
+ COPYRIGHT.REDHAT for more information.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the
+ following conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the
+ following disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of Stanford University nor the names of
+ its contributors may be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect3>
+
+ <sect3>
+
+ <title>COPYRIGHT.LLNL File</title>
+
+ <para>
+ This Chromium distribution contains information and code which
+ is covered under the following notice:
+ </para>
+
+ <para>
+ Copyright (c) 2002, The Regents of the University of
+ California. Produced at the Lawrence Livermore National
+ Laboratory For details, contact: Randall Frank
+ (rjfrank@llnl.gov). UCRL-CODE-2002-058 All rights reserved.
+ </para>
+
+ <para>
+ This file is part of Chromium. For details, see accompanying
+ documentation.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the
+ following conditions are met:
+ </para>
+
+ <para>
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the disclaimer below.
+ </para>
+
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the disclaimer
+ (as noted below) in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+
+ <para>
+ Neither the name of the UC/LLNL nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+ </para>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE REGENTS OF THE UNIVERSITY OF
+ CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ <para>
+ Additional BSD Notice
+ </para>
+
+ <para>
+ 1. This notice is required to be provided under our contract
+ with the U.S. Department of Energy (DOE). This work was
+ produced at the University of California, Lawrence Livermore
+ National Laboratory under Contract No. W-7405-ENG-48 with the
+ DOE.
+ </para>
+
+ <para>
+ 2. Neither the United States Government nor the University of
+ California nor any of their employees, makes any warranty,
+ express or implied, or assumes any liability or responsibility
+ for the accuracy, completeness, or usefulness of any
+ information, apparatus, product, or process disclosed, or
+ represents that its use would not infringe privately-owned
+ rights.
+ </para>
+
+ <para>
+ 3. Also, reference herein to any specific commercial products,
+ process, or services by trade name, trademark, manufacturer or
+ otherwise does not necessarily constitute or imply its
+ endorsement, recommendation, or favoring by the United States
+ Government or the University of California. The views and
+ opinions of authors expressed herein do not necessarily state
+ or reflect those of the United States Government or the
+ University of California, and shall not be used for
+ advertising or product endorsement purposes.
+ </para>
+
+ </sect3>
+
+ <sect3>
+
+ <title>COPYRIGHT.REDHAT File</title>
+
+ <para>
+ This Chromium distribution contains information and code which
+ is covered under the following notice:
+ </para>
+
+ <para>
+ Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.
+ </para>
+
+ <para>
+ All Rights Reserved.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation on the rights to
+ use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to
+ whom the Software is furnished to do so, subject to the
+ following conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice
+ (including the next paragraph) shall be included in all copies
+ or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR
+ THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="licLibCurl">
+
+ <title>curl License</title>
+
+ <para>
+ COPYRIGHT AND PERMISSION NOTICE
+ </para>
+
+ <para>
+ Copyright (c) 1996 - 2009, Daniel Stenberg, daniel@haxx.se.
+ </para>
+
+ <para>
+ All rights reserved.
+ </para>
+
+ <para>
+ Permission to use, copy, modify, and distribute this software
+ for any purpose with or without fee is hereby granted, provided
+ that the above copyright notice and this permission notice
+ appear in all copies.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ <para>
+ Except as contained in this notice, the name of a copyright
+ holder shall not be used in advertising or otherwise to promote
+ the sale, use or other dealings in this Software without prior
+ written authorization of the copyright holder.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLibgd">
+
+ <title>libgd License</title>
+
+ <para>
+ Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002 by Cold Spring Harbor Laboratory. Funded under Grant
+ P41-RR02188 by the National Institutes of Health.
+ </para>
+
+ <para>
+ Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
+ Boutell.Com, Inc.
+ </para>
+
+ <para>
+ Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
+ Philip Warner.
+ </para>
+
+ <para>
+ Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
+ Roelofs.
+ </para>
+
+ <para>
+ Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002
+ John Ellson (ellson@lucent.com).
+ </para>
+
+ <para>
+ Portions relating to gdft.c copyright 2001, 2002 John Ellson
+ (ellson@lucent.com).
+ </para>
+
+ <para>
+ Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007 Pierre-Alain Joye (pierre@libgd.org).
+ </para>
+
+ <para>
+ Portions relating to JPEG and to color quantization copyright
+ 2000, 2001, 2002, Doug Becker and copyright (C) 1994, 1995,
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This
+ software is based in part on the work of the Independent JPEG
+ Group. See the file README-JPEG.TXT for more information.
+ </para>
+
+ <para>
+ Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
+ Szmurlo and Johan Van den Brande.
+ </para>
+
+ <para>
+ Permission has been granted to copy, distribute and modify gd in
+ any context without fee, including a commercial application,
+ provided that this notice is present in user-accessible
+ supporting documentation.
+ </para>
+
+ <para>
+ This does not affect your ownership of the derived work itself,
+ and the intent is to assure proper credit for the authors of gd,
+ not to interfere with your productive use of gd. If you have
+ questions, ask. "Derived works" includes all programs that
+ utilize the library. Credit must be given in user-accessible
+ documentation.
+ </para>
+
+ <para>
+ This software is provided "AS IS." The copyright holders
+ disclaim all warranties, either express or implied, including
+ but not limited to implied warranties of merchantability and
+ fitness for a particular purpose, with respect to this code and
+ accompanying documentation.
+ </para>
+
+ <para>
+ Although their code does not appear in gd, the authors wish to
+ thank David Koblas, David Rowley, and Hutchison Avenue Software
+ Corporation for their prior contributions.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licBsdIntel">
+
+ <title>BSD License from Intel</title>
+
+ <para>
+ All rights reserved.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of the Intel Corporation nor the names of
+ its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licJPEG">
+
+ <title>libjpeg License</title>
+
+ <para>
+ The authors make NO WARRANTY or representation, either express
+ or implied, with respect to this software, its quality,
+ accuracy, merchantability, or fitness for a particular purpose.
+ This software is provided "AS IS", and you, its user, assume the
+ entire risk as to its quality and accuracy.
+ </para>
+
+ <para>
+ This software is copyright (C) 1991-2010, Thomas G. Lane, Guido
+ Vollbeding. All Rights Reserved except as specified below.
+ </para>
+
+ <para>
+ Permission is hereby granted to use, copy, modify, and
+ distribute this software (or portions thereof) for any purpose,
+ without fee, subject to these conditions:
+ </para>
+
+ <para>
+ (1) If any part of the source code for this software is
+ distributed, then this README file must be included, with this
+ copyright and no-warranty notice unaltered; and any additions,
+ deletions, or changes to the original files must be clearly
+ indicated in accompanying documentation.
+ </para>
+
+ <para>
+ (2) If only executable code is distributed, then the
+ accompanying documentation must state that "this software is
+ based in part on the work of the Independent JPEG Group".
+ </para>
+
+ <para>
+ (3) Permission for use of this software is granted only if the
+ user accepts full responsibility for any undesirable
+ consequences; the authors accept NO LIABILITY for damages of any
+ kind.
+ </para>
+
+ <para>
+ These conditions apply to any software derived from or based on
+ the IJG code, not just to the unmodified library. If you use our
+ work, you ought to acknowledge us.
+ </para>
+
+ <para>
+ Permission is NOT granted for the use of any IJG author's name
+ or company name in advertising or publicity relating to this
+ software or products derived from it. This software may be
+ referred to only as "the Independent JPEG Group's software".
+ </para>
+
+ <para>
+ We specifically permit and encourage the use of this software as
+ the basis of commercial products, provided that all warranty or
+ liability claims are assumed by the product vendor.
+ </para>
+
+ <para>
+ ansi2knr.c is included in this distribution by permission of L.
+ Peter Deutsch, sole proprietor of its copyright holder, Aladdin
+ Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the
+ above copyright and conditions, but instead by the usual
+ distribution terms of the Free Software Foundation; principally,
+ that you must include source code if you redistribute it. (See
+ the file ansi2knr.c for full details.) However, since ansi2knr.c
+ is not needed as part of any program generated from the IJG
+ code, this does not limit you more than the foregoing paragraphs
+ do.
+ </para>
+
+ <para>
+ The Unix configuration script "configure" was produced with GNU
+ Autoconf. It is copyright by the Free Software Foundation but is
+ freely distributable. The same holds for its supporting scripts
+ (config.guess, config.sub, ltmain.sh). Another support script,
+ install-sh, is copyright by X Consortium but is also freely
+ distributable.
+ </para>
+
+ <para>
+ The IJG distribution formerly included code to read and write
+ GIF files. To avoid entanglement with the Unisys LZW patent, GIF
+ reading support has been removed altogether, and the GIF writer
+ has been simplified to produce "uncompressed GIFs". This
+ technique does not use the LZW algorithm; the resulting GIF
+ files are larger than usual, but are readable by all standard
+ GIF decoders.
+ </para>
+
+ <para>
+ We are required to state that
+ </para>
+
+ <para>
+ "The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."
+ </para>
+
+ </sect2>
+
+ <sect2 id="licJPEGSIMD">
+
+ <title>x86 SIMD Extension for IJG JPEG Library License</title>
+
+ <para>
+ Copyright 2009 Pierre Ossman &lt;ossman@cendio.se&gt; for Cendio
+ AB
+ </para>
+
+ <para>
+ Copyright 2010 D. R. Commander
+ </para>
+
+ <para>
+ Based on
+ </para>
+
+ <para>
+ x86 SIMD extension for IJG JPEG library - version 1.02
+ </para>
+
+ <para>
+ Copyright (C) 1999-2006, MIYASAKA Masaru.
+ </para>
+
+ <para>
+ This software is provided 'as-is', without any express or
+ implied warranty. In no event will the authors be held liable
+ for any damages arising from the use of this software.
+ </para>
+
+ <para>
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+ </para>
+
+ <para>
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ </para>
+
+ <para>
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ </para>
+
+ <para>
+ 3. This notice may not be removed or altered from any source
+ distribution.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licFreeBsd">
+
+ <title>FreeBSD License</title>
+
+ <para>
+ The compilation of software known as FreeBSD is distributed
+ under the following terms:
+ </para>
+
+ <para>
+ Copyright (c) 1992-2009 The FreeBSD Project. All rights
+ reserved.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS
+ IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licNetBsd">
+
+ <title>NetBSD License</title>
+
+ <para>
+ Copyright (c) 1992, 1993 The Regents of the University of
+ California. All rights reserved.
+ </para>
+
+ <para>
+ This software was developed by the Computer Systems Engineering
+ group at Lawrence Berkeley Laboratory under DARPA contract BG
+ 91-66 and contributed to Berkeley.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS
+ IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licPcre">
+
+ <title>PCRE License</title>
+
+ <para>
+ PCRE is a library of functions to support regular expressions
+ whose syntax and semantics are as close as possible to those of
+ the Perl 5 language.
+ </para>
+
+ <para>
+ Release 8 of PCRE is distributed under the terms of the "BSD"
+ licence, as specified below. The documentation for PCRE,
+ supplied in the "doc" directory, is distributed under the same
+ terms as the software itself.
+ </para>
+
+ <para>
+ The basic library functions are written in C and are
+ freestanding. Also included in the distribution is a set of C++
+ wrapper functions, and a just-in-time compiler that can be used
+ to optimize pattern matching. These are both optional features
+ that can be omitted when the library is built.
+ </para>
+
+ <para>
+ THE BASIC LIBRARY FUNCTIONS. Written by: Philip Hazel; Email
+ local part: ph10; Email domain: cam.ac.uk University of
+ Cambridge Computing Service, Cambridge, England. Copyright (c)
+ 1997-2012 University of Cambridge All rights reserved.
+ </para>
+
+ <para>
+ PCRE JUST-IN-TIME COMPILATION SUPPORT. Written by: Zoltan
+ Herczeg; Email local part: hzmester; Emain domain: freemail.hu
+ Copyright(c) 2010-2012 Zoltan Herczeg All rights reserved.
+ </para>
+
+ <para>
+ STACK-LESS JUST-IN-TIME COMPILER. Written by: Zoltan Herczeg;
+ Email local part: hzmester; Emain domain: freemail.hu
+ Copyright(c) 2009-2012 Zoltan Herczeg All rights reserved.
+ </para>
+
+ <para>
+ THE C++ WRAPPER FUNCTIONS. Contributed by: Google Inc. Copyright
+ (c) 2007-2012, Google Inc. All rights reserved.
+ </para>
+
+ <para>
+ THE "BSD" LICENCE. Redistribution and use in source and binary
+ forms, with or without modification, are permitted provided that
+ the following conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of the University of Cambridge nor the name
+ of Google Inc. nor the names of their contributors may be
+ used to endorse or promote products derived from this
+ software without specific prior written permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licLibffi">
+
+ <title>libffi License</title>
+
+ <para>
+ Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc and others.
+ See source files for details.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the ``Software''), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+ AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licFltk">
+
+ <title>FLTK License</title>
+
+ <para>
+ December 11, 2001
+ </para>
+
+ <para>
+ The FLTK library and included programs are provided under the
+ terms of the GNU Library General Public License (LGPL) with the
+ following exceptions:
+ </para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>
+ Modifications to the FLTK configure script, config header
+ file, and makefiles by themselves to support a specific
+ platform do not constitute a modified or derivative work.
+ </para>
+
+ <para>
+ The authors do request that such modifications be
+ contributed to the FLTK project - send all contributions
+ through the "Software Trouble Report" on the following page:
+ </para>
+
+ <para>
+ http://www.fltk.org/str.php
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Widgets that are subclassed from FLTK widgets do not
+ constitute a derivative work.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Static linking of applications and widgets to the FLTK
+ library does not constitute a derivative work and does not
+ require the author to provide source code for the
+ application or widget, use the shared FLTK libraries, or
+ link their applications or widgets against a user-supplied
+ version of FLTK.
+ </para>
+
+ <para>
+ If you link the application or widget to a modified version
+ of FLTK, then the changes to FLTK must be provided under the
+ terms of the LGPL in sections 1, 2, and 4.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You do not have to provide a copy of the FLTK license with
+ programs that are linked to the FLTK library, nor do you
+ have to identify the FLTK license in your program or
+ documentation as required by section 6 of the LGPL.
+ </para>
+
+ <para>
+ However, programs must still identify their use of FLTK. The
+ following example statement can be included in user
+ documentation to satisfy this requirement:
+ </para>
+
+ <para>
+ [program/widget] is based in part on the work of the FLTK
+ project (http://www.fltk.org).
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect2>
+
+ <sect2 id="licExpat">
+
+ <title>Expat License</title>
+
+ <para>
+ Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center
+ Ltd and Clark Cooper
+ </para>
+
+ <para>
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat
+ maintainers.
+ </para>
+
+ <para>
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+ </para>
+
+ <para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para>
+
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licFontconfig">
+
+ <title>Fontconfig License</title>
+
+ <para>
+ Copyright (C) 2001, 2003 Keith Packard
+ </para>
+
+ <para>
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that copyright notice and this
+ permission notice appear in supporting documentation, and that
+ the name of the author(s) not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. The authors make no
+ representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+ </para>
+
+ <para>
+ THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY
+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+ IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ THIS SOFTWARE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licFreetype">
+
+ <title>Freetype License</title>
+
+ <para>
+ 2006-Jan-27
+ </para>
+
+ <para>
+ Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and
+ Werner Lemberg
+ </para>
+
+ <sect3>
+
+ <title>Introduction</title>
+
+ <para>
+ The FreeType Project is distributed in several archive
+ packages; some of them may contain, in addition to the
+ FreeType font engine, various tools and contributions which
+ rely on, or relate to, the FreeType Project.
+ </para>
+
+ <para>
+ This license applies to all files found in such packages, and
+ which do not fall under their own explicit license. The
+ license affects thus the FreeType font engine, the test
+ programs, documentation and makefiles, at the very least.
+ </para>
+
+ <para>
+ This license was inspired by the BSD, Artistic, and IJG
+ (Independent JPEG Group) licenses, which all encourage
+ inclusion and use of free software in commercial and freeware
+ products alike. As a consequence, its main points are that:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ We don't promise that this software works. However, we
+ will be interested in any kind of bug reports. (`as is'
+ distribution)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can use this software for whatever you want, in parts
+ or full form, without having to pay us. (`royalty-free'
+ usage)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You may not pretend that you wrote this software. If you
+ use it, or only parts of it, in a program, you must
+ acknowledge somewhere in your documentation that you have
+ used the FreeType code. (`credits')
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ We specifically permit and encourage the inclusion of this
+ software, with or without modifications, in commercial
+ products. We disclaim all warranties covering The FreeType
+ Project and assume no liability related to The FreeType
+ Project.
+ </para>
+
+ <para>
+ Finally, many people asked us for a preferred form for a
+ credit/disclaimer to use in compliance with this license. We
+ thus encourage you to use the following text:
+ </para>
+
+ <para>
+ Portions of this software are copyright (C) &lt;year&gt; The
+ FreeType Project (www.freetype.org). All rights reserved.
+ </para>
+
+ <para>
+ Please replace &lt;year&gt; with the value from the FreeType
+ version you actually use.
+ </para>
+
+ </sect3>
+
+ <sect3>
+
+ <title>Legal Terms</title>
+
+ <para>
+ 0. Definitions
+ </para>
+
+ <para>
+ Throughout this license, the terms `package', `FreeType
+ Project', and `FreeType archive' refer to the set of files
+ originally distributed by the authors (David Turner, Robert
+ Wilhelm, and Werner Lemberg) as the `FreeType Project', be
+ they named as alpha, beta or final release.
+ </para>
+
+ <para>
+ `You' refers to the licensee, or person using the project,
+ where `using' is a generic term including compiling the
+ project's source code as well as linking it to form a
+ `program' or `executable'. This program is referred to as `a
+ program using the FreeType engine'.
+ </para>
+
+ <para>
+ This license applies to all files distributed in the original
+ FreeType Project, including all source code, binaries and
+ documentation, unless otherwise stated in the file in its
+ original, unmodified form as distributed in the original
+ archive. If you are unsure whether or not a particular file is
+ covered by this license, you must contact us to verify this.
+ </para>
+
+ <para>
+ The FreeType Project is copyright (C) 1996-2000 by David
+ Turner, Robert Wilhelm, and Werner Lemberg. All rights
+ reserved except as specified below.
+ </para>
+
+ <para>
+ 1. No Warranty
+ </para>
+
+ <para>
+ THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF
+ ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
+ LIMITED TO, WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE
+ OR THE INABILITY TO USE, OF THE FREETYPE PROJECT.
+ </para>
+
+ <para>
+ 2. Redistribution
+ </para>
+
+ <para>
+ This license grants a worldwide, royalty-free, perpetual and
+ irrevocable right and license to use, execute, perform,
+ compile, display, copy, create derivative works of, distribute
+ and sublicense the FreeType Project (in both source and object
+ code forms) and derivative works thereof for any purpose; and
+ to authorize others to exercise some or all of the rights
+ granted herein, subject to the following conditions:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistribution of source code must retain this license
+ file (`FTL.TXT') unaltered; any additions, deletions or
+ changes to the original files must be clearly indicated in
+ accompanying documentation. The copyright notices of the
+ unaltered, original files must be preserved in all copies
+ of source files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistribution in binary form must provide a disclaimer
+ that states that the software is based in part of the work
+ of the FreeType Team, in the distribution documentation.
+ We also encourage you to put an URL to the FreeType web
+ page in your documentation, though this isn't mandatory.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ These conditions apply to any software derived from or based
+ on the FreeType Project, not just the unmodified files. If you
+ use our work, you must acknowledge us. However, no fee need be
+ paid to us.
+ </para>
+
+ <para>
+ 3. Advertising
+ </para>
+
+ <para>
+ Neither the FreeType authors and contributors nor you shall
+ use the name of the other for commercial, advertising, or
+ promotional purposes without specific prior written
+ permission.
+ </para>
+
+ <para>
+ We suggest, but do not require, that you use one or more of
+ the following phrases to refer to this software in your
+ documentation or advertising materials: `FreeType Project',
+ `FreeType Engine', `FreeType library', or `FreeType
+ Distribution'.
+ </para>
+
+ <para>
+ As you have not signed this license, you are not required to
+ accept it. However, as the FreeType Project is copyrighted
+ material, only this license, or another one contracted with
+ the authors, grants you the right to use, distribute, and
+ modify it. Therefore, by using, distributing, or modifying the
+ FreeType Project, you indicate that you understand and accept
+ all the terms of this license.
+ </para>
+
+ <para>
+ 4. Contacts
+ </para>
+
+ <para>
+ There are two mailing lists related to FreeType:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ freetype@nongnu.org
+ </para>
+
+ <para>
+ Discusses general use and applications of FreeType, as
+ well as future and wanted additions to the library and
+ distribution. If you are looking for support, start in
+ this list if you haven't found anything to help you in the
+ documentation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ freetype-devel@nongnu.org
+ </para>
+
+ <para>
+ Discusses bugs, as well as engine internals, design
+ issues, specific licenses, porting, etc.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Our home page can be found at
+ </para>
+
+ <para>
+ http://www.freetype.org
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="licVPX">
+
+ <title>VPX License</title>
+
+ <para>
+ Copyright (c) 2010, The WebM Project authors. All rights
+ reserved.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of Google, nor the WebM Project, nor the
+ names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ <sect2 id="licOpus">
+
+ <title>Opus License</title>
+
+ <para>
+ Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, Jean-Marc
+ Valin, Timothy B. Terriberry, CSIRO, Gregory Maxwell, Mark
+ Borgerding, Erik de Castro Lopo
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of Internet Society, IETF or IETF Trust,
+ nor the names of specific contributors, may be used to
+ endorse or promote products derived from this software
+ without specific prior written permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE. Opus is subject to the
+ royalty-free patent licenses which are specified at: Xiph.Org
+ Foundation: https://datatracker.ietf.org/ipr/1524/ Microsoft
+ Corporation: https://datatracker.ietf.org/ipr/1914/ Broadcom
+ Corporation: https://datatracker.ietf.org/ipr/1526/
+ </para>
+
+ </sect2>
+
+ <sect2 id="licOsxFuse">
+
+ <title>FUSE for macOS License</title>
+
+ <para>
+ Copyright (c) 2011-2017 Benjamin Fleischer; Copyright (c)
+ 2011-2012 Erik Larsson; All rights reserved.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Neither the name of the copyright holder nor the names of
+ its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</appendix>
diff --git a/doc/manual/en_US/user_Troubleshooting.xml b/doc/manual/en_US/user_Troubleshooting.xml
new file mode 100644
index 00000000..d179266c
--- /dev/null
+++ b/doc/manual/en_US/user_Troubleshooting.xml
@@ -0,0 +1,1872 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="Troubleshooting">
+
+ <title>Troubleshooting</title>
+
+ <para>
+ This chapter provides answers to commonly asked questions. In order
+ to improve your user experience with &product-name;, it is
+ recommended to read this section to learn more about common pitfalls
+ and get recommendations on how to use the product.
+ </para>
+
+ <sect1 id="ts_procs-tools">
+
+ <title>Procedures and Tools</title>
+
+ <sect2 id="ts_categorize-isolate">
+
+ <title>Categorizing and Isolating Problems</title>
+
+ <para>
+ More often than not, a virtualized guest behaves like a physical
+ system. Any problems that a physical machine would encounter, a
+ virtual machine will encounter as well. If, for example,
+ Internet connectivity is lost due to external issues, virtual
+ machines will be affected just as much as physical ones.
+ </para>
+
+ <para>
+ If a true &product-name; problem is encountered, it helps to
+ categorize and isolate the problem first. Here are some of the
+ questions that should be answered before reporting a problem:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Is the problem specific to a certain guest OS? Or a specific
+ release of a guest OS? Especially with Linux guest related
+ problems, the issue may be specific to a certain
+ distribution and version of Linux.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem specific to a certain host OS? Problems are
+ usually not host OS specific, because most of the
+ &product-name; code base is shared across all supported
+ platforms, but especially in the areas of networking and USB
+ support, there are significant differences between host
+ platforms. Some GUI related issues are also host specific.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem specific to certain host hardware? This
+ category of issues is typically related to the host CPU.
+ Because of significant differences between VT-x and AMD-V,
+ problems may be specific to one or the other technology. The
+ exact CPU model may also make a difference because different
+ CPUs support different features, which may affect certain
+ aspects of guest CPU operation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem specific to guest SMP? That is, is it related
+ to the number of virtual CPUs (VCPUs) in the guest? Using
+ more than one CPU usually significantly affects the internal
+ operation of a guest OS.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem specific to the Guest Additions? In some
+ cases, this is obvious, such as a shared folders problem. In
+ other cases such as display problems, it may be less
+ obvious. If the problem is Guest Additions specific, is it
+ also specific to a certain version of the Guest Additions?
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem specific to a certain environment? Some
+ problems are related to a particular environment external to
+ the VM. This usually involves network setup. Certain
+ configurations of external servers such as DHCP or PXE may
+ expose problems which do not occur with other, similar
+ servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Is the problem a regression? Knowing that an issue is a
+ regression usually makes it significantly easier to find the
+ solution. In this case, it is crucial to know which version
+ is affected and which is not.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="collect-debug-info">
+
+ <title>Collecting Debugging Information</title>
+
+ <para>
+ For problem determination, it is often important to collect
+ debugging information which can be analyzed by &product-name;
+ support. This section contains information about what kind of
+ information can be obtained.
+ </para>
+
+ <para>
+ Every time &product-name; starts up a VM, a so-called
+ <emphasis>release log file</emphasis> is created, containing
+ lots of information about the VM configuration and runtime
+ events. The log file is called <filename>VBox.log</filename> and
+ resides in the VM log file folder, which is
+ <filename>$HOME/VirtualBox
+ VMs/<replaceable>VM-name</replaceable>/Logs</filename> by
+ default.
+ </para>
+
+ <para>
+ When starting a VM, the configuration file of the last run will
+ be renamed to <filename>.1</filename>, up to
+ <filename>.3</filename>. Sometimes when there is a problem, it
+ is useful to have a look at the logs. Also when requesting
+ support for &product-name;, supplying the corresponding log file
+ is mandatory.
+ </para>
+
+ <para>
+ For convenience, for each virtual machine, the VirtualBox
+ Manager window can show these logs in a window. To access it,
+ select a virtual machine from the list on the left and select
+ <emphasis role="bold">Show Log</emphasis> from the
+ <emphasis role="bold">Machine</emphasis> menu.
+ </para>
+
+ <para>
+ The release log file, <filename>VBox.log</filename>, contains a
+ wealth of diagnostic information, such as Host OS type and
+ version, &product-name; version and build. It also includes a
+ complete dump of the guest's configuration (CFGM), detailed
+ information about the host CPU type and supported features,
+ whether hardware virtualization is enabled, information about
+ VT-x/AMD-V setup, state transitions (such as creating, running,
+ paused, stopping), guest BIOS messages, Guest Additions
+ messages, device-specific log entries and, at the end of
+ execution, final guest state and condensed statistics.
+ </para>
+
+ <para>
+ In case of crashes, it is very important to collect
+ <emphasis>crash dumps</emphasis>. This is true for both host and
+ guest crashes. For information about enabling core dumps on
+ Linux, Oracle Solaris, and Mac OS X systems, refer to the
+ following core dump article on the &product-name; website:
+ </para>
+
+ <para>
+ <ulink url="http://www.virtualbox.org/wiki/Core_dump" />.
+ </para>
+
+ <para>
+ You can also use <command>VBoxManage debugvm</command> to create
+ a dump of a complete virtual machine. See
+ <xref linkend="vboxmanage-debugvm" />.
+ </para>
+
+ <para>
+ For network related problems, it is often helpful to capture a
+ trace of network traffic. If the traffic is routed through an
+ adapter on the host, it is possible to use Wireshark or a
+ similar tool to capture the traffic there. However, this often
+ also includes a lot of traffic unrelated to the VM.
+ </para>
+
+ <para>
+ &product-name; provides an ability to capture network traffic
+ only on a specific VM's network adapter. Refer to the following
+ network tracing article on the &product-name; website for
+ information on enabling this capture:
+ </para>
+
+ <para>
+ <ulink url="http://www.virtualbox.org/wiki/Network_tips" />.
+ </para>
+
+ <para>
+ The trace files created by &product-name; are in
+ <filename>.pcap</filename> format and can be easily analyzed
+ with Wireshark.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_vboxbugreport">
+
+ <title>Using the VBoxBugReport Command to Collect Debug Information
+ Automatically</title>
+
+ <para>
+ The <command>VBoxBugReport</command> command is used to collect
+ debug information automatically for an &product-name;
+ installation. This command can be useful when you need to gather
+ information to send to Oracle Support.
+ </para>
+
+ <para>
+ The following examples show how to use
+ <command>VBoxBugReport</command>.
+ </para>
+
+ <para>
+ By default, the command collects <command>VBoxSVC</command>
+ process logs, device settings, and global configuration data for
+ an &product-name; host.
+ </para>
+
+<screen>$ VBoxBugReport
+ ...
+ 0% - collecting VBoxSVC.log.10...
+ 7% - collecting VBoxSVC.log.9...
+ ...
+ 64% - collecting VBoxSVC.log.1...
+ 71% - collecting VBoxSVC.log...
+ 78% - collecting VirtualBox.xml...
+ 85% - collecting HostUsbDevices...
+ 92% - collecting HostUsbFilters...
+100% - compressing...
+
+Report was written to '2019-03-26-13-32-02-bugreport.tgz'</screen>
+
+ <para>
+ The results are saved as a compressed tar file archive in the
+ same directory where the command is run.
+ </para>
+
+ <para>
+ To specify a different output file location:
+ </para>
+
+<screen>$ VBoxBugReport --output ~/debug/bug004.tgz</screen>
+
+ <para>
+ To output all debug information to a single text file, rather
+ than a <filename>tgz</filename> file:
+ </para>
+
+<screen>$ VBoxBugReport --text</screen>
+
+ <para>
+ To collect information for a specific VM, called
+ <literal>Windows_10</literal>:
+ </para>
+
+<screen>$ VBoxBugReport Windows_10</screen>
+
+ <para>
+ This command collects machine settings, guest properties, and
+ log files for the specified VM. Global configuration information
+ for the host is also included.
+ </para>
+
+ <para>
+ To collect information for several VMs, called
+ <literal>Windows_7</literal>, <literal>Windows_8</literal>, and
+ <literal>Windows_10</literal>:
+ </para>
+
+<screen>$ VBoxBugReport Windows_7 Windows_8 Windows_10</screen>
+
+ <para>
+ To collect information for all VMs:
+ </para>
+
+<screen>$ VBoxBugReport --all</screen>
+
+ <para>
+ To show a full list of the available command options, run
+ <command>VBoxBugReport --help</command>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_debugger">
+
+ <title>The Built-In VM Debugger</title>
+
+ <para>
+ &product-name; includes a built-in VM debugger, which advanced
+ users may find useful. This debugger enables you to examine and,
+ to some extent, control the VM state.
+ </para>
+
+ <warning>
+ <para>
+ Use the VM debugger at your own risk. There is no support for
+ it, and the following documentation is only made available for
+ advanced users with a very high level of familiarity with the
+ x86/AMD64 machine instruction set, as well as detailed
+ knowledge of the PC architecture. A degree of familiarity with
+ the internals of the guest OS in question may also be very
+ helpful.
+ </para>
+ </warning>
+
+ <para>
+ The VM debugger is available in all regular production versions
+ of &product-name;, but it is disabled by default because the
+ average user will have little use for it. There are two ways to
+ access the debugger:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Using a debugger console window displayed alongside the VM
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Using the <command>telnet</command> protocol on port 5000
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The debugger can be enabled in the following ways:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Start the VM directly using <command>VirtualBoxVM
+ --startvm</command>, with an additional
+ <option>--dbg</option>, <option>--debug</option>, or
+ <option>--debug-command-line</option> argument. See the
+ <command>VirtualBoxVM --help</command> command usage help
+ for details.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Set the <literal>VBOX_GUI_DBG_ENABLED</literal> or
+ <literal>VBOX_GUI_DBG_AUTO_SHOW</literal> environment
+ variable to <literal>true</literal> before launching the
+ &product-name; process. Setting these variables, only their
+ presence is checked, is effective even when the first
+ &product-name; process is the VM selector window. VMs
+ subsequently launched from the selector will have the
+ debugger enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Set the <literal>GUI/Dbg/Enabled</literal> extra data item
+ to <literal>true</literal> before launching the VM. This can
+ be set globally or on a per VM basis.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ A new <emphasis role="bold">Debug</emphasis> menu entry is added
+ to the &product-name; application. This menu enables the user to
+ open the debugger console.
+ </para>
+
+ <para>
+ The VM debugger command syntax is loosely modeled on Microsoft
+ and IBM debuggers used on DOS, OS/2, and Windows. Users familiar
+ with symdeb, CodeView, or the OS/2 kernel debugger will find the
+ &product-name; VM debugger familiar.
+ </para>
+
+ <para>
+ The most important command is <command>help</command>. This will
+ print brief usage help for all debugger commands. The set of
+ commands supported by the VM debugger changes frequently and the
+ <command>help</command> command is always up-to-date.
+ </para>
+
+ <para>
+ A brief summary of frequently used commands is as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>stop</command>: Stops the VM execution and enables
+ single stepping
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>g</command>: Continue VM execution
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>t</command>: Single step an instruction
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>rg</command>, <command>rh</command>, and
+ <command>r</command>: Print the guest, hypervisor, and
+ current registers
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>kg</command>, <command>kh</command>, and
+ <command>k</command>: Print the guest, hypervisor, and
+ current call stack
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>da</command>, <command>db</command>,
+ <command>dw</command>, <command>dd</command>,
+ <command>dq</command>: Print memory contents as ASCII,
+ bytes, words, dwords, and qwords
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>u</command>: Unassemble memory
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>dg</command>: Print the guest's GDT
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>di</command>: Print the guest's IDT
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>dl</command>: Print the guest's LDT
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>dt</command>: Print the guest's TSS
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>dp*</command>: Print the guest's page table
+ structures
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>bp</command> and <command>br</command>: Set a
+ normal and recompiler breakpoint
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>bl</command>: List breakpoints
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>bc</command>: Clear a breakpoint
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>writecore</command>: Write a VM core file to disk.
+ See <xref linkend="ts_guest-core-format" />
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See the built-in <command>help</command> for other available
+ commands.
+ </para>
+
+ <para>
+ The VM debugger supports symbolic debugging, although symbols
+ for guest code are often not available. For Oracle Solaris
+ guests, the <command>detect</command> command automatically
+ determines the guest OS version and locates kernel symbols in
+ guest's memory. Symbolic debugging is then available. For Linux
+ guests, the <command>detect</command> commands also determines
+ the guest OS version, but there are no symbols in the guest's
+ memory. Kernel symbols are available in the file
+ <filename>/proc/kallsyms</filename> on Linux guests. This file
+ must be copied to the host, for example using
+ <command>scp</command>. The <command>loadmap</command> debugger
+ command can be used to make the symbol information available to
+ the VM debugger. Note that the <filename>kallsyms</filename>
+ file contains the symbols for the currently loaded modules. If
+ the guest's configuration changes, the symbols will change as
+ well and must be updated.
+ </para>
+
+ <para>
+ For all guests, a simple way to verify that the correct symbols
+ are loaded is the <command>k</command> command. The guest is
+ normally idling and it should be clear from the symbolic
+ information that the guest operating system's idle loop is being
+ executed.
+ </para>
+
+ <para>
+ Another group of debugger commands is the set of
+ <command>info</command> commands. Running <command>info
+ help</command> provides complete usage information. The
+ information commands provide ad-hoc data pertinent to various
+ emulated devices and aspects of the VMM. There is no general
+ guideline for using the <command>info</command> commands, the
+ right command to use depends entirely on the problem being
+ investigated. Some of the <command>info</command> commands are
+ as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>cfgm</command>: Print a branch of the configuration
+ tree
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>cpuid</command>: Display the guest CPUID leaves
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>ioport</command>: Print registered I/O port ranges
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>mmio</command>: Print registered MMIO ranges
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>mode</command>: Print the current paging mode
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>pit</command>: Print the i8254 PIT state
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>pic</command>: Print the i8259A PIC state
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>ohci</command>, <command>ehci</command>,
+ <command>xhci</command>: Print a subset of the OHCI, EHCI,
+ and xHCI USB controller state
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>pcnet0</command>: Print the PCnet state
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>vgatext</command>: Print the contents of the VGA
+ framebuffer formatted as standard text mode
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>timers</command>: Print all VM timers
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The output of the <command>info</command> commands generally
+ requires in-depth knowledge of the emulated device or
+ &product-name; VMM internals. However, when used properly, the
+ information provided can be invaluable.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_guest-core-format">
+
+ <title>VM Core Format</title>
+
+ <para>
+ &product-name; uses the 64-bit ELF format for its VM core files
+ created by <command>VBoxManage debugvm</command>, see
+ <xref linkend="vboxmanage-debugvm" />. The VM core file contain
+ the memory and CPU dumps of the VM and can be useful for
+ debugging your guest OS. The 64-bit ELF object format
+ specification can be obtained at:
+ </para>
+
+ <para>
+ <ulink url="http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf" />.
+ </para>
+
+ <para>
+ The overall layout of the VM core format is as follows:
+ </para>
+
+<screen>[ ELF 64 Header]
+[ Program Header, type PT_NOTE ]
+ &rarr; offset to COREDESCRIPTOR
+[ Program Header, type PT_LOAD ] - one for each contiguous physical memory range
+ &rarr; Memory offset of range
+ &rarr; File offset
+[ Note Header, type NT_VBOXCORE ]
+[ COREDESCRIPTOR ]
+ &rarr; Magic
+ &rarr; VM core file version
+ &rarr; VBox version
+ &rarr; Number of vCPUs etc.
+[ Note Header, type NT_VBOXCPU ] - one for each vCPU
+[ vCPU 1 Note Header ]
+ [ DBGFCORECPU - vCPU 1 dump ]
+[ Additional Notes + Data ] - currently unused
+[ Memory dump ]</screen>
+
+ <para>
+ The memory descriptors contain physical addresses relative to
+ the guest and not virtual addresses. Regions of memory such as
+ MMIO regions are not included in the core file.
+ </para>
+
+ <para>
+ The relevant data structures and definitions can be found in the
+ &product-name; sources under the following header files:
+ <filename>include/VBox/dbgfcorefmt.h</filename>,
+ <filename>include/iprt/x86.h</filename> and
+ <filename>src/VBox/Runtime/include/internal/ldrELFCommon.h</filename>.
+ </para>
+
+ <para>
+ The VM core file can be inspected using
+ <command>elfdump</command> and GNU <command>readelf</command> or
+ other similar utilities.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_general">
+
+ <title>General Troubleshooting</title>
+
+ <sect2 id="ts_config-periodic-flush">
+
+ <title>Guest Shows IDE/SATA Errors for File-Based Images on Slow Host File
+ System</title>
+
+ <para>
+ Occasionally, some host file systems provide very poor writing
+ performance and as a consequence cause the guest to time out
+ IDE/SATA commands. This is normal behavior and should normally
+ cause no real problems, as the guest should repeat commands that
+ have timed out. However, guests such as some Linux versions have
+ severe problems if a write to an image file takes longer than
+ about 15 seconds. Some file systems however require more than a
+ minute to complete a single write, if the host cache contains a
+ large amount of data that needs to be written.
+ </para>
+
+ <para>
+ The symptom for this problem is that the guest can no longer
+ access its files during large write or copying operations,
+ usually leading to an immediate hang of the guest.
+ </para>
+
+ <para>
+ In order to work around this problem, the true fix is to use a
+ faster file system that does not exhibit such unacceptable write
+ performance, it is possible to flush the image file after a
+ certain amount of data has been written. This interval is
+ normally infinite, but can be configured individually for each
+ disk of a VM.
+ </para>
+
+ <para>
+ For IDE disks use the following command:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable>
+"VBoxInternal/Devices/piix3ide/0/LUN#[<replaceable>x</replaceable>]/Config/FlushInterval" [<replaceable>b</replaceable>]</screen>
+
+ <para>
+ For SATA disks use the following command:
+ </para>
+
+<screen>VBoxManage setextradata <replaceable>VM-name</replaceable>
+"VBoxInternal/Devices/ahci/0/LUN#[<replaceable>x</replaceable>]/Config/FlushInterval" [<replaceable>b</replaceable>]</screen>
+
+ <para>
+ <literal>[<replaceable>x</replaceable>]</literal> specifies the
+ disk. For IDE, <literal>0</literal> represents device 0 on the
+ primary channel, <literal>1</literal> represents device 1 on the
+ primary channel, <literal>2</literal> represents device 0 on the
+ secondary channel, and <literal>3</literal> represents device 1
+ on the secondary channel. For SATA, use values between
+ <literal>0</literal> and <literal>29</literal>. This
+ configuration option applies to disks only. Do not use this
+ option for CD or DVD drives.
+ </para>
+
+ <para>
+ The unit of the interval
+ (<literal>[<replaceable>b</replaceable>]</literal>) is the
+ number of bytes written since the last flush. The value for it
+ must be selected so that the occasional long write delays do not
+ occur. Since the proper flush interval depends on the
+ performance of the host and the host filesystem, finding the
+ optimal value that makes the problem disappear requires some
+ experimentation. Values between 1000000 and 10000000 (1 to 10
+ megabytes) are a good starting point. Decreasing the interval
+ both decreases the probability of the problem and the write
+ performance of the guest. Setting the value unnecessarily low
+ will cost performance without providing any benefits. An
+ interval of 1 will cause a flush for each write operation and
+ should solve the problem in any case, but has a severe write
+ performance penalty.
+ </para>
+
+ <para>
+ Providing a value of <literal>0</literal> for
+ <literal>[<replaceable>b</replaceable>]</literal> is treated as
+ an infinite flush interval, effectively disabling this
+ workaround. Removing the extra data key by specifying no value
+ for <literal>[<replaceable>b</replaceable>]</literal> has the
+ same effect.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_ide-sata-flush">
+
+ <title>Responding to Guest IDE/SATA Flush Requests</title>
+
+ <para>
+ If desired, the virtual disk images can be flushed when the
+ guest issues the IDE FLUSH CACHE command. Normally these
+ requests are ignored for improved performance. The parameters
+ below are only accepted for disk drives. They must not be set
+ for DVD drives.
+ </para>
+
+ <para>
+ To enable flushing for IDE disks, issue the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/Devices/piix3ide/0/LUN#[<replaceable>x</replaceable>]/Config/IgnoreFlush" 0</screen>
+
+ <para>
+ <literal>[<replaceable>x</replaceable>]</literal> specifies the
+ disk. Enter <literal>0</literal> for device 0 on the primary
+ channel, <literal>1</literal> for device 1 on the primary
+ channel, <literal>2</literal> for device 0 on the secondary
+ channel, or <literal>3</literal> for device 1 on the secondary
+ channel.
+ </para>
+
+ <para>
+ To enable flushing for SATA disks, issue the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/IgnoreFlush" 0</screen>
+
+ <para>
+ The value [x] that selects the disk can be a value between 0 and
+ 29.
+ </para>
+
+ <para>
+ Note that this does not affect the flushes performed according
+ to the configuration described in
+ <xref linkend="ts_config-periodic-flush"/>. Restoring the
+ default of ignoring flush commands is possible by setting the
+ value to 1 or by removing the key.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_host-freq-boost">
+
+ <title>Performance Variation with Frequency Boosting</title>
+
+ <para>
+ Many multicore processors support some form of frequency
+ boosting, which means that if only one core is utilized, it can
+ run possibly 50% faster or even more than the rated CPU
+ frequency. This causes measured performance to vary somewhat as
+ a function of the momentary overall system load. The exact
+ behavior depends strongly on the specific processor model.
+ </para>
+
+ <para>
+ As a consequence, benchmarking on systems which utilize
+ frequency boosting may produce unstable and non-repeatable
+ results. This is especially true if benchmark runs are short, of
+ the order of seconds. To obtain stable results, benchmarks must
+ be run over longer periods of time and with a constant system
+ load apart from the VM being tested.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_host-freq-scaling">
+
+ <title>Frequency Scaling Effect on CPU Usage</title>
+
+ <para>
+ On some hardware platforms and operating systems, CPU frequency
+ scaling may cause CPU usage reporting to be highly misleading.
+ This happens in situations when the host CPU load is significant
+ but not heavy, such as between 15% to 30% of the maximum.
+ </para>
+
+ <para>
+ Most operating systems determine CPU usage in terms of time
+ spent, measuring for example how many nanoseconds the systems or
+ a process was active within one second. However, in order to
+ save energy, systems can significantly scale down CPU speed when
+ the system is not fully loaded. When the CPU is running at for
+ example one half of its maximum speed, the same number of
+ instructions will take roughly twice as long to execute compared
+ to running at full speed.
+ </para>
+
+ <para>
+ Depending on the specific hardware and host OS, this effect can
+ very significantly skew the CPU usage reported by the OS. The
+ reported CPU usage can be several times higher than what it
+ would have been had the CPU been running at full speed. The
+ effect can be observed both on the host OS and in a guest OS.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-cpu-usage-rept">
+
+ <title>Inaccurate Windows CPU Usage Reporting</title>
+
+ <para>
+ CPU usage reporting tools which come with Windows, such as Task
+ Manager or Resource Monitor, do not take the time spent
+ processing hardware interrupts into account. If the interrupt
+ load is heavy, with thousands of interrupts per second, CPU
+ usage may be significantly underreported.
+ </para>
+
+ <para>
+ This problem affects Windows as both host and guest OS.
+ Sysinternals tools, such as Process Explorer, do not suffer from
+ this problem.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_host-powermgmt">
+
+ <title>Poor Performance Caused by Host Power Management</title>
+
+ <para>
+ On some hardware platforms and operating systems, virtualization
+ performance is negatively affected by host CPU power management.
+ The symptoms may be choppy audio in the guest or erratic guest
+ clock behavior.
+ </para>
+
+ <para>
+ Some of the problems may be caused by firmware and/or host
+ operating system bugs. Therefore, updating the firmware and
+ applying operating systems fixes is recommended.
+ </para>
+
+ <para>
+ For optimal virtualization performance, the C1E power state
+ support in the system's BIOS should be disabled, if such a
+ setting is available. Not all systems support the C1E power
+ state. On Intel systems, the <literal>Intel C State</literal>
+ setting should be disabled. Disabling other power management
+ settings may also improve performance. However, a balance
+ between performance and power consumption must always be
+ considered.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_gui-2d-grayed-out">
+
+ <title>GUI: 2D Video Acceleration Option is Grayed Out</title>
+
+ <para>
+ To use 2D Video Acceleration within &product-name;, your host's
+ video card should support certain OpenGL extensions. On startup,
+ &product-name; checks for those extensions, and, if the test
+ fails, this option is silently grayed out.
+ </para>
+
+ <para>
+ To find out why it has failed, you can manually execute the
+ following command:
+ </para>
+
+<screen>$ VBoxTestOGL --log "log_file_name" --test 2D</screen>
+
+ <para>
+ It will list the required OpenGL extensions one by one and will
+ show you which one failed the test. This usually means that you
+ are running an outdated or misconfigured OpenGL driver on your
+ host. It can also mean that your video chip is lacking required
+ functionality.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_win-guests">
+
+ <title>Windows Guests</title>
+
+ <sect2 id="ts_win7-guest-usb3-support">
+
+ <title>No USB 3.0 Support in Windows 7 Guests</title>
+
+ <para>
+ If a Windows 7 or Windows Server 2008 R2 guest is configured for
+ USB 3.0 (xHCI) support, the guest OS will not have any USB
+ support at all. This happens because Windows 7 predates USB 3.0
+ and therefore does not ship with any xHCI drivers. Microsoft
+ also does not offer any vendor-provided xHCI drivers through
+ Windows Update.
+ </para>
+
+ <para>
+ To solve this problem, it is necessary to download and install
+ the Intel xHCI driver in the guest. Intel offers the driver as
+ the USB 3.0 eXtensible Host Controller (xHCI) driver for Intel 7
+ Series/C216 chipsets.
+ </para>
+
+ <para>
+ Note that the driver only supports Windows 7 and Windows Server
+ 2008 R2. The driver package includes support for both 32-bit and
+ 64-bit OS variants.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-bluescreen">
+
+ <title>Windows Bluescreens After Changing VM Configuration</title>
+
+ <para>
+ Changing certain virtual machine settings can cause Windows
+ guests to fail during start up with a bluescreen. This may
+ happen if you change VM settings after installing Windows, or if
+ you copy a disk image with an already installed Windows to a
+ newly created VM which has settings that differ from the
+ original machine.
+ </para>
+
+ <para>
+ This applies in particular to the following settings:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The ACPI and I/O APIC settings should never be changed after
+ installing Windows. Depending on the presence of these
+ hardware features, the Windows installation program chooses
+ special kernel and device driver versions and will fail to
+ startup should these hardware features be removed. Enabling
+ them for a Windows VM which was installed without them does
+ not cause any harm. However, Windows will not use these
+ features in this case.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Changing the storage controller hardware will cause bootup
+ failures as well. This might also apply to you if you copy a
+ disk image from an older version of &product-name; to a new
+ virtual machine. The default subtype of IDE controller
+ hardware used by &product-name; is PIIX4. Make sure that the
+ storage controller settings are identical.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-bluescreen-smp">
+
+ <title>Windows 0x101 Bluescreens with SMP Enabled (IPI Timeout)</title>
+
+ <para>
+ If a VM is configured to have more than one processor
+ (symmetrical multiprocessing, SMP), some configurations of
+ Windows guests crash with an 0x101 error message, indicating a
+ timeout for interprocessor interrupts (IPIs). These interrupts
+ synchronize memory management between processors.
+ </para>
+
+ <para>
+ According to Microsoft, this is due to a race condition in
+ Windows. A hotfix is available from Microsoft.
+ </para>
+
+ <para>
+ If this does not help, please reduce the number of virtual
+ processors to 1.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win2k-guest-install">
+
+ <title>Windows 2000 Installation Failures</title>
+
+ <para>
+ When installing Windows 2000 guests, you might run into one of
+ the following issues:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Installation reboots, usually during component registration.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Installation fills the whole hard disk with empty log files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Installation complains about a failure installing
+ <filename>msgina.dll</filename>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ These problems are all caused by a bug in the hard disk driver
+ of Windows 2000. After issuing a hard disk request, there is a
+ race condition in the Windows driver code which leads to
+ corruption if the operation completes too fast. For example, the
+ hardware interrupt from the IDE controller arrives too soon.
+ With physical hardware, there is a guaranteed delay in most
+ systems so the problem is usually hidden there. However, it
+ should be possible to also reproduce it on physical hardware. In
+ a virtual environment, it is possible for the operation to be
+ done immediately, especially on very fast systems with multiple
+ CPUs, and the interrupt is signaled sooner than on a physical
+ system. The solution is to introduce an artificial delay before
+ delivering such interrupts. This delay can be configured for a
+ VM using the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1</screen>
+
+ <para>
+ This sets the delay to one millisecond. In case this does not
+ help, increase it to a value between 1 and 5 milliseconds.
+ Please note that this slows down disk performance. After
+ installation, you should be able to remove the key, or set it to
+ 0.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-bluescreen-record-info">
+
+ <title>How to Record Bluescreen Information from Windows Guests</title>
+
+ <para>
+ When Windows guests run into a kernel crash, they display a
+ bluescreen error. Depending on how Windows is configured, the
+ information will remain on the screen until the machine is
+ restarted or it will reboot automatically. During installation,
+ Windows is usually configured to reboot automatically. With
+ automatic reboots, there is no chance to record the bluescreen
+ information which might be important for problem determination.
+ </para>
+
+ <para>
+ &product-name; provides a method of halting a guest when it
+ wants to perform a reset. In order to enable this feature, use
+ the following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/PDM/HaltOnReset" 1</screen>
+
+ </sect2>
+
+ <sect2 id="ts_win-vista-guest-networking">
+
+ <title>No Networking in Windows Vista Guests</title>
+
+ <para>
+ With Windows Vista, Microsoft dropped support for the AMD PCNet
+ card that legacy versions of &product-name; used to provide as
+ the default virtual network card. For Windows Vista guests,
+ &product-name; now uses an Intel E1000 card by default.
+ </para>
+
+ <para>
+ If, for some reason, you still want to use the AMD card, you
+ need to download the PCNet driver from the AMD website. This
+ driver is available for 32-bit Windows only. You can transfer it
+ into the virtual machine using a shared folder. See
+ <xref linkend="sharedfolders" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-high-cpu">
+
+ <title>Windows Guests may Cause a High CPU Load</title>
+
+ <para>
+ Several background applications of Windows guests, especially
+ virus scanners, are known to increase the CPU load notably even
+ if the guest appears to be idle. We recommend to deactivate
+ virus scanners within virtualized guests if possible.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-shared-folders-access-delay">
+
+ <title>Long Delays When Accessing Shared Folders</title>
+
+ <para>
+ The performance for accesses to shared folders from a Windows
+ guest might be decreased due to delays during the resolution of
+ the &product-name; shared folders name service. To fix these
+ delays, add the following entries to the file
+ <filename>\windows\system32\drivers\etc\lmhosts</filename> of
+ the Windows guest:
+ </para>
+
+<screen>255.255.255.255 VBOXSVR #PRE
+255.255.255.255 VBOXSRV #PRE</screen>
+
+ <para>
+ After doing this change, a reboot of the guest is required.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win98-guest-usb-tablet-coordinates">
+
+ <title>USB Tablet Coordinates Wrong in Windows 98 Guests</title>
+
+ <para>
+ If a Windows 98 VM is configured to use the emulated USB tablet
+ (absolute pointing device), the coordinate translation may be
+ incorrect and the pointer is restricted to the upper left
+ quarter of the guest's screen.
+ </para>
+
+ <para>
+ The USB HID (Human Interface Device) drivers in Windows 98 are
+ very old and do not handle tablets in the same way as modern
+ operating systems do. To work around the problem, use the
+ following command:
+ </para>
+
+<screen>$ VBoxManage setextradata <replaceable>VM-name</replaceable> "VBoxInternal/USB/HidMouse/0/Config/CoordShift" 0</screen>
+
+ <para>
+ To restore the default behavior, remove the key or set its value
+ to 1.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-guest-active-dir-domain">
+
+ <title>Windows Guests are Removed From an Active Directory Domain After
+ Restoring a Snapshot</title>
+
+ <para>
+ If a Windows guest is a member of an Active Directory domain and
+ the snapshot feature of &product-name; is used, it could be
+ removed from the Active Direcory domain after you restore an
+ older snapshot.
+ </para>
+
+ <para>
+ This is caused by automatic machine password changes performed
+ by Windows at regular intervals for security purposes. You can
+ disable this feature as shown in the following article from
+ Microsoft:
+ <ulink url="http://support.microsoft.com/kb/154501" />.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win31-ram-limitations">
+
+ <title>Windows 3.x Limited to 64 MB RAM</title>
+
+ <para>
+ Windows 3.x guests are typically limited to 64 MB RAM, even if a
+ VM is assigned much more memory. While Windows 3.1 is
+ theoretically capable of using up to 512 MB RAM, it only uses
+ memory available through the XMS interface. Versions of
+ HIMEM.SYS, the Microsoft XMS manager, shipped with MS-DOS and
+ Microsoft Windows 3.x can only use up to 64 MB on standard PCs.
+ </para>
+
+ <para>
+ This is a known HIMEM.SYS limitation. Windows 3.1 memory limits
+ are described in detail in Microsoft Knowledge base article KB
+ 84388.
+ </para>
+
+ <para>
+ It is possible for Windows 3.x guests to utilize more than 64 MB
+ RAM if a different XMS provider is used. That could be a newer
+ HIMEM.SYS version, such as that shipped with Windows 98, or a
+ more capable third-party memory manager, such as QEMM.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_lin-x11-guests">
+
+ <title>Linux and X11 Guests</title>
+
+ <sect2 id="ts_linux-guest-high-cpu">
+
+ <title>Linux Guests May Cause a High CPU load</title>
+
+ <para>
+ Some Linux guests may cause a high CPU load even if the guest
+ system appears to be idle. This can be caused by a high timer
+ frequency of the guest kernel. Some Linux distributions, for
+ example Fedora, ship a Linux kernel configured for a timer
+ frequency of 1000Hz. We recommend to recompile the guest kernel
+ and to select a timer frequency of 100Hz.
+ </para>
+
+ <para>
+ Linux kernels shipped with Red Hat Enterprise Linux, as well as
+ kernels of related Linux distributions, such as CentOS and
+ Oracle Linux, support a kernel parameter
+ <emphasis>divider=N</emphasis>. Hence, such kernels support a
+ lower timer frequency without recompilation. We suggest you add
+ the kernel parameter <emphasis>divider=10</emphasis> to select a
+ guest kernel timer frequency of 100Hz.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-buggy">
+
+ <title>Buggy Linux 2.6 Kernel Versions</title>
+
+ <para>
+ The following bugs in Linux kernels prevent them from executing
+ correctly in &product-name;, causing VM boot crashes:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The Linux kernel version 2.6.18, and some 2.6.17 versions,
+ introduced a race condition that can cause boot crashes in
+ &product-name;. Please use a kernel version 2.6.19 or later.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ With hardware virtualization and the I/O APIC enabled,
+ kernels before 2.6.24-rc6 may panic on boot with the
+ following message:
+ </para>
+
+<screen>Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with
+apic=debug and send a report. Then try booting with the 'noapic' option</screen>
+
+ <para>
+ If you see this message, either disable hardware
+ virtualization or the I/O APIC as described in
+ <xref linkend="settings-system" />, or upgrade the guest to
+ a newer kernel.
+ </para>
+
+ <para>
+ See
+ <ulink url="http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg30813.html" />
+ for details about the kernel fix.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="ts_linux-guest-x11-services">
+
+ <title>Shared Clipboard, Auto-Resizing, and Seamless Desktop in X11 Guests</title>
+
+ <para>
+ Guest desktop services in guests running the X11 window system
+ such as Oracle Solaris and Linux, are provided by a guest
+ service called <command>VBoxClient</command>, which runs under
+ the ID of the user who started the desktop session and is
+ automatically started using the following command lines when
+ your X11 user session is started if you are using a common
+ desktop environment such as Gnome or KDE.
+ </para>
+
+<screen>$ VBoxClient --clipboard
+$ VBoxClient --display
+$ VBoxClient --seamless</screen>
+
+ <para>
+ If a particular desktop service is not working correctly, it is
+ worth checking whether the process which should provide it is
+ running.
+ </para>
+
+ <para>
+ The <command>VBoxClient</command> processes create files in the
+ user's home directory with names of the form
+ <filename>.vboxclient-*.pid</filename> when they are running in
+ order to prevent a given service from being started twice. It
+ can happen due to misconfiguration that these files are created
+ owned by root and not deleted when the services are stopped,
+ which will prevent them from being started in future sessions.
+ If the services cannot be started, you may wish to check whether
+ these files still exist.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_sol-guests">
+
+ <title>Oracle Solaris Guests</title>
+
+ <sect2 id="ts_solaris-10-guest-slow-boot-smp">
+
+ <title>Certain Oracle Solaris 10 Releases May Take a Long Time to Boot with SMP</title>
+
+ <para>
+ When using more than one CPU, Oracle Solaris 10 10/08, and
+ Oracle Solaris 10 5/09 may take a long time to boot and may
+ print warnings on the system console regarding failures to read
+ from disk. This is a bug in Oracle Solaris 10 which affects
+ specific physical and virtual configurations. It is caused by
+ trying to read microcode updates from the boot disk when the
+ disk interrupt is reassigned to a not yet fully initialized
+ secondary CPU. Disk reads will time out and fail, triggering
+ delays of about 45 seconds and warnings.
+ </para>
+
+ <para>
+ The recommended solution is upgrading to at least Oracle Solaris
+ 10 10/09 which includes a fix for this problem. Alternative
+ solutions include restricting the number of virtual CPUs to one
+ or possibly using a different storage controller.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_win-hosts">
+
+ <title>Windows Hosts</title>
+
+ <sect2 id="ts_win-host-com-server">
+
+ <title>VBoxSVC Out-of-Process COM Server Issues</title>
+
+ <para>
+ &product-name; makes use of the Microsoft Component Object Model
+ (COM) for interprocess and intraprocess communication. This
+ enables &product-name; to share a common configuration among
+ different virtual machine processes and provide several user
+ interface options based on a common architecture. All global
+ status information and configuration is maintained by the
+ process <filename>VBoxSVC.exe</filename>, which is an
+ out-of-process COM server. Whenever an &product-name; process is
+ started, it requests access to the COM server and Windows
+ automatically starts the process. Note that it should never be
+ started by the end user.
+ </para>
+
+ <para>
+ When the last process disconnects from the COM server, it will
+ terminate itself after some seconds. The &product-name;
+ configuration XML files are maintained and owned by the COM
+ server and the files are locked whenever the server runs.
+ </para>
+
+ <para>
+ In some cases, such as when a virtual machine is terminated
+ unexpectedly, the COM server will not notice that the client is
+ disconnected and stay active for a longer period of 10 minutes
+ or so, keeping the configuration files locked. In other rare
+ cases the COM server might experience an internal error and
+ subsequently other processes fail to initialize it. In these
+ situations, it is recommended to use the Windows task manager to
+ kill the process <filename>VBoxSVC.exe</filename>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-host-cd-dvd-changes">
+
+ <title>CD and DVD Changes Not Recognized</title>
+
+ <para>
+ In case you have assigned a physical CD or DVD drive to a guest
+ and the guest does not notice when the medium changes, make sure
+ that the Windows media change notification (MCN) feature is not
+ turned off. This is represented by the following key in the
+ Windows registry:
+ </para>
+
+<screen>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdrom\Autorun</screen>
+
+ <para>
+ Certain applications may disable this key against Microsoft's
+ advice. If it is set to 0, change it to 1 and reboot your
+ system. &product-name; relies on Windows notifying it of media
+ changes.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-host-rdp-client">
+
+ <title>Sluggish Response When Using Microsoft RDP Client</title>
+
+ <para>
+ If connecting to a Virtual Machine using the Microsoft RDP
+ client, called a Remote Desktop Connection, there can be large
+ delays between input such as moving the mouse over a menu and
+ output. This is because this RDP client collects input for a
+ certain time before sending it to the RDP server.
+ </para>
+
+ <para>
+ The interval can be decreased by setting a Windows registry key
+ to smaller values than the default of 100. The key does not
+ exist initially and must be of type DWORD. The unit for its
+ values is milliseconds. Values around 20 are suitable for
+ low-bandwidth connections between the RDP client and server.
+ Values around 4 can be used for a gigabit Ethernet connection.
+ Generally values below 10 achieve a performance that is very
+ close to that of the local input devices and screen of the host
+ on which the Virtual Machine is running.
+ </para>
+
+ <para>
+ Depending whether the setting should be changed for an
+ individual user or for the system, set either of the following.
+ </para>
+
+<screen>HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
+
+<screen>HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
+
+ </sect2>
+
+ <sect2 id="ts_win-host-iscsi">
+
+ <title>Running an iSCSI Initiator and Target on a Single System</title>
+
+ <para>
+ Deadlocks can occur on a Windows host when attempting to access
+ an iSCSI target running in a guest virtual machine with an iSCSI
+ initiator, such as a Microsoft iSCSI Initiator, that is running
+ on the host. This is caused by a flaw in the Windows cache
+ manager component, and causes sluggish host system response for
+ several minutes, followed by a "Delayed Write Failed" error
+ message in the system tray or in a separate message window. The
+ guest is blocked during that period and may show error messages
+ or become unstable.
+ </para>
+
+ <para>
+ Setting the <literal>VBOX_DISABLE_HOST_DISK_CACHE</literal>
+ environment variable to <literal>1</literal> enables a
+ workaround for this problem until Microsoft addresses the issue.
+ For example, open a command prompt window and start
+ &product-name; like this:
+ </para>
+
+<screen>set VBOX_DISABLE_HOST_DISK_CACHE=1
+VirtualBox</screen>
+
+ <para>
+ While this will decrease guest disk performance, especially
+ writes, it does not affect the performance of other applications
+ running on the host.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_win-host-bridged-network-adapters">
+
+ <title>Bridged Networking Adapters Missing</title>
+
+ <para>
+ If no bridged adapters show up in the
+ <emphasis role="bold">Networking</emphasis> section of the VM
+ settings, this typically means that the bridged networking
+ driver was not installed properly on your host. This could be
+ due to the following reasons:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The maximum allowed filter count was reached on the host. In
+ this case, the MSI log would mention the
+ <literal>0x8004a029</literal> error code returned on NetFlt
+ network component install, as follows:
+ </para>
+
+<screen>VBoxNetCfgWinInstallComponent: Install failed, hr (0x8004a029)</screen>
+
+ <para>
+ You can try to increase the maximum filter count in the
+ Windows registry using the following key:
+ </para>
+
+<screen>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\MaxNumFilters</screen>
+
+ <para>
+ The maximum number allowed is 14. After a reboot, try to
+ reinstall &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The INF cache is corrupt. In this case, the install log at
+ <filename>%windir%\inf\setupapi.dev.log</filename> would
+ typically mention the failure to find a suitable driver
+ package for either the <command>sun_VBoxNetFlt</command> or
+ <command>sun_VBoxNetFltmp</command> components. The solution
+ then is to uninstall &product-name;, remove the INF cache
+ (<filename>%windir%\inf\INFCACHE.1</filename>), reboot and
+ try to reinstall &product-name;.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="ts_win-host-host-only-network-adapters">
+
+ <title>Host-Only Networking Adapters Cannot be Created</title>
+
+ <para>
+ If a host-only adapter cannot be created, either with the
+ VirtualBox Manager or the <command>VBoxManage</command> command,
+ then the INF cache is probably corrupt. In this case, the
+ install log at
+ <filename>%windir%\inf\setupapi.dev.log</filename> would
+ typically mention the failure to find a suitable driver package
+ for the <filename>sun_VBoxNetAdp</filename> component. Again, as
+ with the bridged networking problem described above, the
+ solution is to uninstall &product-name;, remove the INF cache
+ (<filename>%windir%\inf\INFCACHE.1</filename>), reboot and try
+ to reinstall &product-name;.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_lin-hosts">
+
+ <title>Linux Hosts</title>
+
+ <sect2 id="ts_linux-kernelmodule-fails-to-load">
+
+ <title>Linux Kernel Module Refuses to Load</title>
+
+ <para>
+ If the &product-name; kernel module, <command>vboxdrv</command>,
+ refuses to load you may see an <literal>Error inserting vboxdrv:
+ Invalid argument</literal> message. As root, check the output of
+ the <command>dmesg</command> command to find out why the load
+ failed. Most probably the kernel disagrees with the version of
+ <command>gcc</command> used to compile the module. Make sure
+ that you use the same compiler that was used to build the
+ kernel.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-host-cd-dvd-not-found">
+
+ <title>Linux Host CD/DVD or Floppy Disk Drive Not Found</title>
+
+ <para>
+ If you have configured a virtual machine to use the host's CD or
+ DVD drive or floppy disk drive, but this does not appear to
+ work, make sure that the current user has permission to access
+ the corresponding Linux device file. For example, for a CD or
+ DVD drive this may be <filename>/dev/hdc</filename>,
+ <filename>/dev/scd0</filename>, <filename>/dev/cdrom</filename>
+ or similar. On most distributions, the user must be added to a
+ corresponding group, usually called <command>cdrom</command> or
+ <command>cdrw</command> or <command>floppy</command>.
+ </para>
+
+ <para>
+ On supported Linux distributions, &product-name; uses
+ <command>udev</command> to locate hardware such as CD/DVD drives
+ and floppy disk drives.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-host-ide-messages">
+
+ <title>Strange Guest IDE Error Messages When Writing to CD or DVD</title>
+
+ <para>
+ If the experimental CD or DVD writer support is enabled with an
+ incorrect host or guest configuration, it is possible that any
+ attempt to access the CD or DVD writer fails and simply results
+ in guest kernel error messages for Linux guests or application
+ error messages for Windows guests. &product-name; performs the
+ usual consistency checks when a VM is powered up. In particular,
+ it aborts with an error message if the device for the CD or DVD
+ writer is not writable by the user starting the VM. But
+ &product-name; cannot detect all misconfigurations. The
+ necessary host and guest OS configuration is not specific for
+ &product-name;, but a few frequent problems are listed here
+ which occurred in connection with &product-name;.
+ </para>
+
+ <para>
+ Special care must be taken to use the correct device. The
+ configured host CD or DVD device file name, in most cases
+ <filename>/dev/cdrom</filename>, must point to the device that
+ allows writing to the CD or DVD unit. For CD or DVD writer units
+ connected to a SCSI controller or to a IDE controller that
+ interfaces to the Linux SCSI subsystem, common for some SATA
+ controllers, this must refer to the SCSI device node, such as
+ <filename>/dev/scd0</filename>. Even for IDE CD or DVD writer
+ units this must refer to the appropriate SCSI CD-ROM device
+ node, such as <filename>/dev/scd0</filename>, if the
+ <command>ide-scsi</command> kernel module is loaded. This module
+ is required for CD or DVD writer support with some early 2.6
+ kernels. Many Linux distributions load this module whenever a CD
+ or DVD writer is detected in the system, even if the kernel
+ would support CD or DVD writers without the module.
+ &product-name; supports the use of IDE device files, such as
+ <filename>/dev/hdc</filename>, provided the kernel supports this
+ and the <command>ide-scsi</command> module is not loaded.
+ </para>
+
+ <para>
+ Similar rules, except that within the guest the CD or DVD writer
+ is always an IDE device, apply to the guest configuration. Since
+ this setup is very common, it is likely that the default
+ configuration of the guest works as expected.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-host-vboxsvc">
+
+ <title>VBoxSVC IPC Issues</title>
+
+ <para>
+ On Linux, &product-name; makes use of a custom version of
+ Mozilla XPCOM (cross platform component object model) for
+ interprocess and intraprocess communication (IPC). The process
+ <command>VBoxSVC</command> serves as a communication hub between
+ different &product-name; processes and maintains the global
+ configuration, such as the XML database. When starting an
+ &product-name; component, the processes
+ <command>VBoxSVC</command> and <command>VBoxXPCOMIPCD</command>
+ are started automatically. They are only accessible from the
+ user account they are running under. <command>VBoxSVC</command>
+ owns the &product-name; configuration database which normally
+ resides in <filename>~/.config/VirtualBox</filename>, or the
+ appropriate configuration directory for your operating system.
+ While it is running, the configuration files are locked.
+ Communication between the various &product-name; components and
+ <command>VBoxSVC</command> is performed through a local domain
+ socket residing in
+ <filename>/tmp/.vbox-<replaceable>username</replaceable>-ipc</filename>.
+ In case there are communication problems, such as an
+ &product-name; application cannot communicate with
+ <command>VBoxSVC</command>, terminate the daemons and remove the
+ local domain socket directory.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_usb-linux">
+
+ <title>USB Not Working</title>
+
+ <para>
+ If USB is not working on your Linux host, make sure that the
+ current user is a member of the <literal>vboxusers</literal>
+ group. Please keep in mind that group membership does not take
+ effect immediately but rather at the next login. If available,
+ the <command>newgrp</command> command may avoid the need for a
+ logout and login.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-host-grsec">
+
+ <title>PAX/grsec Kernels</title>
+
+ <para>
+ Linux kernels including the grsec patch, see
+ <ulink url="http://www.grsecurity.net/" />, and derivates have
+ to disable PAX_MPROTECT for the <command>VBox</command> binaries
+ to be able to start a VM. The reason is that &product-name; has
+ to create executable code on anonymous memory.
+ </para>
+
+ </sect2>
+
+ <sect2 id="ts_linux-host-malloc">
+
+ <title>Linux Kernel vmalloc Pool Exhausted</title>
+
+ <para>
+ When running a large number of VMs with a lot of RAM on a Linux
+ system, say 20 VMs with 1 GB of RAM each, additional VMs might
+ fail to start with a kernel error saying that the vmalloc pool
+ is exhausted and should be extended. The error message also
+ tells you to specify <literal>vmalloc=256MB</literal> in your
+ kernel parameter list. If adding this parameter to your GRUB or
+ LILO configuration makes the kernel fail to boot, with an error
+ message such as <literal>failed to mount the root
+ partition</literal>, then you have probably run into a memory
+ conflict of your kernel and initial RAM disk. This can be solved
+ by adding the following parameter to your GRUB configuration:
+ </para>
+
+<screen>uppermem 524288</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="ts_sol-hosts">
+
+ <title>Oracle Solaris Hosts</title>
+
+ <sect2 id="ts_sol-host-zfs">
+
+ <title>Cannot Start VM, Not Enough Contiguous Memory</title>
+
+ <para>
+ The ZFS file system is known to use nearly all available RAM as
+ cache if the default system settings are not changed. This may
+ lead to a heavy fragmentation of the host memory preventing
+ &product-name; VMs from being started. We recommend to limit the
+ ZFS cache by adding the following line to
+ <filename>/etc/system</filename>, where
+ <replaceable>xxxx</replaceable> bytes is the amount of memory
+ usable for the ZFS cache.
+ </para>
+
+<screen>set zfs:zfs_arc_max = xxxx</screen>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/en_US/user_VBoxManage.xml b/doc/manual/en_US/user_VBoxManage.xml
new file mode 100644
index 00000000..a488350e
--- /dev/null
+++ b/doc/manual/en_US/user_VBoxManage.xml
@@ -0,0 +1,8969 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ user_VBoxManage.xml:
+ VBoxManage documentation for the user manual.
+
+ This XML document is also be used for generating the help text
+ built into VBoxManage as well as manpages (hacking in progress).
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ -->
+<!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="vboxmanage">
+
+ <title>VBoxManage</title>
+
+ <sect1 id="vboxmanage-intro">
+
+ <title>Introduction</title>
+
+ <para>
+ As briefly mentioned in <xref linkend="frontends" />,
+ <command>VBoxManage</command> is the command-line interface to
+ &product-name;. With it, you can completely control &product-name;
+ from the command line of your host operating system.
+ <command>VBoxManage</command> supports all the features that the
+ graphical user interface gives you access to, but it supports a
+ lot more than that. It exposes all the features of the
+ virtualization engine, even those that cannot be accessed from the
+ GUI.
+ </para>
+
+ <para>
+ You will need to use the command line if you want to do the
+ following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use a different user interface than the main GUI such as the
+ VBoxHeadless server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Control some of the more advanced and experimental
+ configuration settings for a VM.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ There are two main things to keep in mind when using
+ <command>VBoxManage</command>. First,
+ <command>VBoxManage</command> must always be used with a specific
+ subcommand, such as <command>list</command> or
+ <command>createvm</command> or <command>startvm</command>. All the
+ subcommands that <command>VBoxManage</command> supports are
+ described in detail in <xref linkend="vboxmanage" />.
+ </para>
+
+ <para>
+ Second, most of these subcommands require that you specify a
+ particular virtual machine after the subcommand. There are two
+ ways you can do this:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ You can specify the VM name, as it is shown in the
+ &product-name; GUI. Note that if that name contains spaces,
+ then you must enclose the entire name in double quotes. This
+ is always required with command line arguments that contain
+ spaces. For example:
+ </para>
+
+<screen>VBoxManage startvm "Windows XP"</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can specify the UUID, which is the internal unique
+ identifier that &product-name; uses to refer to the virtual
+ machine. Assuming that the VM called "Windows XP" has the UUID
+ shown below, the following command has the same effect as the
+ previous example:
+ </para>
+
+<screen>VBoxManage startvm 670e746d-abea-4ba6-ad02-2a3b043810a5</screen>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ You can enter <command>VBoxManage list vms</command> to have all
+ currently registered VMs listed with all their settings, including
+ their respective names and UUIDs.
+ </para>
+
+ <para>
+ Some typical examples of how to control &product-name; from the
+ command line are listed below:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To create a new virtual machine from the command line and
+ immediately register it with &product-name;, use
+ <command>VBoxManage createvm</command> with the
+ <option>--register</option> option, as follows:
+ </para>
+
+<screen>$ VBoxManage createvm --name "SUSE 10.2" --register
+VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
+(C) 2005-2018 Oracle Corporation
+All rights reserved.
+
+Virtual machine 'SUSE 10.2' is created.
+UUID: c89fc351-8ec6-4f02-a048-57f4d25288e5
+Settings file: '/home/username/.config/VirtualBox/Machines/SUSE 10.2/SUSE 10.2.xml'</screen>
+
+ <para>
+ As can be seen from the above output, a new virtual machine
+ has been created with a new UUID and a new XML settings file.
+ </para>
+
+ <para>
+ For more details, see
+ <xref
+ linkend="vboxmanage-createvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To show the configuration of a particular VM, use
+ <command>VBoxManage showvminfo</command>. See
+ <xref
+ linkend="vboxmanage-showvminfo" /> for details
+ and an example.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To change settings while a VM is powered off, use
+ <command>VBoxManage modifyvm</command>. For example:
+ </para>
+
+<screen>VBoxManage modifyvm "Windows XP" --memory 512</screen>
+
+ <para>
+ See also <xref linkend="vboxmanage-modifyvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To change the storage configuration, such as to add a storage
+ controller and then a virtual disk, use <command>VBoxManage
+ storagectl</command> and <command>VBoxManage
+ storageattach</command>. See
+ <xref
+ linkend="vboxmanage-storagectl" /> and
+ <xref
+ linkend="vboxmanage-storageattach" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To control VM operation, use one of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To start a VM that is currently powered off, use
+ <command>VBoxManage startvm</command>. See
+ <xref
+ linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ To pause or save a VM that is currently running or change
+ some of its settings, use <command>VBoxManage
+ controlvm</command>. See
+ <xref
+ linkend="vboxmanage-controlvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-cmd-overview">
+
+ <title>Commands Overview</title>
+
+ <para>
+ When running <command>VBoxManage</command> without parameters or
+ when supplying an invalid command line, the following command
+ syntax list is shown. Note that the output will be slightly
+ different depending on the host platform. If in doubt, check the
+ output of <command>VBoxManage</command> for the commands available
+ on your particular host.
+ </para>
+
+ <xi:include href="user_VBoxManage_CommandsOverview.xml" xpointer="xpointer(/sect1/*)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <para>
+ Each time <command>VBoxManage</command> is invoked, only one
+ command can be executed. However, a command might support several
+ subcommands which then can be invoked in one single call. The
+ following sections provide detailed reference information on the
+ different commands.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-general">
+
+ <title>General Options</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>-v|--version</option>: Show the version of this tool
+ and exit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--nologo</option>: Suppress the output of the logo
+ information. This option is useful for scripts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--settingspw</option>: Specifiy a settings password.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--settingspwfile</option>: Specify a file containing
+ the settings password.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The settings password is used for certain settings which need to
+ be stored in encrypted form for security reasons. At the moment,
+ the only encrypted setting is the iSCSI initiator secret, see
+ <xref linkend="vboxmanage-storageattach" />. As long as no
+ settings password is specified, this information is stored in
+ <emphasis>plain text</emphasis>. After using the
+ <option>--settingspw|--settingspwfile</option> option once, it
+ must be always used. Otherwise, the encrypted setting cannot be
+ unencrypted.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-list">
+
+ <title>VBoxManage list</title>
+
+ <para>
+ The <command>list</command> command gives relevant information
+ about your system and information about &product-name;'s current
+ settings.
+ </para>
+
+ <para>
+ The following subcommands are available with <command>VBoxManage
+ list</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>vms</command>: Lists all virtual machines currently
+ registered with &product-name;. By default this displays a
+ compact list with each VM's name and UUID. If you also specify
+ <option>--long</option> or <option>-l</option>, this will be a
+ detailed list as with the <command>showvminfo</command>
+ command, see <xref linkend="vboxmanage-showvminfo"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>runningvms</command>: Lists all currently running
+ virtual machines by their unique identifiers (UUIDs) in the
+ same format as with <command>vms</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>ostypes</command>: Lists all guest operating systems
+ presently known to &product-name;, along with the identifiers
+ used to refer to them with the <command>modifyvm</command>
+ command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>hostdvds</command>, <command>hostfloppies</command>:
+ Lists the DVD, floppy, bridged networking, and host-only
+ networking interfaces on the host, along with the name used to
+ access them from within &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>intnets</command>: Displays information about the
+ internal networks.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>bridgedifs</command>, <command>hostonlyifs</command>,
+ <command>natnets</command>, <command>dhcpservers</command>:
+ Lists the bridged network interfaces, host-only network
+ interfaces, NAT network interfaces, and DHCP servers currently
+ available on the host. See
+ <xref linkend="networkingdetails" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>hostinfo</command>: Displays information about the
+ host system, such as CPUs, memory size, and operating system
+ version.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>hostcpuids</command>: Lists the CPUID parameters for
+ the host CPUs. This can be used for a more fine grained
+ analyis of the host's virtualization capabilities.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>hddbackends</command>: Lists all known virtual disk
+ back-ends of &product-name;. For each such format, such as
+ VDI, VMDK, or RAW, this subcommand lists the back-end's
+ capabilities and configuration.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>hdds</command>, <command>dvds</command>,
+ <command>floppies</command>: Shows information about virtual
+ disk images currently in use by &product-name;, including all
+ their settings, the unique identifiers (UUIDs) associated with
+ them by &product-name; and all files associated with them.
+ This is the command-line equivalent of the Virtual Media
+ Manager. See <xref linkend="vdis" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>usbhost</command>: Shows information about USB
+ devices attached to the host, including information useful for
+ constructing USB filters and whether they are currently in use
+ by the host.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>usbfilters</command>: Lists all global USB filters
+ registered with &product-name; and displays the filter
+ parameters. Global USB filters are for devices which are
+ accessible to all virtual machines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>systemproperties</command>: Displays some global
+ &product-name; settings, such as minimum and maximum guest RAM
+ and virtual hard disk size, folder settings and the current
+ authentication library in use.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>extpacks</command>: Displays all &product-name;
+ extension packs that are currently installed. See
+ <xref linkend="intro-installing" /> and
+ <xref linkend="vboxmanage-extpack" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>groups</command>: Displays details of the VM Groups.
+ See <xref linkend="gui-vmgroups" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>webcams</command>: Displays a list of webcams
+ attached to the running VM. The output format is a list of
+ absolute paths or aliases that were used for attaching the
+ webcams to the VM using the webcam attach command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>screenshotformats</command>: Displays a list of
+ available screenshot formats.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>cloudproviders</command>: Displays a list of cloud
+ providers that are supported by &product-name;. &oci; is an
+ example of a cloud provider.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>cloudprofiles</command>: Displays a list of cloud
+ profiles that have been configured.
+ </para>
+
+ <para>
+ Cloud profiles are used when exporting VMs to a cloud service.
+ See <xref linkend="cloud-export-oci"/>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-showvminfo">
+
+ <title>VBoxManage showvminfo</title>
+
+ <para>
+ The <command>showvminfo</command> command shows information about
+ a particular virtual machine. This is the same information as
+ <command>VBoxManage list vms --long</command> would show for all
+ virtual machines.
+ </para>
+
+ <para>
+ You will see information as shown in the following example.
+ </para>
+
+<screen>$ VBoxManage showvminfo "Windows XP"
+VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
+(C) 2005-2018 Oracle Corporation
+All rights reserved.
+
+Name: Windows XP
+Guest OS: Other/Unknown
+UUID: 1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
+Config file: /home/username/.config/VirtualBox/Machines/Windows XP/Windows XP.xml
+Memory size: 512MB
+VRAM size: 12MB
+Number of CPUs: 2
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+...
+ </screen>
+
+ <para>
+ Use the <option>--machinereadable</option> option to produce the
+ same output, but in machine readable format with a property=value
+ string on each line. For example:
+ </para>
+
+<screen>
+...
+groups="/"
+ostype="Oracle (64-bit)"
+UUID="457af700-bc0a-4258-aa3c-13b03da171f2"
+...
+ </screen>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-registervm">
+
+ <title>VBoxManage registervm/unregistervm</title>
+
+ <para>
+ The <computeroutput>registervm</computeroutput> command enables
+ you to import a virtual machine definition in an XML file into
+ &product-name;. The machine must not conflict with one already
+ registered in &product-name; and it may not have any hard or
+ removable disks attached. It is advisable to place the definition
+ file in the machines folder before registering it.
+ </para>
+
+ <note>
+ <para>
+ When creating a new virtual machine with <command>VBoxManage
+ createvm</command>, as shown in
+ <xref linkend="vboxmanage-createvm"/>, you can directly specify
+ the <option>--register</option> option to avoid having to
+ register it separately.
+ </para>
+ </note>
+
+ <para>
+ The <command>unregistervm</command> command unregisters a virtual
+ machine. If <option>--delete</option> is also specified, the
+ following files will also be deleted automatically:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ All hard disk image files, including differencing files, which
+ are used by the machine and not shared with other machines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Saved state files that the machine created. One if the machine
+ was in Saved state and one for each online snapshot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The machine XML file and its backups.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The machine log files.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The machine directory, if it is empty after having deleted all
+ of the above files.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-createvm">
+
+ <title>VBoxManage createvm</title>
+
+ <para>
+ The <command>VBoxManage createvm</command> command creates a new
+ XML virtual machine definition file.
+ </para>
+
+ <para>
+ You must specify the name of the VM by using <option>--name
+ <replaceable>name</replaceable></option>. This name is used by
+ default as the file name of the settings file that has the
+ <filename>.xml</filename> extension and the machine folder, which
+ is a subfolder of the
+ <filename>.config/VirtualBox/Machines</filename> folder. Note that
+ the machine folder path name varies based on the OS type and the
+ &product-name; version.
+ </para>
+
+ <para>
+ Ensure that the VM name conforms to the host OS's file name
+ requirements. If you later rename the VM, the file and folder
+ names will be updated to match the new name automatically.
+ </para>
+
+ <para>
+ The <option>--basefolder <replaceable>path</replaceable></option>
+ option specifies the machine folder path name. Note that the names
+ of the file and the folder do not change if you rename the VM.
+ </para>
+
+ <para>
+ The <option>--group <replaceable>group-ID</replaceable>,
+ ...</option> option assigns the VM to the specified groups. Note
+ that group IDs always start with
+ <computeroutput>/</computeroutput> so that they can be nested. By
+ default, each VM is assigned membership to the
+ <computeroutput>/</computeroutput> group.
+ </para>
+
+ <para>
+ The <option>--ostype <replaceable>ostype</replaceable></option>
+ option specifies the guest OS to run in the VM. Run the
+ <command>VBoxManage list ostypes</command> command to see the
+ available OS types.
+ </para>
+
+ <para>
+ The <option>--uuid <replaceable>uuid</replaceable></option> option
+ specifies the universal unique identifier (UUID) of the VM. The
+ UUID must be unique within the namespace of the host or of its VM
+ group memberships. By default, the <command>VBoxManage</command>
+ command automatically generates the UUID.
+ </para>
+
+ <para>
+ The <computeroutput>--default</computeroutput> option applies a
+ default hardware configuration for the specified guest OS. By
+ default, the VM is created with minimal hardware.
+ </para>
+
+ <para>
+ The <option>--register</option> option registers the VM with your
+ &product-name; installation. By default, the <command>VBoxManage
+ createvm</command> command creates only the XML configuration for
+ the VM but does not registered the VM. If you do not register the
+ VM at creation, you can run the <command>VBoxManage
+ registervm</command> command after you create the VM.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-modifyvm">
+
+ <title>VBoxManage modifyvm</title>
+
+ <para>
+ This command changes the properties of a registered virtual
+ machine which is not running. Most of the properties that this
+ command makes available correspond to the VM settings that the
+ VirtualBox Manager displays in each VM's
+ <emphasis role="bold">Settings</emphasis> dialog. These are
+ described in <xref linkend="BasicConcepts" />. However, some of
+ the more advanced settings are only available through the
+ <command>VBoxManage</command> interface.
+ </para>
+
+ <para>
+ These commands require that the machine is powered off, neither
+ running nor in a Saved state. Some machine settings can also be
+ changed while a machine is running. Those settings will then have
+ a corresponding subcommand with the <command>VBoxManage
+ controlvm</command> subcommand. See
+ <xref linkend="vboxmanage-controlvm" />.
+ </para>
+
+ <sect2 id="vboxmanage-modifyvm-general">
+
+ <title>General Settings</title>
+
+ <para>
+ The following general settings are available through
+ <command>VBoxManage modifyvm</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--name &lt;name&gt;</computeroutput>:
+ Changes the VM's name and can be used to rename the internal
+ virtual machine files, as described in
+ <xref linkend="vboxmanage-createvm"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--groups &lt;group&gt;,
+ ...</computeroutput>: Changes the group membership of a VM.
+ Groups always start with a
+ <computeroutput>/</computeroutput> and can be nested. By
+ default VMs are in group <computeroutput>/</computeroutput>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--description &lt;desc&gt;</computeroutput>:
+ Changes the VM's description, which is a way to record
+ details about the VM in a way which is meaningful for the
+ user. The GUI interprets HTML formatting, the command line
+ allows arbitrary strings potentially containing multiple
+ lines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--ostype &lt;ostype&gt;</computeroutput>:
+ Specifies what guest operating system is supposed to run in
+ the VM. To learn about the various identifiers that can be
+ used here, use <command>VBoxManage list ostypes</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--iconfile
+ &lt;filename&gt;</computeroutput>: Specifies the absolute
+ path on the host file system for the &product-name; icon to
+ be displayed in the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--memory
+ &lt;memorysize&gt;</computeroutput>: Sets the amount of RAM,
+ in MB, that the virtual machine should allocate for itself
+ from the host. See <xref linkend="gui-createvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--pagefusion on|off</computeroutput>:
+ Enables and disables the Page Fusion feature. Page Fusion is
+ disabled by default. The Page Fusion feature minimises
+ memory duplication between VMs with similar configurations
+ running on the same host. See
+ <xref linkend="guestadd-pagefusion" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vram &lt;vramsize&gt;</computeroutput>:
+ Sets the amount of RAM that the virtual graphics card should
+ have. See <xref linkend="settings-display" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--acpi on|off</computeroutput> and
+ <computeroutput>--ioapic on|off</computeroutput>: Determines
+ whether the VM has ACPI and I/O APIC support. See
+ <xref linkend="settings-motherboard" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--pciattach &lt;host PCI address [@ guest
+ PCI bus address]&gt;</computeroutput>: Attaches a specified
+ PCI network controller on the host to a specified PCI bus on
+ the guest.
+
+<!--See <xref linkend="pcipassthrough" />.-->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--pcidetach &lt;host PCI
+ address&gt;</computeroutput>: Detaches a specified PCI
+ network controller on the host from the attached PCI bus on
+ the guest.
+
+<!--See <xref linkend="pcipassthrough" />.-->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--hardwareuuid
+ &lt;uuid&gt;</computeroutput>: The UUID presented to the
+ guest through memory tables (DMI/SMBIOS), hardware, and
+ guest properties. By default this is the same as the VM
+ UUID. This setting is useful when cloning a VM. Teleporting
+ takes care of this automatically.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cpus &lt;cpucount&gt;</computeroutput>:
+ Sets the number of virtual CPUs for the virtual machine, see
+ <xref linkend="settings-processor" />. If CPU hot-plugging
+ is enabled, this then sets the <emphasis>maximum</emphasis>
+ number of virtual CPUs that can be plugged into the virtual
+ machines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cpuhotplug on|off</computeroutput>:
+ Enables CPU hot-plugging. When enabled, virtual CPUs can be
+ added to and removed from a virtual machine while it is
+ running. See <xref linkend="cpuhotplug" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--plugcpu|unplugcpu
+ &lt;id&gt;</computeroutput>: If CPU hot-plugging is enabled,
+ this setting adds or removes a virtual CPU on the virtual
+ machine. <computeroutput>&lt;id&gt;</computeroutput>
+ specifies the index of the virtual CPU to be added or
+ removed and must be a number from 0 to the maximum number of
+ CPUs configured with the
+ <computeroutput>--cpus</computeroutput> option. CPU 0 can
+ never be removed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cpuexecutioncap
+ &lt;1-100&gt;</computeroutput>: Controls how much CPU time a
+ virtual CPU can use. A value of 50 implies a single virtual
+ CPU can use up to 50% of a single host CPU.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--pae on|off</computeroutput>: Enables and
+ disables PAE. See <xref linkend="settings-processor" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--longmode on|off</computeroutput>: Enables
+ and disables long mode. See
+ <xref linkend="settings-processor" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--spec-ctrl on|off</computeroutput>: Enables
+ and disables the exposure of speculation control interfaces
+ to the guest, provided they are available on the host.
+ Depending on the host CPU and workload, enabling speculation
+ control may significantly reduce performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cpu-profile &lt;host|intel
+ 80[86|286|386]&gt;</computeroutput>: Enables specification
+ of a profile for guest CPU emulation. Specify either one
+ based on the host system CPU (host), or one from a number of
+ older Intel Micro-architectures: 8086, 80286, 80386.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--hpet on|off</computeroutput>: Enables and
+ disables a High Precision Event Timer (HPET) which can
+ replace the legacy system timers. This is turned off by
+ default. Note that Windows supports a HPET only from Vista
+ onwards.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--hwvirtex on|off</computeroutput>: Enables
+ and disables the use of hardware virtualization extensions,
+ such as Intel VT-x or AMD-V, in the processor of your host
+ system. See <xref linkend="hwvirt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--triplefaultreset on|off</computeroutput>:
+ Enables resetting of the guest instead of triggering a Guru
+ Meditation. Some guests raise a triple fault to reset the
+ CPU so sometimes this is desired behavior. Works only for
+ non-SMP guests.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--apic on|off</computeroutput>: Enables and
+ disables I/O APIC. With I/O APIC, operating systems can use
+ more than 16 interrupt requests (IRQs) thus avoiding IRQ
+ sharing for improved reliability. This setting is enabled by
+ default. See <xref linkend="settings-motherboard" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--x2apic on|off</computeroutput>: Enables
+ and disables CPU x2APIC support. CPU x2APIC support helps
+ operating systems run more efficiently on high core count
+ configurations, and optimizes interrupt distribution in
+ virtualized environments. This setting is enabled by
+ default. Disable this setting when using host or guest
+ operating systems that are incompatible with x2APIC support.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--paravirtprovider
+ none|default|legacy|minimal|hyperv|kvm</computeroutput>:
+ Specifies which paravirtualization interface to provide to
+ the guest operating system. Specifying
+ <computeroutput>none</computeroutput> explicitly turns off
+ exposing any paravirtualization interface. The option
+ <computeroutput>default</computeroutput> selects an
+ appropriate interface when starting the VM, depending on the
+ guest OS type. This is the default option chosen when
+ creating new VMs. The
+ <computeroutput>legacy</computeroutput> option is used for
+ VMs which were created with older &product-name; versions
+ and will pick a paravirtualization interface when starting
+ the VM with &product-name; 5.0 and newer. The
+ <computeroutput>minimal</computeroutput> provider is
+ mandatory for Mac OS X guests.
+ <computeroutput>kvm</computeroutput> and
+ <computeroutput>hyperv</computeroutput> are recommended for
+ Linux and Windows guests respectively. These options are
+ explained in <xref linkend="gimproviders" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--paravirtdebug &lt;keyword=value&gt;
+ [,&lt;keyword=value&gt; ...]</computeroutput>: Specifies
+ debugging options specific to the paravirtualization
+ provider configured for this VM. See the provider specific
+ options in <xref linkend="gimdebug" /> for a list of
+ supported keyword-value pairs for each provider.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nestedpaging on|off</computeroutput>: If
+ hardware virtualization is enabled, this additional setting
+ enables or disables the use of the nested paging feature in
+ the processor of your host system. See
+ <xref linkend="hwvirt" /> and
+ <xref linkend="sec-rec-cve-2018-3646" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--largepages on|off</computeroutput>: If
+ hardware virtualization <emphasis>and</emphasis> nested
+ paging are enabled, for Intel VT-x only, an additional
+ performance improvement of up to 5% can be obtained by
+ enabling this setting. This causes the hypervisor to use
+ large pages to reduce TLB use and overhead.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vtxvpid on|off</computeroutput>: If
+ hardware virtualization is enabled, for Intel VT-x only,
+ this additional setting enables or disables the use of the
+ tagged TLB (VPID) feature in the processor of your host
+ system. See <xref linkend="hwvirt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vtxux on|off</computeroutput>: If hardware
+ virtualization is enabled, for Intel VT-x only, this setting
+ enables or disables the use of the unrestricted guest mode
+ feature for executing your guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nested-hw-virt on|off</computeroutput>: If
+ hardware virtualization is enabled, this setting enables or
+ disables passthrough of hardware virtualization features to
+ the guest. See <xref linkend="nested-virt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--accelerate3d on|off</computeroutput>: If
+ the Guest Additions are installed, this setting enables or
+ disables hardware 3D acceleration. See
+ <xref linkend="guestadd-3d" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--accelerate2dvideo on|off</computeroutput>:
+ If the Guest Additions are installed, this setting enables
+ or disables 2D video acceleration. See
+ <xref linkend="guestadd-2d" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--chipset piix3|ich9</computeroutput>: By
+ default, &product-name; emulates an Intel PIIX3 chipset.
+ Usually there is no reason to change the default setting
+ unless this is required to relax some of its constraints.
+ See <xref linkend="settings-motherboard" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You can influence the BIOS logo that is displayed when a
+ virtual machine starts up with a number of settings. By
+ default, an &product-name; logo is displayed.
+ </para>
+
+ <para>
+ With <computeroutput>--bioslogofadein
+ on|off</computeroutput> and
+ <computeroutput>--bioslogofadeout on|off</computeroutput>,
+ you can determine whether the logo should fade in and out,
+ respectively.
+ </para>
+
+ <para>
+ With <computeroutput>--bioslogodisplaytime
+ &lt;msec&gt;</computeroutput> you can set how long the logo
+ should be visible, in milliseconds.
+ </para>
+
+ <para>
+ With <computeroutput>--bioslogoimagepath
+ &lt;imagepath&gt;</computeroutput> you can replace the image
+ that is shown with your own logo. The image must be an
+ uncompressed 256 color BMP file without color space
+ information (Windows 3.0 format). The image must not be
+ bigger than 640 x 480.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--biosbootmenu
+ disabled|menuonly|messageandmenu</computeroutput>: Specifies
+ whether the BIOS enables the user to select a temporary boot
+ device. The <computeroutput>menuonly</computeroutput> option
+ suppresses the message, but the user can still press F12 to
+ select a temporary boot device.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--biosapic
+ x2apic|apic|disabled</computeroutput>: Specifies the
+ firmware APIC level to be used. Options are: x2apic, apic or
+ disabled (no apic or x2apic) respectively.
+ </para>
+
+ <para>
+ Note that if x2apic is specified and x2APIC is unsupported
+ by the VCPU, biosapic downgrades to apic, if supported.
+ Otherwise biosapic downgrades to disabled. Similarly, if
+ apic is specified, and APIC is unsupported, a downgrade to
+ disabled results.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--biossystemtimeoffset
+ &lt;ms&gt;</computeroutput>: Specifies a fixed time offset,
+ in milliseconds, of the guest relative to the host time. If
+ the offset is positive, the guest time runs ahead of the
+ host time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--biospxedebug on|off</computeroutput>:
+ Enables or disables additional debugging output when using
+ the Intel PXE boot ROM. The output is written to the release
+ log file. See <xref linkend="collect-debug-info" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--system-uuid-le on|off</computeroutput>:
+ Enables or disables representing the system UUID in little
+ endian form. The default value is <literal>on</literal> for
+ new VMs. For old VMs the setting is <literal>off</literal>
+ to keep the content of the DMI/SMBIOS table unchanged, which
+ can be important for Windows license activation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--boot&lt;1-4&gt;
+ none|floppy|dvd|disk|net</computeroutput>: Specifies the
+ boot order for the virtual machine. There are four
+ <emphasis>slots</emphasis>, which the VM will try to access
+ from 1 to 4, and for each of which you can set a device that
+ the VM should attempt to boot from.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--rtcuseutc on|off</computeroutput>: Sets
+ the real-time clock (RTC) to operate in UTC time. See
+ <xref linkend="settings-motherboard" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--graphicscontroller
+ none|vboxvga|vmsvga|vboxsvga</computeroutput>: Specifies the
+ use of a graphics controller, with an option to choose a
+ specific type. See <xref linkend="settings-screen" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--snapshotfolder
+ default|&lt;path&gt;</computeroutput>: Specifies the folder
+ where snapshots are kept for a virtual machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--firmware
+ bios|efi|efi32|efi64</computeroutput>: Specifies the
+ firmware to be used to boot the VM: Available options are:
+ BIOS, or one of the EFI options: efi, efi32, or efi64. Use
+ EFI options with care.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--guestmemoryballoon
+ &lt;size&gt;</computeroutput> Sets the default size of the
+ guest memory balloon. This is the memory allocated by the
+ &product-name; Guest Additions from the guest operating
+ system and returned to the hypervisor for reuse by other
+ virtual machines.
+ <computeroutput>&lt;size&gt;</computeroutput> must be
+ specified in megabytes. The default size is 0 megabytes. See
+ <xref linkend="guestadd-balloon" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--defaultfrontend
+ default|&lt;name&gt;</computeroutput>: Specifies the default
+ frontend to be used when starting this VM. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vm-process-priority
+ default|flat|low|normal|high</computeroutput>: Specifies the
+ priority scheme of the VM process to be used when starting
+ this VM and during VM execution. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-networking">
+
+ <title>Networking Settings</title>
+
+ <para>
+ The following networking settings are available through
+ <command>VBoxManage modifyvm</command>. With all these settings,
+ the decimal number directly following the option name, 1-N in
+ the list below, specifies the virtual network adapter whose
+ settings should be changed.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--nic&lt;1-N&gt;
+ none|null|nat|natnetwork|bridged|intnet|hostonly|generic</computeroutput>:
+ Configures the type of networking for each of the VM's
+ virtual network cards. Options are: not present
+ (<computeroutput>none</computeroutput>), not connected to
+ the host (<computeroutput>null</computeroutput>), use
+ network address translation
+ (<computeroutput>nat</computeroutput>), use the new network
+ address translation engine
+ (<computeroutput>natnetwork</computeroutput>), bridged
+ networking (<computeroutput>bridged</computeroutput>), or
+ use internal networking
+ (<computeroutput>intnet</computeroutput>), host-only
+ networking (<computeroutput>hostonly</computeroutput>), or
+ access rarely used sub-modes
+ (<computeroutput>generic</computeroutput>). These options
+ correspond to the modes described in
+ <xref linkend="networkingmodes" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nictype&lt;1-N&gt;
+ Am79C970A|Am79C973|Am79C970|82540EM|82543GC|82545EM|virtio</computeroutput>:
+ Enables you to specify the networking hardware that
+ &product-name; presents to the guest for a specified VM
+ virtual network card. See <xref linkend="nichardware" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cableconnected&lt;1-N&gt;
+ on|off</computeroutput>: Enables you to temporarily
+ disconnect a virtual network interface, as if a network
+ cable had been pulled from a real network card. This might
+ be useful, for example for resetting certain software
+ components in the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ With the <computeroutput>nictrace</computeroutput> options,
+ you can optionally trace network traffic by dumping it to a
+ file, for debugging purposes.
+ </para>
+
+ <para>
+ With <computeroutput>--nictrace&lt;1-N&gt;
+ on|off</computeroutput>, you can enable network tracing for
+ a particular virtual network card.
+ </para>
+
+ <para>
+ If enabled, you must specify with
+ <computeroutput>--nictracefile&lt;1-N&gt;
+ &lt;filename&gt;</computeroutput> the absolute path of the
+ file the trace should be logged to.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicproperty&lt;1-N&gt;
+ &lt;paramname&gt;="paramvalue"</computeroutput>: This
+ option, in combination with
+ <computeroutput>nicgenericdrv</computeroutput> enables you
+ to pass parameters to rarely-used network backends.
+ </para>
+
+ <para>
+ These parameters are backend engine-specific, and are
+ different between UDP Tunnel and the VDE backend drivers.
+ For examples, see <xref linkend="network_udp_tunnel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicspeed&lt;1-N&gt;
+ &lt;kbps&gt;</computeroutput>: Only has an effect if generic
+ networking has been enabled for a particular virtual network
+ card. See the <computeroutput>--nic</computeroutput> option.
+ This mode enables access to rarely used networking
+ sub-modes, such as VDE network or UDP Tunnel. This option
+ specifies the throughput rate in KBps.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicbootprio&lt;1-N&gt;
+ &lt;priority&gt;</computeroutput>: Specifies the order in
+ which NICs are tried for booting over the network, using
+ PXE. The priority is an integer in the 0 to 4 range.
+ Priority 1 is the highest, priority 4 is low. Priority 0,
+ which is the default unless otherwise specified, is the
+ lowest.
+ </para>
+
+ <para>
+ Note that this option only has an effect when the Intel PXE
+ boot ROM is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicpromisc&lt;1-N&gt;
+ deny|allow-vms|allow-all</computeroutput>: Enables you to
+ specify how promiscuous mode is handled for the specified VM
+ virtual network card. This setting is only relevant for
+ bridged networking. <computeroutput>deny</computeroutput>,
+ the default setting, hides any traffic not intended for the
+ VM. <computeroutput>allow-vms</computeroutput> hides all
+ host traffic from the VM, but allows the VM to see traffic
+ to and from other VMs.
+ <computeroutput>allow-all</computeroutput> removes this
+ restriction completely.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicbandwidthgroup&lt;1-N&gt;
+ none|&lt;name&gt;</computeroutput>: Adds and removes an
+ assignment of a bandwidth group for the specified virtual
+ network interface. Specifying
+ <computeroutput>none</computeroutput> removes any current
+ bandwidth group assignment from the specified virtual
+ network interface. Specifying
+ <computeroutput>&lt;name&gt;</computeroutput> adds an
+ assignment of a bandwidth group to the specified virtual
+ network interface.
+ </para>
+
+ <para>
+ See <xref linkend="network_bandwidth_limit" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--bridgeadapter&lt;1-N&gt;
+ none|&lt;devicename&gt;</computeroutput>: Only has an effect
+ if bridged networking has been enabled for a virtual network
+ card. See the <computeroutput>--nic</computeroutput> option.
+ Use this option to specify which host interface the given
+ virtual network interface will use. See
+ <xref linkend="network_bridged" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--hostonlyadapter&lt;1-N&gt;
+ none|&lt;devicename&gt;</computeroutput>: Only has an effect
+ if host-only networking has been enabled for a virtual
+ network card. See the <computeroutput>--nic</computeroutput>
+ option. Use this option to specify which host-only
+ networking interface the given virtual network interface
+ will use. See <xref linkend="network_hostonly" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--intnet&lt;1-N&gt;
+ network</computeroutput>: Only has an effect if internal
+ networking has been enabled for a virtual network card. See
+ the <computeroutput>--nic</computeroutput> option. Use this
+ option to specify the name of the internal network. See
+ <xref linkend="network_internal" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nat-network&lt;1-N&gt; &lt;network
+ name&gt;</computeroutput>: If the networking type is set to
+ <computeroutput>natnetwork</computeroutput>, not
+ <computeroutput>nat</computeroutput>, then this setting
+ specifies the name of the NAT network this adapter is
+ connected to. Optional.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nicgenericdrv&lt;1-N&gt; &lt;backend
+ driver&gt;</computeroutput>: Only has an effect if generic
+ networking has been enabled for a virtual network card. See
+ the <computeroutput>--nic</computeroutput> option. This mode
+ enables you to access rarely used networking sub-modes, such
+ as VDE network or UDP Tunnel.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--macaddress&lt;1-N&gt;
+ auto|&lt;mac&gt;</computeroutput>: With this option you can
+ set the MAC address of a particular network adapter on the
+ VM. Normally, each network adapter is assigned a random
+ address by &product-name; at VM creation.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect3 id="vboxmanage-modifyvm-networking-nat">
+
+ <title>NAT Networking Settings</title>
+
+ <para>
+ The following NAT networking settings are available through
+ <command>VBoxManage modifyvm</command>. With all these
+ settings, the decimal number directly following the option
+ name, 1-N in the list below, specifies the virtual network
+ adapter whose settings should be changed.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--natnet&lt;1-N&gt;
+ &lt;network&gt;|default</computeroutput>: If the
+ networking type is set to
+ <computeroutput>nat</computeroutput>, not
+ <computeroutput>natnetwork</computeroutput>, then this
+ setting specifies the IP address range to be used for this
+ network. See <xref linkend="changenat" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natpf&lt;1-N&gt;
+ [&lt;name&gt;],tcp|udp,[&lt;hostip&gt;],&lt;hostport&gt;,[&lt;guestip&gt;],
+ &lt;guestport&gt;</computeroutput>: Defines a NAT
+ port-forwarding rule. See <xref linkend="natforward" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natpf&lt;1-N&gt; delete
+ &lt;name&gt;</computeroutput>: Deletes a NAT
+ port-forwarding rule. See <xref linkend="natforward" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nattftpprefix&lt;1-N&gt;
+ &lt;prefix&gt;</computeroutput>: Defines a prefix for the
+ built-in TFTP server. For example, where the boot file is
+ located. See <xref linkend="nat-tftp" /> and
+ <xref linkend="nat-adv-tftp" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nattftpfile&lt;1-N&gt;
+ &lt;bootfile&gt;</computeroutput>: Defines the TFT boot
+ file. See <xref linkend="nat-adv-tftp" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nattftpserver&lt;1-N&gt;
+ &lt;tftpserver&gt;</computeroutput>: Defines the TFTP
+ server address to boot from. See
+ <xref linkend="nat-adv-tftp" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nattbindip&lt;1-N&gt;
+ &lt;ip;&gt;</computeroutput>: &product-name;'s NAT engine
+ normally routes TCP/IP packets through the default
+ interface assigned by the host's TCP/IP stack. Use this
+ setting to instruct the NAT engine to bind to a specified
+ IP address instead. See
+ <xref linkend="nat-adv-settings" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natdnspassdomain&lt;1-N&gt;
+ on|off</computeroutput>: Specifies whether the built-in
+ DHCP server passes the domain name for network name
+ resolution.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natdnsproxy&lt;1-N&gt;
+ on|off</computeroutput>: Makes the NAT engine proxy all
+ guest DNS requests to the host's DNS servers. See
+ <xref linkend="nat-adv-dns" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natdnshostresolver&lt;1-N&gt;
+ on|off</computeroutput>: Makes the NAT engine use the
+ host's resolver mechanisms to handle DNS requests. See
+ <xref linkend="nat-adv-dns" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--natsettings&lt;1-N&gt;
+ [&lt;mtu&gt;],[&lt;socksnd&gt;],[&lt;sockrcv&gt;],[&lt;tcpsnd&gt;],
+ [&lt;tcprcv&gt;]</computeroutput>: Controls several NAT
+ settings. See <xref linkend="nat-adv-settings" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--nataliasmode&lt;1-N&gt;
+ default|[log],[proxyonly],[sameports]</computeroutput>:
+ Defines behaviour of the NAT engine core: log - enables
+ logging, proxyonly - switches off aliasing mode and makes
+ NAT transparent, sameports - enforces the NAT engine to
+ send packets through the same port as they originated on,
+ default - disable all aliasing modes. See
+ <xref linkend="nat-adv-alias" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-other">
+
+ <title>Miscellaneous Settings</title>
+
+ <para>
+ The following hardware settings, such as serial port, audio,
+ clipboard, drag and drop, monitor, and USB settings are
+ available through <command>VBoxManage modifyvm</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--mouse
+ &lt;ps2|usb|usbtablet|usbmultitouch&gt;</computeroutput>:
+ Specifies the mode of the mouse to be used in the VM.
+ Available options are: ps2, usb, usbtablet, usbmultitouch.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--keyboard &lt;ps2|usb&gt;</computeroutput>:
+ Specifies the mode of the keyboard to be used in the VM.
+ Available options are: ps2, usb.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--uart&lt;1-N&gt; off|&lt;I/O base&gt;
+ &lt;IRQ&gt;</computeroutput>: Configures virtual serial
+ ports for the VM. See <xref linkend="serialports" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--uartmode&lt;1-N&gt;
+ &lt;arg&gt;</computeroutput>: Controls how &product-name;
+ connects a given virtual serial port, configured with the
+ <computeroutput>--uartX</computeroutput> setting, to the
+ host on which the virtual machine is running. As described
+ in <xref linkend="serialports" />, for each such port, you
+ can specify <computeroutput>&lt;arg&gt;</computeroutput> as
+ one of the following options:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>disconnected</computeroutput>: Even
+ though the serial port is shown to the guest, it has no
+ "other end". This is like a real COM port without a
+ cable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>server
+ &lt;pipename&gt;</computeroutput>: On a Windows host,
+ this tells &product-name; to create a named pipe on the
+ host named
+ <computeroutput>&lt;pipename&gt;</computeroutput> and
+ connect the virtual serial device to it. Note that
+ Windows requires that the name of a named pipe begins
+ with <filename>\\.\pipe\</filename>.
+ </para>
+
+ <para>
+ On a Linux host, instead of a named pipe, a local domain
+ socket is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>client
+ &lt;pipename&gt;</computeroutput>: Operates as for
+ <computeroutput>server</computeroutput>, except that the
+ pipe, or local domain socket, is not created by
+ &product-name; but is assumed to exist already.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>tcpserver &lt;port&gt;</computeroutput>:
+ Configures &product-name; to create a TCP socket on the
+ host with TCP
+ <computeroutput>&lt;port&gt;</computeroutput> and
+ connect the virtual serial device to it. Note that
+ UNIX-like systems require ports over 1024 for normal
+ users.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>tcpclient
+ &lt;hostname:port&gt;</computeroutput>: Operates as for
+ <computeroutput>tcpserver</computeroutput>, except that
+ the TCP socket is not created by &product-name;, but is
+ assumed to exist already.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>file &lt;file&gt;</computeroutput>:
+ Redirects the serial port output to a raw file
+ &lt;file&gt; specified by its absolute path on the host
+ file system.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>&lt;devicename&gt;</computeroutput>: If,
+ instead of the above options, the device name of a
+ physical hardware serial port of the host is specified,
+ the virtual serial port is connected to that hardware
+ port. On a Windows host, the device name will be a COM
+ port such as <computeroutput>COM1</computeroutput>. On a
+ Linux host, the device name will be
+ <filename>/dev/ttyS0</filename> or similar. This enables
+ you to wire up a real serial port to a virtual machine.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>uarttype &lt;1-N&gt;
+ 16450|16550A|16750</computeroutput>: Configures the UART
+ type for a virtual serial port. The default UART type is
+ 16550A.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--lptmode&lt;1-N&gt;
+ &lt;Device&gt;</computeroutput>: Specifies the Device Name
+ of the parallel port that the Parallel Port feature will be
+ using. Use this <emphasis>before</emphasis>
+ <computeroutput>--lpt</computeroutput>. This feature depends
+ on the host operating system. For Windows hosts, use a
+ device name such as lpt1. On Linux hosts, use a device name
+ such as /dev/lp0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--lpt&lt;1-N&gt; &lt;I/O base&gt;
+ &lt;IRQ&gt;</computeroutput>: Specifies the I/O address of
+ the parallel port and the IRQ number that the Parallel Port
+ feature will be using. Optional. Use this
+ <emphasis>after</emphasis>
+ <computeroutput>--lptmod</computeroutput>. I/O base address
+ and IRQ are the values that guest sees. For example, the
+ values avalable under guest Device Manager.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--audio
+ none|null|dsound|oss|alsa|pulse|coreaudio</computeroutput>:
+ Specifies whether the VM should have audio support, and if
+ so, which type. The list of supported audio types depends on
+ the host and can be determined with <command>VBoxManage
+ modifyvm</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--audiocontroller
+ ac97|hda|sb16</computeroutput>: Specifies the audio
+ controller to be used with the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--audiocodec
+ stac9700|ad1980|stac9221|sb16</computeroutput>: Specifies
+ the audio codec to be used with the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--audioin on</computeroutput>: Specifies
+ whether capturing audio from the host is enabled or
+ disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--audioout on</computeroutput>: Specifies
+ whether audio playback from the guest is enabled or
+ disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--clipboard-mode
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput>:
+ Configues how the guest or host operating system's clipboard
+ should be shared with the host or guest. See
+ <xref linkend="generalsettings" />. This setting requires
+ that the Guest Additions be installed in the virtual
+ machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--clipboard-file-transfers
+ enabled|disabled</computeroutput>: Specifies if clipboard
+ file transfers are allowed between host and guest OSes or
+ not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--draganddrop
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput>:
+ Specifies the drag and drop mode to use between the host and
+ the virtual machine. See <xref linkend="guestadd-dnd" />.
+ This requires that the Guest Additions be installed in the
+ virtual machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--monitorcount
+ &lt;count&gt;</computeroutput>: Enables multi-monitor
+ support. See <xref linkend="settings-display" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--usb on|off</computeroutput>: Enables and
+ disables the VM's virtual USB controller. See
+ <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--usbehci on|off</computeroutput>: Enables
+ and disables the VM's virtual USB 2.0 controller. See
+ <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--usbxhci on|off</computeroutput>: Enables
+ and disables the VM's virtual USB 3.0 controller. See
+ <xref linkend="settings-usb" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--usbrename &lt;oldname&gt;
+ &lt;newname&gt;</computeroutput>: Enables renaming of the
+ VM's virtual USB controller from &lt;oldname&gt; to
+ &lt;newname&gt;.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-recording">
+
+ <title>Recording Settings</title>
+
+ <para>
+ The <command>VBoxManage modifyvm</command> command enables you
+ to modify recording settings for video recording, audio
+ recording, or both.
+ </para>
+
+ <para>
+ Use the following options to update the recording settings:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--recording on|off</option> enables or disables the
+ recording of a VM session into a WebM/VP8 file. When this
+ option value is <computeroutput>on</computeroutput>,
+ recording begins when the VM session starts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingscreens
+ all|<replaceable>screen-ID</replaceable>
+ [<replaceable>screen-ID</replaceable> ...]</option> enables
+ you to specify which VM screens to record. The recording for
+ each screen that you specify is saved to its own file.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingfile
+ <replaceable>filename</replaceable></option> specifies the
+ file in which to save the recording.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingmaxsize
+ <replaceable>MB</replaceable></option> specifies the maximum
+ size of the recorded video file in megabytes. The recording
+ stops when the file reaches the specified size. If this
+ value is zero, the recording continues until you stop the
+ recording.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingmaxtime
+ <replaceable>seconds</replaceable></option> specifies the
+ maximum amount time to record in seconds. The recording
+ stops after the specified number of seconds elapses. If this
+ value is zero, the recording continues until you stop the
+ recording.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingopts
+ <replaceable>keyword</replaceable>=<replaceable>value</replaceable>[,<replaceable>keyword</replaceable>=<replaceable>value</replaceable>
+ ...]</option> specifies additional video-recording options
+ in a comma-separated keyword-value format. For example,
+ <computeroutput>foo=bar,a=b</computeroutput>.
+ </para>
+
+ <para>
+ Only use this option only if you are an advanced user. For
+ information about keywords, see <emphasis>Oracle VM
+ VirtualBox Programming Guide and Reference</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingvideofps
+ <replaceable>fps</replaceable></option> specifies the
+ maximum number of video frames per second (FPS) to record.
+ Frames that have a higher frequency are skipped. Increasing
+ this value reduces the number of skipped frames and
+ increases the file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingvideorate
+ <replaceable>bit-rate</replaceable></option> specifies the
+ bit rate of the video in kilobits per second. Increasing
+ this value improves the appearance of the video at the cost
+ of an increased file size.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--recordingvideores
+ <replaceable>width</replaceable>x<replaceable>height</replaceable></option>
+ specifies the video resolution of the recorded video in
+ pixels.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-vrde">
+
+ <title>Remote Machine Settings</title>
+
+ <para>
+ The following settings that affect remote machine behavior are
+ available through <command>VBoxManage modifyvm</command>:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrde on|off</computeroutput>: Enables and
+ disables the VirtualBox Remote Desktop Extension (VRDE)
+ server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "TCP/Ports|Address=&lt;value&gt;"</computeroutput>: Sets the
+ port numbers and IP address on the VM that the VRDE server
+ can bind to.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For TCP/Ports, &lt;value&gt; should be a port or a range
+ of ports that the VRDE server can bind to.
+ <computeroutput>default</computeroutput> or
+ <computeroutput>0</computeroutput> means port 3389, the
+ standard port for RDP. See the description for the
+ <computeroutput>--vrdeport</computeroutput> option in
+ <xref linkend="vboxmanage-modifyvm-vrde" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For TCP/Address, &lt;value&gt; should be the IP address
+ of the host network interface that the VRDE server will
+ bind to. If specified, the server will accept
+ connections only on the specified host network
+ interface. See the description for the
+ <computeroutput>--vrdeaddress</computeroutput> option in
+ <xref linkend="vboxmanage-modifyvm-vrde" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "VideoChannel/Enabled|Quality|DownscaleProtection=&lt;value&gt;"</computeroutput>:
+ Sets the VRDP video redirection properties.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For VideoChannel/Enabled, &lt;value&gt; can be set to
+ "1", switching the VRDP video channel on. See
+ <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For VideoChannel/Quality, &lt;value&gt; should be set
+ between 10 and 100% inclusive, representing a JPEG
+ compression level on the VRDE server video channel.
+ Lower values mean lower quality but higher compression.
+ See <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For VideoChannel/DownscaleProtection, &lt;value&gt; can
+ be set to "1" to enable the videochannel downscale
+ protection feature. When enabled, if a video's size
+ equals the shadow buffer size, then it is regarded as a
+ full screen video, and is displayed. But if its size is
+ between fullscreen and the downscale threshold then it
+ is <emphasis>not</emphasis> displayed, as it could be an
+ application window, which would be unreadable when
+ downscaled. When the downscale protection feature is
+ disabled, an attempt is always made to display videos.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Client/DisableDisplay|DisableInput|DisableAudio|DisableUSB=1"</computeroutput>:
+ Disables one of the VRDE server features: Display, Input,
+ Audio or USB respectively. To reenable a feature, use
+ "Client/DisableDisplay=" for example. See
+ <xref linkend="vrde-customization" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Client/DisableClipboard|DisableUpstreamAudio=1"</computeroutput>:
+ Disables one of the VRDE server features: Clipboard or
+ UpstreamAudio respectively. To reenable a feature, use
+ "Client/DisableClipboard=" for example. See
+ <xref linkend="vrde-customization" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Client/DisableRDPDR=1"</computeroutput>: Disables the VRDE
+ server feature: RDP device redirection for smart cards. To
+ reenable this feature, use "Client/DisableRDPR=".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "H3DRedirect/Enabled=1"</computeroutput>: Enables the VRDE
+ server feature: 3D redirection. To disable this feature, use
+ "H3DRedirect/Enabled=".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Security/Method|ServerCertificate|ServerPrivateKey|CACertificate=&lt;value&gt;"</computeroutput>:
+ Sets the desired security method and path of server
+ certificate, path of server private key, path of CA
+ certificate, that are used for a connection.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Security/Method=&lt;value&gt;"</computeroutput> sets
+ the desired security method, which is used for a
+ connection. Valid values are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>Negotiate</computeroutput>: Both
+ Enhanced (TLS) and Standard RDP Security connections
+ are allowed. The security method is negotiated with
+ the client. This is the default setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>RDP</computeroutput>: Only Standard
+ RDP Security is accepted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>TLS</computeroutput>: Only Enhanced
+ RDP Security is accepted. The client must support
+ TLS.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Security/ServerCertificate=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the server
+ certificate. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Security/ServerPrivateKey=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the server
+ private key. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Security/CACertificate=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the CA self
+ signed certificate. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Audio/RateCorrectionMode|LogPath=&lt;value&gt;"</computeroutput>
+ sets the audio connection mode, or path of the audio
+ logfile.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Audio/RateCorrectionMode=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the desired rate correction mode.
+ Allowed values are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_VOID</computeroutput>:
+ No mode specified, use to unset any Audio mode
+ already set.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_RC</computeroutput>:
+ Rate correction mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_LPF</computeroutput>:
+ Low pass filter mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_CS</computeroutput>:
+ Client sync mode to prevent underflow or overflow of
+ the client queue.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeproperty
+ "Audio/LogPath=&lt;value&gt;"</computeroutput> where
+ &lt;value&gt; is the absolute path of the Audio log
+ file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeextpack
+ default|&lt;name&gt;</computeroutput>: Specifies the library
+ to use for accessing the VM remotely. The default is to use
+ the RDP code which is part of the &product-name; Extension
+ Pack.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeport
+ default|&lt;ports&gt;</computeroutput>: A port or a range of
+ ports the VRDE server can bind to.
+ <computeroutput>default</computeroutput> or
+ <computeroutput>0</computeroutput> means port 3389, the
+ standard port for RDP. You can specify a comma-separated
+ list of ports or ranges of ports. Use a dash between two
+ port numbers to specify a range. The VRDE server will bind
+ to <emphasis>one</emphasis> of the available ports from the
+ specified list. Only one machine can use a given port at a
+ time. For example, the option <computeroutput> --vrdeport
+ 5000,5010-5012</computeroutput> will tell the server to bind
+ to one of following ports: 5000, 5010, 5011, or 5012.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeaddress &lt;IP
+ address&gt;</computeroutput>: The IP address of the host
+ network interface the VRDE server will bind to. If
+ specified, the server will accept connections only on the
+ specified host network interface.
+ </para>
+
+ <para>
+ The setting can be used to specify whether the VRDP server
+ should accept either IPv4, IPv6, or both connections:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Only IPv4: <computeroutput>--vrdeaddress
+ "0.0.0.0"</computeroutput>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Only IPv6: <computeroutput>--vrdeaddress
+ "::"</computeroutput>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Both IPv6 and IPv4: <computeroutput>--vrdeaddress
+ ""</computeroutput>
+ </para>
+
+ <para>
+ This is the default setting.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeauthtype
+ null|external|guest</computeroutput>: Enables you to
+ indicate use of authorization, and specify how authorization
+ will be performed. See <xref linkend="vbox-auth" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdeauthlibrary
+ default|&lt;name&gt;</computeroutput>: Specifies the library
+ used for RDP authentication. See
+ <xref linkend="vbox-auth" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdemulticon on|off</computeroutput>:
+ Enables multiple connections to be made to the same VRDE
+ server, if the server supports this feature. See
+ <xref linkend="vrde-multiconnection" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdereusecon on|off</computeroutput>: This
+ specifies the VRDE server behavior when multiple connections
+ are disabled. When this option is enabled, the server will
+ allow a new client to connect and will drop the existing
+ connection. When this option is disabled, the default
+ setting, a new connection will not be accepted if there is
+ already a client connected to the server.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdevideochannel on|off</computeroutput>:
+ Enables video redirection, if it is supported by the VRDE
+ server. See <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vrdevideochannelquality
+ &lt;percent&gt;</computeroutput>: Specifies the image
+ quality for video redirection. See
+ <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-teleport">
+
+ <title>Teleporting Settings</title>
+
+ <para>
+ With the following commands for <command>VBoxManage
+ modifyvm</command> you can configure a machine to be a target
+ for teleporting. See <xref linkend="teleporting" />.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--teleporter on|off</computeroutput>:
+ Enables and disables the teleporter feature whereby when the
+ machine is started, it waits to receive a teleporting
+ request from the network instead of booting normally.
+ Teleporting requests are received on the port and address
+ specified using the following parameters.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--teleporterport
+ &lt;port&gt;</computeroutput>,
+ <computeroutput>--teleporteraddress
+ &lt;address&gt;</computeroutput>: These settings must be
+ used with <computeroutput>--teleporter</computeroutput>.
+ They specify the port and address the virtual machine should
+ listen to in order to receive a teleporting request sent
+ from another virtual machine.
+ <computeroutput>&lt;port&gt;</computeroutput> can be any
+ free TCP/IP port number, such as 6000.
+ <computeroutput>&lt;address&gt;</computeroutput> can be any
+ IP address or hostname and specifies the TCP/IP socket to
+ bind to. The default is 0.0.0.0, which means any address.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--teleporterpassword
+ &lt;password&gt;</computeroutput>: If this optional setting
+ is used, then the teleporting request will only succeed if
+ the source machine specifies the same password as the one
+ given with this command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--teleporterpasswordfile
+ &lt;password&gt;</computeroutput>: If this optional setting
+ is used, then the teleporting request will only succeed if
+ the source machine specifies the same password as the one
+ specified in the file give with this command. Use
+ <computeroutput>stdin</computeroutput> to read the password
+ from stdin.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--cpuid &lt;leaf&gt; &lt;eax&gt; &lt;ebx&gt;
+ &lt;ecx&gt; &lt;edx&gt;</computeroutput>: Advanced users can
+ use this setting before a teleporting operation, to restrict
+ the virtual CPU capabilities that &product-name; presents to
+ the guest operating system. This must be run on both the
+ source and the target machines involved in the teleporting
+ and will then modify what the guest sees when it executes
+ the <computeroutput>CPUID</computeroutput> machine
+ instruction. This might help with misbehaving applications
+ that wrongly assume that certain CPU capabilities are
+ present. The meaning of the parameters is hardware
+ dependent, refer to the AMD or Intel processor
+ documentation.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-debugging">
+
+ <title>Debugging Settings</title>
+
+ <para>
+ The following settings are only relevant for low-level VM
+ debugging. Regular users will never need these settings.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--tracing-enabled on|off</computeroutput>:
+ Enables the tracebuffer. This consumes some memory for the
+ tracebuffer and adds extra overhead.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--tracing-config
+ &lt;config-string&gt;</computeroutput>: Enables tracing
+ configuration. In particular, this defines which group of
+ tracepoints are enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--tracing-allow-vm-access
+ on|off</computeroutput>: Enables and disables VM access to
+ the tracebuffer. By default, this setting is disabled.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-usbcardreader">
+
+ <title>USB Card Reader Settings</title>
+
+ <para>
+ The following setting defines access to a USB Card Reader by the
+ guest environment. USB card readers are typically used for
+ accessing data on memory cards such as CompactFlash (CF), Secure
+ Digital (SD), or MultiMediaCard (MMC).
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--usbcardreader on|off</computeroutput>:
+ Enables and disables the USB card reader interface.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-autostart">
+
+ <title>Autostarting VMs During Host System Boot</title>
+
+ <para>
+ These settings configure the VM autostart feature, which
+ automatically starts the VM at host system boot-up. Note that
+ there are prerequisites that need to be addressed before using
+ this feature. See <xref linkend="autostart" />.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--autostart-enabled on|off</computeroutput>:
+ Enables and disables VM autostart at host system boot-up,
+ using the specified user name.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--autostart-delay
+ &lt;seconds&gt;</computeroutput>: Specifies a delay, in
+ seconds, following host system boot-up, before the VM
+ autostarts.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-movevm">
+
+ <title>VBoxManage movevm</title>
+
+ <para>
+ This command moves a virtual machine to a new location on the
+ host.
+ </para>
+
+ <para>
+ Associated files of the virtual machine, such as settings files
+ and disk image files, are moved to the new location. The
+ &product-name; configuration is updated automatically.
+ </para>
+
+ <para>
+ The <command>movevm</command> subcommand requires the name of the
+ virtual machine which should be moved.
+ </para>
+
+ <para>
+ Also required is the type of move operation, specified by
+ <computeroutput>--type basic</computeroutput>. Other types of move
+ operation may be supported in future releases.
+ </para>
+
+ <para>
+ The <computeroutput>--folder</computeroutput> setting configures
+ the new location on the host file system. Enter a relative
+ pathname or a full pathname.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-import">
+
+ <title>VBoxManage import</title>
+
+ <para>
+ This command imports one or more virtual machines into
+ &product-name;. You can import from either of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A virtual appliance in OVF format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A cloud service, such as &oci;. Only a single cloud instance
+ can be imported.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See <xref linkend="ovf" /> for more details on importing VMs into
+ &product-name;.
+ </para>
+
+ <sect2 id="vboxmanage-import-ovf">
+
+ <title>Import from OVF</title>
+
+ <para>
+ The <command>import</command> subcommand takes at least the path
+ name of an OVF file as input and expects the disk images, if
+ needed, to be in the same directory as the OVF file. Many
+ additional command-line options are supported. These enable you
+ to control in detail what is being imported and to modify the
+ import parameters, depending on the content of the OVF file.
+ </para>
+
+ <para>
+ It is therefore recommended to first run the
+ <command>import</command> subcommand with the
+ <computeroutput>--dry-run</computeroutput> or
+ <computeroutput>-n</computeroutput> option. This will then print
+ a description of the appliance's contents to the screen how it
+ would be imported into &product-name;, together with the
+ optional command-line options to influence the import behavior.
+ </para>
+
+ <para>
+ Use of the <computeroutput>--options
+ keepallmacs|keepnatmacs|keepdisknames</computeroutput> option
+ enables additional fine tuning of the import operation. The
+ first two options enable you to specify how the MAC addresses of
+ every virtual network card should be handled. They can either be
+ reinitialized, which is the default setting, left unchanged
+ (<computeroutput>keepallmacs</computeroutput>) or left unchanged
+ when the network type is NAT
+ (<computeroutput>keepnatmacs</computeroutput>). If you add
+ <computeroutput>keepdisknames</computeroutput> all new disk
+ images are assigned the same names as the originals, otherwise
+ they are renamed.
+ </para>
+
+ <para>
+ As an example, the following is a screen output for a sample
+ appliance containing a Windows XP guest:
+ </para>
+
+<screen>VBoxManage import WindowsXp.ovf --dry-run
+ Interpreting WindowsXp.ovf...
+ OK.
+ Virtual system 0:
+ 0: Suggested OS type: "WindowsXP"
+ (change with "--vsys 0 --ostype &lt;type&gt;"; use "list ostypes" to list all)
+ 1: Suggested VM name "Windows XP Professional_1"
+ (change with "--vsys 0 --vmname &lt;name&gt;")
+ 2: Suggested VM group "/"
+ (change with "--vsys 0 --group &lt;group&gt;")
+ 3: Suggested VM settings file name "/home/klaus/VirtualBox VMs/dummy2 2/dummy2 2.vbox"
+ (change with "--vsys 0 --settingsfile &lt;filename&gt;")
+ 4: Suggested VM base folder "/home/klaus/VirtualBox VMs"
+ (change with "--vsys 0 --basefolder &lt;path&gt;")
+ 5: End-user license agreement
+ (display with "--vsys 0 --eula show";
+ accept with "--vsys 0 --eula accept")
+ 6: Number of CPUs: 1
+ (change with "--vsys 0 --cpus &lt;n&gt;")
+ 7: Guest memory: 956 MB (change with "--vsys 0 --memory &lt;MB&gt;")
+ 8: Sound card (appliance expects "ensoniq1371", can change on import)
+ (disable with "--vsys 0 --unit 5 --ignore")
+ 9: USB controller
+ (disable with "--vsys 0 --unit 6 --ignore")
+ 10: Network adapter: orig bridged, config 2, extra type=bridged
+ 11: Floppy
+ (disable with "--vsys 0 --unit 8 --ignore")
+ 12: SCSI controller, type BusLogic
+ (change with "--vsys 0 --unit 9 --scsitype {BusLogic|LsiLogic}";
+ disable with "--vsys 0 --unit 9 --ignore")
+ 13: IDE controller, type PIIX4
+ (disable with "--vsys 0 --unit 10 --ignore")
+ 14: Hard disk image: source image=WindowsXp.vmdk,
+ target path=/home/user/disks/WindowsXp.vmdk, controller=9;channel=0
+ (change controller with "--vsys 0 --unit 11 --controller &lt;id&gt;";
+ disable with "--vsys 0 --unit 11 --ignore")</screen>
+
+ <para>
+ The individual configuration items are numbered, and depending
+ on their type support different command-line options. The import
+ subcommand can be directed to ignore many such items with a
+ <computeroutput>--vsys X --unit Y --ignore</computeroutput>
+ option, where X is the number of the virtual system and Y the
+ item number, as printed on the screen. X is zero, unless there
+ are several virtual system descriptions in the appliance.
+ </para>
+
+ <para>
+ In the above example, Item #1 specifies the name of the target
+ machine in &product-name;. Items #12 and #13 specify hard disk
+ controllers, respectively. Item #14 describes a hard disk image.
+ In this case, the additional
+ <computeroutput>--controller</computeroutput> option indicates
+ which item the disk image should be connected to, with the
+ default coming from the OVF file.
+ </para>
+
+ <para>
+ You can combine several items for the same virtual system using
+ the <computeroutput>--vsys</computeroutput> option. For example,
+ to import a machine as described in the OVF, but without the
+ sound card and without the USB controller, and with the disk
+ image connected to the IDE controller instead of the SCSI
+ controller, use the following command:
+ </para>
+
+<screen>VBoxManage import WindowsXp.ovf
+ --vsys 0 --unit 8 --ignore --unit 9 --ignore --unit 14 --controller 13</screen>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-import-cloud">
+
+ <title>Import from &oci;</title>
+
+ <para>
+ As the result of this operation, a file with the suffix
+ <filename>.oci</filename> is downloaded to the local host. This
+ file is a TAR archive which contains a bootable instance image
+ in QCOW2 format and a JSON file with some metadata related to
+ the imported instance.
+ </para>
+
+ <para>
+ The downloaded file is deleted after a successful import. If
+ import fails, the downloaded file may not be deleted and the
+ VBoxSVC log file may indicate the location where the file was
+ stored.
+ </para>
+
+ <para>
+ During import the bootable image is extracted from the archive
+ and converted into VMDK format. The JSON file is also extracted
+ and stored in the VM machine folder.
+ </para>
+
+ <para>
+ The command syntax for importing an &oci; instance begins with
+ <command>VBoxManage import OCI:// --cloud</command>.
+ </para>
+
+ <para>
+ You can list the available &oci; VM instances and their IDs by
+ using the following command:
+ </para>
+
+<screen>VBoxManage cloud --provider=OCI --profile=<replaceable>cloud-profile-name</replaceable> list instances</screen>
+
+ <para>
+ To import a VM from a cloud service such as &oci;, use the
+ <option>--cloud</option> option to specify the import from the
+ Cloud. Some of the following options are settings for the VM,
+ for others you must enter an Oracle Cloud Identifier (OCID) for
+ a resource. Use the Oracle Cloud Infrastructure Console to view
+ OCIDs.
+ </para>
+
+ <para>
+ The following parameters can be specified:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--vmname</option>: Specifies a new name for the
+ imported VM. This name is used as the VM name by
+ &product-name;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudinstanceid</option>: The ID of an existing
+ instance in the Cloud.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudprofile</option>: Specifies the cloud profile
+ that is used to connect to the cloud service provider. The
+ cloud profile contains your &oci; account details, such as
+ your user OCID and the fingerprint for your public key. To
+ use a cloud profile, you must have the required permissions
+ on &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudbucket</option>: Specifies the bucket name in
+ which to store the object created from an instance bootable
+ volume. In &oci;, a bucket is a logical container for
+ storing objects.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following import options have the same meaning as for OVF
+ import:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--ostype</option>: An OS type supported by
+ &product-name;. Use the <command>VBoxManage list
+ ostypes</command> command to see the whole list of supported
+ OSes. If the type was not set, the
+ <literal>Unknown</literal> type is used.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--basefolder</option>: The folder where the new VM
+ is stored.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--description</option>: A string describing the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--memory</option>: The amount of RAM memory assigned
+ for the VM, in MB. If this option is not set either the
+ default memory size for the OS type is used, or the value is
+ taken from the &oci; instance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cpus</option>: the number of virtual CPUs assigned
+ for the VM. If this option is not set, either the default
+ virtual CPUs setting for the OS type is used, or the value
+ is taken from the &oci; instance.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The import options <option>--disk</option>,
+ <option>--controller</option>, <option>--scsitype</option>,
+ <option>--unit</option>, <option>--settingsfile</option> are not
+ valid for cloud import.
+ </para>
+
+ <para>
+ The following example shows a typical command line for importing
+ an instance from &oci;:
+ </para>
+
+<screen># VBoxManage import OCI:// --cloud --vmname import_from_oci --memory 4000
+ --cpus 3 --ostype FreeBSD_64 --cloudprofile "standard user"
+ --cloudinstanceid ocid1.instance.oc1.iad.abuwc... --cloudbucket myBucket</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-export">
+
+ <title>VBoxManage export</title>
+
+ <para>
+ This command exports one or more virtual machines from
+ &product-name;. You can export to either of the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ A virtual appliance in OVF format, including copying their
+ virtual disk images to compressed VMDK.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A cloud service, such as &oci;. A single VM can be exported in
+ VMDK format.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See <xref linkend="ovf" /> for more details on exporting VMs from
+ &product-name;.
+ </para>
+
+ <sect2 id="vboxmanage-export-ovf">
+
+ <title>Export to OVF</title>
+
+ <para>
+ List the machine, or the machines, that you would like to export
+ to the same OVF file and specify the target OVF file after an
+ additional <computeroutput>--output</computeroutput> or
+ <computeroutput>-o</computeroutput> option. Note that the
+ directory of the target OVF file will also receive the exported
+ disk images in the compressed VMDK format, regardless of the
+ original format, and should have enough disk space left for
+ them.
+ </para>
+
+ <para>
+ Beside a simple export of a given virtual machine, you can
+ append several product information to the appliance file. Use
+ <computeroutput>--product</computeroutput>,
+ <computeroutput>--producturl</computeroutput>,
+ <computeroutput>--vendor</computeroutput>,
+ <computeroutput>--vendorurl</computeroutput>,
+ <computeroutput>--version</computeroutput> and
+ <computeroutput>--description</computeroutput> to specify this
+ additional information. For legal reasons you may add a license
+ text or the content of a license file by using the
+ <computeroutput>--eula</computeroutput> and
+ <computeroutput>--eulafile</computeroutput> option respectively.
+ </para>
+
+ <para>
+ As with OVF import, you use the <computeroutput>--vsys
+ X</computeroutput> option to apply these options to the correct
+ virtual machine.
+ </para>
+
+ <para>
+ For virtualization products which are not fully compatible with
+ the OVF standard 1.0 you can enable an OVF 0.9 legacy mode with
+ the <computeroutput>--legacy09</computeroutput> option. Other
+ options are <computeroutput>--ovf09</computeroutput>,
+ <computeroutput>--ovf10</computeroutput>,
+ <computeroutput>--ovf20</computeroutput>.
+ </para>
+
+ <para>
+ To specify options controlling the exact content of the
+ appliance file, you can use <option>--options</option> to
+ request the creation of a manifest file, which enables detection
+ of corrupted appliances on import, the additional export of DVD
+ images, and the exclusion of MAC addresses. You can specify a
+ list of options, such as <option>--options
+ manifest,nomacs</option>. For details, check the help output of
+ <command>VBoxManage export</command>.
+ </para>
+
+ </sect2>
+
+ <sect2 id="vboxmanage-export-cloud">
+
+ <title>Export to &oci;</title>
+
+ <para>
+ By default, an exported disk image is converted into stream VMDK
+ format. This ensures compatibility with &oci;.
+ </para>
+
+ <para>
+ List the machine that you want to export to &oci; and specify
+ the target cloud service provider by using the
+ <computeroutput>--output</computeroutput> or
+ <computeroutput>-o</computeroutput> option.
+ </para>
+
+ <para>
+ To export a VM to a cloud service such as &oci;, use the
+ <option>--cloud</option> option to specify the VM to export.
+ This option works in the same way as the <option>--vsys</option>
+ option for OVF export.
+ </para>
+
+ <para>
+ Some of the following options are settings for the VM instance.
+ As a result, you must enter an Oracle Cloud Identifier (OCID)
+ for a resource. Use the &oci; Console to view OCIDs.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <option>--output/-o</option>: Specifies the short name of
+ the cloud service provider to which you export. For &oci;,
+ enter <computeroutput>OCI://</computeroutput>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloud</option>
+ <replaceable>number-of-virtual-system</replaceable>:
+ Specifies a number that identifies the VM that you are
+ exporting. Numbering starts at
+ <computeroutput>0</computeroutput> for the first VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--vmname</option> <replaceable>name</replaceable>:
+ Specifies the name of the exported VM. This name is used as
+ the VM instance name in &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudprofile</option>
+ <replaceable>cloud-profile-name</replaceable>: Specifies the
+ cloud profile that is used to connect to the cloud service
+ provider. The cloud profile contains your &oci; account
+ details, such as your user OCID and the fingerprint for your
+ public key. See <xref linkend="cloud-export-oci"/>.
+ </para>
+
+ <para>
+ To use a cloud profile, you must have the required
+ permissions on &oci;.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudshape</option>
+ <replaceable>shape</replaceable>: Specifies the shape used
+ for the VM instance. The shape defines the number of CPUs
+ and the amount of memory allocated to the VM instance. The
+ shape must be compatible with the exported image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--clouddomain</option>
+ <replaceable>domain</replaceable>: Specifies the
+ availability domain to use for the VM instance. Enter the
+ full name of the availability domain.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--clouddisksize</option>
+ <replaceable>disk-size-in-GB</replaceable>: Specifies the
+ disk size used for the exported disk image in gigabytes. The
+ minimum value is 50 GB and the maximum value is 300 GB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudbucket</option>
+ <replaceable>bucket-name</replaceable>: Specifies the bucket
+ in which to store the uploaded files. In &oci;, a bucket is
+ a logical container for storing objects.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudocivcn</option>
+ <replaceable>OCI-vcn-ID</replaceable>: Specifies the virtual
+ cloud network (VCN) to use for the VM instance. Enter the
+ OCID for the VCN.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudocisubnet</option>
+ <replaceable>OCI-subnet-ID</replaceable>: Specifies the
+ subnet of the VCN to use for the VM instance. Enter the OCID
+ for the subnet.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudkeepobject true | false</option>: Specifies
+ whether to store the exported disk image in Oracle Object
+ Storage.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudlaunchinstance true | false</option>:
+ Specifies whether to start the VM instance after the export
+ to &oci; completes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <option>--cloudpublicip true | false</option>: Specifies
+ whether to enable a public IP address for the VM instance.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following example shows a typical command line for exporting
+ a VM to &oci;.
+ </para>
+
+<screen># VBoxManage export myVM --output OCI:// --cloud 0 --vmname myVM_Cloud \
+--cloudprofile "standard user" --cloudbucket myBucket \
+--cloudshape VM.Standard2.1 --clouddomain US-ASHBURN-AD-1 --clouddisksize 50 \
+--cloudocivcn ocid1.vcn.oc1.iad.aaaa... --cloudocisubnet ocid1.subnet.oc1.iad.aaaa... \
+--cloudkeepobject true --cloudlaunchinstance true --cloudpublicip true</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-startvm">
+
+ <title>VBoxManage startvm</title>
+
+ <para>
+ This command starts a virtual machine that is currently in the
+ Powered Off or Saved states.
+ </para>
+
+ <para>
+ The optional <computeroutput>--type</computeroutput> specifier
+ determines whether the machine will be started in a window or
+ whether the output should go through
+ <command>VBoxHeadless</command>, with VRDE enabled or not. See
+ <xref linkend="vboxheadless" />. The list of types is subject to
+ change, and it is not guaranteed that all types are accepted by
+ any product variant.
+ </para>
+
+ <para>
+ The global or per-VM default value for the VM frontend type will
+ be taken if the type is not explicitly specified. If none of these
+ are set, the GUI variant will be started.
+ </para>
+
+ <para>
+ The following values are allowed:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>gui</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Starts a VM showing a GUI window. This is the default.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>headless</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Starts a VM without a window for remote display only.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>separate</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Starts a VM with a detachable UI. Technically, it is a
+ headless VM with user interface in a separate process. This
+ is an experimental feature as it lacks certain
+ functionality, such as 3D acceleration.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ If you experience problems with starting virtual machines with
+ particular frontends and there is no conclusive error
+ information, consider starting virtual machines directly by
+ running the respective front-end, as this can give additional
+ error information.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-controlvm">
+
+ <title>VBoxManage controlvm</title>
+
+ <para>
+ The <command>controlvm</command> subcommand enables you to change
+ the state of a virtual machine that is currently running. The
+ following can be specified:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt; pause</command>:
+ Temporarily puts a virtual machine on hold, without
+ permanently changing its state. The VM window is gray, to
+ indicate that the VM is currently paused. This is equivalent
+ to selecting the <emphasis role="bold">Pause</emphasis> item
+ in the <emphasis role="bold">Machine</emphasis> menu of the
+ GUI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <command>VBoxManage controlvm &lt;vm&gt; resume</command>:
+ Undoes a previous <command>pause</command> command. This is
+ equivalent to selecting the
+ <emphasis role="bold">Resume</emphasis> item in the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt; reset</command>: Has
+ the same effect on a virtual machine as pressing the Reset
+ button on a real computer. A cold reboot of the virtual
+ machine is done, which immediately restarts and reboots the
+ guest operating system. The state of the VM is not saved
+ beforehand, and data may be lost. This is equivalent to
+ selecting the <emphasis role="bold">Reset</emphasis> item in
+ the <emphasis role="bold">Machine</emphasis> menu of the GUI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt; poweroff</command>:
+ Has the same effect on a virtual machine as pulling the power
+ cable on a real computer. The state of the VM is not saved
+ beforehand, and data may be lost. This is equivalent to
+ selecting the <emphasis role="bold">Close</emphasis> item in
+ the <emphasis role="bold">Machine</emphasis> menu of the GUI,
+ or clicking the VM window's close button, and then selecting
+ <emphasis role="bold">Power Off the Machine</emphasis> in the
+ displayed dialog.
+ </para>
+
+ <para>
+ After this, the VM's state will be Powered Off. From that
+ state, it can be started again. See
+ <xref
+ linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt; savestate</command>:
+ Saves the current state of the VM to disk and then stops the
+ VM. This is equivalent to selecting the
+ <emphasis role="bold">Close</emphasis> item in the
+ <emphasis role="bold">Machine</emphasis> menu of the GUI or
+ clicking the VM window's close button, and then selecting
+ <emphasis role="bold">Save the Machine State</emphasis> in the
+ displayed dialog.
+ </para>
+
+ <para>
+ After this, the VM's state will be Saved. From this state, it
+ can be started again. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt;
+ acpipowerbutton</command>: Sends an ACPI shutdown signal to
+ the VM, as if the power button on a real computer had been
+ pressed. So long as the VM is running a fairly modern guest
+ operating system providing ACPI support, this should trigger a
+ proper shutdown mechanism from within the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm &lt;vm&gt; keyboardputscancode
+ &lt;hex&gt; [&lt;hex&gt;...]</command>: Sends commands using
+ keycodes to the VM. Keycodes are documented in the public
+ domain. For example:
+ http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>VBoxManage controlvm "VM name" teleport --hostname
+ &lt;name&gt; --port &lt;port&gt; [--passwordfile &lt;file&gt;
+ | --password &lt;password&gt;]</command>: Makes the machine
+ the source of a teleporting operation and initiates a teleport
+ to the given target. See <xref linkend="teleporting" />. If
+ the optional password is specified, it must match the password
+ that was given to the <command>modifyvm</command> command for
+ the target machine. See
+ <xref linkend="vboxmanage-modifyvm-teleport" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following extra options are available with
+ <command>controlvm</command> that do not directly affect the VM's
+ running state:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>setlinkstate&lt;1-N&gt;
+ on|off</computeroutput>: Connects or disconnects virtual
+ network cables from their network interfaces.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>nic&lt;1-N&gt;
+ null|nat|bridged|intnet|hostonly|generic|natnetwork[&lt;devicename&gt;]</computeroutput>:
+ Specifies the type of networking that should be made available
+ on the specified VM virtual network card. They available types
+ are: not connected to the host
+ (<computeroutput>null</computeroutput>), use network address
+ translation (<computeroutput>nat</computeroutput>), bridged
+ networking (<computeroutput>bridged</computeroutput>),
+ communicate with other virtual machines using internal
+ networking (<computeroutput>intnet</computeroutput>),
+ host-only networking
+ (<computeroutput>hostonly</computeroutput>), natnetwork
+ networking (<computeroutput>natnetwork</computeroutput>), or
+ access to rarely used submodes
+ (<computeroutput>generic</computeroutput>). These options
+ correspond to the modes which are described in detail in
+ <xref linkend="networkingmodes" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ With the <computeroutput>nictrace</computeroutput> options,
+ you can optionally trace network traffic by dumping it to a
+ file, for debugging purposes.
+ </para>
+
+ <para>
+ <computeroutput>nictrace&lt;1-N&gt; on|off</computeroutput>:
+ Enables network tracing for a particular virtual network card.
+ </para>
+
+ <para>
+ Before enabling you should specify a file name to which the
+ trace should be logged. This can be done with the
+ <computeroutput>nictracefile&lt;1-N&gt;
+ &lt;filename&gt;</computeroutput> option to
+ <command>VBoxManage controlvm</command> at runtime or with the
+ <computeroutput>&lt;filename&gt;</computeroutput> option to
+ <command>VBoxManage modifyvm</command> otherwise.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>nicpromisc&lt;1-N&gt;
+ deny|allow-vms|allow-all</computeroutput>: Specifies how the
+ promiscious mode is handled for the specified VM virtual
+ network card. This setting is only relevant for bridged
+ networking. The default setting of
+ <computeroutput>deny</computeroutput> hides any traffic not
+ intended for this VM.
+ <computeroutput>allow-vms</computeroutput> hides all host
+ traffic from this VM but enables the VM to see traffic to and
+ from other VMs. <computeroutput>allow-all</computeroutput>
+ removes this restriction completely.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>nicproperty&lt;1-N&gt;
+ &lt;paramname&gt;="paramvalue"</computeroutput>: This option,
+ in combination with
+ <computeroutput>nicgenericdrv</computeroutput> enables you to
+ pass parameters to rarely-used network backends.
+ </para>
+
+ <para>
+ Those parameters are backend engine-specific, and are
+ different between UDP Tunnel and the VDE backend drivers. See
+ <xref linkend="network_udp_tunnel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>natpf&lt;1-N&gt;
+ [&lt;name&gt;],tcp|udp,[&lt;hostip&gt;],&lt;hostport&gt;,[&lt;guestip&gt;],
+ &lt;guestport&gt;</computeroutput>: Specifies a NAT
+ port-forwarding rule. See <xref linkend="natforward"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>natpf&lt;1-N&gt; delete
+ &lt;name&gt;</computeroutput>: Deletes a NAT port-forwarding
+ rule. See <xref linkend="natforward"/>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>guestmemoryballoon&lt;balloon size in
+ MB&gt;</computeroutput>: Changes the size of the guest memory
+ balloon. This is the memory allocated by the &product-name;
+ Guest Additions from the guest operating system and returned
+ to the hypervisor for reuse by other virtual machines. This
+ must be specified in megabytes. See
+ <xref linkend="guestadd-balloon" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>usbattach&lt;uuid|address&gt; [--capturefile
+ &lt;filename&gt;]</computeroutput>
+ </para>
+
+ <para>
+ and <computeroutput>usbdetach &lt;uuid|address&gt;
+ [--capturefile &lt;filename&gt;]</computeroutput>: Makes host
+ USB devices visible or invisible to the virtual machine on the
+ fly, without the need for creating filters first. The USB
+ devices can be specified by UUID (unique identifier) or by
+ address on the host system. Use the
+ <computeroutput>--capturefile</computeroutput> option to
+ specify the absolute path of a file for writing activity
+ logging data.
+ </para>
+
+ <para>
+ You can use <command>VBoxManage list usbhost</command> to
+ locate this information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>audioin on</computeroutput>: Selects whether
+ capturing audio from the host is enabled or disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>audioout on</computeroutput>: Selects whether
+ audio playback from the guest is enabled or disabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>clipboard mode
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput>:
+ Selects how the guest or host operating system's clipboard
+ should be shared with the host or guest. See
+ <xref linkend="generalsettings" />. This requires that the
+ Guest Additions be installed in the virtual machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>clipboard filetransfers
+ enabled|disabled</computeroutput>: Specifies if clipboard file
+ transfers are allowed between host and guest OSes or not.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>draganddrop
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput>:
+ Selects the current drag and drop mode being used between the
+ host and the virtual machine. See
+ <xref linkend="guestadd-dnd" />. This requires that the Guest
+ Additions be installed in the virtual machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrde on|off</computeroutput>: Enables and
+ disables the VRDE server, if it is installed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeport
+ default|&lt;ports&gt;</computeroutput>: Changes the port or a
+ range of ports that the VRDE server can bind to.
+ <computeroutput>default</computeroutput> or
+ <computeroutput>0</computeroutput> means port 3389, the
+ standard port for RDP. See the description for the
+ <computeroutput>--vrdeport</computeroutput> option in
+ <xref
+ linkend="vboxmanage-modifyvm-vrde" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "TCP/Ports|Address=&lt;value&gt;"</computeroutput>: Sets the
+ port numbers and IP address on the VM to which the VRDE server
+ can bind.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For TCP/Ports, &lt;value&gt; should be a port or a range
+ of ports to which the VRDE server can bind.
+ <computeroutput>default</computeroutput> or
+ <computeroutput>0</computeroutput> means port 3389, the
+ standard port for RDP. See the description for the
+ <computeroutput>--vrdeport</computeroutput> option in
+ <xref
+ linkend="vboxmanage-modifyvm-vrde" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For TCP/Address, &lt;value&gt;: The IP address of the host
+ network interface that the VRDE server will bind to. If
+ specified, the server will accept connections only on the
+ specified host network interface. See the description for
+ the <computeroutput>--vrdeaddress</computeroutput> option
+ in
+ <xref
+ linkend="vboxmanage-modifyvm-vrde" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "VideoChannel/Enabled|Quality|DownscaleProtection=&lt;value&gt;"</computeroutput>:
+ Sets the VRDP video redirection properties.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ For VideoChannel/Enabled, &lt;value&gt; can be set to "1"
+ switching the VRDP video channel on. See
+ <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For VideoChannel/Quality, &lt;value&gt; should be set
+ between 10 and 100% inclusive, representing a JPEG
+ compression level on the VRDE server video channel. Lower
+ values mean lower quality but higher compression. See
+ <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For VideoChannel/DownscaleProtection, &lt;value&gt; can be
+ set to "1" to enable the videochannel downscale protection
+ feature. When enabled, if a video's size equals the shadow
+ buffer size, then it is regarded as a full screen video,
+ and is displayed. If its size is between fullscreen and
+ the downscale threshold it is not displayed, as it could
+ be an application window, which would be unreadable when
+ downscaled. When the downscale protection feature is
+ disabled, an attempt is always made to display videos.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Client/DisableDisplay|DisableInput|DisableAudio|DisableUSB=1"</computeroutput>:
+ Disables one of the VRDE server features: Display, Input,
+ Audio, or USB. To reenable a feature, use
+ "Client/DisableDisplay=" for example. See
+ <xref linkend="vrde-customization" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Client/DisableClipboard|DisableUpstreamAudio=1"</computeroutput>.
+ Disables one of the VRDE server features: Clipboard or
+ UpstreamAudio. To reenable a feature, use
+ "Client/DisableClipboard=" for example. See
+ <xref linkend="vrde-customization" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Client/DisableRDPDR=1"</computeroutput>: Disables the VRDE
+ server feature: RDP device redirection for smart cards. To
+ reenable this feature, use "Client/DisableRDPR=".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "H3DRedirect/Enabled=1"</computeroutput>: Enables the VRDE
+ server feature: 3D redirection. To disable this feature, use
+ "H3DRedirect/Enabled=".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Security/Method|ServerCertificate|ServerPrivateKey|CACertificate=&lt;value&gt;"</computeroutput>:
+ Sets the desired security method, path of the server
+ certificate, path of the server private key, and path of CA
+ certificate, used for a connection.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Security/Method=&lt;value&gt;"</computeroutput>: Sets the
+ desired security method, which is used for a connection.
+ Valid values are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>Negotiate</computeroutput>: Both
+ Enhanced (TLS) and Standard RDP Security connections
+ are allowed. The security method is negotiated with
+ the client. This is the default setting.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>RDP</computeroutput>: Only Standard
+ RDP Security is accepted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>TLS</computeroutput>: Only Enhanced
+ RDP Security is accepted. The client must support TLS.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Security/ServerCertificate=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the server
+ certificate. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Security/ServerPrivateKey=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the server
+ private key. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Security/CACertificate=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the absolute path of the CA self
+ signed certificate. See <xref linkend="vrde-crypt" />.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Audio/RateCorrectionMode|LogPath=&lt;value&gt;"</computeroutput>:
+ Sets the audio connection mode, or path of the audio logfile.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Audio/RateCorrectionMode=&lt;value&gt;"</computeroutput>
+ where &lt;value&gt; is the desired rate correction mode,
+ allowed values are:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_VOID</computeroutput>:
+ No mode specified, use to unset any Audio mode already
+ set.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_RC</computeroutput>:
+ Rate correction mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_LPF</computeroutput>:
+ Low pass filter mode.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>VRDP_AUDIO_MODE_CS</computeroutput>:
+ Client sync mode to prevent underflow or overflow of
+ the client queue.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdeproperty
+ "Audio/LogPath=&lt;value&gt;"</computeroutput> where
+ &lt;value&gt; is the absolute path of the audio log file.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vrdevideochannelquality
+ &lt;percent&gt;</computeroutput>: Sets the image quality for
+ video redirection. See <xref linkend="vrde-videochannel" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>setvideomodehint</computeroutput>: Requests
+ that the guest system change to a particular video mode. This
+ requires that the Guest Additions be installed, and will not
+ work for all guest systems.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>screenshotpng</computeroutput>: Takes a
+ screenshot of the guest display and saves it in PNG format.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recording on|off</computeroutput> enables or
+ disables the recording of a VM session into a WebM/VP8 file.
+ When this option value is <computeroutput>on</computeroutput>,
+ recording begins when the VM session starts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingscreens
+ all|<replaceable>screen-ID</replaceable>
+ [<replaceable>screen-ID</replaceable> ...]</computeroutput>
+ enables you to specify which VM screens to record. The
+ recording for each screen that you specify is saved to its own
+ file. You cannot modify this setting while recording is
+ enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingfile
+ <replaceable>filename</replaceable></computeroutput> specifies
+ the file in which to save the recording. You cannot modify
+ this setting while recording is enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingvideores
+ <replaceable>width</replaceable>x<replaceable>height</replaceable></computeroutput>
+ specifies the resolution of the recorded video in pixels. You
+ cannot modify this setting while recording is enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+<!-- @todo r=andy Clarify rate. -->
+
+ <para>
+ <computeroutput>recordingvideorate
+ <replaceable>bit-rate</replaceable></computeroutput> specifies
+ the bit rate of the video in kilobits per second. Increasing
+ this value improves the appearance of the video at the cost of
+ an increased file size. You cannot modify this setting while
+ recording is enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingvideofps
+ <replaceable>fps</replaceable></computeroutput> specifies the
+ maximum number of video frames per second (FPS) to record.
+ Frames that have a higher frequency are skipped. Increasing
+ this value reduces the number of skipped frames and increases
+ the file size. You cannot modify this setting while recording
+ is enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+<!-- @todo r=andy Clarify time format. -->
+
+ <para>
+ <computeroutput>recordingmaxtime
+ <replaceable>seconds</replaceable></computeroutput> specifies
+ the maximum amount time to record in seconds. The recording
+ stops after the specified number of seconds elapses. If this
+ value is zero, the recording continues until you stop the
+ recording.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingmaxsize
+ <replaceable>MB</replaceable></computeroutput> specifies the
+ maximum size of the recorded video file in megabytes. The
+ recording stops when the file reaches the specified size. If
+ this value is zero, the recording continues until you stop the
+ recording. You cannot modify this setting while recording is
+ enabled.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>recordingopts
+ <replaceable>keyword</replaceable>=<replaceable>value</replaceable>[,<replaceable>keyword</replaceable>=<replaceable>value</replaceable>
+ ...]</computeroutput> specifies additional recording options
+ in a comma-separated keyword-value format. For example,
+ <computeroutput>foo=bar,a=b</computeroutput>. You cannot
+ modify this setting while recording is enabled.
+ </para>
+
+ <para>
+ Only use this option only if you are an advanced user. For
+ information about keywords, see <emphasis>Oracle VM VirtualBox
+ Programming Guide and Reference</emphasis>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>setcredentials</computeroutput>: Used for
+ remote logins on Windows guests. See
+ <xref linkend="autologon" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>teleport --host &lt;name&gt; --port
+ &lt;port&gt;</computeroutput>: Configures a VM as a target for
+ teleporting. &lt;name&gt; specifies the virtual machine name.
+ &lt;port&gt; specifies the port on the virtual machine which
+ should listen for teleporting requests from other virtual
+ machines. It can be any free TCP/IP port number, such as 6000.
+ See <xref linkend="teleporting" />.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--maxdowntime
+ &lt;msec&gt;</computeroutput>: Specifies the maximum
+ downtime, in milliseconds, for the teleporting target VM.
+ Optional.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--password
+ &lt;password&gt;</computeroutput>: The teleporting request
+ will only succeed if the source machine specifies the same
+ password as the one given with this command. Optional.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--passwordfile &lt;password
+ file&gt;</computeroutput>: The teleporting request will
+ only succeed if the source machine specifies the same
+ password as the one specified in the password file with
+ the path specified with this command. Use
+ <computeroutput>stdin</computeroutput> to read the
+ password from stdin. Optional.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>plugcpu|unplugcpu &lt;id&gt;</computeroutput>:
+ If CPU hot-plugging is enabled, this setting adds and removes
+ a virtual CPU to the virtual machine.
+ <computeroutput>&lt;id&gt;</computeroutput> specifies the
+ index of the virtual CPU to be added or removed and must be a
+ number from 0 to the maximum number of CPUs configured. CPU 0
+ can never be removed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>cpuexecutioncap
+ &lt;1-100&gt;</computeroutput>: Controls how much CPU time a
+ virtual CPU can use. A value of 50 implies a single virtual
+ CPU can use up to 50% of a single host CPU.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>vm-process-priority
+ default|flat|low|normal|high</computeroutput>: Changes the
+ priority scheme of the VM process. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>webcam attach &lt;path|alias&gt;
+ [&lt;keyword=value&gt;[;&lt;keyword=value&gt;...]]</computeroutput>:
+ Attaches a webcam to a running VM. Specify the absolute path
+ of the webcam on the host operating system, or use its alias,
+ obtained by using the command: <command>VBoxManage list
+ webcams</command>.
+ </para>
+
+ <para>
+ Note that alias '.0' means the default video input device on
+ the host operating system, '.1', '.2', etc. mean first,
+ second, etc. video input device. The device order is
+ host-specific.
+ </para>
+
+ <para>
+ The optional settings parameter is a
+ <computeroutput>;</computeroutput> delimited list of
+ name-value pairs, enabling configuration of the emulated
+ webcam device.
+ </para>
+
+ <para>
+ The following settings are supported:
+ </para>
+
+ <para>
+ MaxFramerate: Specifies the highest rate in frames per second,
+ at which video frames are sent to the guest. Higher frame
+ rates increase CPU load, so this setting can be useful when
+ there is a need to reduce CPU load. The default setting is
+ <computeroutput>no maximum limit</computeroutput>, thus
+ enabling the guest to use all frame rates supported by the
+ host webcam.
+ </para>
+
+ <para>
+ MaxPayloadTransferSize: Specifies the maximum number of bytes
+ the emulated webcam can send to the guest in one buffer. The
+ default setting is 3060 bytes, which is used by some webcams.
+ Higher values can slightly reduce CPU load, if the guest is
+ able to use larger buffers. Note that higher
+ MaxPayloadTransferSize values may be not supported by some
+ guest operating systems.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>webcam detach
+ &lt;path|alias&gt;</computeroutput>: Detaches a webcam from a
+ running VM. Specify the absolute path of the webcam on the
+ host, or use its alias obtained from the <command>webcam
+ list</command> command.
+ </para>
+
+ <para>
+ Please note the following points, relating to specific host
+ operating systems:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Windows hosts: When the webcam device is detached from the
+ host, the emulated webcam device is automatically detached
+ from the guest.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Mac OS X hosts: OS X version 10.7 or newer is required.
+ </para>
+
+ <para>
+ When the webcam device is detached from the host, the
+ emulated webcam device remains attached to the guest and
+ must be manually detached using the <command>VBoxManage
+ controlvm webcam detach</command> command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Linux hosts: When the webcam is detached from the host,
+ the emulated webcam device is automatically detached from
+ the guest only if the webcam is streaming video. If the
+ emulated webcam is inactive, it should be manually
+ detached using the <command>VBoxManage controlvm webcam
+ detach</command> command.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>webcam list</computeroutput>: Lists webcams
+ attached to the running VM. The output is a list of absolute
+ paths or aliases that were used for attaching the webcams to
+ the VM using the <command>webcam attach</command> command.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>addencpassword &lt;id&gt; &lt;password
+ file&gt;|- [--removeonsuspend
+ &lt;yes|no&gt;]</computeroutput>: Supplies an encrypted VM
+ specified by &lt;id&gt; with the encryption password to enable
+ a headless start. Either specify the absolute path of a
+ password file on the host file system: &lt;password file&gt;,
+ or use <option>-</option> to instruct
+ <command>VBoxManage</command> to prompt the user for the
+ encryption password.
+ </para>
+
+ <para>
+ <computeroutput>--removeonsuspend
+ &lt;yes|no&gt;</computeroutput>: Specifies whether to remove
+ the passsword or keep the password in VM memory when the VM is
+ suspended. If the VM has been suspended and the password has
+ been removed, the user needs to resupply the password before
+ the VM can be resumed. This feature is useful in cases where
+ the user does not want the password to be stored in VM memory,
+ and the VM is suspended by a host suspend event.
+ </para>
+
+ <note>
+ <para>
+ On &product-name; versions 5.0 and later, data stored on
+ hard disk images can be transparently encrypted for the
+ guest. &product-name; uses the AES algorithm in XTS mode and
+ supports 128 or 256 bit data encryption keys (DEK). The DEK
+ is stored encrypted in the medium properties, and is
+ decrypted during VM startup by supplying the encryption
+ password.
+ </para>
+ </note>
+
+ <para>
+ The <command>VBoxManage encryptmedium</command> command is
+ used to create a DEK encrypted medium. See
+ <xref linkend="diskencryption-encryption" />. When starting an
+ encrypted VM from the &product-name; GUI, the user will be
+ prompted for the encryption password.
+ </para>
+
+ <para>
+ For a headless encrypted VM start, use the following command:
+ </para>
+
+<screen>
+ VBoxManage startvm "vmname" --type headless
+ </screen>
+
+ <para>
+ Then supply the required encryption password as follows:
+ </para>
+
+<screen>
+ VBoxManage "vmname" controlvm "vmname" addencpassword ...
+ </screen>
+
+ <para></para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>removeencpassword &lt;id&gt;</computeroutput>:
+ Removes encryption password authorization for password
+ &lt;id&gt; for all encrypted media attached to the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>removeallencpasswords</computeroutput>:
+ Removes encryption password authorization for all passwords
+ for all encrypted media attached to the VM.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>changeuartmode &lt;1-N&gt;</computeroutput>:
+ Changes the connection mode for a given virtual serial port.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-discardstate">
+
+ <title>VBoxManage discardstate</title>
+
+ <para>
+ This command discards the saved state of a virtual machine which
+ is not currently running. This will cause the VM's operating
+ system to restart next time you start it. This is the equivalent
+ of pulling out the power cable on a physical machine, and should
+ be avoided if possible.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-adoptstate">
+
+ <title>VBoxManage adoptstate</title>
+
+ <para>
+ If you have a Saved state file (<filename>.sav</filename>) that is
+ separate from the VM configuration, you can use this command to
+ <emphasis>adopt</emphasis> the file. This will change the VM to
+ saved state and when you start it, &product-name; will attempt to
+ restore it from the saved state file you indicated. This command
+ should only be used in special setups.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-closemedium">
+
+ <title>VBoxManage closemedium</title>
+
+ <para>
+ This command removes a hard disk, DVD, or floppy image from a
+ &product-name; media registry.
+ </para>
+
+<screen>VBoxManage closemedium [disk|dvd|floppy] &lt;uuid|filename&gt;
+ [--delete]</screen>
+
+ <para>
+ Optionally, you can request that the image be deleted. You will
+ get appropriate diagnostics that the deletion failed, however the
+ image will become unregistered in any case.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-storageattach">
+
+ <title>VBoxManage storageattach</title>
+
+ <para>
+ This command attaches, modifies, and removes a storage medium
+ connected to a storage controller that was previously added with
+ the <command>storagectl</command> command. The syntax is as
+ follows:
+ </para>
+
+<screen>VBoxManage storageattach &lt;uuid|vmname&gt;
+ --storagectl &lt;name&gt;
+ [--port &lt;number&gt;]
+ [--device &lt;number&gt;]
+ [--type dvddrive|hdd|fdd]
+ [--medium none|emptydrive|additions|
+ &lt;uuid&gt;|&lt;filename&gt;|host:&lt;drive&gt;|iscsi]
+ [--mtype normal|writethrough|immutable|shareable
+ readonly|multiattach]
+ [--comment &lt;text&gt;]
+ [--setuuid &lt;uuid&gt;]
+ [--setparentuuid &lt;uuid&gt;]
+ [--passthrough on|off]
+ [--tempeject on|off]
+ [--nonrotational on|off]
+ [--discard on|off]
+ [--hotpluggable on|off]
+ [--bandwidthgroup name|none]
+ [--forceunmount]
+ [--server &lt;name&gt;|&lt;ip&gt;]
+ [--target &lt;target&gt;]
+ [--tport &lt;port&gt;]
+ [--lun &lt;lun&gt;]
+ [--encodedlun &lt;lun&gt;]
+ [--username &lt;username&gt;]
+ [--password &lt;password&gt;]
+ [--passwordfile &lt;file&gt;]
+ [--initiator &lt;initiator&gt;]
+ [--intnet]</screen>
+
+ <para>
+ A number of parameters are commonly required. Some parameters are
+ required only for iSCSI targets.
+ </para>
+
+ <para>
+ The common parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>uuid|vmname</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The VM UUID or VM Name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--storagectl</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Name of the storage controller. Mandatory. The list of the
+ storage controllers currently attached to a VM can be
+ obtained with <command>VBoxManage showvminfo</command>. See
+ <xref linkend="vboxmanage-showvminfo" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--port</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The number of the storage controller's port which is to be
+ modified. Mandatory, unless the storage controller has only
+ a single port.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--device</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The number of the port's device which is to be modified.
+ Mandatory, unless the storage controller has only a single
+ device per port.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--type</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Define the type of the drive to which the medium is being
+ attached, detached, or modified. This argument can only be
+ omitted if the type of medium can be determined from either
+ the medium given with the
+ <computeroutput>--medium</computeroutput> argument or from a
+ previous medium attachment.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--medium</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies what is to be attached. The following values are
+ supported:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>none</computeroutput>: Any existing
+ device should be removed from the given slot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>emptydrive</computeroutput>: For a
+ virtual DVD or floppy drive only, this makes the device
+ slot behave like a removeable drive into which no media
+ has been inserted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>additions</computeroutput>: For a
+ virtual DVD drive only, this attaches the
+ <emphasis>VirtualBox Guest Additions</emphasis> image to
+ the given device slot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a UUID is specified, it must be the UUID of a storage
+ medium that is already known to &product-name;. For
+ example, because it has been attached to another virtual
+ machine. See <xref linkend="vboxmanage-list" /> for
+ details of how to list known media. This medium is then
+ attached to the given device slot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a filename is specified, it must be the full path of
+ an existing disk image in ISO, RAW, VDI, VMDK, or other
+ format. The disk image is then attached to the given
+ device slot.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>host:&lt;drive&gt;</computeroutput>: For
+ a virtual DVD or floppy drive only, this connects the
+ given device slot to the specified DVD or floppy drive
+ on the host computer.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>iscsi</computeroutput>: For virtual hard
+ disks only, this is used for specifying an iSCSI target.
+ In this case, additional parameters must be given. These
+ are described below.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ Some of the above changes, in particular for removeable
+ media such as floppies and CDs/DVDs, can be effected while a
+ VM is running. Others, such as device changes or changes in
+ hard disk device slots, require the VM to be powered off.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--mtype</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Defines how this medium behaves with respect to snapshots
+ and write operations. See <xref linkend="hdimagewrites" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--comment</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ An optional description that you want to have stored with
+ this medium. For example, for an iSCSI target, "Big storage
+ server downstairs". This is purely descriptive and not
+ needed for the medium to function correctly.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--setuuid, --setparentuuid</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Modifies the UUID or parent UUID of a medium before
+ attaching it to a VM. This is an expert option.
+ Inappropriate use can make the medium unusable or lead to
+ broken VM configurations if any other VM is referring to the
+ same media already. The most frequently used variant is
+ <computeroutput>--setuuid ""</computeroutput>, which assigns
+ a new random UUID to an image. This option is useful for
+ resolving duplicate UUID errors if you duplicated an image
+ using a file copy utility.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--passthrough</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ For a virtual DVD drive only, you can enable DVD writing
+ support. This feature is currently experimental, see
+ <xref
+ linkend="storage-cds" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--tempeject</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ For a virtual DVD drive only, you can configure the behavior
+ for guest-triggered medium eject. If this is set to on, the
+ eject has only a temporary effect. If the VM is powered off
+ and restarted the originally configured medium will be still
+ in the drive.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--nonrotational</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables you to enable the non-rotational flag for virtual
+ hard disks. Some guests, such as Windows 7 or later, treat
+ such disks like SSDs and do not perform disk fragmentation
+ on such media.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--discard</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables the auto-discard feature for a virtual hard disks.
+ This specifies that a VDI image will be shrunk in response
+ to the trim command from the guest OS. The following
+ requirements must be met:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ The disk format must be VDI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The size of the cleared area must be at least 1 MB.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ &product-name; will only trim whole 1 MB blocks. The
+ VDIs themselves are organized into 1 MB blocks, so this
+ will only work if the space being trimmed is at least a
+ 1 MB contiguous block at a 1 MB boundary. On Windows,
+ occasional defragmentation with <command>defrag.exe
+ /D</command>, or on Linux running <command>btrfs
+ filesystem defrag</command> as a background cron job may
+ be beneficial.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <note>
+ <para>
+ The Guest OS must be configured to issue the
+ <command>trim</command> command, and typically this means
+ that the guest OS is made to see the disk as an SSD. Ext4
+ supports the -o discard mount flag. Mac OS X probably
+ requires additional settings. Windows should automatically
+ detect and support SSDs, at least in versions 7, 8, and
+ 10. The Linux exFAT driver from Samsung supports the
+ <command>trim</command> command.
+ </para>
+ </note>
+
+ <para>
+ It is unclear whether Microsoft's implementation of exFAT
+ supports this feature, even though that file system was
+ originally designed for flash.
+ </para>
+
+ <para>
+ Alternatively, there are other methods to issue trim. For
+ example, the Linux <command>fstrim</command> command, part
+ of the util-linux package. Earlier solutions required a user
+ to zero out unused areas, using zerofree or similar, and to
+ compact the disk. This is only possible when the VM is
+ offline.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--bandwidthgroup</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Sets the bandwidth group to use for the given device. See
+ <xref linkend="storage-bandwidth-limit" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--forceunmount</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ For a virtual DVD or floppy drive only, this forcibly
+ unmounts the DVD/CD/Floppy or mounts a new DVD/CD/Floppy
+ even if the previous one is locked down by the guest for
+ reading. See <xref linkend="storage-cds" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ When <computeroutput>iscsi</computeroutput> is used with the
+ <computeroutput>--medium</computeroutput> parameter for iSCSI
+ support, additional parameters must or can be used. See also
+ <xref linkend="storage-iscsi" />.
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--server</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The host name or IP address of the iSCSI target. Required.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--target</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Target name string. This is determined by the iSCSI target
+ and used to identify the storage resource. Required.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--tport</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ TCP/IP port number of the iSCSI service on the target.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--lun</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Logical Unit Number of the target resource. Optional. Often,
+ this value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--encodedlun</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Hex-encoded Logical Unit Number of the target resource.
+ Optional. Often, this value is zero.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--username, --password,
+ --passwordfile</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Username and password, called the initiator secret, for
+ target authentication, if required. Optional.
+ </para>
+
+ <note>
+ <para>
+ Username and password are stored without encryption, in
+ clear text, in the XML machine configuration file if no
+ settings password is provided. When a settings password is
+ specified for the first time, the password is stored in
+ encrypted form. As an alternative to providing the
+ password on the command line, a reference to a file
+ containing the text can be provided using the
+ <computeroutput>passwordfile</computeroutput> option.
+ </para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--initiator</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ iSCSI Initiator. Optional.
+ </para>
+
+ <para>
+ Microsoft iSCSI Initiator is a system, such as a server that
+ attaches to an IP network and initiates requests and
+ receives responses from an iSCSI target. The SAN components
+ in Microsoft iSCSI Initiator are largely analogous to Fibre
+ Channel SAN components, and they include the following:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ To transport blocks of iSCSI commands over the IP
+ network, an iSCSI driver must be installed on the iSCSI
+ host. An iSCSI driver is included with Microsoft iSCSI
+ Initiator.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A gigabit Ethernet adapter that transmits 1000 megabits
+ per second (Mbps) is recommended for the connection to
+ an iSCSI target. Like standard 10/100 adapters, most
+ gigabit adapters use a preexisting Category 5 or
+ Category 6E cable. Each port on the adapter is
+ identified by a unique IP address.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An iSCSI target is any device that receives iSCSI
+ commands. The device can be an end node, such as a
+ storage device, or it can be an intermediate device,
+ such as a network bridge between IP and Fibre Channel
+ devices. Each port on the storage array controller or
+ network bridge is identified by one or more IP addresses
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--intnet</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ If specified, connect to the iSCSI target using Internal
+ Networking. This needs further configuration, see
+ <xref linkend="iscsi-intnet" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-storagectl">
+
+ <title>VBoxManage storagectl</title>
+
+ <para>
+ This command attaches, modifies, and removes a storage controller.
+ After this, virtual media can be attached to the controller with
+ the <command>storageattach</command> command.
+ </para>
+
+ <para>
+ The syntax for this command is as follows:
+ </para>
+
+<screen>VBoxManage storagectl &lt;uuid|vmname&gt;
+ --name &lt;name&gt;
+ [--add ide|sata|scsi|floppy|sas|usb|pcie]
+ [--controller LSILogic|LSILogicSAS|BusLogic|
+ IntelAhci|PIIX3|PIIX4|ICH6|I82078|
+ USB|NVMe|VirtIO]
+ [--portcount &lt;1-30&gt;]
+ [--hostiocache on|off]
+ [--bootable on|off]
+ [--rename &lt;name&gt;]
+ [--remove]</screen>
+
+ <para>
+ The parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>uuid|vmname</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The VM UUID or VM Name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--name</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the name of the storage controller. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--add</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the type of the system bus to which the storage
+ controller must be connected.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--controller</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables a choice of chipset type being emulated for the
+ given storage controller.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--portcount</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ This specifies the number of ports the storage controller
+ should support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--hostiocache</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Configures the use of the host I/O cache for all disk images
+ attached to this storage controller. See
+ <xref
+ linkend="iocaching" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--bootable</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies whether this controller is bootable.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--rename</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a new name for the storage controller.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--remove</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Removes the storage controller from the VM configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-bandwidthctl">
+
+ <title>VBoxManage bandwidthctl</title>
+
+ <para>
+ This command creates, deletes, modifies, and shows bandwidth
+ groups of the given virtual machine.
+ </para>
+
+<screen>VBoxManage bandwidthctl &lt;uuid|vmname&gt;
+ add &lt;name&gt; --type disk|network --limit &lt;MBps&gt;[k|m|g|K|M|G] |
+ set &lt;name&gt; --limit &lt;MBps&gt;[k|m|g|K|M|G] |
+ remove &lt;name&gt; |
+ list [--machinereadable]</screen>
+
+ <para>
+ The following subcommands are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>add</command>: Creates a new bandwidth group of a
+ given type.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>set</command>: Modifies the limit for an existing
+ bandwidth group.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>remove</command>: Deletes a bandwidth group.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>list</command>: Shows all bandwidth groups defined
+ for the given VM. Use the
+ <computeroutput>--machinereadable</computeroutput> option to
+ produce the same output, but in machine readable format. This
+ is of the form: name="value" on a line by line basis.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>uuid|vmname</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The VM UUID or VM Name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--name</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Name of the bandwidth group. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--type</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Type of the bandwidth group. Mandatory. Two types are
+ supported: <computeroutput>disk</computeroutput> and
+ <computeroutput>network</computeroutput>. See
+ <xref linkend="storage-bandwidth-limit" /> or
+ <xref linkend="network_bandwidth_limit" /> for the
+ description of a particular type.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--limit</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the limit for the given bandwidth group. This can
+ be changed while the VM is running. The default unit is
+ megabytes per second. The unit can be changed by specifying
+ one of the following suffixes:
+ <computeroutput>k</computeroutput> for kilobits per second,
+ <computeroutput>m</computeroutput> for megabits per second,
+ <computeroutput>g</computeroutput> for gigabits per second,
+ <computeroutput>K</computeroutput> for kilobytes per second,
+ <computeroutput>M</computeroutput> for megabytes per second,
+ <computeroutput>G</computeroutput> for gigabytes per second.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ The network bandwidth limits apply only to the traffic being
+ sent by virtual machines. The traffic being received by VMs is
+ unlimited.
+ </para>
+ </note>
+
+ <note>
+ <para>
+ To remove a bandwidth group it must not be referenced by any
+ disks or adapters in the running VM.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-showmediuminfo">
+
+ <title>VBoxManage showmediuminfo</title>
+
+ <para>
+ This command shows information about a medium, notably its size,
+ its size on disk, its type, and the virtual machines which use it.
+ </para>
+
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, the
+ <command>showvdiinfo</command> command is also supported and
+ mapped internally to the <command>showmediuminfo</command>
+ command.
+ </para>
+ </note>
+
+<screen>VBoxManage showmediuminfo [disk|dvd|floppy] &lt;uuid|filename&gt;</screen>
+
+ <para>
+ The medium must be specified either by its UUID, if the medium is
+ registered, or by its filename. Registered images can be listed
+ using <command>VBoxManage list hdds</command>, <command>VBoxManage
+ list dvds</command>, or <command>VBoxManage list
+ floppies</command>, as appropriate. See
+ <xref linkend="vboxmanage-list" />.
+ </para>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-createmedium">
+
+ <title>VBoxManage createmedium</title>
+
+ <para>
+ This command creates a new medium. The syntax is as follows:
+ </para>
+
+<screen>VBoxManage createmedium [disk|dvd|floppy] --filename &lt;filename&gt;
+ [--size &lt;megabytes&gt;|--sizebyte &lt;bytes&gt;]
+ [--diffparent &lt;uuid&gt;|&lt;filename&gt;
+ [--format VDI|VMDK|VHD] (default: VDI)
+ [--variant Standard,Fixed,Split2G,Stream,ESX]</screen>
+
+ <para>
+ The parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--filename &lt;filename&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a file name &lt;filename&gt; as an absolute path
+ on the host file system. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--size &lt;megabytes&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the image capacity, in 1 MB units. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--diffparent
+ &lt;uuid&gt;|&lt;filename&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the differencing image parent, either as a UUID or
+ by the absolute pathname of the file on the host file
+ system. Useful for sharing a base box disk image among
+ several VMs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--format VDI|VMDK|VHD</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the file format for the output file. Available
+ options are VDI, VMDK, VHD. The default format is VDI.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--variant</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies any required file format variants for the output
+ file. This is a comma-separated list of variant flags.
+ Options are Standard,Fixed,Split2G,Stream,ESX. Not all
+ combinations are supported, and specifying mutually
+ incompatible flags results in an error message. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, the
+ <command>createvdi</command> and <command>createhd</command>
+ commands are also supported and mapped internally to the
+ <command>createmedium</command> command.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-modifymedium">
+
+ <title>VBoxManage modifymedium</title>
+
+ <para>
+ With the <command>modifymedium</command> command, you can change
+ the characteristics of a disk image after it has been created.
+ </para>
+
+<screen>VBoxManage modifymedium [disk|dvd|floppy] &lt;uuid|filename&gt;
+ [--type normal|writethrough|immutable|shareable|
+ readonly|multiattach]
+ [--autoreset on|off]
+ [--property &lt;name=[value]&gt;]
+ [--compact]
+ [--resize &lt;megabytes&gt;|--resizebyte &lt;bytes&gt;]
+ [--move &lt;path&gt;]
+ [--setlocation &lt;path&gt;]</screen>
+
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, the
+ <command>modifyvdi</command> and <command>modifyhd</command>
+ commands are also supported and mapped internally to the
+ <command>modifymedium</command> command.
+ </para>
+ </note>
+
+ <para>
+ The disk image to modify must be specified either by its UUID, if
+ the medium is registered, or by its filename. Registered images
+ can be listed using <command>VBoxManage list hdds</command>, see
+ <xref linkend="vboxmanage-list" />. A filename must be specified
+ as a valid path, either as an absolute path or as a relative path
+ starting from the current directory.
+ </para>
+
+ <para>
+ The following options are available:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ With the <computeroutput>--type</computeroutput> argument, you
+ can change the type of an existing image between the normal,
+ immutable, write-through and other modes. See
+ <xref
+ linkend="hdimagewrites" />.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For immutable hard disks only, the <computeroutput>--autoreset
+ on|off</computeroutput> option determines whether the disk is
+ automatically reset on every VM startup. See
+ <xref linkend="hdimagewrites" />. By default, autoreset is on.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>--compact</computeroutput> option can be
+ used to compact disk images. Compacting removes blocks that
+ only contains zeroes. Using this option will shrink a
+ dynamically allocated image. It will reduce the
+ <emphasis>physical</emphasis> size of the image without
+ affecting the logical size of the virtual disk. Compaction
+ works both for base images and for differencing images created
+ as part of a snapshot.
+ </para>
+
+ <para>
+ For this operation to be effective, it is required that free
+ space in the guest system first be zeroed out using a suitable
+ software tool. For Windows guests, you can use the
+ <command>sdelete</command> tool provided by Microsoft. Run
+ <command>sdelete -z</command> in the guest to zero the free
+ disk space, before compressing the virtual disk image. For
+ Linux, use the <command>zerofree</command> utility which
+ supports ext2/ext3 filesystems. For Mac OS X guests, use the
+ <computeroutput>diskutil secureErase freespace 0
+ /</computeroutput> command from an elevated Terminal.
+ </para>
+
+ <para>
+ Please note that compacting is currently only available for
+ VDI images. A similar effect can be achieved by zeroing out
+ free blocks and then cloning the disk to any other dynamically
+ allocated format. You can use this workaround until compacting
+ is also supported for disk formats other than VDI.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>--resize x</computeroutput> option, where
+ x is the desired new total space in megabytes enables you to
+ change the capacity of an existing image. This adjusts the
+ <emphasis>logical</emphasis> size of a virtual disk without
+ affecting the physical size much.
+ </para>
+
+ <para>
+ This option currently works only for VDI and VHD formats, and
+ only for the dynamically allocated variants. It can only be
+ used to expand, but not shrink, the capacity. For example, if
+ you originally created a 10 GB disk which is now full, you can
+ use the <computeroutput>--resize 15360</computeroutput>
+ command to change the capacity to 15 GB (15,360 MB) without
+ having to create a new image and copy all data from within a
+ virtual machine. Note however that this only changes the drive
+ capacity. You will typically next need to use a partition
+ management tool inside the guest to adjust the main partition
+ to fill the drive.
+ </para>
+
+ <para>
+ The <computeroutput>--resizebyte x</computeroutput> option
+ does almost the same thing, except that x is expressed in
+ bytes instead of megabytes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>--move &lt;path&gt;</computeroutput>
+ option can be used to relocate a medium to a different
+ location &lt;path&gt; on the host file system. The path can be
+ either relative to the current directory or absolute.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <computeroutput>--setlocation
+ &lt;path&gt;</computeroutput> option can be used to set the
+ new location &lt;path&gt; of the medium on the host file
+ system if the medium has been moved for any reasons. The path
+ can be either relative to the current directory or absolute.
+ </para>
+
+ <note>
+ <para>
+ The new location is used as is, without any sanity checks.
+ The user is responsible for setting the correct path.
+ </para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-clonemedium">
+
+ <title>VBoxManage clonemedium</title>
+
+ <para>
+ This command duplicates a virtual disk, DVD, or floppy medium to a
+ new medium, usually an image file, with a new unique identifier
+ (UUID). The new image can be transferred to another host system or
+ reimported into &product-name; using the Virtual Media Manager.
+ See <xref linkend="vdis" /> and <xref linkend="cloningvdis" />.
+ The syntax is as follows:
+ </para>
+
+<screen>VBoxManage clonemedium [disk|dvd|floppy] &lt;uuid|inputfile&gt; &lt;uuid|outputfile&gt;
+
+ [--format VDI|VMDK|VHD|RAW|&lt;other&gt;]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--existing]</screen>
+
+ <para>
+ The medium to clone as well as the target image must be described
+ either by its UUIDs, if the mediums are registered, or by its
+ filename. Registered images can be listed by <command>VBoxManage
+ list hdds</command>. See <xref linkend="vboxmanage-list" />. A
+ filename must be specified as valid path, either as an absolute
+ path or as a relative path starting from the current directory.
+ </para>
+
+ <para>
+ The following options are available:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--format</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Set a file format for the output file different from the
+ file format of the input file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--variant</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Set a file format variant for the output file. This is a
+ comma-separated list of variant flags. Not all combinations
+ are supported, and specifying inconsistent flags will result
+ in an error message.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--existing</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Perform the clone operation to an already existing
+ destination medium. Only the portion of the source medium
+ which fits into the destination medium is copied. This means
+ if the destination medium is smaller than the source only a
+ part of it is copied, and if the destination medium is
+ larger than the source the remaining part of the destination
+ medium is unchanged.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, the
+ <command>clonevdi</command> and <command>clonehd</command>
+ commands are still supported and mapped internally to the
+ <command>clonemedium</command> command.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-mediumproperty">
+
+ <title>VBoxManage mediumproperty</title>
+
+ <para>
+ This command sets, gets, or deletes a medium property. The syntax
+ is as follows:
+ </para>
+
+<screen>VBoxManage mediumproperty [disk|dvd|floppy] set &lt;uuid|filename&gt;
+ &lt;property&gt; &lt;value&gt;</screen>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;disk|dvd|floppy&gt;</computeroutput>
+ to optionally specify the type of medium: disk (hard drive),
+ dvd, or floppy.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;uuid|filename&gt;</computeroutput> to
+ supply either the UUID or absolute path of the medium or
+ image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;property&gt;</computeroutput> to
+ supply the name of the property.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;value&gt;</computeroutput> to supply
+ the property value.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+<screen>VBoxManage mediumproperty [disk|dvd|floppy] get &lt;uuid|filename&gt;
+ &lt;property&gt;</screen>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;disk|dvd|floppy&gt;</computeroutput>
+ to optionally specify the type of medium: disk (hard drive),
+ dvd, or floppy.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;uuid|filename&gt;</computeroutput> to
+ supply either the UUID or absolute path of the medium or
+ image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;property&gt;</computeroutput> to
+ supply the name of the property.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+<screen>VBoxManage mediumproperty [disk|dvd|floppy] delete &lt;uuid|filename&gt;
+ &lt;property&gt;</screen>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;disk|dvd|floppy&gt;</computeroutput>
+ to optionally specify the type of medium: disk (hard drive),
+ dvd, or floppy.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;uuid|filename&gt;</computeroutput> to
+ supply either the UUID or absolute path of the medium or
+ image.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;property&gt;</computeroutput> to
+ supply the name of the property.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-encryptmedium">
+
+ <title>VBoxManage encryptmedium</title>
+
+ <para>
+ This command is used to create a DEK encrypted medium or image.
+ See <xref linkend="diskencryption-encryption" />.
+ </para>
+
+ <para>
+ The syntax is as follows:
+ </para>
+
+<screen>VBoxManage encryptmedium &lt;uuid|filename&gt;
+ [--newpassword &lt;file|-&gt;]
+ [--oldpassword &lt;file|-&gt;]
+ [--cipher &lt;cipher id&gt;]
+ [--newpasswordid &lt;password id&gt;]</screen>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;uuid|filename&gt;</computeroutput> to
+ supply the UUID or absolute path of the medium or image to be
+ encrypted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>--newpassword
+ &lt;file|-&gt;</computeroutput> to supply a new encryption
+ password. Either specify the absolute pathname of a password
+ file on the host operating system, or
+ <computeroutput>-</computeroutput> to prompt you for the
+ password on the command line. Always use the
+ <computeroutput>--newpasswordid</computeroutput> option with
+ this option.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>--oldpassword
+ &lt;file|-&gt;</computeroutput> to supply any old encryption
+ password. Either specify the absolute pathname of a password
+ file on the host operating system, or
+ <computeroutput>-</computeroutput> to prompt you for the old
+ password on the command line.
+ </para>
+
+ <para>
+ Use this option to gain access to an encrypted medium or image
+ to either change its password using
+ <computeroutput>--newpassword</computeroutput> or change its
+ encryption using <computeroutput>--cipher</computeroutput>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>--cipher &lt;cipher&gt;</computeroutput>
+ to specify the cipher to use for encryption. This can be
+ either <computeroutput>AES-XTS128-PLAIN64</computeroutput> or
+ <computeroutput>AES-XTS256-PLAIN64</computeroutput>.
+ </para>
+
+ <para>
+ Use this option to change any existing encryption on the
+ medium or image, or to set up new encryption on it for the
+ first time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>--newpasswordid &lt;password
+ id&gt;</computeroutput> to supply the new password identifier.
+ This can be chosen by the user, and is used for correct
+ identification when supplying multiple passwords during VM
+ startup.
+ </para>
+
+ <para>
+ If the user uses the same password when encrypting multiple
+ images and also the same password identifier, the user needs
+ to supply the password only once during VM startup.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-checkmediumpwd">
+
+ <title>VBoxManage checkmediumpwd</title>
+
+ <para>
+ This command is used to check the current encryption password on a
+ DEK encrypted medium or image. See
+ <xref linkend="diskencryption-encryption" />.
+ </para>
+
+ <para>
+ The syntax is as follows:
+ </para>
+
+<screen>VBoxManage checkmediumpwd &lt;uuid|filename&gt;
+ &lt;pwd file|-&gt;</screen>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;uuid|filename&gt;</computeroutput> to
+ supply the UUID or absolute path of the medium or image to be
+ checked.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use <computeroutput>&lt;pwd file|-&gt;</computeroutput> to
+ supply the password identifier to be checked. Either specify
+ the absolute pathname of a password file on the host operating
+ system, or <computeroutput>-</computeroutput> to prompt you
+ for the password on the command line.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-convertfromraw">
+
+ <title>VBoxManage convertfromraw</title>
+
+ <para>
+ This command converts a raw disk image to an &product-name; Disk
+ Image (VDI) file. The syntax is as follows:
+ </para>
+
+<screen>VBoxManage convertfromraw &lt;filename&gt; &lt;outputfile&gt;
+ [--format VDI|VMDK|VHD]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--uuid &lt;uuid&gt;]
+VBoxManage convertfromraw stdin &lt;outputfile&gt; &lt;bytes&gt;
+ [--format VDI|VMDK|VHD]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--uuid &lt;uuid&gt;]</screen>
+
+ <para>
+ The parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--bytes</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ The size of the image file, in bytes, provided through
+ stdin.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--format</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Select the disk image format to create. The default format
+ is VDI. Other options are VMDK and VHD.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--variant</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Choose a file format variant for the output file. This is a
+ comma-separated list of variant flags. Not all combinations
+ are supported, and specifying inconsistent flags will result
+ in an error message.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--uuid</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specify the UUID of the output file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ The <command>stdin</command> form of the command forces
+ <command>VBoxManage</command> to read the content of the disk
+ image from standard input. This useful when using the command in a
+ pipe.
+ </para>
+
+ <note>
+ <para>
+ For compatibility with earlier versions of &product-name;, the
+ <command>convertdd</command> command is also supported and
+ mapped internally to the <command>convertfromraw</command>
+ command.
+ </para>
+ </note>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-extradata">
+
+ <title>VBoxManage getextradata/setextradata</title>
+
+ <para>
+ These commands enable you to attach and retrieve string data for a
+ virtual machine or for an &product-name; configuration, by
+ specifying <computeroutput>global</computeroutput> instead of a
+ virtual machine name. You must specify a keyword as a text string
+ to associate the data with, which you can later use to retrieve
+ it. For example:
+ </para>
+
+<screen>VBoxManage setextradata Fedora5 installdate 2006.01.01
+VBoxManage setextradata SUSE10 installdate 2006.02.02</screen>
+
+ <para>
+ This example would associate the string "2006.01.01" with the
+ keyword installdate for the virtual machine Fedora5, and
+ "2006.02.02" on the machine SUSE10. You could then retrieve the
+ information as follows:
+ </para>
+
+<screen>VBoxManage getextradata Fedora5 installdate</screen>
+
+ <para>
+ This would return the following:
+ </para>
+
+<screen>VirtualBox Command Line Management Interface Version <replaceable>version-number</replaceable>
+(C) 2005-2018 Oracle Corporation
+All rights reserved.
+
+Value: 2006.01.01</screen>
+
+ <para>
+ You could retrieve the information for all keywords as follows:
+ </para>
+
+<screen>VBoxManage getextradata Fedora5 enumerate</screen>
+
+ <para>
+ To remove a keyword, the <command>setextradata</command> command
+ must be run without specifying data, only the keyword. For
+ example:
+ </para>
+
+<screen>VBoxManage setextradata Fedora5 installdate</screen>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-setproperty">
+
+ <title>VBoxManage setproperty</title>
+
+ <para>
+ This command is used to change global settings which affect the
+ entire &product-name; installation. Some of these correspond to
+ the settings in the <emphasis role="bold">Preferences</emphasis>
+ dialog in the VirtualBox Manager. The following properties are
+ available:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>machinefolder</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the default folder in which virtual machine
+ definitions are kept. See <xref linkend="vboxconfigdata" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>hwvirtexclusive</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies whether &product-name; will make exclusive use of
+ the hardware virtualization extensions (Intel VT-x or AMD-V)
+ of the host system's processor. See
+ <xref linkend="hwvirt" />. If you wish to share these
+ extensions with other hypervisors running at the same time,
+ you must disable this setting. Doing so has negative
+ performance implications.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>vrdeauthlibrary</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies which library to use when external authentication
+ has been selected for a particular virtual machine. See
+ <xref linkend="vbox-auth" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>websrvauthlibrary</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies which library the web service uses to authenticate
+ users. For details about the &product-name; web service, see
+ the &product-name; SDK reference,
+ <xref
+ linkend="VirtualBoxAPI" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>vrdeextpack</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies which library implements the VirtualBox Remote
+ Desktop Extension.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>loghistorycount</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Selects how many rotated VM logs are retained.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>autostartdbpath</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Selects the path to the autostart database. See
+ <xref linkend="autostart" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>defaultfrontend</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Selects the global default VM frontend setting. See
+ <xref linkend="vboxmanage-startvm" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>logginglevel</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Configures the VBoxSVC release logging details. See
+ <ulink url="http://www.virtualbox.org/wiki/VBoxLogging" />.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>proxymode</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Configures the mode for an HTTP proxy server.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>proxyurl</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Configures the URL for an HTTP proxy server. Used when a
+ manual proxy is configured using the
+ <computeroutput>manual</computeroutput> setting of the
+ <computeroutput>proxymode</computeroutput> property.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-usbfilter">
+
+ <title>VBoxManage usbfilter add/modify/remove</title>
+
+<screen>VBoxManage usbfilter add &lt;index,0-N&gt;
+ --target &lt;uuid|vmname&gt;global
+ --name &lt;string&gt;
+ --action ignore|hold (global filters only)
+ [--active yes|no (yes)]
+ [--vendorid &lt;XXXX&gt; (null)]
+ [--productid &lt;XXXX&gt; (null)]
+ [--revision &lt;IIFF&gt; (null)]
+ [--manufacturer &lt;string&gt; (null)]
+ [--product &lt;string&gt; (null)]
+ [--remote yes|no (null, VM filters only)]
+ [--serialnumber &lt;string&gt; (null)]
+ [--maskedinterfaces &lt;XXXXXXXX&gt;]
+ </screen>
+
+<screen>VBoxManage usbfilter modify &lt;index,0-N&gt;
+ --target &lt;uuid|vmname&gt;global
+ [--name &lt;string&gt;]
+ [--action ignore|hold (global filters only)]
+ [--active yes|no]
+ [--vendorid &lt;XXXX&gt;]
+ [--productid &lt;XXXX&gt;]
+ [--revision &lt;IIFF&gt;]
+ [--manufacturer &lt;string&gt;]
+ [--product &lt;string&gt;]
+ [--remote yes|no (null, VM filters only)]
+ [--serialnumber &lt;string&gt;]
+ [--maskedinterfaces &lt;XXXXXXXX&gt;]
+ </screen>
+
+<screen>VBoxManage usbfilter remove &lt;index,0-N&gt;
+ --target &lt;uuid|vmname&gt;global
+ </screen>
+
+ <para>
+ The <command>usbfilter</command> commands are used for working
+ with USB filters in virtual machines, or global filters which
+ affect the whole &product-name; setup. Global filters are applied
+ before machine-specific filters, and may be used to prevent
+ devices from being captured by any virtual machine. Global filters
+ are always applied in a particular order, and only the first
+ filter which fits a device is applied. For example, if the first
+ global filter says to hold, or make available, a particular
+ Kingston memory stick device and the second filter says to ignore
+ all Kingston devices. That particular Kingston memory stick will
+ be available to any machine with the appropriate filter, but no
+ other Kingston device will.
+ </para>
+
+ <para>
+ When creating a USB filter using <command>usbfilter add</command>,
+ you must supply three or four mandatory parameters. The index
+ specifies the position in the list at which the filter should be
+ placed. If there is already a filter at that position, then it and
+ the following ones will be shifted back one place. Otherwise, the
+ new filter will be added onto the end of the list. The
+ <computeroutput>target</computeroutput> parameter selects the
+ virtual machine that the filter should be attached to or use
+ <computeroutput>global</computeroutput> to apply it to all virtual
+ machines. <computeroutput>name</computeroutput> is a name for the
+ new filter. For global filters,
+ <computeroutput>action</computeroutput> says whether to allow VMs
+ access to devices that fit the filter description (hold) or not to
+ give them access (ignore). In addition, you should specify
+ parameters to filter by. You can find the parameters for devices
+ attached to your system using <command>VBoxManage list
+ usbhost</command>. Finally, you can specify whether the filter
+ should be active. For local filters, whether they are for local
+ devices, remote devices over an RDP connection, or either.
+ </para>
+
+ <para>
+ When you modify a USB filter using <command>usbfilter
+ modify</command>, you must specify the filter by index and by
+ target, which is either a virtual machine or
+ <computeroutput>global</computeroutput>. See the output of
+ <command>VBoxManage list usbfilters</command> to find global
+ filter indexes and <command>VBoxManage showvminfo</command> to
+ find indexes for individual machines. The properties which can be
+ changed are the same as for <command>usbfilter add</command>. To
+ remove a filter, use <command>usbfilter remove</command> and
+ specify the index and the target.
+ </para>
+
+ <para>
+ The following is a list of the additional <command>usbfilter
+ add</command> and <command>usbfilter modify</command> options,
+ with details of how to use them.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>--action ignore|hold</computeroutput>:
+ Specifies whether devices that fit the filter description are
+ allowed access by machines (hold), or have access denied
+ (ignore). Applies to global filters only.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--active yes|no</computeroutput>: Specifies
+ whether the USB Filter is active or temporarily disabled. For
+ <computeroutput>usbfilter create</computeroutput> the default
+ is active.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--vendorid &lt;XXXX&gt;|""</computeroutput>:
+ Specifies a vendor ID filter. The string representation for an
+ exact match has the form XXXX, where X is the hexadecimal
+ digit, including leading zeroes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--productid &lt;XXXX&gt;|""</computeroutput>:
+ Specifies a product ID filter. The string representation for
+ an exact match has the form XXXX, where X is the hexadecimal
+ digit, including leading zeroes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--revision &lt;IIFF&gt;|""</computeroutput>:
+ Specifies a revision ID filter. The string representation for
+ an exact match has the form IIFF, where I is the decimal digit
+ of the integer part of the revision, and F is the decimal
+ digit of its fractional part, including leading and trailing
+ zeros. Note that for interval filters, it is best to use the
+ hexadecimal form, because the revision is stored as a 16-bit
+ packed BCD value. Therefore, the expression int:0x0100-0x0199
+ will match any revision from 1.0 to 1.99 inclusive.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--manufacturer
+ &lt;string&gt;|""</computeroutput>: Specifies a manufacturer
+ ID filter, as a string.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--product &lt;string&gt;|""</computeroutput>:
+ Specifies a product ID filter, as a string.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--remote yes|no""</computeroutput>: Specifies
+ a remote filter, indicating whether the device is physically
+ connected to a remote VRDE client or to a local host machine.
+ Applies to VM filters only.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--serialnumber
+ &lt;string&gt;|""</computeroutput>: Specifies a serial number
+ filter, as a string.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--maskedinterfaces
+ &lt;XXXXXXXX&gt;</computeroutput>: Specifies a masked
+ interface filter, for hiding one or more USB interfaces from
+ the guest. The value is a bit mask where the set bits
+ correspond to the USB interfaces that should be hidden, or
+ masked off. This feature only works on Linux hosts.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-guestproperty">
+
+ <title>VBoxManage guestproperty</title>
+
+ <para>
+ The <command>guestproperty</command> commands enable you to get or
+ set properties of a running virtual machine. See
+ <xref linkend="guestadd-guestprops" />. Guest properties are
+ arbitrary keyword-value string pairs which can be written to and
+ read from by either the guest or the host, so they can be used as
+ a low-volume communication channel for strings, provided that a
+ guest is running and has the Guest Additions installed. In
+ addition, a number of values whose keywords begin with
+ <computeroutput>/VirtualBox/</computeroutput>are automatically set
+ and maintained by the Guest Additions.
+ </para>
+
+ <para>
+ The following subcommands are available, where
+ <computeroutput>&lt;vm&gt;</computeroutput> can either be a VM
+ name or a VM UUID, as with the other <command>VBoxManage</command>
+ commands:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>enumerate &lt;vm&gt; [--patterns
+ &lt;pattern&gt;]</computeroutput>: Lists all the guest
+ properties that are available for the given VM, including the
+ value. This list will be very limited if the guest's service
+ process cannot be contacted, for example because the VM is not
+ running or the Guest Additions are not installed.
+ </para>
+
+ <para>
+ If <computeroutput>--patterns &lt;pattern&gt;</computeroutput>
+ is specified, it acts as a filter to only list properties that
+ match the given pattern. The pattern can contain the following
+ wildcard characters:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>*</computeroutput> (asterisk): Represents
+ any number of characters. For example,
+ "<computeroutput>/VirtualBox*</computeroutput>" would
+ match all properties beginning with "/VirtualBox".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>?</computeroutput> (question mark):
+ Represents a single arbitrary character. For example,
+ "<computeroutput>fo?</computeroutput>" would match both
+ "foo" and "for".
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>|</computeroutput> (pipe symbol): Can be
+ used to specify multiple alternative patterns. For
+ example, "<computeroutput>s*|t*</computeroutput>" would
+ match anything starting with either "s" or "t".
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>get &lt;vm&gt;
+ &lt;property&gt;</computeroutput>: Retrieves the value of a
+ single property only. If the property cannot be found, for
+ example because the guest is not running, the following
+ message is shown:
+ </para>
+
+<screen>No value set!</screen>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>set &lt;vm&gt; &lt;property&gt; [&lt;value&gt;
+ [--flags &lt;flags&gt;]]</computeroutput>: Enables you to set
+ a guest property by specifying the keyword and value. If
+ <computeroutput>&lt;value&gt;</computeroutput> is omitted, the
+ property is deleted. With
+ <computeroutput>--flags</computeroutput>, you can specify
+ additional behavior. You can combine several flags by
+ separating them with commas.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>TRANSIENT</computeroutput>: The value will
+ not be stored with the VM data when the VM exits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>TRANSRESET</computeroutput>: The value
+ will be deleted as soon as the VM restarts or exits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>RDONLYGUEST</computeroutput>: The value
+ can only be changed by the host, but the guest can only
+ read it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>RDONLYHOST</computeroutput>: The value can
+ only be changed by the guest, but the host can only read
+ it.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>READONLY</computeroutput>: The value
+ cannot be changed at all.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>wait &lt;vm&gt; &lt;pattern&gt; --timeout
+ &lt;timeout&gt;</computeroutput>: Waits for a particular value
+ described by the pattern string to change or to be deleted or
+ created. The pattern rules are the same as for the
+ <command>enumerate</command> subcommand.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>delete &lt;vm&gt;
+ &lt;property&gt;</computeroutput>: Deletes a guest property
+ which has been set previously.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-guestcontrol">
+
+ <title>VBoxManage guestcontrol</title>
+
+ <para>
+ The <command>guestcontrol</command> commands enable control of the
+ guest from the host. See
+ <xref
+ linkend="guestadd-guestcontrol" /> for an introduction.
+ </para>
+
+ <para>
+ The <command>guestcontrol</command> command has two sets of
+ subcommands. The first set requires guest credentials to be
+ specified, the second does not.
+ </para>
+
+ <para>
+ The first set of subcommands is of the following form:
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; &lt;sub-command&gt;
+ [--username &lt;name&gt; ]
+ [--passwordfile &lt;file&gt; | --password &lt;password&gt;]
+ [--domain &lt;domain&gt; ]
+ [-v|--verbose] [-q|quiet] ...
+ </screen>
+
+ <para>
+ The common options are as follows:
+ </para>
+
+<screen>
+ [--username &lt;name&gt; ]
+ [--passwordfile &lt;file&gt; | --password &lt;password&gt;]
+ [--domain &lt;domain&gt; ]
+ [-v|--verbose] [-q|quiet]
+ </screen>
+
+ <para>
+ The common options for the first set of subcommands are explained
+ in the following list.
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--username &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the user name on guest OS under which the process
+ should run. This user name must already exist on the guest
+ OS. If unspecified, the host user name is used. Optional
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--passwordfile
+ &lt;file&gt;|--password</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path on guest file system of password
+ file containing the password for the specified user account
+ or password for the specified user account. Optional. If
+ both are omitted, empty password is assumed.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--domain &lt;domain&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ User domain for Windows guests. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-v|--verbose</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Makes the subcommand execution more verbose. Optional
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-q|--quiet</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Makes the subcommand execution quieter. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ The first set of subcommands are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>run</computeroutput>: Executes a guest
+ program, forwarding stdout, stderr, and stdin to and from the
+ host until it completes.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; run [common-options]
+ --exe &lt;path to executable&gt; [--timeout &lt;msec&gt;]
+ [-E|--putenv &lt;NAME&gt;[=&lt;VALUE&gt;]] [--unquoted-args]
+ [--ignore-operhaned-processes] [--profile]
+ [--no-wait-stdout|--wait-stdout]
+ [--no-wait-stderr|--wait-stderr]
+ [--dos2unix] [--unix2dos]
+ -- &lt;program/arg0&gt; [argument1] ... [argumentN]]
+ </screen>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--exe &lt;path to
+ executable&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the executable on the
+ guest OS file system. Mandatory. For example:
+ <filename>C:\Windows\System32\calc.exe</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--timeout &lt;msec&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the maximum time, in microseconds, that the
+ executable can run, during which
+ <command>VBoxManage</command> receives its output.
+ Optional. If unspecified, <command>VBoxManage</command>
+ waits indefinitely for the process to end, or an error
+ occurs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-E|--putenv
+ &lt;NAME&gt;=&lt;VALUE&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Sets, modifies, and unsets environment variables in the
+ environment in which the program will run. Optional.
+ </para>
+
+ <para>
+ The guest process is created with the standard default
+ guest OS environment. Use this option to modify that
+ default environment. To set or modify a variable use:
+ <computeroutput>&lt;NAME&gt;=&lt;VALUE&gt;</computeroutput>.
+ To unset a variable use:
+ <computeroutput>&lt;NAME&gt;=</computeroutput>
+ </para>
+
+ <para>
+ Any spaces in names and values should be enclosed by
+ quotes.
+ </para>
+
+ <para>
+ To set, modify, and unset multiple variables, use
+ multiple instances of the
+ <computeroutput>--E|--putenv</computeroutput> option.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--unquoted-args</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Disables escaped double quoting, such as \"fred\", on
+ arguments passed to the executed program. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--ignore-operhaned-processes</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Ignore orphaned processes. Not yet implemented.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--profile</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Use Profile. Not yet implemented. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--no-wait-stdout|--wait-stdout</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Does not wait or waits until the guest process ends and
+ receives its exit code and reason/flags. In the case of
+ <computeroutput>--wait-stdout</computeroutput>,
+ <command>VBoxManage</command> receives its stdout while
+ the process runs. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--no-wait-stderr|--wait-stderr</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Does not wait or waits until the guest process ends and
+ receives its exit code, error messages, and flags. In
+ the case of
+ <computeroutput>--wait-stderr</computeroutput>,
+ <command>VBoxManage</command> receives its stderr while
+ the process runs. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--dos2unix</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Converts output from DOS/Windows guests to
+ UNIX/Linux-compatible line endings, CR + LF to LF. Not
+ yet implemented. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--unix2dos</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Converts output from a UNIX/Linux guests to
+ DOS/Windows-compatible line endings, LF to CR + LF. Not
+ yet implemented. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>[-- &lt;program/arg0&gt;
+ [&lt;argument1&gt;] ...
+ [&lt;argumentN&gt;]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the program name, followed by one or more
+ arguments to pass to the program. Optional.
+ </para>
+
+ <para>
+ Any spaces in arguments should be enclosed by quotes.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ On Windows there are certain limitations for graphical
+ applications. See <xref linkend="KnownIssues" />.
+ </para>
+ </note>
+
+ <para>
+ Examples of using the <command>guestcontrol run</command>
+ command are as follows:
+ </para>
+
+<screen>VBoxManage --nologo guestcontrol "My VM" run --exe "/bin/ls"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout -- -l /usr</screen>
+
+<screen>VBoxManage --nologo guestcontrol "My VM" run --exe "c:\\windows\\system32\\ipconfig.exe"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout</screen>
+
+ <para>
+ Note that the double backslashes in the second example are
+ only required on UNIX hosts.
+ </para>
+
+ <note>
+ <para>
+ For certain commands a user name of an existing user account
+ on the guest must be specified. Anonymous executions are not
+ supported for security reasons. A user account password,
+ however, is optional and depends on the guest's OS security
+ policy or rules. If no password is specified for a given
+ user name, an empty password will be used. On certain OSes
+ like Windows the security policy may needs to be adjusted in
+ order to allow user accounts with an empty password set.
+ Also, global domain rules might apply and therefore cannot
+ be changed.
+ </para>
+ </note>
+
+ <para>
+ Starting at &product-name; 4.1.2 guest process execution by
+ default is limited to serve up to five guest processes at a
+ time. If a new guest process gets started which would exceed
+ this limit, the oldest not running guest process will be
+ discarded in order to be able to run that new process. Also,
+ retrieving output from this old guest process will not be
+ possible anymore then. If all five guest processes are still
+ active and running, starting a new guest process will result
+ in an appropriate error message.
+ </para>
+
+ <para>
+ To raise or lower the guest process execution limit, either
+ use the guest property
+ <computeroutput>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</computeroutput>
+ or <command>VBoxService</command> command line by specifying
+ <computeroutput>--control-procs-max-kept</computeroutput>
+ needs to be modified. A restart of the guest OS is required
+ afterwards. To serve unlimited guest processes, a value of
+ <computeroutput>0</computeroutput> needs to be set, but this
+ is not recommended.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>start</computeroutput>: Executes a guest
+ program until it completes.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; start [common-options]
+ [--exe &lt;path to executable&gt;] [--timeout &lt;msec&gt;]
+ [-E|--putenv &lt;NAME&gt;[=&lt;VALUE&gt;]] [--unquoted-args]
+ [--ignore-operhaned-processes] [--profile]
+ -- &lt;program/arg0&gt; [argument1] ... [argumentN]]
+ </screen>
+
+ <para>
+ Where the options are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--exe &lt;path to
+ executable&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the executable on the
+ guest OS file system. Mandatory. For example:
+ <filename>C:\Windows\System32\calc.exe</filename>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--timeout &lt;msec&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the maximum time, in microseconds, that the
+ executable can run. Optional. If unspecified,
+ <command>VBoxManage</command> waits indefinitely for the
+ process to end, or an error occurs.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-E|--putenv
+ &lt;NAME&gt;=&lt;VALUE&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Sets, modifies, and unsets environment variables in the
+ environment in which the program will run. Optional.
+ </para>
+
+ <para>
+ The guest process is created with the standard default
+ guest OS environment. Use this option to modify that
+ default environment. To set or modify a variable use:
+ <computeroutput>&lt;NAME&gt;=&lt;VALUE&gt;</computeroutput>.
+ To unset a variable use:
+ <computeroutput>&lt;NAME&gt;=</computeroutput>
+ </para>
+
+ <para>
+ Any spaces in names and values should be enclosed by
+ quotes.
+ </para>
+
+ <para>
+ To set, modify, or unset multiple variables, use
+ multiple instances of the
+ <computeroutput>--E|--putenv</computeroutput> option.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--unquoted-args</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Disables escaped double quoting, such as \"fred\", on
+ arguments passed to the executed program. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--ignore-operhaned-processes</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Ignores orphaned processes. Not yet implemented.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--profile</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Use a profile. Not yet implemented. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>[-- &lt;program/arg0&gt;
+ [&lt;argument1&gt;] ...
+ [&lt;argumentN&gt;]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the program name, followed by one or more
+ arguments to pass to the program. Optional.
+ </para>
+
+ <para>
+ Any spaces in arguments should be enclosed by quotes.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <note>
+ <para>
+ On Windows there are certain limitations for graphical
+ applications. See <xref linkend="KnownIssues" />.
+ </para>
+ </note>
+
+ <para>
+ Examples of using the <command>guestcontrol start</command>
+ command are as follows:
+ </para>
+
+<screen>VBoxManage --nologo guestcontrol "My VM" start --exe "/bin/ls"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout -- -l /usr</screen>
+
+<screen>VBoxManage --nologo guestcontrol "My VM" start --exe "c:\\windows\\system32\\ipconfig.exe"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout</screen>
+
+ <para>
+ Note that the double backslashes in the second example are
+ only required on UNIX hosts.
+ </para>
+
+ <note>
+ <para>
+ For certain commands a user name of an existing user account
+ on the guest must be specified. Anonymous executions are not
+ supported for security reasons. A user account password,
+ however, is optional and depends on the guest's OS security
+ policy or rules. If no password is specified for a given
+ user name, an empty password will be used. On certain OSes
+ like Windows the security policy may needs to be adjusted in
+ order to allow user accounts with an empty password set.
+ Also, global domain rules might apply and therefore cannot
+ be changed.
+ </para>
+ </note>
+
+ <para>
+ Starting at &product-name; 4.1.2 guest process execution by
+ default is limited to serve up to five guest processes at a
+ time. If a new guest process gets started which would exceed
+ this limit, the oldest not running guest process will be
+ discarded in order to be able to run that new process. Also,
+ retrieving output from this old guest process will not be
+ possible anymore then. If all five guest processes are still
+ active and running, starting a new guest process will result
+ in an appropriate error message.
+ </para>
+
+ <para>
+ To raise or lower the guest process execution limit, either
+ use the guest property
+ <computeroutput>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</computeroutput>
+ or <command>VBoxService</command> command line by specifying
+ <computeroutput>--control-procs-max-kept</computeroutput>
+ needs to be modified. A restart of the guest OS is required
+ afterwards. To serve unlimited guest processes, a value of
+ <computeroutput>0</computeroutput> needs to be set, but this
+ is not recommended.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>copyfrom</computeroutput>: Copies files from
+ the guest to the host file system. Only available with Guest
+ Additions 4.0 or later installed.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; copyfrom [common-options]
+ [--follow] [--R|recursive]
+ --target-directory &lt;host-dst-dir&gt;
+ &lt;guest-src0&gt; [&lt;guest-src1&gt; [...]] </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--follow</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables symlink following on the guest file system.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-R|--recursive</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables recursive copying of files and directories from
+ the specified guest file system directory. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--target-directory
+ &lt;host-dst-dir&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the host file system
+ destination directory. Mandatory. For example:
+ <filename>C:\Temp</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;guest-src0&gt; [&lt;guest-src1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute paths of guest file system files
+ to be copied. Mandatory. For example:
+ <filename>C:\Windows\System32\calc.exe</filename>.
+ Wildcards can be used in the expressions. For example:
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>copyto</computeroutput>: Copies files from the
+ host to the guest file system. Only available with Guest
+ Additions 4.0 or later installed.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; copyto [common-options]
+ [--follow] [--R|recursive]
+ --target-directory &lt;guest-dst&gt;
+ &lt;host-src0&gt; [&lt;host-src1&gt; [...]] </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--follow</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables symlink following on the host file system.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-R|--recursive</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables recursive copying of files and directories from
+ the specified host file system directory. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--target-directory
+ &lt;guest-dst&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the guest file system
+ destination directory. Mandatory. For example:
+ <filename>C:\Temp</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;host-src0&gt; [&lt;host-src1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute paths of host file system files
+ to be copied. Mandatory. For example:
+ <filename>C:\Windows\System32\calc.exe</filename>.
+ Wildcards can be used in the expressions. For example:
+ <filename>C:\Windows\System*\*.dll</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>md|mkdir|createdir|createdirectory</computeroutput>:
+ Creates one or more directories on the guest file system. Only
+ available with Guest Additions 4.0 or later installed.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; md|mkdir|createdir|createdirectory [common-options]
+ [--parents] [--mode &lt;mode&gt;]
+ &lt;guest-dir0&gt; [&lt;guest-dir1&gt; [...]] </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--parents</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Creates any absent parent directories of the specified
+ directory. Optional.
+ </para>
+
+ <para>
+ For example: If specified directory is
+ <filename>D:\Foo\Bar</filename> and
+ <filename>D:\Foo</filename> is absent, it will be
+ created. In such a case, had the
+ <computeroutput>--parents</computeroutput> option not
+ been used, this command would have failed.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--mode &lt;mode&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the permission mode on the specified
+ directories, and any parents, if the
+ <computeroutput>--parents</computeroutput> option is
+ used. Currently octal modes only, such as.
+ <computeroutput>0755</computeroutput>, are supported.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;guest-dir0&gt; [&lt;guest-dir1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a list of absolute paths of directories to be
+ created on guest file system. Mandatory. For example:
+ <filename>D:\Foo\Bar</filename>.
+ </para>
+
+ <para>
+ All parent directories must already exist unless the
+ switch <computeroutput>--parents</computeroutput> is
+ used. For example, in the above example
+ <filename>D:\Foo</filename>. The specified user must
+ have sufficient rights to create the specified
+ directories, and any parents that need to be created.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>rmdir|removedir|removedirectory</computeroutput>:
+ Deletes specified guest file system directories. Only
+ available with installed Guest Additions 4.3.2 and later.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; rmdir|removedir|removedirectory [common-options]
+ [--recursive|-R]
+ &lt;guest-dir0&gt; [&lt;guest-dir1&gt; [...]]
+ </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--recursive</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Recursively removes directories and contents. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;guest-dir0&gt; [&lt;guest-dir1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a list of the absolute paths of directories to
+ be deleted on guest file system. Mandatory. Wildcards
+ are allowed. For example:
+ <filename>D:\Foo\*Bar</filename>. The specified user
+ must have sufficient rights to delete the specified
+ directories.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>rm|removefile</computeroutput>: Deletes
+ specified files on the guest file system. Only available with
+ installed Guest Additions 4.3.2 and later.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; rm|removefile [common-options]
+ [-f|--force]
+ &lt;guest-file0&gt; [&lt;guest-file1&gt; [...]] </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-f|--force</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enforce operation and override any requests for
+ confirmations. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;guest-file0&gt; [&lt;guest-file1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a list of absolute paths of files to be
+ deleted on guest file system. Mandatory. Wildcards are
+ allowed. For example:
+ <filename>D:\Foo\Bar\text*.txt</filename>. The specified
+ user should have sufficient rights to delete the
+ specified files.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>mv|move|ren|rename</computeroutput>: Renames
+ files and/or directories on the guest file system. Only
+ available with installed Guest Additions 4.3.2 and later.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; mv|move|ren|rename [common-options]
+ &lt;guest-source0&gt; [&lt;guest-source1&gt; [...]] &lt;guest-dest&gt;</screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;guest-source0&gt;
+ [&lt;guest-source1&gt; [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies absolute paths of files or a single directory
+ to be moved and renamed on guest file system. Mandatory.
+ Wildcards are allowed in file names. The specified user
+ should have sufficient rights to access the specified
+ files.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;dest&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the destination file or
+ directory to which the files are to be moved. Mandatory.
+ If only one file to be moved, &lt;dest&gt; can be file
+ or directory, else it must be a directory. The specified
+ user must have sufficient rights to access the
+ destination file or directory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>mktemp|createtemp|createtemporary</computeroutput>:
+ Creates a temporary file or directory on the guest file
+ system, to assist subsequent copying of files from the host to
+ the guest file systems. By default, the file or directory is
+ created in the guest's platform specific temp directory. Not
+ currently supported. Only available with installed Guest
+ Additions 4.2 and later.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; mktemp|createtemp|createtemporary [common-options]
+ [--directory] [--secure] [--mode &lt;mode&gt;] [--tmpdir &lt;directory&gt;]
+ &lt;template&gt;
+ </screen>
+
+ <para>
+ The parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--directory</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Creates a temporary directory instead of a file,
+ specified by the &lt;template&gt; parameter. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--secure</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enforces secure file and directory creation. Optional.
+ The permission mode is set to
+ <computeroutput>0755</computeroutput>. Operation fails
+ if it cannot be performed securely.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--mode &lt;mode&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the permission mode of the specified
+ directory. Optional. Currently only octal modes, such as
+ <computeroutput>0755</computeroutput>, are supported.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--tmpdir
+ &lt;directory&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path of the directory on the
+ guest file system where the file or directory specified
+ will be created. Optional. If unspecified, the
+ platform-specific temp directory is used.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;template&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a file name without a directory path,
+ containing at least one sequence of three consecutive X
+ characters, or ending in X. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>stat</computeroutput>: Displays file or file
+ system statuses on the guest.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; stat [common-options]
+ &lt;file0&gt; [&lt;file1&gt; [...]]</screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;file0&gt; [&lt;file1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies absolute paths of files or file systems on the
+ guest file system. Mandatory. For example:
+ <filename>/home/foo/a.out</filename>. The specified user
+ should have sufficient rights to access the specified
+ files or file systems.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The second set of subcommands is of the form:
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; &lt;sub-command&gt;
+ [-v|--verbose] [-q|quiet] ...
+ </screen>
+
+ <para>
+ The common options are as follows:
+ </para>
+
+<screen>
+ [-v|--verbose] [-q|--quiet]
+ </screen>
+
+ <para>
+ Details of the common options for the second set of subcommands
+ are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-v|--verbose</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Makes the subcommand execution more verbose. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>-q|--quiet</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Makes the subcommand execution quieter. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+ The second set of subcommands are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>list</computeroutput>: Lists guest control
+ configuration and status data. For example: open guest
+ sessions, guest processes, and files.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; list [common-opts]
+ &lt;all|sessions|processes|files&gt; </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>all|sessions|processes|files</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Indicates whether to list all available data or guest
+ sessions, processes or files. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>closeprocess</computeroutput>: Terminates
+ guest processes specified by PIDs running in a guest session,
+ specified by the session ID or name.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; closeprocess [common-options]
+ --session-id &lt;ID&gt; | --session-name &lt;name or pattern&gt;
+ &lt;PID0&gt; [&lt;PID1&gt; [...]] </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--session-id &lt;ID&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the guest session by its ID. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--session-name &lt;name or
+ pattern&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the guest session by its name, or multiple
+ sessions using a pattern containing wildcards. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;PID0&gt; [&lt;PID1&gt;
+ [...]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies a list of process identifiers (PIDs) of guest
+ processes to be terminated. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>closesession</computeroutput>: Closes
+ specified guest sessions, specified either by session ID or
+ name.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; closesession [common-options]
+ --session-id &lt;ID&gt; | --session-name &lt;name or pattern&gt; | --all </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--session-id &lt;ID&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the guest session to be closed by ID.
+ Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--session-name &lt;name or
+ pattern&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the guest session to be closed by name.
+ Optional. Multiple sessions can be specified by using a
+ pattern containing wildcards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--all</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Close all guest sessions. Optional.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>updatega|updateadditions|updateguestadditions</computeroutput>:
+ Ugrades Guest Additions already installed on the guest. Only
+ available for already installed Guest Additions 4.0 and later.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; updatega|updateadditions|updateguestadditions
+ [common-options]
+ [--source &lt;New .ISO path&gt;]
+ [--wait-start]
+ [-- &lt;argument0&gt; [&lt;argument1&gt; [...]]]</screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--source</computeroutput> &lt;New .ISO
+ path&gt;
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the absolute path on the guest file system of
+ the .ISO file for the Guest Additions update. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--wait-start</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Indicates that <command>VBoxManage</command> starts the
+ usual updating process on the guest and then waits until
+ the actual Guest Additions updating begins, at which
+ point <command>VBoxManage</command> self-terminates.
+ Optional.
+ </para>
+
+ <para>
+ Default behavior is that <command>VBoxManage</command>
+ waits for completion of the Guest Additions update
+ before terminating. Use of this option is sometimes
+ necessary, as a running <command>VBoxManage</command>
+ can affect the interaction between the installer and the
+ guest OS.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>[-- &lt;argument0&gt; [&lt;argument1&gt;
+ [...]]]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies optional command line arguments to be supplied
+ to the Guest Additions updater. Useful for retrofitting
+ features which are not currently installed.
+ </para>
+
+ <para>
+ Arguments containing spaces should be enclosed by
+ quotes.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>watch</computeroutput>: Prints current guest
+ control activity.
+ </para>
+
+<screen>VBoxManage guestcontrol &lt;uuid|vmname&gt; watch [common-options]
+ </screen>
+
+ <para>
+ Where the parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>&lt;uuid|vmname&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Specifies the VM UUID or VM name. Mandatory.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-metrics">
+
+ <title>VBoxManage metrics</title>
+
+ <para>
+ This command supports monitoring the usage of system resources.
+ Resources are represented by various metrics associated with the
+ host system or a particular VM. For example, the host system has a
+ <computeroutput>CPU/Load/User</computeroutput> metric that shows
+ the percentage of time CPUs spend executing in user mode over a
+ specific sampling period.
+ </para>
+
+ <para>
+ Metric data is collected and retained internally. It may be
+ retrieved at any time with the <command>VBoxManage metrics
+ query</command> subcommand. The data is available as long as the
+ background <computeroutput>VBoxSVC</computeroutput> process is
+ alive. That process terminates shortly after all VMs and frontends
+ have been closed.
+ </para>
+
+ <para>
+ By default no metrics are collected at all. Metrics collection
+ does not start until <command>VBoxManage metrics setup</command>
+ is invoked with a proper sampling interval and the number of
+ metrics to be retained. The interval is measured in seconds. For
+ example, to enable collecting the host processor and memory usage
+ metrics every second and keeping the five most current samples,
+ the following command can be used:
+ </para>
+
+<screen>VBoxManage metrics setup --period 1 --samples 5 host CPU/Load,RAM/Usage</screen>
+
+ <para>
+ Metric collection can only be enabled for started VMs. Collected
+ data and collection settings for a particular VM will disappear as
+ soon as it shuts down. Use the <command>VBoxManage metrics
+ list</command> subcommand to see which metrics are currently
+ available. You can also use the <option>--list</option> option
+ with any subcommand that modifies metric settings to find out
+ which metrics were affected.
+ </para>
+
+ <para>
+ Note that the <command>VBoxManage metrics setup</command>
+ subcommand discards all samples that may have been previously
+ collected for the specified set of objects and metrics.
+ </para>
+
+ <para>
+ To enable or disable metrics collection without discarding the
+ data, <command>VBoxManage metrics enable</command> and
+ <command>VBoxManage metrics disable</command> subcommands can be
+ used. Note that these subcommands expect metrics as parameters,
+ not submetrics such as <computeroutput>CPU/Load</computeroutput>
+ or <computeroutput>RAM/Usage</computeroutput>. In other words
+ enabling <computeroutput>CPU/Load/User</computeroutput> while
+ disabling <computeroutput>CPU/Load/Kernel</computeroutput> is not
+ supported.
+ </para>
+
+ <para>
+ The host and VMs have different sets of associated metrics.
+ Available metrics can be listed with <command>VBoxManage metrics
+ list</command> subcommand.
+ </para>
+
+ <para>
+ A complete metric name may include an aggregate function. The name
+ has the following form:
+ <computeroutput>Category/Metric[/SubMetric][:aggregate]</computeroutput>.
+ For example, <computeroutput>RAM/Usage/Free:min</computeroutput>
+ stands for the minimum amount of available memory over all
+ retained data if applied to the host object.
+ </para>
+
+ <para>
+ Subcommands may apply to all objects and metrics or can be limited
+ to one object and a list of metrics. If no objects or metrics are
+ given in the parameters, the subcommands will apply to all
+ available metrics of all objects. You may use an asterisk
+ "<computeroutput>*</computeroutput>" to explicitly specify that
+ the command should be applied to all objects or metrics. Use
+ <computeroutput>host</computeroutput> as the object name to limit
+ the scope of the command to host-related metrics. To limit the
+ scope to a subset of metrics, use a metric list with names
+ separated by commas.
+ </para>
+
+ <para>
+ For example, to query metric data on the CPU time spent in user
+ and kernel modes by the virtual machine named
+ <computeroutput>test</computeroutput>, use the following command:
+ </para>
+
+<screen>VBoxManage metrics query test CPU/Load/User,CPU/Load/Kernel</screen>
+
+ <para>
+ The following list summarizes the available subcommands:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>list</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Shows the parameters of the currently existing metrics. Note
+ that VM-specific metrics are only available when a
+ particular VM is running.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>setup</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Sets the interval between taking two samples of metric data
+ and the number of samples retained internally. The retained
+ data is available for displaying with the
+ <command>query</command> subcommand. The
+ <computeroutput>--list</computeroutput> option shows which
+ metrics have been modified as the result of the command
+ execution.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>enable</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Resumes data collection after it has been stopped with the
+ <command>disable</command> subcommand. Note that specifying
+ submetrics as parameters will not enable underlying metrics.
+ Use <computeroutput>--list</computeroutput> to find out if
+ the command worked as expected.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>disable</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Suspends data collection without affecting collection
+ parameters or collected data. Note that specifying
+ submetrics as parameters will not disable underlying
+ metrics. Use <computeroutput>--list</computeroutput> to find
+ out if the command worked as expected.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>query</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Retrieves and displays the currently retained metric data.
+ </para>
+
+ <note>
+ <para>
+ The <command>query</command> subcommand does not remove or
+ flush retained data. If you query often enough you will
+ see how old samples are gradually being phased out by new
+ samples.
+ </para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>collect</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Sets the interval between taking two samples of metric data
+ and the number of samples retained internally. The collected
+ data is displayed periodically until Ctrl+C is pressed,
+ unless the <computeroutput>--detach</computeroutput> option
+ is specified. With the
+ <computeroutput>--detach</computeroutput> option, this
+ subcommand operates the same way as
+ <computeroutput>setup</computeroutput> does. The
+ <computeroutput>--list</computeroutput> option shows which
+ metrics match the specified filter.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-natnetwork">
+
+ <title>VBoxManage natnetwork</title>
+
+ <para>
+ NAT networks use the Network Address Translation (NAT) service,
+ which works in a similar way to a home router. It groups systems
+ using it into a network and prevents outside systems from directly
+ accessing those inside, while letting systems inside communicate
+ with each other and outside systems using TCP and UDP over IPv4
+ and IPv6.
+ </para>
+
+ <para>
+ A NAT service is attached to an internal network. Virtual machines
+ to make use of one should be attached to it. The name of an
+ internal network is chosen when the NAT service is created, and
+ the internal network will be created if it does not already exist.
+ The following is an example command to create a NAT network:
+ </para>
+
+<screen>VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable</screen>
+
+ <para>
+ Here, <computeroutput>natnet1</computeroutput> is the name of the
+ internal network to be used and
+ <computeroutput>192.168.15.0/24</computeroutput> is the network
+ address and mask of the NAT service interface. By default, in this
+ static configuration the gateway will be assigned the address
+ 192.168.15.1, the address after the interface address, though this
+ is subject to change.
+ </para>
+
+ <para>
+ To add a DHCP server to the NAT network after creation, run the
+ following command:
+ </para>
+
+<screen>VBoxManage natnetwork modify --netname natnet1 --dhcp on</screen>
+
+ <para>
+ The subcommands for <command>VBoxManage natnetwork</command> are
+ as follows:
+ </para>
+
+<screen>VBoxManage natnetwork add --netname &lt;name&gt;
+ [--network &lt;network&gt;]
+ [--enable|--disable]
+ [--dhcp on|off]
+ [--port-forward-4 &lt;rule&gt;]
+ [--loopback-4 &lt;rule&gt;]
+ [--ipv6 on|off]
+ [--port-forward-6 &lt;rule&gt;]
+ [--loopback-6 &lt;rule&gt;]
+ </screen>
+
+ <para>
+ <command>VBoxManage natnetwork add</command>: Creates a new
+ internal network interface, and adds a NAT network service. This
+ command is a prerequisite for enabling attachment of VMs to the
+ NAT network. Parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--netname &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;name&gt; is the name of the new internal network
+ interface on the host OS.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--network &lt;network&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;network&gt; specifies the static or DHCP network
+ address and mask of the NAT service interface. The default
+ is a static network address.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--enable|--disable</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables the NAT network service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--dhcp on|off</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables a DHCP server specified by
+ <computeroutput>--netname</computeroutput>. Use of this
+ option also indicates that it is a DHCP server.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--port-forward-4 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables IPv4 port forwarding, with a rule specified by
+ &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--loopback-4 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables the IPv4 loopback interface, with a rule specified
+ by &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--ipv6 on|off</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables IPv6. The default setting is IPv4,
+ disabling IPv6 enables IPv4.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--port-forward-6 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables IPv6 port forwarding, with a rule specified by
+ &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--loopback-6 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables the IPv6 loopback interface, with a rule specified
+ by &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<screen>VBoxManage natnetwork remove --netname &lt;name&gt; </screen>
+
+ <para>
+ <command>VBoxManage natnetwork remove</command>: Removes a NAT
+ network service. Parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--netname &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;name&gt; specifies an existing NAT network
+ service. Does not remove any DHCP server enabled on the
+ network.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<screen>VBoxManage natnetwork modify --netname &lt;name&gt;
+ [--network &lt;network&gt;]
+ [--enable|--disable]
+ [--dhcp on|off]
+ [--port-forward-4 &lt;rule&gt;]
+ [--loopback-4 &lt;rule&gt;]
+ [--ipv6 on|off]
+ [--port-forward-6 &lt;rule&gt;]
+ [--loopback-6 &lt;rule&gt;]
+ </screen>
+
+ <para>
+ <command>VBoxManage natnetwork modify</command>: Modifies an
+ existing NAT network service. Parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--netname &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;name&gt; specifies an existing NAT network
+ service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--network &lt;network&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;network&gt; specifies the new static or DHCP
+ network address and mask of the NAT service interface. The
+ default is a static network address.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--enable|--disable</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables the NAT network service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--dhcp on|off</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables a DHCP server. If a DHCP server is not
+ present, using enable adds a new DHCP server.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--port-forward-4 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables IPv4 port forwarding, with a rule specified by
+ &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--loopback-4 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables the IPv4 loopback interface, with a rule specified
+ by &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--ipv6 on|off</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables and disables IPv6. The default setting is IPv4,
+ disabling IPv6 enables IPv4.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--port-forward-6 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables IPv6 port forwarding, with a rule specified by
+ &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--loopback-6 &lt;rule&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Enables IPv6 loopback interface, with a rule specified by
+ &lt;rule&gt;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<screen>VBoxManage natnetwork start --netname &lt;name&gt;
+ </screen>
+
+ <para>
+ <command>VBoxManage natnetwork start</command>: Starts the
+ specified NAT network service and any associated DHCP server.
+ Parameters are as follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--netname &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;name&gt; specifies an existing NAT network
+ service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<screen>VBoxManage natnetwork stop --netname &lt;name&gt;
+ </screen>
+
+ <para>
+ <command>VBoxManage natnetwork stop</command>: Stops the specified
+ NAT network service and any DHCP server. Parameters are as
+ follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>--netname &lt;name&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;name&gt; specifies an existing NAT network
+ service.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+<screen>VBoxManage natnetwork list [&lt;pattern&gt;] </screen>
+
+ <para>
+ <command>VBoxManage natnetwork list</command>: Lists all NAT
+ network services, with optional filtering. Parameters are as
+ follows:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>[&lt;pattern&gt;]</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Where &lt;pattern&gt; is an optional filtering pattern.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-hostonlyif">
+
+ <title>VBoxManage hostonlyif</title>
+
+ <para>
+ The <command>hostonlyif</command> command enables you to change
+ the IP configuration of a host-only network interface. For a
+ description of host-only networking, see
+ <xref linkend="network_hostonly" />. Each host-only interface is
+ identified by a name and can either use the internal DHCP server
+ or a manual IP configuration, both IP4 and IP6.
+ </para>
+
+ <para>
+ The following list summarizes the available subcommands:
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <computeroutput>ipconfig "&lt;name&gt;"</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Configures a host-only interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>create</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Creates a new vboxnet&lt;N&gt; interface on the host OS.
+ This command is essential before you can attach VMs to a
+ host-only network.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <computeroutput>remove vboxnet&lt;N&gt;</computeroutput>
+ </term>
+
+ <listitem>
+ <para>
+ Removes a vboxnet&lt;N&gt; interface from the host OS.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-usbdevsource">
+
+ <title>VBoxManage usbdevsource</title>
+
+ <para>
+ The <command>usbdevsource</command> commands enable you to add and
+ remove USB devices globally.
+ </para>
+
+ <para>
+ The following command adds a USB device.
+ </para>
+
+<screen>VBoxManage usbdevsource add &lt;source name&gt;
+ --backend &lt;backend&gt;
+ --address &lt;address&gt;
+ </screen>
+
+ <para>
+ Where the command line options are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>&lt;source name&gt;</computeroutput>:
+ Specifies the ID of the source USB device to be added.
+ Mandatory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>--backend &lt;backend&gt;</computeroutput>:
+ Specifies the USB proxy service backend to use. Mandatory.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput> --address &lt;address&gt;</computeroutput>:
+ Specifies the backend specific address. Mandatory.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following command removes a USB device.
+ </para>
+
+<screen>VBoxManage usbdevsource remove &lt;source name&gt;
+ </screen>
+
+ <para>
+ Where the command line options are as follows:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <computeroutput>&lt;source name&gt;</computeroutput>:
+ Specifies the ID of the source USB device to be removed.
+ Mandatory.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+<!-- TODO: Figure out how we can generate a file with the includes... The trouble is
+ that xpointer doesn't seem to allow including multiple elements.
+
+ In the mean time, when adding new VBoxManage man pages to Config.kmk,
+ don't forget to add it here too.
+ -->
+
+ <xi:include href="user_man_VBoxManage-unattended.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-snapshot.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-clonevm.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-sharedfolder.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-extpack.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-dhcpserver.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-debugvm.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-cloudprofile.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_man_VBoxManage-cloud.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+<!-- TODO: Figure out how we can handle other manpages. The xml is bolted to
+ sect1, so it's not possible to have them "in place" -->
+
+ <xi:include href="user_man_vboximg-mount.xml" xpointer="element(/1)" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</chapter>
diff --git a/doc/manual/en_US/user_VirtualBoxAPI.xml b/doc/manual/en_US/user_VirtualBoxAPI.xml
new file mode 100644
index 00000000..d34e58e6
--- /dev/null
+++ b/doc/manual/en_US/user_VirtualBoxAPI.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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="VirtualBoxAPI">
+
+ <title>&product-name; Programming Interfaces</title>
+
+ <para>
+ &product-name; comes with comprehensive support for third-party
+ developers. The so-called <emphasis>Main API</emphasis> of
+ &product-name; exposes the entire feature set of the virtualization
+ engine. It is completely documented and available to anyone who
+ wishes to control &product-name; programmatically.
+ </para>
+
+ <para>
+ The Main API is made available to C++ clients through COM on Windows
+ hosts or XPCOM on other hosts. Bridges also exist for SOAP, Java and
+ Python.
+ </para>
+
+ <para>
+ All programming information such as documentation, reference
+ information, header and other interface files, as well as samples
+ have been split out to a separate <emphasis role="bold">Software
+ Development Kit (SDK)</emphasis>. The SDK is available for download
+ from
+ <ulink url="http://www.virtualbox.org" />.
+ In particular, the SDK comes with a Programming Guide and Reference
+ manual in PDF format. This manual contains, among other things, the
+ information that was previously in this chapter of the User Manual.
+ </para>
+
+</chapter>
diff --git a/doc/manual/fr_FR/Makefile.kup b/doc/manual/fr_FR/Makefile.kup
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/doc/manual/fr_FR/Makefile.kup
diff --git a/doc/manual/fr_FR/SDKRef.xml b/doc/manual/fr_FR/SDKRef.xml
new file mode 100644
index 00000000..4c8a9ca0
--- /dev/null
+++ b/doc/manual/fr_FR/SDKRef.xml
@@ -0,0 +1,4900 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<book>
+ <bookinfo>
+ <title>@VBOX_PRODUCT@<superscript>®</superscript></title>
+
+ <subtitle>Programming Guide and Reference</subtitle>
+
+ <edition>Version @VBOX_VERSION_STRING@</edition>
+
+ <corpauthor>@VBOX_VENDOR@</corpauthor>
+
+ <address>http://www.virtualbox.org</address>
+
+ <copyright>
+ <year>2004-@VBOX_C_YEAR@</year>
+
+ <holder>@VBOX_VENDOR@</holder>
+ </copyright>
+ </bookinfo>
+
+ <chapter>
+ <title>Introduction</title>
+
+ <para>VirtualBox comes with comprehensive support for third-party
+ developers. This Software Development Kit (SDK) contains all the
+ documentation and interface files that are needed to write code that
+ interacts with VirtualBox.</para>
+
+ <sect1>
+ <title>Modularity: the building blocks of VirtualBox</title>
+
+ <para>VirtualBox is cleanly separated into several layers, which can be
+ visualized like in the picture below:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vbox-components.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>
+
+ <para>The orange area represents code that runs in kernel mode, the blue
+ area represents userspace code.</para>
+
+ <para>At the bottom of the stack resides the hypervisor -- the core of
+ the virtualization engine, controlling execution of the virtual machines
+ and making sure they do not conflict with each other or whatever the
+ host computer is doing otherwise.</para>
+
+ <para>On top of the hypervisor, additional internal modules provide
+ extra functionality. For example, the RDP server, which can deliver the
+ graphical output of a VM remotely to an RDP client, is a separate module
+ that is only loosely tacked into the virtual graphics device. Live
+ Migration and Resource Monitor are additional modules currently in the
+ process of being added to VirtualBox.</para>
+
+ <para>What is primarily of interest for purposes of the SDK is the API
+ layer block that sits on top of all the previously mentioned blocks.
+ This API, which we call the <emphasis role="bold">"Main API"</emphasis>,
+ exposes the entire feature set of the virtualization engine below. It is
+ completely documented in this SDK Reference -- see <xref
+ linkend="sdkref_classes" /> and <xref linkend="sdkref_enums" /> -- and
+ available to anyone who wishes to control VirtualBox programmatically.
+ We chose the name "Main API" to differentiate it from other programming
+ interfaces of VirtualBox that may be publicly accessible.</para>
+
+ <para>With the Main API, you can create, configure, start, stop and
+ delete virtual machines, retrieve performance statistics about running
+ VMs, configure the VirtualBox installation in general, and more. In
+ fact, internally, the front-end programs
+ <computeroutput>VirtualBox</computeroutput> and
+ <computeroutput>VBoxManage</computeroutput> use nothing but this API as
+ well -- there are no hidden backdoors into the virtualization engine for
+ our own front-ends. This ensures the entire Main API is both
+ well-documented and well-tested. (The same applies to
+ <computeroutput>VBoxHeadless</computeroutput>, which is not shown in the
+ image.)</para>
+ </sect1>
+
+ <sect1 id="webservice-or-com">
+ <title>Two guises of the same "Main API": the web service or
+ COM/XPCOM</title>
+
+ <para>There are several ways in which the Main API can be called by
+ other code:<orderedlist>
+ <listitem>
+ <para>VirtualBox comes with a <emphasis role="bold">web
+ service</emphasis> that maps nearly the entire Main API. The web
+ service ships in a stand-alone executable
+ (<computeroutput>vboxwebsrv</computeroutput>) that, when running,
+ acts as an HTTP server, accepts SOAP connections and processes
+ them.</para>
+
+ <para>Since the entire web service API is publicly described in a
+ web service description file (in WSDL format), you can write
+ client programs that call the web service in any language with a
+ toolkit that understands WSDL. These days, that includes most
+ programming languages that are available: Java, C++, .NET, PHP,
+ Python, Perl and probably many more.</para>
+
+ <para>All of this is explained in detail in subsequent chapters of
+ this book.</para>
+
+ <para>There are two ways in which you can write client code that
+ uses the web service:<orderedlist>
+ <listitem>
+ <para>For Java as well as Python, the SDK contains
+ easy-to-use classes that allow you to use the web service in
+ an object-oriented, straightforward manner. We shall refer
+ to this as the <emphasis role="bold">"object-oriented web
+ service (OOWS)"</emphasis>.</para>
+
+ <para>The OO bindings for Java are described in <xref
+ linkend="javaapi" />, those for Python in <xref lang=""
+ linkend="glue-python-ws" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Alternatively, you can use the web service directly,
+ without the object-oriented client layer. We shall refer to
+ this as the <emphasis role="bold">"raw web
+ service"</emphasis>.</para>
+
+ <para>You will then have neither native object orientation
+ nor full type safety, since web services are neither
+ object-oriented nor stateful. However, in this way, you can
+ write client code even in languages for which we do not ship
+ object-oriented client code; all you need is a programming
+ language with a toolkit that can parse WSDL and generate
+ client wrapper code from it.</para>
+
+ <para>We describe this further in <xref
+ linkend="raw-webservice" />, with samples for Java and
+ Perl.</para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Internally, for portability and easier maintenance, the Main
+ API is implemented using the <emphasis role="bold">Component
+ Object Model (COM),</emphasis> an interprocess mechanism for
+ software components originally introduced by Microsoft for
+ Microsoft Windows. On a Windows host, VirtualBox will use
+ Microsoft COM; on other hosts where COM is not present, it ships
+ with XPCOM, a free software implementation of COM originally
+ created by the Mozilla project for their browsers.</para>
+
+ <para>So, if you are familiar with COM and the C++ programming
+ language (or with any other programming language that can handle
+ COM/XPCOM objects, such as Java, Visual Basic or C#), then you can
+ use the COM/XPCOM API directly. VirtualBox comes with all
+ necessary files and documentation to build fully functional COM
+ applications. For an introduction, please see <xref
+ linkend="api_com" /> below.</para>
+
+ <para>The VirtualBox front-ends (the graphical user interfaces as
+ well as the command line), which are all written in C++, use
+ COM/XPCOM to call the Main API. Technically, the web service is
+ another front-end to this COM API, mapping almost all of it to
+ SOAP clients.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>If you wonder which way to choose, here are a few
+ comparisons:<table>
+ <title>Comparison web service vs. COM/XPCOM</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Web service</emphasis></entry>
+
+ <entry><emphasis role="bold">COM/XPCOM</emphasis></entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Pro:</emphasis> Easy to use with
+ Java and Python with the object-oriented web service;
+ extensive support even with other languages (C++, .NET, PHP,
+ Perl and others)</entry>
+
+ <entry><emphasis role="bold">Con:</emphasis> Usable from
+ languages where COM bridge available (most languages on
+ Windows platform, Python and C++ on other hosts)</entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Pro:</emphasis> Client can be on
+ remote machine</entry>
+
+ <entry><emphasis role="bold">Con: </emphasis>Client must be on
+ the same host where virtual machine is executed</entry>
+ </row>
+
+ <row>
+ <entry><emphasis role="bold">Con: </emphasis>Significant
+ overhead due to XML marshalling over the wire for each method
+ call</entry>
+
+ <entry><emphasis role="bold">Pro: </emphasis>Relatively low
+ invocation overhead</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>In the following chapters, we will describe the different ways in
+ which to program VirtualBox, starting with the method that is easiest to
+ use and then increase complexity as we go along.</para>
+ </sect1>
+
+ <sect1 id="api_soap_intro">
+ <title>About web services in general</title>
+
+ <para>Web services are a particular type of programming interface.
+ Whereas, with "normal" programming, a program calls an application
+ programming interface (API) defined by another program or the operating
+ system and both sides of the interface have to agree on the calling
+ convention and, in most cases, use the same programming language, web
+ services use Internet standards such as HTTP and XML to
+ communicate.<footnote>
+ <para>In some ways, web services promise to deliver the same thing
+ as CORBA and DCOM did years ago. However, while these previous
+ technologies relied on specific binary protocols and thus proved to
+ be difficult to use between diverging platforms, web services
+ circumvent these incompatibilities by using text-only standards like
+ HTTP and XML. On the downside (and, one could say, typical of things
+ related to XML), a lot of standards are involved before a web
+ service can be implemented. Many of the standards invented around
+ XML are used one way or another. As a result, web services are slow
+ and verbose, and the details can be incredibly messy. The relevant
+ standards here are called SOAP and WSDL, where SOAP describes the
+ format of the messages that are exchanged (an XML document wrapped
+ in an HTTP header), and WSDL is an XML format that describes a
+ complete API provided by a web service. WSDL in turn uses XML Schema
+ to describe types, which is not exactly terse either. However, as
+ you will see from the samples provided in this chapter, the
+ VirtualBox web service shields you from these details and is easy to
+ use.</para>
+ </footnote></para>
+
+ <para>In order to successfully use a web service, a number of things are
+ required -- primarily, a web service accepting connections; service
+ descriptions; and then a client that connects to that web service. The
+ connections are governed by the SOAP standard, which describes how
+ messages are to be exchanged between a service and its clients; the
+ service descriptions are governed by WSDL.</para>
+
+ <para>In the case of VirtualBox, this translates into the following
+ three components:<orderedlist>
+ <listitem>
+ <para>The VirtualBox web service (the "server"): this is the
+ <computeroutput>vboxwebsrv</computeroutput> executable shipped
+ with VirtualBox. Once you start this executable (which acts as a
+ HTTP server on a specific TCP/IP port), clients can connect to the
+ web service and thus control a VirtualBox installation.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox also comes with WSDL files that describe the
+ services provided by the web service. You can find these files in
+ the <computeroutput>sdk/bindings/webservice/</computeroutput>
+ directory. These files are understood by the web service toolkits
+ that are shipped with most programming languages and enable you to
+ easily access a web service even if you don't use our
+ object-oriented client layers. VirtualBox is shipped with
+ pregenerated web service glue code for several languages (Python,
+ Perl, Java).</para>
+ </listitem>
+
+ <listitem>
+ <para>A client that connects to the web service in order to
+ control the VirtualBox installation.</para>
+
+ <para>Unless you play with some of the samples shipped with
+ VirtualBox, this needs to be written by you.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1 id="runvboxwebsrv">
+ <title>Running the web service</title>
+
+ <para>The web service ships in an stand-alone executable,
+ <computeroutput>vboxwebsrv</computeroutput>, that, when running, acts as
+ a HTTP server, accepts SOAP connections and processes them -- remotely
+ or from the same machine.<note>
+ <para>The web service executable is not contained with the
+ VirtualBox SDK, but instead ships with the standard VirtualBox
+ binary package for your specific platform. Since the SDK contains
+ only platform-independent text files and documentation, the binaries
+ are instead shipped with the platform-specific packages. For this
+ reason the information how to run it as a service is included in the
+ VirtualBox documentation.</para>
+ </note></para>
+
+ <para>The <computeroutput>vboxwebsrv</computeroutput> program, which
+ implements the web service, is a text-mode (console) program which,
+ after being started, simply runs until it is interrupted with Ctrl-C or
+ a kill command.</para>
+
+ <para>Once the web service is started, it acts as a front-end to the
+ VirtualBox installation of the user account that it is running under. In
+ other words, if the web service is run under the user account of
+ <computeroutput>user1</computeroutput>, it will see and manipulate the
+ virtual machines and other data represented by the VirtualBox data of
+ that user (for example, on a Linux machine, under
+ <computeroutput>/home/user1/.VirtualBox</computeroutput>; see the
+ VirtualBox User Manual for details on where this data is stored).</para>
+
+ <sect2 id="vboxwebsrv-ref">
+ <title>Command line options of vboxwebsrv</title>
+
+ <para>The web service supports the following command line
+ options:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>--help</computeroutput> (or
+ <computeroutput>-h</computeroutput>): print a brief summary of
+ command line options.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--background</computeroutput> (or
+ <computeroutput>-b</computeroutput>): run the web service as a
+ background daemon. This option is not supported on Windows
+ hosts.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--host</computeroutput> (or
+ <computeroutput>-H</computeroutput>): This specifies the host to
+ bind to and defaults to "localhost".</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--port</computeroutput> (or
+ <computeroutput>-p</computeroutput>): This specifies which port to
+ bind to on the host and defaults to 18083.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--ssl</computeroutput> (or
+ <computeroutput>-s</computeroutput>): This enables SSL support.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--keyfile</computeroutput> (or
+ <computeroutput>-K</computeroutput>): This specifies the file name
+ containing the server private key and the certificate. This is a
+ mandatory parameter if SSL is enabled.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--passwordfile</computeroutput> (or
+ <computeroutput>-a</computeroutput>): This specifies the file name
+ containing the password for the server private key. If unspecified
+ or an empty string is specified this is interpreted as an empty
+ password (i.e. the private key is not protected by a password). If
+ the file name <computeroutput>-</computeroutput> is specified then
+ then the password is read from the standard input stream, otherwise
+ from the specified file. The user is responsible for appropriate
+ access rights to protect the confidential password.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cacert</computeroutput> (or
+ <computeroutput>-c</computeroutput>): This specifies the file name
+ containing the CA certificate appropriate for the server
+ certificate.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--capath</computeroutput> (or
+ <computeroutput>-C</computeroutput>): This specifies the directory
+ containing several CA certificates appropriate for the server
+ certificate.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--dhfile</computeroutput> (or
+ <computeroutput>-D</computeroutput>): This specifies the file name
+ containing the DH key. Alternatively it can contain the number of
+ bits of the DH key to generate. If left empty, RSA is used.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--randfile</computeroutput> (or
+ <computeroutput>-r</computeroutput>): This specifies the file name
+ containing the seed for the random number generator. If left empty,
+ an operating system specific source of the seed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--timeout</computeroutput> (or
+ <computeroutput>-t</computeroutput>): This specifies the session
+ timeout, in seconds, and defaults to 300 (five minutes). A web
+ service client that has logged on but makes no calls to the web
+ service will automatically be disconnected after the number of
+ seconds specified here, as if it had called the
+ <computeroutput>IWebSessionManager::logoff()</computeroutput>
+ method provided by the web service itself.</para>
+
+ <para>It is normally vital that each web service client call this
+ method, as the web service can accumulate large amounts of memory
+ when running, especially if a web service client does not properly
+ release managed object references. As a result, this timeout value
+ should not be set too high, especially on machines with a high
+ load on the web service, or the web service may eventually deny
+ service.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--check-interval</computeroutput> (or
+ <computeroutput>-i</computeroutput>): This specifies the interval
+ in which the web service checks for timed-out clients, in seconds,
+ and defaults to 5. This normally does not need to be
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--threads</computeroutput> (or
+ <computeroutput>-T</computeroutput>): This specifies the maximum
+ number or worker threads, and defaults to 100. This normally does
+ not need to be changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--keepalive</computeroutput> (or
+ <computeroutput>-k</computeroutput>): This specifies the maximum
+ number of requests which can be sent in one web service connection,
+ and defaults to 100. This normally does not need to be changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--authentication</computeroutput> (or
+ <computeroutput>-A</computeroutput>): This specifies the desired
+ web service authentication method. If the parameter is not
+ specified or the empty string is specified it does not change the
+ authentication method, otherwise it is set to the specified value.
+ Using this parameter is a good measure against accidental
+ misconfiguration, as the web service ensures periodically that it
+ isn't changed.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--verbose</computeroutput> (or
+ <computeroutput>-v</computeroutput>): Normally, the web service
+ outputs only brief messages to the console each time a request is
+ served. With this option, the web service prints much more detailed
+ data about every request and the COM methods that those requests
+ are mapped to internally, which can be useful for debugging client
+ programs.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--pidfile</computeroutput> (or
+ <computeroutput>-P</computeroutput>): Name of the PID file which is
+ created when the daemon was started.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logfile</computeroutput> (or
+ <computeroutput>-F</computeroutput>)
+ <computeroutput>&lt;file&gt;</computeroutput>: If this is
+ specified, the web service not only prints its output to the
+ console, but also writes it to the specified file. The file is
+ created if it does not exist; if it does exist, new output is
+ appended to it. This is useful if you run the web service
+ unattended and need to debug problems after they have
+ occurred.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logrotate</computeroutput> (or
+ <computeroutput>-R</computeroutput>): Number of old log files to
+ keep, defaults to 10. Log rotation is disabled if set to 0.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--logsize</computeroutput> (or
+ <computeroutput>-S</computeroutput>): Maximum size of log file in
+ bytes, defaults to 100MB. Log rotation is triggered if the file
+ grows beyond this limit.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--loginterval</computeroutput> (or
+ <computeroutput>-I</computeroutput>): Maximum time interval to be
+ put in a log file before rotation is triggered, in seconds, and
+ defaults to one day.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="websrv_authenticate">
+ <title>Authenticating at web service logon</title>
+
+ <para>As opposed to the COM/XPCOM variant of the Main API, a client
+ that wants to use the web service must first log on by calling the
+ <computeroutput>IWebsessionManager::logon()</computeroutput> API (see
+ <xref linkend="IWebsessionManager__logon" />) that is specific to the
+ web service. Logon is necessary for the web service to be stateful;
+ internally, it maintains a session for each client that connects to
+ it.</para>
+
+ <para>The <computeroutput>IWebsessionManager::logon()</computeroutput>
+ API takes a user name and a password as arguments, which the web
+ service then passes to a customizable authentication plugin that
+ performs the actual authentication.</para>
+
+ <para>For testing purposes, it is recommended that you first disable
+ authentication with this command:<screen>VBoxManage setproperty websrvauthlibrary null</screen></para>
+
+ <para><warning>
+ <para>This will cause all logons to succeed, regardless of user
+ name or password. This should of course not be used in a
+ production environment.</para>
+ </warning>Generally, the mechanism by which clients are
+ authenticated is configurable by way of the
+ <computeroutput>VBoxManage</computeroutput> command:</para>
+
+ <para><screen>VBoxManage setproperty websrvauthlibrary default|null|&lt;library&gt;</screen></para>
+
+ <para>This way you can specify any shared object/dynamic link module
+ that conforms with the specifications for VirtualBox external
+ authentication modules as laid out in section <emphasis
+ role="bold">VRDE authentication</emphasis> of the VirtualBox User
+ Manual; the web service uses the same kind of modules as the
+ VirtualBox VRDE server. For technical details on VirtualBox external
+ authentication modules see <xref linkend="vbox-auth" /></para>
+
+ <para>By default, after installation, the web service uses the
+ VBoxAuth module that ships with VirtualBox. This module uses PAM on
+ Linux hosts to authenticate users. Any valid username/password
+ combination is accepted, it does not have to be the username and
+ password of the user running the web service daemon. Unless
+ <computeroutput>vboxwebsrv</computeroutput> runs as root, PAM
+ authentication can fail, because sometimes the file
+ <computeroutput>/etc/shadow</computeroutput>, which is used by PAM, is
+ not readable. On most Linux distribution PAM uses a suid root helper
+ internally, so make sure you test this before deploying it. One can
+ override this behavior by setting the environment variable
+ <computeroutput>VBOX_PAM_ALLOW_INACTIVE</computeroutput> which will
+ suppress failures when unable to read the shadow password file. Please
+ use this variable carefully, and only if you fully understand what
+ you're doing.</para>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter>
+ <title>Environment-specific notes</title>
+
+ <para>The Main API described in <xref linkend="sdkref_classes" /> and
+ <xref linkend="sdkref_enums" /> is mostly identical in all the supported
+ programming environments which have been briefly mentioned in the
+ introduction of this book. As a result, the Main API's general concepts
+ described in <xref linkend="concepts" /> are the same whether you use the
+ object-oriented web service (OOWS) for JAX-WS or a raw web service
+ connection via, say, Perl, or whether you use C++ COM bindings.</para>
+
+ <para>Some things are different depending on your environment, however.
+ These differences are explained in this chapter.</para>
+
+ <sect1 id="glue">
+ <title>Using the object-oriented web service (OOWS)</title>
+
+ <para>As explained in <xref linkend="webservice-or-com" />, VirtualBox
+ ships with client-side libraries for Java, Python and PHP that allow you
+ to use the VirtualBox web service in an intuitive, object-oriented way.
+ These libraries shield you from the client-side complications of managed
+ object references and other implementation details that come with the
+ VirtualBox web service. (If you are interested in these complications,
+ have a look at <xref linkend="raw-webservice" />).</para>
+
+ <para>We recommend that you start your experiments with the VirtualBox
+ web service by using our object-oriented client libraries for JAX-WS, a
+ web service toolkit for Java, which enables you to write code to
+ interact with VirtualBox in the simplest manner possible.</para>
+
+ <para>As "interfaces", "attributes" and "methods" are COM concepts,
+ please read the documentation in <xref linkend="sdkref_classes" /> and
+ <xref linkend="sdkref_enums" /> with the following notes in mind.</para>
+
+ <para>The OOWS bindings attempt to map the Main API as closely as
+ possible to the Java, Python and PHP languages. In other words, objects
+ are objects, interfaces become classes, and you can call methods on
+ objects as you would on local objects.</para>
+
+ <para>The main difference remains with attributes: to read an attribute,
+ call a "getXXX" method, with "XXX" being the attribute name with a
+ capitalized first letter. So when the Main API Reference says that
+ <computeroutput>IMachine</computeroutput> has a "name" attribute (see
+ <xref linkend="IMachine__name" xreflabel="IMachine::name" />), call
+ <computeroutput>getName()</computeroutput> on an IMachine object to
+ obtain a machine's name. Unless the attribute is marked as read-only in
+ the documentation, there will also be a corresponding "set"
+ method.</para>
+
+ <sect2 id="glue-jax-ws">
+ <title>The object-oriented web service for JAX-WS</title>
+
+ <para>JAX-WS is a powerful toolkit by Sun Microsystems to build both
+ server and client code with Java. It is part of Java 6 (JDK 1.6), but
+ can also be obtained separately for Java 5 (JDK 1.5). The VirtualBox
+ SDK comes with precompiled OOWS bindings working with both Java 5 and
+ 6.</para>
+
+ <para>The following sections explain how to get the JAX-WS sample code
+ running and explain a few common practices when using the JAX-WS
+ object-oriented web service.</para>
+
+ <sect3>
+ <title>Preparations</title>
+
+ <para>Since JAX-WS is already integrated into Java 6, no additional
+ preparations are needed for Java 6.</para>
+
+ <para>If you are using Java 5 (JDK 1.5.x), you will first need to
+ download and install an external JAX-WS implementation, as Java 5
+ does not support JAX-WS out of the box; for example, you can
+ download one from here: <ulink
+ url="https://jax-ws.dev.java.net/2.1.4/JAXWS2.1.4-20080502.jar">https://jax-ws.dev.java.net/2.1.4/JAXWS2.1.4-20080502.jar</ulink>.
+ Then perform the installation (<computeroutput>java -jar
+ JAXWS2.1.4-20080502.jar</computeroutput>).</para>
+ </sect3>
+
+ <sect3>
+ <title>Getting started: running the sample code</title>
+
+ <para>To run the OOWS for JAX-WS samples that we ship with the SDK,
+ perform the following steps: <orderedlist>
+ <listitem>
+ <para>Open a terminal and change to the directory where the
+ JAX-WS samples reside.<footnote>
+ <para>In
+ <computeroutput>sdk/bindings/glue/java/</computeroutput>.</para>
+ </footnote> Examine the header of
+ <computeroutput>Makefile</computeroutput> to see if the
+ supplied variables (Java compiler, Java executable) and a few
+ other details match your system settings.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:<screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v
+ argument causes it to log all connections to the terminal.
+ (See <xref linkend="runvboxwebsrv" os="" /> for details on how
+ to run the web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Back in the first terminal and still in the samples
+ directory, to start a simple client example just type:<screen>make run16</screen></para>
+
+ <para>if you're on a Java 6 system; on a Java 5 system, run
+ <computeroutput>make run15</computeroutput> instead.</para>
+
+ <para>This should work on all Unix-like systems such as Linux
+ and Solaris. For Windows systems, use commands similar to what
+ is used in the Makefile.</para>
+
+ <para>This will compile the
+ <computeroutput>clienttest.java</computeroutput> code on the
+ first call and then execute the resulting
+ <computeroutput>clienttest</computeroutput> class to show the
+ locally installed VMs (see below).</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>The <computeroutput>clienttest</computeroutput> sample
+ imitates a few typical command line tasks that
+ <computeroutput>VBoxManage</computeroutput>, VirtualBox's regular
+ command-line front-end, would provide (see the VirtualBox User
+ Manual for details). In particular, you can run:<itemizedlist>
+ <listitem>
+ <para><computeroutput>java clienttest show
+ vms</computeroutput>: show the virtual machines that are
+ registered locally.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>java clienttest list
+ hostinfo</computeroutput>: show various information about the
+ host this VirtualBox installation runs on.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>java clienttest startvm
+ &lt;vmname|uuid&gt;</computeroutput>: start the given virtual
+ machine.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The <computeroutput>clienttest.java</computeroutput> sample
+ code illustrates common basic practices how to use the VirtualBox
+ OOWS for JAX-WS, which we will explain in more detail in the
+ following chapters.</para>
+ </sect3>
+
+ <sect3>
+ <title>Logging on to the web service</title>
+
+ <para>Before a web service client can do anything useful, two
+ objects need to be created, as can be seen in the
+ <computeroutput>clienttest</computeroutput> constructor:<orderedlist>
+ <listitem>
+ <para>An instance of <xref linkend="IWebsessionManager"
+ xreflabel="IWebsessionManager" />, which is an interface
+ provided by the web service to manage "web sessions" -- that
+ is, stateful connections to the web service with persistent
+ objects upon which methods can be invoked.</para>
+
+ <para>In the OOWS for JAX-WS, the IWebsessionManager class
+ must be constructed explicitly, and a URL must be provided in
+ the constructor that specifies where the web service (the
+ server) awaits connections. The code in
+ <computeroutput>clienttest.java</computeroutput> connects to
+ "http://localhost:18083/", which is the default.</para>
+
+ <para>The port number, by default 18083, must match the port
+ number given to the
+ <computeroutput>vboxwebsrv</computeroutput> command line; see
+ <xref linkend="vboxwebsrv-ref" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>After that, the code calls <xref
+ linkend="IWebsessionManager__logon"
+ xreflabel="IWebsessionManager::logon()" />, which is the first
+ call that actually communicates with the server. This
+ authenticates the client with the web service and returns an
+ instance of <xref linkend="IVirtualBox"
+ xreflabel="IVirtualBox" />, the most fundamental interface of
+ the VirtualBox web service, from which all other functionality
+ can be derived.</para>
+
+ <para>If logon doesn't work, please take another look at <xref
+ linkend="websrv_authenticate" />.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect3>
+
+ <sect3>
+ <title>Object management</title>
+
+ <para>The current OOWS for JAX-WS has certain memory management
+ related limitations. When you no longer need an object, call its
+ <xref linkend="IManagedObjectRef__release"
+ xreflabel="IManagedObjectRef::release()" /> method explicitly, which
+ frees appropriate managed reference, as is required by the raw
+ web service; see <xref linkend="managed-object-references" /> for
+ details. This limitation may be reconsidered in a future version of
+ the VirtualBox SDK.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="glue-python-ws">
+ <title>The object-oriented web service for Python</title>
+
+ <para>VirtualBox comes with two flavors of a Python API: one for web
+ service, discussed here, and one for the COM/XPCOM API discussed in
+ <xref linkend="pycom" />. The client code is mostly similar, except
+ for the initialization part, so it is up to the application developer
+ to choose the appropriate technology. Moreover, a common Python glue
+ layer exists, abstracting out concrete platform access details, see
+ <xref linkend="glue-python" />.</para>
+
+ <para>As indicated in <xref linkend="webservice-or-com" />, the
+ COM/XPCOM API gives better performance without the SOAP overhead, and
+ does not require a web server to be running. On the other hand, the
+ COM/XPCOM Python API requires a suitable Python bridge for your Python
+ installation (VirtualBox ships the most important ones for each
+ platform<footnote>
+ <para>On On Mac OS X only the Python versions bundled with the OS
+ are officially supported. This means Python 2.3 for 10.4, Python
+ 2.5 for 10.5 and Python 2.5 and 2.6 for 10.6.</para>
+ </footnote>). On Windows, you can use the Main API from Python if the Win32 extensions
+ package for Python<footnote>
+ <para>See <ulink
+ url="http://sourceforge.net/project/showfiles.php?group_id=78018">http://sourceforge.net/project/showfiles.php?group_id=78018</ulink>.</para>
+ </footnote> is installed. Version of Python Win32 extensions earlier than 2.16 are known to have bugs,
+ leading to issues with VirtualBox Python bindings, and also some early builds of Python 2.5 for Windows have issues with
+ reporting platform name on some Windows versions, so please make sure to use latest available Python
+ and Win32 extensions.</para>
+
+ <para>The VirtualBox OOWS for Python relies on the Python ZSI SOAP
+ implementation (see <ulink
+ url="http://pywebsvcs.sourceforge.net/zsi.html">http://pywebsvcs.sourceforge.net/zsi.html</ulink>),
+ which you will need to install locally before trying the examples.
+ Most Linux distributions come with package for ZSI, such as
+ <computeroutput>python-zsi</computeroutput> in Ubuntu.</para>
+
+ <para>To get started, open a terminal and change to the
+ <computeroutput>bindings/glue/python/sample</computeroutput>
+ directory, which contains an example of a simple interactive shell
+ able to control a VirtualBox instance. The shell is written using the
+ API layer, thereby hiding different implementation details, so it is
+ actually an example of code share among XPCOM, MSCOM and web services.
+ If you are interested in how to interact with the web services layer
+ directly, have a look at
+ <computeroutput>install/vboxapi/__init__.py</computeroutput> which
+ contains the glue layer for all target platforms (i.e. XPCOM, MSCOM
+ and web services).</para>
+
+ <para>To start the shell, perform the following commands: <screen>/opt/VirtualBox/vboxwebsrv -t 0
+ # start web service with object autocollection disabled
+export VBOX_PROGRAM_PATH=/opt/VirtualBox
+ # your VirtualBox installation directory
+export VBOX_SDK_PATH=/home/youruser/vbox-sdk
+ # where you've extracted the SDK
+./vboxshell.py -w </screen>See <xref linkend="vboxshell" /> for more
+ details on the shell's functionality. For you, as a VirtualBox
+ application developer, the vboxshell sample could be interesting as an
+ example of how to write code targeting both local and remote cases
+ (COM/XPCOM and SOAP). The common part of the shell is the same -- the
+ only difference is how it interacts with the invocation layer. You can
+ use the <computeroutput>connect</computeroutput> shell command to
+ connect to remote VirtualBox servers; in this case you can skip
+ starting the local web server.</para>
+ </sect2>
+
+ <sect2>
+ <title>The object-oriented web service for PHP</title>
+
+ <para>VirtualBox also comes with object-oriented web service (OOWS)
+ wrappers for PHP5. These wrappers rely on the PHP SOAP
+ Extension<footnote>
+ <para>See <ulink url="???">http://www.php.net/soap</ulink>.</para>
+ </footnote>, which can be installed by configuring PHP with
+ <computeroutput>--enable-soap</computeroutput>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="raw-webservice">
+ <title>Using the raw web service with any language</title>
+
+ <para>The following examples show you how to use the raw web service,
+ without the object-oriented client-side code that was described in the
+ previous chapter.</para>
+
+ <para>Generally, when reading the documentation in <xref
+ linkend="sdkref_classes" /> and <xref linkend="sdkref_enums" />, due to
+ the limitations of SOAP and WSDL lined out in <xref
+ linkend="rawws-conventions" />, please have the following notes in
+ mind:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Any COM method call becomes a <emphasis role="bold">plain
+ function call</emphasis> in the raw web service, with the object
+ as an additional first parameter (before the "real" parameters
+ listed in the documentation). So when the documentation says that
+ the <computeroutput>IVirtualBox</computeroutput> interface
+ supports the <computeroutput>createMachine()</computeroutput>
+ method (see <xref linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine()" />), the web service
+ operation is
+ <computeroutput>IVirtualBox_createMachine(...)</computeroutput>,
+ and a managed object reference to an
+ <computeroutput>IVirtualBox</computeroutput> object must be passed
+ as the first argument.</para>
+ </listitem>
+
+ <listitem>
+ <para>For <emphasis role="bold">attributes</emphasis> in
+ interfaces, there will be at least one "get" function; there will
+ also be a "set" function, unless the attribute is "readonly". The
+ attribute name will be appended to the "get" or "set" prefix, with
+ a capitalized first letter. So, the "version" readonly attribute
+ of the <computeroutput>IVirtualBox</computeroutput> interface can
+ be retrieved by calling
+ <computeroutput>IVirtualBox_getVersion(vbox)</computeroutput>,
+ with <computeroutput>vbox</computeroutput> being the VirtualBox
+ object.</para>
+ </listitem>
+
+ <listitem>
+ <para>Whenever the API documentation says that a method (or an
+ attribute getter) returns an <emphasis
+ role="bold">object</emphasis>, it will returned a managed object
+ reference in the web service instead. As said above, managed
+ object references should be released if the web service client
+ does not log off again immediately!</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para></para>
+
+ <sect2 id="webservice-java-sample">
+ <title>Raw web service example for Java with Axis</title>
+
+ <para>Axis is an older web service toolkit created by the Apache
+ foundation. If your distribution does not have it installed, you can
+ get a binary from <ulink
+ url="http://www.apache.org">http://www.apache.org</ulink>. The
+ following examples assume that you have Axis 1.4 installed.</para>
+
+ <para>The VirtualBox SDK ships with an example for Axis that, again,
+ is called <computeroutput>clienttest.java</computeroutput> and that
+ imitates a few of the commands of
+ <computeroutput>VBoxManage</computeroutput> over the wire.</para>
+
+ <para>Then perform the following steps:<orderedlist>
+ <listitem>
+ <para>Create a working directory somewhere. Under your
+ VirtualBox installation directory, find the
+ <computeroutput>sdk/webservice/samples/java/axis/</computeroutput>
+ directory and copy the file
+ <computeroutput>clienttest.java</computeroutput> to your working
+ directory.</para>
+ </listitem>
+
+ <listitem>
+ <para>Open a terminal in your working directory. Execute the
+ following command:<screen> java org.apache.axis.wsdl.WSDL2Java /path/to/vboxwebService.wsdl</screen></para>
+
+ <para>The <computeroutput>vboxwebService.wsdl</computeroutput>
+ file should be located in the
+ <computeroutput>sdk/webservice/</computeroutput>
+ directory.</para>
+
+ <para>If this fails, your Apache Axis may not be located on your
+ system classpath, and you may have to adjust the CLASSPATH
+ environment variable. Something like this:<screen>export CLASSPATH="/path-to-axis-1_4/lib/*":$CLASSPATH</screen></para>
+
+ <para>Use the directory where the Axis JAR files are located.
+ Mind the quotes so that your shell passes the "*" character to
+ the java executable without expanding. Alternatively, add a
+ corresponding <computeroutput>-classpath</computeroutput>
+ argument to the "java" call above.</para>
+
+ <para>If the command executes successfully, you should see an
+ "org" directory with subdirectories containing Java source files
+ in your working directory. These classes represent the
+ interfaces that the VirtualBox web service offers, as described
+ by the WSDL file.</para>
+
+ <para>This is the bit that makes using web services so
+ attractive to client developers: if a language's toolkit
+ understands WSDL, it can generate large amounts of support code
+ automatically. Clients can then easily use this support code and
+ can be done with just a few lines of code.</para>
+ </listitem>
+
+ <listitem>
+ <para>Next, compile the
+ <computeroutput>clienttest.java</computeroutput> source:<screen>javac clienttest.java </screen></para>
+
+ <para>This should yield a "clienttest.class" file.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:<screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v argument
+ causes it to log all connections to the terminal. (See <xref
+ linkend="runvboxwebsrv" os="" /> for details on how to run the
+ web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Back in the original terminal where you compiled the Java
+ source, run the resulting binary, which will then connect to the
+ web service:<screen>java clienttest</screen></para>
+
+ <para>The client sample will connect to the web service (on
+ localhost, but the code could be changed to connect remotely if
+ the web service was running on a different machine) and make a
+ number of method calls. It will output the version number of
+ your VirtualBox installation and a list of all virtual machines
+ that are currently registered (with a bit of seemingly random
+ data, which will be explained later).</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="raw-webservice-perl">
+ <title>Raw web service example for Perl</title>
+
+ <para>We also ship a small sample for Perl. It uses the SOAP::Lite
+ perl module to communicate with the VirtualBox web service.</para>
+
+ <para>The
+ <computeroutput>sdk/bindings/webservice/perl/lib/</computeroutput>
+ directory contains a pre-generated Perl module that allows for
+ communicating with the web service from Perl. You can generate such a
+ module yourself using the "stubmaker" tool that comes with SOAP::Lite,
+ but since that tool is slow as well as sometimes unreliable, we are
+ shipping a working module with the SDK for your convenience.</para>
+
+ <para>Perform the following steps:<orderedlist>
+ <listitem>
+ <para>If SOAP::Lite is not yet installed on your system, you
+ will need to install the package first. On Debian-based systems,
+ the package is called
+ <computeroutput>libsoap-lite-perl</computeroutput>; on Gentoo,
+ it's <computeroutput>dev-perl/SOAP-Lite</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Open a terminal in the
+ <computeroutput>sdk/bindings/webservice/perl/samples/</computeroutput>
+ directory.</para>
+ </listitem>
+
+ <listitem>
+ <para>To start the VirtualBox web service, open a second
+ terminal and change to the directory where the VirtualBox
+ executables are located. Then type:<screen>./vboxwebsrv -v</screen></para>
+
+ <para>The web service now waits for connections and will run
+ until you press Ctrl+C in this second terminal. The -v argument
+ causes it to log all connections to the terminal. (See <xref
+ linkend="runvboxwebsrv" os="" /> for details on how to run the
+ web service.)</para>
+ </listitem>
+
+ <listitem>
+ <para>In the first terminal with the Perl sample, run the
+ clienttest.pl script:<screen>perl -I ../lib clienttest.pl</screen></para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Programming considerations for the raw web service</title>
+
+ <para>If you use the raw web service, you need to keep a number of
+ things in mind, or you will sooner or later run into issues that are
+ not immediately obvious. By contrast, the object-oriented client-side
+ libraries described in <xref linkend="glue" /> take care of these
+ things automatically and thus greatly simplify using the web
+ service.</para>
+
+ <sect3 id="rawws-conventions">
+ <title>Fundamental conventions</title>
+
+ <para>If you are familiar with other web services, you may find the
+ VirtualBox web service to behave a bit differently to accommodate
+ for the fact that VirtualBox web service more or less maps the
+ VirtualBox Main COM API. The following main differences had to be
+ taken care of:<itemizedlist>
+ <listitem>
+ <para>Web services, as expressed by WSDL, are not
+ object-oriented. Even worse, they are normally stateless (or,
+ in web services terminology, "loosely coupled"). Web service
+ operations are entirely procedural, and one cannot normally
+ make assumptions about the state of a web service between
+ function calls.</para>
+
+ <para>In particular, this normally means that you cannot work
+ on objects in one method call that were created by another
+ call.</para>
+ </listitem>
+
+ <listitem>
+ <para>By contrast, the VirtualBox Main API, being expressed in
+ COM, is object-oriented and works entirely on objects, which
+ are grouped into public interfaces, which in turn have
+ attributes and methods associated with them.</para>
+ </listitem>
+ </itemizedlist> For the VirtualBox web service, this results in
+ three fundamental conventions:<orderedlist>
+ <listitem>
+ <para>All <emphasis role="bold">function names</emphasis> in
+ the VirtualBox web service consist of an interface name and a
+ method name, joined together by an underscore. This is because
+ there are only functions ("operations") in WSDL, but no
+ classes, interfaces, or methods.</para>
+
+ <para>In addition, all calls to the VirtualBox web service
+ (except for logon, see below) take a <emphasis
+ role="bold">managed object reference</emphasis> as the first
+ argument, representing the object upon which the underlying
+ method is invoked. (Managed object references are explained in
+ detail below; see <xref
+ linkend="managed-object-references" />.)</para>
+
+ <para>So, when one would normally code, in the pseudo-code of
+ an object-oriented language, to invoke a method upon an
+ object:<screen>IMachine machine;
+result = machine.getName();</screen></para>
+
+ <para>In the VirtualBox web service, this looks something like
+ this (again, pseudo-code):<screen>IMachineRef machine;
+result = IMachine_getName(machine);</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>To make the web service stateful, and objects persistent
+ between method calls, the VirtualBox web service introduces a
+ <emphasis role="bold">session manager</emphasis> (by way of
+ the <xref linkend="IWebsessionManager"
+ xreflabel="IWebsessionManager" /> interface), which manages
+ object references. Any client wishing to interact with the web
+ service must first log on to the session manager and in turn
+ receives a managed object reference to an object that supports
+ the <xref linkend="IVirtualBox" xreflabel="IVirtualBox" />
+ interface (the basic interface in the Main API).</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>In other words, as opposed to other web services, <emphasis
+ role="bold">the VirtualBox web service is both object-oriented and
+ stateful.</emphasis></para>
+ </sect3>
+
+ <sect3>
+ <title>Example: A typical web service client session</title>
+
+ <para>A typical short web service session to retrieve the version
+ number of the VirtualBox web service (to be precise, the underlying
+ Main API version number) looks like this:<orderedlist>
+ <listitem>
+ <para>A client logs on to the web service by calling <xref
+ linkend="IWebsessionManager__logon"
+ xreflabel="IWebsessionManager::logon()" /> with a valid user
+ name and password. See <xref linkend="websrv_authenticate" />
+ for details about how authentication works.</para>
+ </listitem>
+
+ <listitem>
+ <para>On the server side,
+ <computeroutput>vboxwebsrv</computeroutput> creates a session,
+ which persists until the client calls <xref
+ linkend="IWebsessionManager__logoff"
+ xreflabel="IWebsessionManager::logoff()" /> or the session
+ times out after a configurable period of inactivity (see <xref
+ linkend="vboxwebsrv-ref" />).</para>
+
+ <para>For the new session, the web service creates an instance
+ of <xref linkend="IVirtualBox" xreflabel="IVirtualBox" />.
+ This interface is the most central one in the Main API and
+ allows access to all other interfaces, either through
+ attributes or method calls. For example, IVirtualBox contains
+ a list of all virtual machines that are currently registered
+ (as they would be listed on the left side of the VirtualBox
+ main program).</para>
+
+ <para>The web service then creates a managed object reference
+ for this instance of IVirtualBox and returns it to the calling
+ client, which receives it as the return value of the logon
+ call. Something like this:</para>
+
+ <screen>string oVirtualBox;
+oVirtualBox = webservice.IWebsessionManager_logon("user", "pass");</screen>
+
+ <para>(The managed object reference "oVirtualBox" is just a
+ string consisting of digits and dashes. However, it is a
+ string with a meaning and will be checked by the web service.
+ For details, see below. As hinted above, <xref
+ linkend="IWebsessionManager__logon"
+ xreflabel="IWebsessionManager::logon()" /> is the
+ <emphasis>only</emphasis> operation provided by the web
+ service which does not take a managed object reference as the
+ first argument!)</para>
+ </listitem>
+
+ <listitem>
+ <para>The VirtualBox Main API documentation says that the
+ <computeroutput>IVirtualBox</computeroutput> interface has a
+ <xref linkend="IVirtualBox__version" xreflabel="version" />
+ attribute, which is a string. For each attribute, there is a
+ "get" and a "set" method in COM, which maps to according
+ operations in the web service. So, to retrieve the "version"
+ attribute of this <computeroutput>IVirtualBox</computeroutput>
+ object, the web service client does this:<screen>string version;
+version = webservice.IVirtualBox_getVersion(oVirtualBox);
+
+print version;</screen></para>
+
+ <para>And it will print
+ "@VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@".</para>
+ </listitem>
+
+ <listitem>
+ <para>The web service client calls <xref
+ linkend="IWebsessionManager__logoff"
+ xreflabel="IWebsessionManager::logoff()" /> with the
+ VirtualBox managed object reference. This will clean up all
+ allocated resources.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect3>
+
+ <sect3 id="managed-object-references">
+ <title>Managed object references</title>
+
+ <para>To a web service client, a managed object reference looks like
+ a string: two 64-bit hex numbers separated by a dash. This string,
+ however, represents a COM object that "lives" in the web service
+ process. The two 64-bit numbers encoded in the managed object
+ reference represent a session ID (which is the same for all objects
+ in the same web service session, i.e. for all objects after one
+ logon) and a unique object ID within that session.</para>
+
+ <para>Managed object references are created in two
+ situations:<orderedlist>
+ <listitem>
+ <para>When a client logs on, by calling <xref
+ linkend="IWebsessionManager__logon"
+ xreflabel="IWebsessionManager::logon()" />.</para>
+
+ <para>Upon logon, the websession manager creates one instance
+ of <xref linkend="IVirtualBox" xreflabel="IVirtualBox" /> and
+ another object of <xref linkend="ISession"
+ xreflabel="ISession" /> representing the web service session.
+ This can be retrieved using <xref
+ linkend="IWebsessionManager__getSessionObject"
+ xreflabel="IWebsessionManager::getSessionObject()" />.</para>
+
+ <para>(Technically, there is always only one <xref
+ linkend="IVirtualBox" xreflabel="IVirtualBox" /> object, which
+ is shared between all sessions and clients, as it is a COM
+ singleton. However, each session receives its own managed
+ object reference to it. The <xref linkend="ISession"
+ xreflabel="ISession" /> object, however, is created and
+ destroyed for each session.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Whenever a web service clients invokes an operation
+ whose COM implementation creates COM objects.</para>
+
+ <para>For example, <xref linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine()" /> creates a new
+ instance of <xref linkend="IMachine" xreflabel="IMachine" />;
+ the COM object returned by the COM method call is then wrapped
+ into a managed object reference by the web server, and this
+ reference is returned to the web service client.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Internally, in the web service process, each managed object
+ reference is simply a small data structure, containing a COM pointer
+ to the "real" COM object, the web session ID and the object ID. This
+ structure is allocated on creation and stored efficiently in hashes,
+ so that the web service can look up the COM object quickly whenever
+ a web service client wishes to make a method call. The random
+ session ID also ensures that one web service client cannot intercept
+ the objects of another.</para>
+
+ <para>Managed object references are not destroyed automatically and
+ must be released by explicitly calling <xref
+ linkend="IManagedObjectRef__release"
+ xreflabel="IManagedObjectRef::release()" />. This is important, as
+ otherwise hundreds or thousands of managed object references (and
+ corresponding COM objects, which can consume much more memory!) can
+ pile up in the web service process and eventually cause it to deny
+ service.</para>
+
+ <para>To reiterate: The underlying COM object, which the reference
+ points to, is only freed if the managed object reference is
+ released. It is therefore vital that web service clients properly
+ clean up after the managed object references that are returned to
+ them.</para>
+
+ <para>When a web service client calls <xref
+ linkend="IWebsessionManager__logoff"
+ xreflabel="IWebsessionManager::logoff()" />, all managed object
+ references created during the session are automatically freed. For
+ short-lived sessions that do not create a lot of objects, logging
+ off may therefore be sufficient, although it is certainly not "best
+ practice".</para>
+ </sect3>
+
+ <sect3>
+ <title>Some more detail about web service operation</title>
+
+ <sect4 id="soap">
+ <title>SOAP messages</title>
+
+ <para>Whenever a client makes a call to a web service, this
+ involves a complicated procedure internally. These calls are
+ remote procedure calls. Each such procedure call typically
+ consists of two "message" being passed, where each message is a
+ plain-text HTTP request with a standard HTTP header and a special
+ XML document following. This XML document encodes the name of the
+ procedure to call and the argument names and values passed to
+ it.</para>
+
+ <para>To give you an idea of what such a message looks like,
+ assuming that a web service provides a procedure called
+ "SayHello", which takes a string "name" as an argument and returns
+ "Hello" with a space and that name appended, the request message
+ could look like this:</para>
+
+ <para><screen>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;SOAP-ENV:Envelope
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:test="http://test/"&gt;
+&lt;SOAP-ENV:Body&gt;
+ &lt;test:SayHello&gt;
+ &lt;name&gt;Peter&lt;/name&gt;
+ &lt;/test:SayHello&gt;
+ &lt;/SOAP-ENV:Body&gt;
+&lt;/SOAP-ENV:Envelope&gt;</screen>A similar message -- the "response" message
+ -- would be sent back from the web service to the client,
+ containing the return value "Hello Peter".</para>
+
+ <para>Most programming languages provide automatic support to
+ generate such messages whenever code in that programming language
+ makes such a request. In other words, these programming languages
+ allow for writing something like this (in pseudo-C++ code):</para>
+
+ <para><screen>webServiceClass service("localhost", 18083); // server and port
+string result = service.SayHello("Peter"); // invoke remote procedure</screen>and
+ would, for these two pseudo-lines, automatically perform these
+ steps:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>prepare a connection to a web service running on port
+ 18083 of "localhost";</para>
+ </listitem>
+
+ <listitem>
+ <para>for the <computeroutput>SayHello()</computeroutput>
+ function of the web service, generate a SOAP message like in
+ the above example by encoding all arguments of the remote
+ procedure call (which could involve all kinds of type
+ conversions and complex marshalling for arrays and
+ structures);</para>
+ </listitem>
+
+ <listitem>
+ <para>connect to the web service via HTTP and send that
+ message;</para>
+ </listitem>
+
+ <listitem>
+ <para>wait for the web service to send a response
+ message;</para>
+ </listitem>
+
+ <listitem>
+ <para>decode that response message and put the return value
+ of the remote procedure into the "result" variable.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4 id="wsdl">
+ <title>Service descriptions in WSDL</title>
+
+ <para>In the above explanations about SOAP, it was left open how
+ the programming language learns about how to translate function
+ calls in its own syntax into proper SOAP messages. In other words,
+ the programming language needs to know what operations the web
+ service supports and what types of arguments are required for the
+ operation's data in order to be able to properly serialize and
+ deserialize the data to and from the web service. For example, if
+ a web service operation expects a number in "double" floating
+ point format for a particular parameter, the programming language
+ cannot send to it a string instead.</para>
+
+ <para>For this, the Web Service Definition Language (WSDL) was
+ invented, another XML substandard that describes exactly what
+ operations the web service supports and, for each operation, which
+ parameters and types are needed with each request and response
+ message. WSDL descriptions can be incredibly verbose, and one of
+ the few good things that can be said about this standard is that
+ it is indeed supported by most programming languages.</para>
+
+ <para>So, if it is said that a programming language "supports" web
+ services, this typically means that a programming language has
+ support for parsing WSDL files and somehow integrating the remote
+ procedure calls into the native language syntax -- for example,
+ like in the Java sample shown in <xref
+ linkend="webservice-java-sample" />.</para>
+
+ <para>For details about how programming languages support web
+ services, please refer to the documentation that comes with the
+ individual languages. Here are a few pointers:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>For <emphasis role="bold">C++,</emphasis> among many
+ others, the gSOAP toolkit is a good option. Parts of gSOAP are
+ also used in VirtualBox to implement the VirtualBox web
+ service.</para>
+ </listitem>
+
+ <listitem>
+ <para>For <emphasis role="bold">Java,</emphasis> there are
+ several implementations already described in this document
+ (see <xref linkend="glue-jax-ws" /> and <xref
+ linkend="webservice-java-sample" />).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Perl</emphasis> supports WSDL via
+ the SOAP::Lite package. This in turn comes with a tool called
+ <computeroutput>stubmaker.pl</computeroutput> that allows you
+ to turn any WSDL file into a Perl package that you can import.
+ (You can also import any WSDL file "live" by having it parsed
+ every time the script runs, but that can take a while.) You
+ can then code (again, assuming the above example):<screen>my $result = servicename-&gt;sayHello("Peter");</screen></para>
+
+ <para>A sample that uses SOAP::Lite was described in <xref
+ linkend="raw-webservice-perl" />.</para>
+ </listitem>
+ </orderedlist>
+ </sect4>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="api_com">
+ <title>Using COM/XPCOM directly</title>
+
+ <para>If you do not require <emphasis>remote</emphasis> procedure calls
+ such as those offered by the VirtualBox web service, and if you know
+ Python or C++ as well as COM, you might find it preferable to program
+ VirtualBox's Main API directly via COM.</para>
+
+ <para>COM stands for "Component Object Model" and is a standard
+ originally introduced by Microsoft in the 1990s for Microsoft Windows.
+ It allows for organizing software in an object-oriented way and across
+ processes; code in one process may access objects that live in another
+ process.</para>
+
+ <para>COM has several advantages: it is language-neutral, meaning that
+ even though all of VirtualBox is internally written in C++, programs
+ written in other languages could communicate with it. COM also cleanly
+ separates interface from implementation, so that external programs need
+ not know anything about the messy and complicated details of VirtualBox
+ internals.</para>
+
+ <para>On a Windows host, all parts of VirtualBox will use the COM
+ functionality that is native to Windows. On other hosts (including
+ Linux), VirtualBox comes with a built-in implementation of XPCOM, as
+ originally created by the Mozilla project, which we have enhanced to
+ support interprocess communication on a level comparable to Microsoft
+ COM. Internally, VirtualBox has an abstraction layer that allows the
+ same VirtualBox code to work both with native COM as well as our XPCOM
+ implementation.</para>
+
+ <sect2 id="pycom">
+ <title>Python COM API</title>
+
+ <para>On Windows, Python scripts can use COM and VirtualBox interfaces
+ to control almost all aspects of virtual machine execution. As an
+ example, use the following commands to instantiate the VirtualBox
+ object and start a VM: <screen>
+ vbox = win32com.client.Dispatch("VirtualBox.VirtualBox")
+ session = win32com.client.Dispatch("VirtualBox.Session")
+ mach = vbox.findMachine("uuid or name of machine to start")
+ progress = mach.launchVMProcess(session, "gui", "")
+ progress.waitForCompletion(-1)
+ </screen> Also, see
+ <computeroutput>/bindings/glue/python/samples/vboxshell.py</computeroutput>
+ for more advanced usage scenarious. However, unless you have specific
+ requirements, we strongly recommend to use the generic glue layer
+ described in the next section to access MS COM objects.</para>
+ </sect2>
+
+ <sect2 id="glue-python">
+ <title>Common Python bindings layer</title>
+
+ <para>As different wrappers ultimately provide access to the same
+ underlying API, and to simplify porting and development of Python
+ application using the VirtualBox Main API, we developed a common glue
+ layer that abstracts out most platform-specific details from the
+ application and allows the developer to focus on application logic.
+ The VirtualBox installer automatically sets up this glue layer for the
+ system default Python install. See below for details on how to set up
+ the glue layer if you want to use a different Python
+ installation.</para>
+
+ <para>In this layer, the class
+ <computeroutput>VirtualBoxManager</computeroutput> hides most
+ platform-specific details. It can be used to access both the local
+ (COM) and the web service based API. The following code can be used by
+ an application to use the glue layer.</para>
+
+ <screen># This code assumes vboxapi.py from VirtualBox distribution
+# being in PYTHONPATH, or installed system-wide
+from vboxapi import VirtualBoxManager
+
+# This code initializes VirtualBox manager with default style
+# and parameters
+virtualBoxManager = VirtualBoxManager(None, None)
+
+# Alternatively, one can be more verbose, and initialize
+# glue with web service backend, and provide authentication
+# information
+virtualBoxManager = VirtualBoxManager("WEBSERVICE",
+ {'url':'http://myhost.com::18083/',
+ 'user':'me',
+ 'password':'secret'}) </screen>
+
+ <para>We supply the <computeroutput>VirtualBoxManager</computeroutput>
+ constructor with 2 arguments: style and parameters. Style defines
+ which bindings style to use (could be "MSCOM", "XPCOM" or
+ "WEBSERVICE"), and if set to <computeroutput>None</computeroutput>
+ defaults to usable platform bindings (MS COM on Windows, XPCOM on
+ other platforms). The second argument defines parameters, passed to
+ the platform-specific module, as we do in the second example, where we
+ pass username and password to be used to authenticate against the web
+ service.</para>
+
+ <para>After obtaining the
+ <computeroutput>VirtualBoxManager</computeroutput> instance, one can
+ perform operations on the IVirtualBox class. For example, the
+ following code will a start virtual machine by name or ID:</para>
+
+ <screen>from vboxapi import VirtualBoxManager
+mgr = VirtualBoxManager(None, None)
+vbox = mgr.vbox
+name = "Linux"
+mach = vbox.findMachine(name)
+session = mgr.mgr.getSessionObject(vbox)
+progress = mach.launchVMProcess(session, "gui", "")
+progress.waitForCompletion(-1)
+mgr.closeMachineSession(session)
+ </screen>
+ <para>
+ Following code will print all registered machines and their log folders
+ </para>
+ <screen>from vboxapi import VirtualBoxManager
+mgr = VirtualBoxManager(None, None)
+vbox = mgr.vbox
+
+for m in mgr.getArray(vbox, 'machines'):
+print "Machine '%s' logs in '%s'" %(m.name, m.logFolder)
+ </screen>
+
+ <para>Code above demonstartes cross-platform access to array properties
+ (certain limitations prevent one from using
+ <computeroutput>vbox.machines</computeroutput> to access a list of
+ available virtual machines in case of XPCOM), and a mechanism of
+ uniform session creation and closing
+ (<computeroutput>mgr.mgr.getSessionObject()</computeroutput>).</para>
+
+ <para>In case you want to use the glue layer with a different Python
+ installation, use these steps in a shell to add the necessary
+ files:</para>
+
+ <screen> # cd VBOX_INSTALL_PATH/sdk/installer
+ # PYTHON vboxapisetup.py install</screen>
+ </sect2>
+
+ <sect2 id="cppcom">
+ <title>C++ COM API</title>
+
+ <para>C++ is the language that VirtualBox itself is written in, so C++
+ is the most direct way to use the Main API -- but it is not
+ necessarily the easiest, as using COM and XPCOM has its own set of
+ complications.</para>
+
+ <para>VirtualBox ships with sample programs that demonstrate how to
+ use the Main API to implement a number of tasks on your host platform.
+ These samples can be found in the
+ <computeroutput>/bindings/xpcom/samples</computeroutput> directory for
+ Linux, Mac OS X and Solaris and
+ <computeroutput>/bindings/mscom/samples</computeroutput> for Windows.
+ The two samples are actually different, because the one for Windows
+ uses native COM, whereas the other uses our XPCOM implementation, as
+ described above.</para>
+
+ <para>Since COM and XPCOM are conceptually very similar but vary in
+ the implementation details, we have created a "glue" layer that
+ shields COM client code from these differences. All VirtualBox uses is
+ this glue layer, so the same code written once works on both Windows
+ hosts (with native COM) as well as on other hosts (with our XPCOM
+ implementation). It is recommended to always use this glue code
+ instead of using the COM and XPCOM APIs directly, as it is very easy
+ to make your code completely independent from the platform it is
+ running on.<!-- A third sample,
+ <computeroutput>tstVBoxAPIGlue.cpp</computeroutput>, illustrates how to
+ use the glue layer.
+--></para>
+
+ <para>In order to encapsulate platform differences between Microsoft
+ COM and XPCOM, the following items should be kept in mind when using
+ the glue layer:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para><emphasis role="bold">Attribute getters and
+ setters.</emphasis> COM has the notion of "attributes" in
+ interfaces, which roughly compare to C++ member variables in
+ classes. The difference is that for each attribute declared in
+ an interface, COM automatically provides a "get" method to
+ return the attribute's value. Unless the attribute has been
+ marked as "readonly", a "set" attribute is also provided.</para>
+
+ <para>To illustrate, the IVirtualBox interface has a "version"
+ attribute, which is read-only and of the "wstring" type (the
+ standard string type in COM). As a result, you can call the
+ "get" method for this attribute to retrieve the version number
+ of VirtualBox.</para>
+
+ <para>Unfortunately, the implementation differs between COM and
+ XPCOM. Microsoft COM names the "get" method like this:
+ <computeroutput>get_Attribute()</computeroutput>, whereas XPCOM
+ uses this syntax:
+ <computeroutput>GetAttribute()</computeroutput> (and accordingly
+ for "set" methods). To hide these differences, the VirtualBox
+ glue code provides the
+ <computeroutput>COMGETTER(attrib)</computeroutput> and
+ <computeroutput>COMSETTER(attrib)</computeroutput> macros. So,
+ <computeroutput>COMGETTER(version)()</computeroutput> (note, two
+ pairs of brackets) expands to
+ <computeroutput>get_Version()</computeroutput> on Windows and
+ <computeroutput>GetVersion()</computeroutput> on other
+ platforms.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Unicode conversions.</emphasis>
+ While the rest of the modern world has pretty much settled on
+ encoding strings in UTF-8, COM, unfortunately, uses UCS-16
+ encoding. This requires a lot of conversions, in particular
+ between the VirtualBox Main API and the Qt GUI, which, like the
+ rest of Qt, likes to use UTF-8.</para>
+
+ <para>To facilitate these conversions, VirtualBox provides the
+ <computeroutput>com::Bstr</computeroutput> and
+ <computeroutput>com::Utf8Str</computeroutput> classes, which
+ support all kinds of conversions back and forth.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">COM autopointers.</emphasis>
+ Possibly the greatest pain of using COM -- reference counting --
+ is alleviated by the
+ <computeroutput>ComPtr&lt;&gt;</computeroutput> template
+ provided by the <computeroutput>ptr.h</computeroutput> file in
+ the glue layer.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="event-queue">
+ <title>Event queue processing</title>
+
+ <para>Both VirtualBox client programs and frontends should
+ periodically perform processing of the main event queue, and do that
+ on the application's main thread. In case of a typical GUI Windows/Mac
+ OS application this happens automatically in the GUI's dispatch loop.
+ However, for CLI only application, the appropriate actions have to be
+ taken. For C++ applications, the VirtualBox SDK provided glue method
+ <screen>
+ int EventQueue::processEventQueue(uint32_t cMsTimeout)
+ </screen> can be used for both blocking and non-blocking operations.
+ For the Python bindings, a common layer provides the method <screen>
+ VirtualBoxManager.waitForEvents(ms)
+ </screen> with similar semantics.</para>
+
+ <para>Things get somewhat more complicated for situations where an
+ application using VirtualBox cannot directly control the main event
+ loop and the main event queue is separated from the event queue of the
+ programming librarly (for example in case of Qt on Unix platforms). In
+ such a case, the application developer is advised to use a
+ platform/toolkit specific event injection mechanism to force event
+ queue checks either based on periodical timer events delivered to the
+ main thread, or by using custom platform messages to notify the main
+ thread when events are available. See the VBoxSDL and Qt (VirtualBox)
+ frontends as examples.</para>
+ </sect2>
+
+ <sect2 id="vbcom">
+ <title>Visual Basic and Visual Basic Script (VBS) on Windows
+ hosts</title>
+
+ <para>On Windows hosts, one can control some of the VirtualBox Main
+ API functionality from VBS scripts, and pretty much everything from
+ Visual Basic programs.<footnote>
+ <para>The difference results from the way VBS treats COM
+ safearrays, which are used to keep lists in the Main API. VBS
+ expects every array element to be a
+ <computeroutput>VARIANT</computeroutput>, which is too strict a
+ limitation for any high performance API. We may lift this
+ restriction for interface APIs in a future version, or
+ alternatively provide conversion APIs.</para>
+ </footnote></para>
+
+ <para>VBS is scripting language available in any recent Windows
+ environment. As an example, the following VBS code will print
+ VirtualBox version: <screen>
+ set vb = CreateObject("VirtualBox.VirtualBox")
+ Wscript.Echo "VirtualBox version " &amp; vb.version
+ </screen> See
+ <computeroutput>bindings/mscom/vbs/sample/vboxinfo.vbs</computeroutput>
+ for the complete sample.</para>
+
+ <para>Visual Basic is a popular high level language capable of
+ accessing COM objects. The following VB code will iterate over all
+ available virtual machines:<screen>
+ Dim vb As VirtualBox.IVirtualBox
+
+ vb = CreateObject("VirtualBox.VirtualBox")
+ machines = ""
+ For Each m In vb.Machines
+ m = m &amp; " " &amp; m.Name
+ Next
+ </screen> See
+ <computeroutput>bindings/mscom/vb/sample/vboxinfo.vb</computeroutput>
+ for the complete sample.</para>
+ </sect2>
+
+ <sect2 id="cbinding">
+ <title>C binding to XPCOM API</title>
+
+ <note>
+ <para>This section currently applies to Linux hosts only.</para>
+ </note>
+
+ <para>Starting with version 2.2, VirtualBox offers a C binding for the
+ XPCOM API.</para>
+
+ <para>The C binding provides a layer enabling object creation, method
+ invocation and attribute access from C.</para>
+
+ <sect3 id="c-gettingstarted">
+ <title>Getting started</title>
+
+ <para>The following sections describe how to use the C binding in a
+ C program.</para>
+
+ <para>For Linux, a sample program is provided which demonstrates use
+ of the C binding to initialize XPCOM, get handles for VirtualBox and
+ Session objects, make calls to list and start virtual machines, and
+ uninitialize resources when done. The program uses the VBoxGlue
+ library to open the C binding layer during runtime.</para>
+
+ <para>The sample program
+ <computeroutput>tstXPCOMCGlue</computeroutput> is located in the bin
+ directory and can be run without arguments. It lists registered
+ machines on the host along with some additional information and ask
+ for a machine to start. The source for this program is available in
+ <computeroutput>sdk/bindings/xpcom/cbinding/samples/</computeroutput>
+ directory. The source for the VBoxGlue library is available in the
+ <computeroutput>sdk/bindings/xpcom/cbinding/</computeroutput>
+ directory.</para>
+ </sect3>
+
+ <sect3 id="c-initialization">
+ <title>XPCOM initialization</title>
+
+ <para>Just like in C++, XPCOM needs to be initialized before it can
+ be used. The <computeroutput>VBoxCAPI_v2_5.h</computeroutput> header
+ provides the interface to the C binding. Here's how to initialize
+ XPCOM:</para>
+
+ <screen>#include "VBoxCAPI_v2_5.h"
+...
+PCVBOXXPCOM g_pVBoxFuncs = NULL;
+IVirtualBox *vbox = NULL;
+ISession *session = NULL;
+
+/*
+ * VBoxGetXPCOMCFunctions() is the only function exported by
+ * VBoxXPCOMC.so and the only one needed to make virtualbox
+ * work with C. This functions gives you the pointer to the
+ * function table (g_pVBoxFuncs).
+ *
+ * Once you get the function table, then how and which functions
+ * to use is explained below.
+ *
+ * g_pVBoxFuncs-&gt;pfnComInitialize does all the necessary startup
+ * action and provides us with pointers to vbox and session handles.
+ * It should be matched by a call to g_pVBoxFuncs-&gt;pfnComUninitialize()
+ * when done.
+ */
+
+g_pVBoxFuncs = VBoxGetXPCOMCFunctions(VBOX_XPCOMC_VERSION);
+g_pVBoxFuncs-&gt;pfnComInitialize(&amp;vbox, &amp;session);</screen>
+
+ <para>If either <computeroutput>vbox</computeroutput> or
+ <computeroutput>session</computeroutput> is still
+ <computeroutput>NULL</computeroutput>, initialization failed and the
+ XPCOM API cannot be used.</para>
+ </sect3>
+
+ <sect3 id="c-invocation">
+ <title>XPCOM method invocation</title>
+
+ <para>Method invocation is straightforward. It looks pretty much
+ like the C++ way, augmented with an extra indirection due to
+ accessing the vtable and passing a pointer to the object as the
+ first argument to serve as the <computeroutput>this</computeroutput>
+ pointer.</para>
+
+ <para>Using the C binding, all method invocations return a numeric
+ result code.</para>
+
+ <para>If an interface is specified as returning an object, a pointer
+ to a pointer to the appropriate object must be passed as the last
+ argument. The method will then store an object pointer in that
+ location.</para>
+
+ <para>In other words, to call an object's method what you need
+ is</para>
+
+ <screen>IObject *object;
+nsresult rc;
+...
+/*
+ * Calling void IObject::method(arg, ...)
+ */
+rc = object-&gt;vtbl-&gt;Method(object, arg, ...);
+
+...
+IFoo *foo;
+/*
+ * Calling IFoo IObject::method(arg, ...)
+ */
+rc = object-&gt;vtbl-&gt;Method(object, args, ..., &amp;foo);</screen>
+
+ <para>As a real-world example of a method invocation, let's call
+ <xref linkend="IMachine__launchVMProcess"
+ xreflabel="IMachine::launchVMProcess" /> which returns an
+ IProgress object. Note again that the method name is
+ capitalized.</para>
+
+ <screen>IProgress *progress;
+...
+rc = vbox-&gt;vtbl-&gt;LaunchVMProcess(
+ machine, /* this */
+ session, /* arg 1 */
+ sessionType, /* arg 2 */
+ env, /* arg 3 */
+ &amp;progress /* Out */
+);
+</screen>
+ </sect3>
+
+ <sect3 id="c-attributes">
+ <title>XPCOM attribute access</title>
+
+ <para>A construct similar to calling non-void methods is used to
+ access object attributes. For each attribute there exists a getter
+ method, the name of which is composed of
+ <computeroutput>Get</computeroutput> followed by the capitalized
+ attribute name. Unless the attribute is read-only, an analogous
+ <computeroutput>Set</computeroutput> method exists. Let's apply
+ these rules to read the <xref linkend="IVirtualBox__revision"
+ xreflabel="IVirtualBox::revision" /> attribute.</para>
+
+ <para>Using the <computeroutput>IVirtualBox</computeroutput> handle
+ <computeroutput>vbox</computeroutput> obtained above, calling its
+ <computeroutput>GetRevision</computeroutput> method looks like
+ this:</para>
+
+ <screen>PRUint32 rev;
+
+rc = vbox-&gt;vtbl-&gt;GetRevision(vbox, &amp;rev);
+if (NS_SUCCEEDED(rc))
+{
+ printf("Revision: %u\n", (unsigned)rev);
+}
+</screen>
+
+ <para>All objects with their methods and attributes are documented
+ in <xref linkend="sdkref_classes" />.</para>
+ </sect3>
+
+ <sect3 id="c-string-handling">
+ <title>String handling</title>
+
+ <para>When dealing with strings you have to be aware of a string's
+ encoding and ownership.</para>
+
+ <para>Internally, XPCOM uses UTF-16 encoded strings. A set of
+ conversion functions is provided to convert other encodings to and
+ from UTF-16. The type of a UTF-16 character is
+ <computeroutput>PRUnichar</computeroutput>. Strings of UTF-16
+ characters are arrays of that type. Most string handling functions
+ take pointers to that type. Prototypes for the following conversion
+ functions are declared in
+ <computeroutput>VBoxCAPI_v2_5.h</computeroutput>.</para>
+
+ <sect4>
+ <title>Conversion of UTF-16 to and from UTF-8</title>
+
+ <screen>int (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString);
+int (*pfnUtf8ToUtf16)(const char *pszString, PRUnichar **ppwszString);
+</screen>
+ </sect4>
+
+ <sect4>
+ <title>Ownership</title>
+
+ <para>The ownership of a string determines who is responsible for
+ releasing resources associated with the string. Whenever XPCOM
+ creates a string, ownership is transferred to the caller. To avoid
+ resource leaks, the caller should release resources once the
+ string is no longer needed.</para>
+ </sect4>
+ </sect3>
+
+ <sect3 id="c-uninitialization">
+ <title>XPCOM uninitialization</title>
+
+ <para>Uninitialization is performed by
+ <computeroutput>g_pVBoxFuncs-&gt;pfnComUninitialize().</computeroutput>
+ If your program can exit from more than one place, it is a good idea
+ to install this function as an exit handler with Standard C's
+ <computeroutput>atexit()</computeroutput> just after calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnComInitialize()</computeroutput>
+ , e.g. <screen>#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+
+...
+
+/*
+ * Make sure g_pVBoxFuncs-&gt;pfnComUninitialize() is called at exit, no
+ * matter if we return from the initial call to main or call exit()
+ * somewhere else. Note that atexit registered functions are not
+ * called upon abnormal termination, i.e. when calling abort() or
+ * signal(). Separate provisions must be taken for these cases.
+ */
+
+if (atexit(g_pVBoxFuncs-&gt;pfnComUninitialize()) != 0) {
+ fprintf(stderr, "failed to register g_pVBoxFuncs-&gt;pfnComUninitialize()\n");
+ exit(EXIT_FAILURE);
+}
+</screen></para>
+
+ <para>Another idea would be to write your own <computeroutput>void
+ myexit(int status)</computeroutput> function, calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnComUninitialize()</computeroutput>
+ followed by the real <computeroutput>exit()</computeroutput>, and
+ use it instead of <computeroutput>exit()</computeroutput> throughout
+ your program and at the end of
+ <computeroutput>main.</computeroutput></para>
+
+ <para>If you expect the program to be terminated by a signal (e.g.
+ user types CTRL-C sending SIGINT) you might want to install a signal
+ handler setting a flag noting that a signal was sent and then
+ calling
+ <computeroutput>g_pVBoxFuncs-&gt;pfnComUninitialize()</computeroutput>
+ later on (usually <emphasis>not</emphasis> from the handler itself
+ .)</para>
+
+ <para>That said, if a client program forgets to call
+ <computeroutput>g_pVBoxFuncs-&gt;pfnComUninitialize()</computeroutput>
+ before it terminates, there is a mechanism in place which will
+ eventually release references held by the client. You should not
+ rely on this, however.</para>
+ </sect3>
+
+ <sect3 id="c-linking">
+ <title>Compiling and linking</title>
+
+ <para>A program using the C binding has to open the library during
+ runtime using the help of glue code provided and as shown in the
+ example <computeroutput>tstXPCOMCGlue.c</computeroutput>.
+ Compilation and linking can be achieved, e.g., with a makefile
+ fragment similar to</para>
+
+ <screen># Where is the XPCOM include directory?
+INCS_XPCOM = -I../../include
+# Where is the glue code directory?
+GLUE_DIR = ..
+GLUE_INC = -I..
+
+#Compile Glue Library
+VBoxXPCOMCGlue.o: $(GLUE_DIR)/VBoxXPCOMCGlue.c
+ $(CC) $(CFLAGS) $(INCS_XPCOM) $(GLUE_INC) -o $@ -c $&lt;
+
+# Compile.
+program.o: program.c VBoxCAPI_v2_5.h
+ $(CC) $(CFLAGS) $(INCS_XPCOM) $(GLUE_INC) -o $@ -c $&lt;
+
+# Link.
+program: program.o VBoxXPCOMCGlue.o
+ $(CC) -o $@ $^ -ldl</screen>
+ </sect3>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter id="concepts">
+ <title>Basic VirtualBox concepts; some examples</title>
+
+ <para>The following explains some basic VirtualBox concepts such as the
+ VirtualBox object, sessions and how virtual machines are manipulated and
+ launched using the Main API. The coding examples use a pseudo-code style
+ closely related to the object-oriented web service (OOWS) for JAX-WS.
+ Depending on which environment you are using, you will need to adjust the
+ examples.</para>
+
+ <sect1>
+ <title>Obtaining basic machine information. Reading attributes</title>
+
+ <para>Any program using the Main API will first need access to the
+ global VirtualBox object (see <xref linkend="IVirtualBox"
+ xreflabel="IVirtualBox" />), from which all other functionality of the
+ API is derived. With the OOWS for JAX-WS, this is returned from the
+ <xref linkend="IWebsessionManager__logon"
+ xreflabel="IWebsessionManager::logon()" /> call.</para>
+
+ <para>To enumerate virtual machines, one would look at the "machines"
+ array attribute in the VirtualBox object (see <xref
+ linkend="IVirtualBox__machines" xreflabel="IVirtualBox::machines" />).
+ This array contains all virtual machines currently registered with the
+ host, each of them being an instance of <xref linkend="IMachine"
+ xreflabel="IMachine" />. From each such instance, one can query
+ additional information, such as the UUID, the name, memory, operating
+ system and more by looking at the attributes; see the attributes list in
+ <xref linkend="IMachine" xreflabel="IMachine documentation" />.</para>
+
+ <para>As mentioned in the preceding chapters, depending on your
+ programming environment, attributes are mapped to corresponding "get"
+ and (if the attribute is not read-only) "set" methods. So when the
+ documentation says that IMachine has a "<xref linkend="IMachine__name"
+ xreflabel="name" />" attribute, this means you need to code something
+ like the following to get the machine's name:<screen>IMachine machine = ...;
+String name = machine.getName();</screen>Boolean attribute getters can
+ sometimes be called <computeroutput>isAttribute()</computeroutput> due
+ to JAX-WS naming conventions.</para>
+ </sect1>
+
+ <sect1>
+ <title>Changing machine settings. Sessions</title>
+
+ <para>As said in the previous section, to read a machine's attribute,
+ one invokes the corresponding "get" method. One would think that to
+ change settings of a machine, it would suffice to call the corresponding
+ "set" method -- for example, to set a VM's memory to 1024 MB, one would
+ call <computeroutput>setMemorySize(1024)</computeroutput>. Try that, and
+ you will get an error: "The machine is not mutable."</para>
+
+ <para>So unfortunately, things are not that easy. VirtualBox is a
+ complicated environment in which multiple processes compete for possibly
+ the same resources, especially machine settings. As a result, machines
+ must be "locked" before they can either be modified or started. This is
+ to prevent multiple processes from making conflicting changes to a
+ machine: it should, for example, not be allowed to change the memory
+ size of a virtual machine while it is running. (You can't add more
+ memory to a real computer while it is running either, at least not to an
+ ordinary PC.) Also, two processes must not change settings at the same
+ time, or start a machine at the same time.</para>
+
+ <para>These requirements are implemented in the Main API by way of
+ "sessions", in particular, the <xref linkend="ISession"
+ xreflabel="ISession" /> interface. Each process which talks to
+ VirtualBox needs its own instance of ISession. In the web service, you
+ cannot create such an object, but
+ <computeroutput>vboxwebsrv</computeroutput> creates one for you when you
+ log on, which you can obtain by calling <xref
+ linkend="IWebsessionManager__getSessionObject"
+ xreflabel="IWebsessionManager::getSessionObject()" />.</para>
+
+ <para>This session object must then be used like a mutex semaphore in
+ common programming environments. Before you can change machine settings,
+ you must write-lock the machine by calling <xref
+ linkend="IMachine__lockMachine" xreflabel="IMachine::lockMachine()" />
+ with your process's session object.</para>
+
+ <para>After the machine has been locked, the <xref
+ linkend="ISession__machine" xreflabel="ISession::machine" /> attribute
+ contains a copy of the original IMachine object upon which the session
+ was opened, but this copy is "mutable": you can invoke "set" methods on
+ it.</para>
+
+ <para>When done making the changes to the machine, you must call <xref
+ linkend="IMachine__saveSettings"
+ xreflabel="IMachine::saveSettings()" />, which will copy the changes you
+ have made from your "mutable" machine back to the real machine and write
+ them out to the machine settings XML file. This will make your changes
+ permanent.</para>
+
+ <para>Finally, it is important to always unlock the machine again, by
+ calling <xref linkend="ISession__unlockMachine"
+ xreflabel="ISession::unlockMachine()" />. Otherwise, when the calling
+ process end, the machine will receive the "aborted" state, which can
+ lead to loss of data.</para>
+
+ <para>So, as an example, the sequence to change a machine's memory to
+ 1024 MB is something like this:<screen>IWebsessionManager mgr ...;
+IVirtualBox vbox = mgr.logon(user, pass);
+...
+IMachine machine = ...; // read-only machine
+ISession session = mgr.getSessionObject();
+machine.lockMachine(session, LockType.Write); // machine is now locked for writing
+IMachine mutable = session.getMachine(); // obtain the mutable machine copy
+mutable.setMemorySize(1024);
+mutable.saveSettings(); // write settings to XML
+session.unlockMachine();</screen></para>
+ </sect1>
+
+ <sect1>
+ <title>Launching virtual machines</title>
+
+ <para>To launch a virtual machine, you call <xref
+ linkend="IMachine__launchVMProcess"
+ xreflabel="IMachine::launchVMProcess()" />. In doing so, the caller
+ instructs the VirtualBox engine to start a new process with the virtual
+ machine in it, since to the host, each virtual machine looks like a
+ single process, even if it has hundreds of its own processes inside.
+ (This new VM process in turn obtains a write lock on the machine, as
+ described above, to prevent conflicting changes from other processes;
+ this is why opening another session will fail while the VM is
+ running.)</para>
+
+ <para>Starting a machine looks something like this:<screen>IWebsessionManager mgr ...;
+IVirtualBox vbox = mgr.logon(user, pass);
+...
+IMachine machine = ...; // read-only machine
+ISession session = mgr.getSessionObject();
+IProgress prog = machine.launchVMProcess(session,
+ "gui", // session type
+ ""); // possibly environment setting
+prog.waitForCompletion(10000); // give the process 10 secs
+if (prog.getResultCode() != 0) // check success
+ System.out.println("Cannot launch VM!")</screen></para>
+
+ <para>The caller's session object can then be used as a sort of remote
+ control to the VM process that was launched. It contains a "console"
+ object (see <xref linkend="ISession__console"
+ xreflabel="ISession::console" />) with which the VM can be paused,
+ stopped, snapshotted or other things.</para>
+ </sect1>
+
+ <sect1>
+ <title>VirtualBox events</title>
+
+ <para>In VirtualBox, "events" provide a uniform mechanism to register
+ for and consume specific events. A VirtualBox client can register an
+ "event listener" (represented by the <xref linkend="IEventListener"
+ xreflabel="IEventListener" /> interface), which will then get notified
+ by the server when an event (represented by the <xref linkend="IEvent"
+ xreflabel="IEvent" /> interface) happens.</para>
+
+ <para>The IEvent interface is an abstract parent interface for all
+ events that can occur in VirtualBox. The actual events that the server
+ sends out are then of one of the specific subclasses, for example <xref
+ linkend="IMachineStateChangedEvent"
+ xreflabel="IMachineStateChangedEvent" /> or <xref
+ linkend="IMediumChangedEvent" xreflabel="IMediumChangedEvent" />.</para>
+
+ <para>As an example, the VirtualBox GUI waits for machine events and can
+ thus update its display when the machine state changes or machine
+ settings are modified, even if this happens in another client. This is
+ how the GUI can automatically refresh its display even if you manipulate
+ a machine from another client, for example, from VBoxManage.</para>
+
+ <para>To register an event listener to listen to events, use code like
+ this:<screen>EventSource es = console.getEventSource();
+IEventListener listener = es.createListener();
+VBoxEventType aTypes[] = (VBoxEventType.OnMachineStateChanged);
+ // list of event types to listen for
+es.registerListener(listener, aTypes, false /* active */);
+ // register passive listener
+IEvent ev = es.getEvent(listener, 1000);
+ // wait up to one second for event to happen
+if (ev != null)
+{
+ // downcast to specific event interface (in this case we have only registered
+ // for one type, otherwise IEvent::type would tell us)
+ IMachineStateChangedEvent mcse = IMachineStateChangedEvent.queryInterface(ev);
+ ... // inspect and do something
+ es.eventProcessed(listener, ev);
+}
+...
+es.unregisterListener(listener); </screen></para>
+
+ <para>A graphical user interface would probably best start its own
+ thread to wait for events and then process these in a loop.</para>
+
+ <para>The events mechanism was introduced with VirtualBox 3.3 and
+ replaces various callback interfaces which were called for each event in
+ the interface. The callback mechanism was not compatible with scripting
+ languages, local Java bindings and remote web services as they do not
+ support callbacks. The new mechanism with events and event listeners
+ works with all of these.</para>
+
+ <para>To simplify developement of application using events, concept of
+ event aggregator was introduced. Essentially it's mechanism to aggregate
+ multiple event sources into single one, and then work with this single
+ aggregated event source instead of original sources. As an example, one
+ can evaluate demo recorder in VirtualBox Python shell, shipped with SDK
+ - it records mouse and keyboard events, represented as separate event
+ sources. Code is essentially like this:<screen>
+ listener = console.eventSource.createListener()
+ agg = console.eventSource.createAggregator([console.keyboard.eventSource, console.mouse.eventSource])
+ agg.registerListener(listener, [ctx['global'].constants.VBoxEventType_Any], False)
+ registered = True
+ end = time.time() + dur
+ while time.time() &lt; end:
+ ev = agg.getEvent(listener, 1000)
+ processEent(ev)
+ agg.unregisterListener(listener)</screen> Without using aggregators
+ consumer have to poll on both sources, or start multiple threads to
+ block on those sources.</para>
+ </sect1>
+ </chapter>
+
+ <chapter id="vboxshell">
+ <title>The VirtualBox shell</title>
+
+ <para>VirtualBox comes with an extensible shell, which allows you to
+ control your virtual machines from the command line. It is also a
+ nontrivial example of how to use the VirtualBox APIs from Python, for all
+ three COM/XPCOM/WS styles of the API.</para>
+
+ <para>You can easily extend this shell with your own commands. Create a
+ subdirectory named <computeroutput>.VirtualBox/shexts</computeroutput>
+ below your home directory and put a Python file implementing your shell
+ extension commands in this directory. This file must contain an array
+ named <computeroutput>commands</computeroutput> containing your command
+ definitions: <screen>
+ commands = {
+ 'cmd1': ['Command cmd1 help', cmd1],
+ 'cmd2': ['Command cmd2 help', cmd2]
+ }
+ </screen> For example, to create a command for creating hard drive
+ images, the following code can be used: <screen>
+ def createHdd(ctx,args):
+ # Show some meaningful error message on wrong input
+ if (len(args) &lt; 3):
+ print "usage: createHdd sizeM location type"
+ return 0
+
+ # Get arguments
+ size = int(args[1])
+ loc = args[2]
+ if len(args) &gt; 3:
+ format = args[3]
+ else:
+ # And provide some meaningful defaults
+ format = "vdi"
+
+ # Call VirtualBox API, using context's fields
+ hdd = ctx['vb'].createHardDisk(format, loc)
+ # Access constants using ctx['global'].constants
+ progress = hdd.createBaseStorage(size, ctx['global'].constants.HardDiskVariant_Standard)
+ # use standard progress bar mechanism
+ ctx['progressBar'](progress)
+
+
+ # Report errors
+ if not hdd.id:
+ print "cannot create disk (file %s exist?)" %(loc)
+ return 0
+
+ # Give user some feedback on success too
+ print "created HDD with id: %s" %(hdd.id)
+
+ # 0 means continue execution, other values mean exit from the interpreter
+ return 0
+
+ commands = {
+ 'myCreateHDD': ['Create virtual HDD, createHdd size location type', createHdd]
+ }
+ </screen> Just store the above text in the file
+ <computeroutput>createHdd</computeroutput> (or any other meaningful name)
+ in <computeroutput>.VirtualBox/shexts/</computeroutput>. Start the
+ VirtualBox shell, or just issue the
+ <computeroutput>reloadExts</computeroutput> command, if the shell is
+ already running. Your new command will now be available.</para>
+ </chapter>
+
+ <xi:include href="SDKRef_apiref.xml" xpointer="xpointer(/book/*)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <chapter id="hgcm">
+ <title>Host-Guest Communication Manager</title>
+
+ <para>The VirtualBox Host-Guest Communication Manager (HGCM) allows a
+ guest application or a guest driver to call a host shared library. The
+ following features of VirtualBox are implemented using HGCM: <itemizedlist>
+ <listitem>
+ <para>Shared Folders</para>
+ </listitem>
+
+ <listitem>
+ <para>Shared Clipboard</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest configuration interface</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The shared library contains a so called HGCM service. The guest HGCM
+ clients establish connections to the service to call it. When calling a
+ HGCM service the client supplies a function code and a number of
+ parameters for the function.</para>
+
+ <sect1>
+ <title>Virtual hardware implementation</title>
+
+ <para>HGCM uses the VMM virtual PCI device to exchange data between the
+ guest and the host. The guest always acts as an initiator of requests. A
+ request is constructed in the guest physical memory, which must be
+ locked by the guest. The physical address is passed to the VMM device
+ using a 32 bit <computeroutput>out edx, eax</computeroutput>
+ instruction. The physical memory must be allocated below 4GB by 64 bit
+ guests.</para>
+
+ <para>The host parses the request header and data and queues the request
+ for a host HGCM service. The guest continues execution and usually waits
+ on a HGCM event semaphore.</para>
+
+ <para>When the request has been processed by the HGCM service, the VMM
+ device sets the completion flag in the request header, sets the HGCM
+ event and raises an IRQ for the guest. The IRQ handler signals the HGCM
+ event semaphore and all HGCM callers check the completion flag in the
+ corresponding request header. If the flag is set, the request is
+ considered completed.</para>
+ </sect1>
+
+ <sect1>
+ <title>Protocol specification</title>
+
+ <para>The HGCM protocol definitions are contained in the
+ <computeroutput>VBox/VBoxGuest.h</computeroutput></para>
+
+ <sect2>
+ <title>Request header</title>
+
+ <para>HGCM request structures contains a generic header
+ (VMMDevHGCMRequestHeader): <table>
+ <title>HGCM Request Generic Header</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>size</entry>
+
+ <entry>Size of the entire request.</entry>
+ </row>
+
+ <row>
+ <entry>version</entry>
+
+ <entry>Version of the header, must be set to
+ <computeroutput>0x10001</computeroutput>.</entry>
+ </row>
+
+ <row>
+ <entry>type</entry>
+
+ <entry>Type of the request.</entry>
+ </row>
+
+ <row>
+ <entry>rc</entry>
+
+ <entry>HGCM return code, which will be set by the VMM
+ device.</entry>
+ </row>
+
+ <row>
+ <entry>reserved1</entry>
+
+ <entry>A reserved field 1.</entry>
+ </row>
+
+ <row>
+ <entry>reserved2</entry>
+
+ <entry>A reserved field 2.</entry>
+ </row>
+
+ <row>
+ <entry>flags</entry>
+
+ <entry>HGCM flags, set by the VMM device.</entry>
+ </row>
+
+ <row>
+ <entry>result</entry>
+
+ <entry>The HGCM result code, set by the VMM device.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> <note>
+ <itemizedlist>
+ <listitem>
+ <para>All fields are 32 bit.</para>
+ </listitem>
+
+ <listitem>
+ <para>Fields from <computeroutput>size</computeroutput> to
+ <computeroutput>reserved2</computeroutput> are a standard VMM
+ device request header, which is used for other interfaces as
+ well.</para>
+ </listitem>
+ </itemizedlist>
+ </note></para>
+
+ <para>The <emphasis role="bold">type</emphasis> field indicates the
+ type of the HGCM request: <table>
+ <title>Request Types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (decimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMConnect
+ (<computeroutput>60</computeroutput>)</entry>
+
+ <entry>Connect to a HGCM service.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMDisconnect
+ (<computeroutput>61</computeroutput>)</entry>
+
+ <entry>Disconnect from the service.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCall32
+ (<computeroutput>62</computeroutput>)</entry>
+
+ <entry>Call a HGCM function using the 32 bit
+ interface.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCall64
+ (<computeroutput>63</computeroutput>)</entry>
+
+ <entry>Call a HGCM function using the 64 bit
+ interface.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevReq_HGCMCancel
+ (<computeroutput>64</computeroutput>)</entry>
+
+ <entry>Cancel a HGCM request currently being processed by a
+ host HGCM service.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The <emphasis role="bold">flags</emphasis> field may contain:
+ <table>
+ <title>Flags</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (hexadecimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VBOX_HGCM_REQ_DONE
+ (<computeroutput>0x00000001</computeroutput>)</entry>
+
+ <entry>The request has been processed by the host
+ service.</entry>
+ </row>
+
+ <row>
+ <entry>VBOX_HGCM_REQ_CANCELLED
+ (<computeroutput>0x00000002</computeroutput>)</entry>
+
+ <entry>This request was cancelled.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+
+ <sect2>
+ <title>Connect</title>
+
+ <para>The connection request must be issued by the guest HGCM client
+ before it can call the HGCM service (VMMDevHGCMConnect): <table>
+ <title>Connect request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMConnect
+ (<computeroutput>60</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>type</entry>
+
+ <entry>The type of the service location information (32
+ bit).</entry>
+ </row>
+
+ <row>
+ <entry>location</entry>
+
+ <entry>The service location information (128 bytes).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier assigned to the connecting
+ client by the HGCM subsystem (32 bit).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> The <emphasis role="bold">type</emphasis> field tells the
+ HGCM how to look for the requested service: <table>
+ <title>Location Information Types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name (hexadecimal
+ value)</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMLoc_LocalHost
+ (<computeroutput>0x1</computeroutput>)</entry>
+
+ <entry>The requested service is a shared library located on
+ the host and the location information contains the library
+ name.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMLoc_LocalHost_Existing
+ (<computeroutput>0x2</computeroutput>)</entry>
+
+ <entry>The requested service is a preloaded one and the
+ location information contains the service name.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table> <note>
+ <para>Currently preloaded HGCM services are hard-coded in
+ VirtualBox: <itemizedlist>
+ <listitem>
+ <para>VBoxSharedFolders</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSharedClipboard</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxGuestPropSvc</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSharedOpenGL</para>
+ </listitem>
+ </itemizedlist></para>
+ </note> There is no difference between both types of HGCM services,
+ only the location mechanism is different.</para>
+
+ <para>The client identifier is returned by the host and must be used
+ in all subsequent requests by the client.</para>
+ </sect2>
+
+ <sect2>
+ <title>Disconnect</title>
+
+ <para>This request disconnects the client and makes the client
+ identifier invalid (VMMDevHGCMDisconnect): <table>
+ <title>Disconnect request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMDisconnect
+ (<computeroutput>61</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier previously returned by the
+ connect request (32 bit).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+
+ <sect2>
+ <title>Call32 and Call64</title>
+
+ <para>Calls the HGCM service entry point (VMMDevHGCMCall) using 32 bit
+ or 64 bit addresses: <table>
+ <title>Call request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ either VMMDevReq_HGCMCall32
+ (<computeroutput>62</computeroutput>) or
+ VMMDevReq_HGCMCall64
+ (<computeroutput>63</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>clientId</entry>
+
+ <entry>The client identifier previously returned by the
+ connect request (32 bit).</entry>
+ </row>
+
+ <row>
+ <entry>function</entry>
+
+ <entry>The function code to be processed by the service (32
+ bit).</entry>
+ </row>
+
+ <row>
+ <entry>cParms</entry>
+
+ <entry>The number of following parameters (32 bit). This
+ value is 0 if the function requires no parameters.</entry>
+ </row>
+
+ <row>
+ <entry>parms</entry>
+
+ <entry>An array of parameter description structures
+ (HGCMFunctionParameter32 or
+ HGCMFunctionParameter64).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The 32 bit parameter description (HGCMFunctionParameter32)
+ consists of 32 bit type field and 8 bytes of an opaque value, so 12
+ bytes in total. The 64 bit variant (HGCMFunctionParameter64) consists
+ of the type and 12 bytes of a value, so 16 bytes in total.</para>
+
+ <para><table>
+ <title>Parameter types</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Type</emphasis></entry>
+
+ <entry><emphasis role="bold">Format of the
+ value</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_32bit (1)</entry>
+
+ <entry>A 32 bit value.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_64bit (2)</entry>
+
+ <entry>A 64 bit value.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_PhysAddr (3)</entry>
+
+ <entry>A 32 bit size followed by a 32 bit or 64 bit guest
+ physical address.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr (4)</entry>
+
+ <entry>A 32 bit size followed by a 32 bit or 64 bit guest
+ linear address. The buffer is used both for guest to host
+ and for host to guest data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_In (5)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ used only for host to guest data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Out (6)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ used only for guest to host data.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked (7)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr but the buffer is
+ already locked by the guest.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked_In (1)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr_In but the buffer
+ is already locked by the guest.</entry>
+ </row>
+
+ <row>
+ <entry>VMMDevHGCMParmType_LinAddr_Locked_Out (1)</entry>
+
+ <entry>Same as VMMDevHGCMParmType_LinAddr_Out but the buffer
+ is already locked by the guest.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+
+ <para>The</para>
+ </sect2>
+
+ <sect2>
+ <title>Cancel</title>
+
+ <para>This request cancels a call request (VMMDevHGCMCancel): <table>
+ <title>Cancel request</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Name</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>header</entry>
+
+ <entry>The generic HGCM request header with type equal to
+ VMMDevReq_HGCMCancel
+ (<computeroutput>64</computeroutput>).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Guest software interface</title>
+
+ <para>The guest HGCM clients can call HGCM services from both drivers
+ and applications.</para>
+
+ <sect2>
+ <title>The guest driver interface</title>
+
+ <para>The driver interface is implemented in the VirtualBox guest
+ additions driver (VBoxGuest), which works with the VMM virtual device.
+ Drivers must use the VBox Guest Library (VBGL), which provides an API
+ for HGCM clients (<computeroutput>VBox/VBoxGuestLib.h</computeroutput>
+ and <computeroutput>VBox/VBoxGuest.h</computeroutput>).</para>
+
+ <para><screen>
+DECLVBGL(int) VbglHGCMConnect (VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData);
+ </screen> Connects to the service: <screen>
+ VBoxGuestHGCMConnectInfo data;
+
+ memset (&amp;data, sizeof (VBoxGuestHGCMConnectInfo));
+
+ data.result = VINF_SUCCESS;
+ data.Loc.type = VMMDevHGCMLoc_LocalHost_Existing;
+ strcpy (data.Loc.u.host.achName, "VBoxSharedFolders");
+
+ rc = VbglHGCMConnect (&amp;handle, &amp;data);
+
+ if (RT_SUCCESS (rc))
+ {
+ rc = data.result;
+ }
+
+ if (RT_SUCCESS (rc))
+ {
+ /* Get the assigned client identifier. */
+ ulClientID = data.u32ClientID;
+ }
+ </screen></para>
+
+ <para><screen>
+DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData);
+ </screen> Disconnects from the service. <screen>
+ VBoxGuestHGCMDisconnectInfo data;
+
+ RtlZeroMemory (&amp;data, sizeof (VBoxGuestHGCMDisconnectInfo));
+
+ data.result = VINF_SUCCESS;
+ data.u32ClientID = ulClientID;
+
+ rc = VbglHGCMDisconnect (handle, &amp;data);
+ </screen></para>
+
+ <para><screen>
+DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData);
+ </screen> Calls a function in the service. <screen>
+typedef struct _VBoxSFRead
+{
+ VBoxGuestHGCMCallInfo callInfo;
+
+ /** pointer, in: SHFLROOT
+ * Root handle of the mapping which name is queried.
+ */
+ HGCMFunctionParameter root;
+
+ /** value64, in:
+ * SHFLHANDLE of object to read from.
+ */
+ HGCMFunctionParameter handle;
+
+ /** value64, in:
+ * Offset to read from.
+ */
+ HGCMFunctionParameter offset;
+
+ /** value64, in/out:
+ * Bytes to read/How many were read.
+ */
+ HGCMFunctionParameter cb;
+
+ /** pointer, out:
+ * Buffer to place data to.
+ */
+ HGCMFunctionParameter buffer;
+
+} VBoxSFRead;
+
+/** Number of parameters */
+#define SHFL_CPARMS_READ (5)
+
+...
+
+ VBoxSFRead data;
+
+ /* The call information. */
+ data.callInfo.result = VINF_SUCCESS; /* Will be returned by HGCM. */
+ data.callInfo.u32ClientID = ulClientID; /* Client identifier. */
+ data.callInfo.u32Function = SHFL_FN_READ; /* The function code. */
+ data.callInfo.cParms = SHFL_CPARMS_READ; /* Number of parameters. */
+
+ /* Initialize parameters. */
+ data.root.type = VMMDevHGCMParmType_32bit;
+ data.root.u.value32 = pMap-&gt;root;
+
+ data.handle.type = VMMDevHGCMParmType_64bit;
+ data.handle.u.value64 = hFile;
+
+ data.offset.type = VMMDevHGCMParmType_64bit;
+ data.offset.u.value64 = offset;
+
+ data.cb.type = VMMDevHGCMParmType_32bit;
+ data.cb.u.value32 = *pcbBuffer;
+
+ data.buffer.type = VMMDevHGCMParmType_LinAddr_Out;
+ data.buffer.u.Pointer.size = *pcbBuffer;
+ data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer;
+
+ rc = VbglHGCMCall (handle, &amp;data.callInfo, sizeof (data));
+
+ if (RT_SUCCESS (rc))
+ {
+ rc = data.callInfo.result;
+ *pcbBuffer = data.cb.u.value32; /* This is returned by the HGCM service. */
+ }
+ </screen></para>
+ </sect2>
+
+ <sect2>
+ <title>Guest application interface</title>
+
+ <para>Applications call the VirtualBox Guest Additions driver to
+ utilize the HGCM interface. There are IOCTL's which correspond to the
+ <computeroutput>Vbgl*</computeroutput> functions: <itemizedlist>
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_CONNECT</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_DISCONNECT</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBOXGUEST_IOCTL_HGCM_CALL</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>These IOCTL's get the same input buffer as
+ <computeroutput>VbglHGCM*</computeroutput> functions and the output
+ buffer has the same format as the input buffer. The same address can
+ be used as the input and output buffers.</para>
+
+ <para>For example see the guest part of shared clipboard, which runs
+ as an application and uses the HGCM interface.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>HGCM Service Implementation</title>
+
+ <para>The HGCM service is a shared library with a specific set of entry
+ points. The library must export the
+ <computeroutput>VBoxHGCMSvcLoad</computeroutput> entry point: <screen>
+extern "C" DECLCALLBACK(DECLEXPORT(int)) VBoxHGCMSvcLoad (VBOXHGCMSVCFNTABLE *ptable)
+ </screen></para>
+
+ <para>The service must check the
+ <computeroutput>ptable-&gt;cbSize</computeroutput> and
+ <computeroutput>ptable-&gt;u32Version</computeroutput> fields of the
+ input structure and fill the remaining fields with function pointers of
+ entry points and the size of the required client buffer size.</para>
+
+ <para>The HGCM service gets a dedicated thread, which calls service
+ entry points synchronously, that is the service will be called again
+ only when a previous call has returned. However, the guest calls can be
+ processed asynchronously. The service must call a completion callback
+ when the operation is actually completed. The callback can be issued
+ from another thread as well.</para>
+
+ <para>Service entry points are listed in the
+ <computeroutput>VBox/hgcmsvc.h</computeroutput> in the
+ <computeroutput>VBOXHGCMSVCFNTABLE</computeroutput> structure. <table>
+ <title>Service entry points</title>
+
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Entry</emphasis></entry>
+
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>pfnUnload</entry>
+
+ <entry>The service is being unloaded.</entry>
+ </row>
+
+ <row>
+ <entry>pfnConnect</entry>
+
+ <entry>A client <computeroutput>u32ClientID</computeroutput>
+ is connected to the service. The
+ <computeroutput>pvClient</computeroutput> parameter points to
+ an allocated memory buffer which can be used by the service to
+ store the client information.</entry>
+ </row>
+
+ <row>
+ <entry>pfnDisconnect</entry>
+
+ <entry>A client is being disconnected.</entry>
+ </row>
+
+ <row>
+ <entry>pfnCall</entry>
+
+ <entry>A guest client calls a service function. The
+ <computeroutput>callHandle</computeroutput> must be used in
+ the VBOXHGCMSVCHELPERS::pfnCallComplete callback when the call
+ has been processed.</entry>
+ </row>
+
+ <row>
+ <entry>pfnHostCall</entry>
+
+ <entry>Called by the VirtualBox host components to perform
+ functions which should be not accessible by the guest. Usually
+ this entry point is used by VirtualBox to configure the
+ service.</entry>
+ </row>
+
+ <row>
+ <entry>pfnSaveState</entry>
+
+ <entry>The VM state is being saved and the service must save
+ relevant information using the SSM API
+ (<computeroutput>VBox/ssm.h</computeroutput>).</entry>
+ </row>
+
+ <row>
+ <entry>pfnLoadState</entry>
+
+ <entry>The VM is being restored from the saved state and the
+ service must load the saved information and be able to
+ continue operations from the saved state.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table></para>
+ </sect1>
+ </chapter>
+
+ <chapter id="rdpweb">
+ <title>RDP Web Control</title>
+
+ <para>The VirtualBox <emphasis>RDP Web Control</emphasis> (RDPWeb)
+ provides remote access to a running VM. RDPWeb is a RDP (Remote Desktop
+ Protocol) client based on Flash technology and can be used from a Web
+ browser with a Flash plugin.</para>
+
+ <sect1>
+ <title>RDPWeb features</title>
+
+ <para>RDPWeb is embedded into a Web page and can connect to VRDP server
+ in order to displays the VM screen and pass keyboard and mouse events to
+ the VM.</para>
+ </sect1>
+
+ <sect1>
+ <title>RDPWeb reference</title>
+
+ <para>RDPWeb consists of two required components:<itemizedlist>
+ <listitem>
+ <para>Flash movie
+ <computeroutput>RDPClientUI.swf</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>JavaScript helpers
+ <computeroutput>webclient.js</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>The VirtualBox SDK contains sample HTML code
+ including:<itemizedlist>
+ <listitem>
+ <para>JavaScript library for embedding Flash content
+ <computeroutput>SWFObject.js</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>Sample HTML page
+ <computeroutput>webclient3.html</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <sect2>
+ <title>RDPWeb functions</title>
+
+ <para><computeroutput>RDPClientUI.swf</computeroutput> and
+ <computeroutput>webclient.js</computeroutput> work with each other.
+ JavaScript code is responsible for a proper SWF initialization,
+ delivering mouse events to the SWF and processing resize requests from
+ the SWF. On the other hand, the SWF contains a few JavaScript callable
+ methods, which are used both from
+ <computeroutput>webclient.js</computeroutput> and the user HTML
+ page.</para>
+
+ <sect3>
+ <title>JavaScript functions</title>
+
+ <para><computeroutput>webclient.js</computeroutput> contains helper
+ functions. In the following table ElementId refers to an HTML
+ element name or attribute, and Element to the HTML element itself.
+ HTML code<programlisting>
+ &lt;div id="FlashRDP"&gt;
+ &lt;/div&gt;
+</programlisting> would have ElementId equal to FlashRDP and Element equal to
+ the div element.</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <programlisting>RDPWebClient.embedSWF(SWFFileName, ElementId)</programlisting>
+
+ <para>Uses SWFObject library to replace the HTML element with
+ the Flash movie.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.isRDPWebControlById(ElementId)</programlisting>
+
+ <para>Returns true if the given id refers to a RDPWeb Flash
+ element.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.isRDPWebControlByElement(Element)</programlisting>
+
+ <para>Returns true if the given element is a RDPWeb Flash
+ element.</para>
+ </listitem>
+
+ <listitem>
+ <programlisting>RDPWebClient.getFlashById(ElementId)</programlisting>
+
+ <para>Returns an element, which is referenced by the given id.
+ This function will try to resolve any element, event if it is
+ not a Flash movie.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect3>
+
+ <sect3>
+ <title>Flash methods callable from JavaScript</title>
+
+ <para><computeroutput>RDPWebClienUI.swf</computeroutput> methods can
+ be called directly from JavaScript code on a HTML page.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>getProperty(Name)</para>
+ </listitem>
+
+ <listitem>
+ <para>setProperty(Name)</para>
+ </listitem>
+
+ <listitem>
+ <para>connect()</para>
+ </listitem>
+
+ <listitem>
+ <para>disconnect()</para>
+ </listitem>
+
+ <listitem>
+ <para>keyboardSendCAD()</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Flash JavaScript callbacks</title>
+
+ <para><computeroutput>RDPWebClienUI.swf</computeroutput> calls
+ JavaScript functions provided by the HTML page.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Embedding RDPWeb in an HTML page</title>
+
+ <para>It is necessary to include
+ <computeroutput>webclient.js</computeroutput> helper script. If
+ SWFObject library is used, the
+ <computeroutput>swfobject.js</computeroutput> must be also included
+ and RDPWeb flash content can be embedded to a Web page using dynamic
+ HTML. The HTML must include a "placeholder", which consists of 2
+ <computeroutput>div</computeroutput> elements.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>RDPWeb change log</title>
+
+ <sect2>
+ <title>Version 1.2.28</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>keyboardLayout</computeroutput>,
+ <computeroutput>keyboardLayouts</computeroutput>,
+ <computeroutput>UUID</computeroutput> properties.</para>
+ </listitem>
+
+ <listitem>
+ <para>Support for German keyboard layout on the client.</para>
+ </listitem>
+
+ <listitem>
+ <para>Rebranding to Oracle.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Version 1.1.26</title>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>webclient.js</computeroutput> is a part of
+ the distribution package.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>lastError</computeroutput> property.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>keyboardSendScancodes</computeroutput> and
+ <computeroutput>keyboardSendCAD</computeroutput> methods.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Version 1.0.24</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Initial release.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+ </chapter>
+
+ <chapter id="vbox-auth">
+ <title>VirtualBox external authentication modules</title>
+
+ <para>VirtualBox supports arbitrary external modules to perform
+ authentication. The module is used when the authentication method is set
+ to "external" for a particular VM VRDE access and the library was
+ specified with <computeroutput>VBoxManage setproperty
+ vrdeauthlibrary</computeroutput>. Web service also use the authentication
+ module which was specified with <computeroutput>VBoxManage setproperty
+ websrvauthlibrary</computeroutput>.</para>
+
+ <para>This library will be loaded by the VM or web service process on
+ demand, i.e. when the first remote desktop connection is made by a client
+ or when a client that wants to use the web service logs on.</para>
+
+ <para>External authentication is the most flexible as the external handler
+ can both choose to grant access to everyone (like the "null"
+ authentication method would) and delegate the request to the guest
+ authentication component. When delegating the request to the guest
+ component, the handler will still be called afterwards with the option to
+ override the result.</para>
+
+ <para>An authentication library is required to implement exactly one entry
+ point:</para>
+
+ <screen>#include "VBoxAuth.h"
+
+/**
+ * Authentication library entry point.
+ *
+ * Parameters:
+ *
+ * szCaller The name of the component which calls the library (UTF8).
+ * pUuid Pointer to the UUID of the accessed virtual machine. Can be NULL.
+ * guestJudgement Result of the guest authentication.
+ * szUser User name passed in by the client (UTF8).
+ * szPassword Password passed in by the client (UTF8).
+ * szDomain Domain passed in by the client (UTF8).
+ * fLogon Boolean flag. Indicates whether the entry point is called
+ * for a client logon or the client disconnect.
+ * clientId Server side unique identifier of the client.
+ *
+ * Return code:
+ *
+ * AuthResultAccessDenied Client access has been denied.
+ * AuthResultAccessGranted Client has the right to use the
+ * virtual machine.
+ * AuthResultDelegateToGuest Guest operating system must
+ * authenticate the client and the
+ * library must be called again with
+ * the result of the guest
+ * authentication.
+ *
+ * Note: When 'fLogon' is 0, only pszCaller, pUuid and clientId are valid and the return
+ * code is ignored.
+ */
+AuthResult AUTHCALL AuthEntry(
+ const char *szCaller,
+ PAUTHUUID pUuid,
+ AuthGuestJudgement guestJudgement,
+ const char *szUser,
+ const char *szPassword
+ const char *szDomain
+ int fLogon,
+ unsigned clientId)
+{
+ /* Process request against your authentication source of choice. */
+ // if (authSucceeded(...))
+ // return AuthResultAccessGranted;
+ return AuthResultAccessDenied;
+}</screen>
+
+ <para>A note regarding the UUID implementation of the
+ <computeroutput>pUuid</computeroutput> argument: VirtualBox uses a
+ consistent binary representation of UUIDs on all platforms. For this
+ reason the integer fields comprising the UUID are stored as little endian
+ values. If you want to pass such UUIDs to code which assumes that the
+ integer fields are big endian (often also called network byte order), you
+ need to adjust the contents of the UUID to e.g. achieve the same string
+ representation. The required changes are:<itemizedlist>
+ <listitem>
+ <para>reverse the order of byte 0, 1, 2 and 3</para>
+ </listitem>
+
+ <listitem>
+ <para>reverse the order of byte 4 and 5</para>
+ </listitem>
+
+ <listitem>
+ <para>reverse the order of byte 6 and 7.</para>
+ </listitem>
+ </itemizedlist>Using this conversion you will get identical results when
+ converting the binary UUID to the string representation.</para>
+
+ <para>The <computeroutput>guestJudgement</computeroutput> argument
+ contains information about the guest authentication status. For the first
+ call, it is always set to
+ <computeroutput>AuthGuestNotAsked</computeroutput>. In case the
+ <computeroutput>AuthEntry</computeroutput> function returns
+ <computeroutput>AuthResultDelegateToGuest</computeroutput>, a guest
+ authentication will be attempted and another call to the
+ <computeroutput>AuthEntry</computeroutput> is made with its result. This
+ can be either granted / denied or no judgement (the guest component chose
+ for whatever reason to not make a decision). In case there is a problem
+ with the guest authentication module (e.g. the Additions are not installed
+ or not running or the guest did not respond within a timeout), the "not
+ reacted" status will be returned.</para>
+ </chapter>
+
+ <chapter id="javaapi">
+ <title>Using Java API</title>
+
+ <sect1>
+ <title>Introduction</title>
+
+ <para>VirtualBox can be controlled by a Java API, both locally
+ (COM/XPCOM) and from remote (SOAP) clients. As with the Python bindings,
+ a generic glue layer tries to hide all platform differences, allowing
+ for source and binary compatibility on different platforms.</para>
+ </sect1>
+
+ <sect1>
+ <title>Requirements</title>
+
+ <para>To use the Java bindings, there are certain requirements depending
+ on the platform. First of all, you need JDK 1.5 (Java 5) or later. Also
+ please make sure that the version of the VirtualBox API .jar file
+ exactly matches the version of VirtualBox you use. To avoid confusion,
+ the VirtualBox API provides versioning in the Java package name, e.g.
+ the package is named <computeroutput>org.virtualbox_3_2</computeroutput>
+ for VirtualBox version 3.2. <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">XPCOM:</emphasis> - for all platforms,
+ but Microsoft Windows. A Java bridge based on JavaXPCOM is shipped
+ with VirtualBox. The classpath must contain
+ <computeroutput>vboxjxpcom.jar</computeroutput> and the
+ <computeroutput>vbox.home</computeroutput> property must be set to
+ location where the VirtualBox binaries are. Please make sure that
+ the JVM bitness matches bitness of VirtualBox you use as the XPCOM
+ bridge relies on native libraries.</para>
+
+ <para>Start your application like this: <programlisting>
+ java -cp vboxjxpcom.jar -Dvbox.home=/opt/virtualbox MyProgram
+ </programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">COM:</emphasis> - for Microsoft
+ Windows. We rely on <computeroutput>Jacob</computeroutput> - a
+ generic Java to COM bridge - which has to be installed seperately.
+ See <ulink
+ url="http://sourceforge.net/projects/jacob-project/">http://sourceforge.net/projects/jacob-project/</ulink>
+ for installation instructions. Also, the VirtualBox provided
+ <computeroutput>vboxjmscom.jar</computeroutput> must be in the
+ class path.</para>
+
+ <para>Start your application like this: <programlisting>
+ java -cp vboxjmscom.jar;c:\jacob\jacob.jar -Djava.library.path=c:\jacob MyProgram
+ </programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">SOAP</emphasis> - all platforms. Java
+ 6 is required, as it comes with builtin support for SOAP via the
+ JAX-WS library. Also, the VirtualBox provided
+ <computeroutput>vbojws.jar</computeroutput> must be in the class
+ path. In the SOAP case it's possible to create several
+ VirtualBoxManager instances to communicate with multiple
+ VirtualBox hosts.</para>
+
+ <para>Start your application like this: <programlisting>
+ java -cp vboxjws.jar MyProgram
+ </programlisting></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Exception handling is also generalized by the generic glue layer,
+ so that all methods could throw
+ <computeroutput>VBoxException</computeroutput> containing human-readable
+ text message (see <computeroutput>getMessage()</computeroutput> method)
+ along with wrapped original exception (see
+ <computeroutput>getWrapped()</computeroutput> method).</para>
+ </sect1>
+
+ <sect1>
+ <title>Example</title>
+
+ <para>This example shows a simple use case of the Java API. Differences
+ for SOAP vs. local version are minimal, and limited to the connection
+ setup phase (see <computeroutput>ws</computeroutput> variable). In the
+ SOAP case it's possible to create several VirtualBoxManager instances to
+ communicate with multiple VirtualBox hosts. <programlisting>
+ import org.virtualbox_3_3.*;
+ ....
+ VirtualBoxManager mgr = VirtualBoxManager.createInstance(null);
+ boolean ws = false; // or true, if we need the SOAP version
+ if (ws)
+ {
+ String url = "http://myhost:18034";
+ String user = "test";
+ String passwd = "test";
+ mgr.connect(url, user, passwd);
+ }
+ IVirtualBox vbox = mgr.getVBox();
+ System.out.println("VirtualBox version: " + vbox.getVersion() + "\n");
+ // get first VM name
+ String m = vbox.getMachines().get(0).getName();
+ System.out.println("\nAttempting to start VM '" + m + "'");
+ // start it
+ mgr.startVm(m, null, 7000);
+
+ if (ws)
+ mgr.disconnect();
+
+ mgr.cleanup();
+ </programlisting> For more a complete example, see
+ <computeroutput>TestVBox.java</computeroutput>, shipped with the
+ SDK.</para>
+ </sect1>
+ </chapter>
+
+ <chapter>
+ <title>License information</title>
+
+ <para>The sample code files shipped with the SDK are generally licensed
+ liberally to make it easy for anyone to use this code for their own
+ application code.</para>
+
+ <para>The Java files under
+ <computeroutput>bindings/webservice/java/jax-ws/</computeroutput> (library
+ files for the object-oriented web service) are, by contrast, licensed
+ under the GNU Lesser General Public License (LGPL) V2.1.</para>
+
+ <para>See
+ <computeroutput>sdk/bindings/webservice/java/jax-ws/src/COPYING.LIB</computeroutput>
+ for the full text of the LGPL 2.1.</para>
+
+ <para>When in doubt, please refer to the individual source code files
+ shipped with this SDK.</para>
+ </chapter>
+
+ <chapter>
+ <title>Main API change log</title>
+
+ <para>Generally, VirtualBox will maintain API compatibility within a major
+ release; a major release occurs when the first or the second of the three
+ version components of VirtualBox change (that is, in the x.y.z scheme, a
+ major release is one where x or y change, but not when only z
+ changes).</para>
+
+ <para>In other words, updates like those from 2.0.0 to 2.0.2 will not come
+ with API breakages.</para>
+
+ <para>Migration between major releases most likely will lead to API
+ breakage, so please make sure you updated code accordingly. The OOWS Java
+ wrappers enforce that mechanism by putting VirtualBox classes into
+ version-specific packages such as
+ <computeroutput>org.virtualbox_2_2</computeroutput>. This approach allows
+ for connecting to multiple VirtualBox versions simultaneously from the
+ same Java application.</para>
+
+ <para>The following sections list incompatible changes that the Main API
+ underwent since the original release of this SDK Reference with VirtualBox
+ 2.0. A change is deemed "incompatible" only if it breaks existing client
+ code (e.g. changes in method parameter lists, renamed or removed
+ interfaces and similar). In other words, the list does not contain new
+ interfaces, methods or attributes or other changes that do not affect
+ existing client code.</para>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Guest control APIs for executing guest processes, working with
+ guest files or directories have been moved to the newly introduced
+ <xref linkend="IGuestSession" xreflabel="IGuestSession" /> interface which
+ can be created by calling <xref linkend="IGuest__createSession"
+ xreflabel="IGuest::createSession()" />.</para>
+
+ <para>A guest session will act as a
+ guest user's impersonation so that the guest credentials only have to
+ be provided when creating a new guest session. There can be up to 32
+ guest sessions at once per VM, each session serving up to 2048 guest
+ processes running or files opened.</para>
+
+ <para>Instead of working with process or directory handles before
+ version 4.2, there now are the dedicated interfaces
+ <xref linkend="IGuestProcess" xreflabel="IGuestProcess" />,
+ <xref linkend="IGuestDirectory" xreflabel="IGuestDirectory" /> and
+ <xref linkend="IGuestFile" xreflabel="IGuestFile" />. To retrieve more
+ information of a file system object the new interface
+ <xref linkend="IGuestFsObjInfo" xreflabel="IGuestFsObjInfo" /> has been
+ introduced.</para>
+
+ <para>Even though the guest control API was changed it is backwards
+ compatible so that it can be used with older installed Guest
+ Additions. However, to use upcoming features like process termination
+ or waiting for input / output new Guest Additions must be installed when
+ these features got implemented.</para>
+
+ <para>The following limitations apply:
+ <itemizedlist>
+ <listitem><para>The <xref linkend="IGuestFile" xreflabel="IGuestFile" />
+ interface is not fully implemented yet.</para>
+ </listitem>
+ <listitem><para>The symbolic link APIs
+ <xref linkend="IGuestSession__symlinkCreate"
+ xreflabel="IGuestSession::symlinkCreate()" />,
+ <xref linkend="IGuestSession__symlinkExists"
+ xreflabel="IGuestSession::symlinkExists()" />,
+ <xref linkend="IGuestSession__symlinkRead"
+ xreflabel="IGuestSession::symlinkRead()" />,
+ <xref linkend="IGuestSession__symlinkRemoveDirectory"
+ xreflabel="IGuestSession::symlinkRemoveDirectory()" /> and
+ <xref linkend="IGuestSession__symlinkRemoveFile"
+ xreflabel="IGuestSession::symlinkRemoveFile()" /> are not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>The directory APIs
+ <xref linkend="IGuestSession__directoryRemove"
+ xreflabel="IGuestSession::directoryRemove()" />,
+ <xref linkend="IGuestSession__directoryRemoveRecursive"
+ xreflabel="IGuestSession::directoryRemoveRecursive()" />,
+ <xref linkend="IGuestSession__directoryRename"
+ xreflabel="IGuestSession::directoryRename()" /> and
+ <xref linkend="IGuestSession__directorySetACL"
+ xreflabel="IGuestSession::directorySetACL()" /> are not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>The temporary file creation API
+ <xref linkend="IGuestSession__fileCreateTemp"
+ xreflabel="IGuestSession::fileCreateTemp()" /> is not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>Guest process termination via
+ <xref linkend="IProcess__terminate"
+ xreflabel="IProcess::terminate()" /> is not
+ implemented yet.</para>
+ </listitem>
+ <listitem><para>Waiting for guest process output via
+ <xref linkend="ProcessWaitForFlag__StdOut" xreflabel="ProcessWaitForFlag::StdOut" />
+ and <xref linkend="ProcessWaitForFlag__StdErr" xreflabel="ProcessWaitForFlag::StdErr" />
+ is not implemented yet.</para><para>To wait for process output, <xref linkend="IProcess__read"
+ xreflabel="IProcess::read()" /> with appropriate flags still can be used to periodically
+ check for new output data to arrive. Note that <xref linkend="ProcessCreateFlag__WaitForStdOut"
+ xreflabel="ProcessCreateFlag::WaitForStdOut" /> and / or
+ <xref linkend="ProcessCreateFlag__WaitForStdErr" xreflabel="ProcessCreateFlag::WaitForStdErr" />
+ need to be specified when creating a guest process via <xref linkend="IGuestSession__processCreate"
+ xreflabel="IGuestSession::processCreate()" /> or <xref linkend="IGuestSession__processCreateEx"
+ xreflabel="IGuestSession::processCreateEx()" />.</para>
+ </listitem>
+ <listitem>
+ <para>ACL (Access Control List) handling in general is not implemented yet.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The <xref linkend="LockType" xreflabel="LockType" />
+ enumeration now has an additional value <computeroutput>VM</computeroutput>
+ which tells <xref linkend="IMachine__lockMachine"
+ xreflabel="IMachine::lockMachine()" /> to create a full-blown
+ object structure for running a VM. This was the previous behavior
+ with <computeroutput>Write</computeroutput>, which now only creates
+ the minimal object structure to save time and resources (at the
+ moment the Console object is still created, but all sub-objects
+ such as Display, Keyboard, Mouse, Guest are not.</para>
+ </listitem>
+
+ <listitem>
+ <para>Machines can be put in groups (actually an array of groups).
+ The primary group affects the default placement of files belonging
+ to a VM. <xref linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine()"/> and
+ <xref linkend="IVirtualBox__composeMachineFilename"
+ xreflabel="IVirtualBox::composeMachineFilename()"/> have been
+ adjusted accordingly, the former taking an array of groups as an
+ additional parameter and the latter taking a group as an additional
+ parameter. The create option handling has been changed for those two
+ methods, too.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IVirtualBox::findMedium() has been removed, since
+ it provides a subset of the functionality of <xref linkend="IVirtualBox__openMedium"
+ xreflabel="IVirtualBox::openMedium()" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>The use of acronyms in API enumeration, interface, attribute
+ and method names has been made much more consistent, previously they
+ sometimes were lowercase and sometimes mixed case. They are now
+ consistently all caps:<table>
+ <title>Renamed identifiers in VirtualBox 4.2</title>
+
+ <tgroup cols="2" style="verywide">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Old name</emphasis></entry>
+
+ <entry><emphasis role="bold">New name</emphasis></entry>
+ </row>
+ <row>
+ <entry>PointingHidType</entry>
+ <entry><xref linkend="PointingHIDType" xreflabel="PointingHIDType"/></entry>
+ </row>
+ <row>
+ <entry>KeyboardHidType</entry>
+ <entry><xref linkend="KeyboardHIDType" xreflabel="KeyboardHIDType"/></entry>
+ </row>
+ <row>
+ <entry>IPciAddress</entry>
+ <entry><xref linkend="IPCIAddress" xreflabel="IPCIAddress"/></entry>
+ </row>
+ <row>
+ <entry>IPciDeviceAttachment</entry>
+ <entry><xref linkend="IPCIDeviceAttachment" xreflabel="IPCIDeviceAttachment"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::pointingHidType</entry>
+ <entry><xref linkend="IMachine__pointingHIDType" xreflabel="IMachine::pointingHIDType"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::keyboardHidType</entry>
+ <entry><xref linkend="IMachine__keyboardHIDType" xreflabel="IMachine::keyboardHIDType"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::hpetEnabled</entry>
+ <entry><xref linkend="IMachine__HPETEnabled" xreflabel="IMachine::HPETEnabled"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::sessionPid</entry>
+ <entry><xref linkend="IMachine__sessionPID" xreflabel="IMachine::sessionPID"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::ioCacheEnabled</entry>
+ <entry><xref linkend="IMachine__IOCacheEnabled" xreflabel="IMachine::IOCacheEnabled"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::ioCacheSize</entry>
+ <entry><xref linkend="IMachine__IOCacheSize" xreflabel="IMachine::IOCacheSize"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::pciDeviceAssignments</entry>
+ <entry><xref linkend="IMachine__PCIDeviceAssignments" xreflabel="IMachine::PCIDeviceAssignments"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::attachHostPciDevice()</entry>
+ <entry><xref linkend="IMachine__attachHostPCIDevice" xreflabel="IMachine::attachHostPCIDevice"/></entry>
+ </row>
+ <row>
+ <entry>IMachine::detachHostPciDevice()</entry>
+ <entry><xref linkend="IMachine__detachHostPCIDevice" xreflabel="IMachine::detachHostPCIDevice()"/></entry>
+ </row>
+ <row>
+ <entry>IConsole::attachedPciDevices</entry>
+ <entry><xref linkend="IConsole__attachedPCIDevices" xreflabel="IConsole::attachedPCIDevices"/></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::dhcpEnabled</entry>
+ <entry><xref linkend="IHostNetworkInterface__DHCPEnabled" xreflabel="IHostNetworkInterface::DHCPEnabled"/></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableStaticIpConfig()</entry>
+ <entry><xref linkend="IHostNetworkInterface__enableStaticIPConfig" xreflabel="IHostNetworkInterface::enableStaticIPConfig()"/></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableStaticIpConfigV6()</entry>
+ <entry><xref linkend="IHostNetworkInterface__enableStaticIPConfigV6" xreflabel="IHostNetworkInterface::enableStaticIPConfigV6()"/></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::enableDynamicIpConfig()</entry>
+ <entry><xref linkend="IHostNetworkInterface__enableDynamicIPConfig" xreflabel="IHostNetworkInterface::enableDynamicIPConfig()"/></entry>
+ </row>
+ <row>
+ <entry>IHostNetworkInterface::dhcpRediscover()</entry>
+ <entry><xref linkend="IHostNetworkInterface__DHCPRediscover" xreflabel="IHostNetworkInterface::DHCPRediscover()"/></entry>
+ </row>
+ <row>
+ <entry>IHost::Acceleration3DAvailable</entry>
+ <entry><xref linkend="IHost__acceleration3DAvailable" xreflabel="IHost::acceleration3DAvailable"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedPae</entry>
+ <entry><xref linkend="IGuestOSType__recommendedPAE" xreflabel="IGuestOSType::recommendedPAE"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedDvdStorageController</entry>
+ <entry><xref linkend="IGuestOSType__recommendedDVDStorageController" xreflabel="IGuestOSType::recommendedDVDStorageController"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedDvdStorageBus</entry>
+ <entry><xref linkend="IGuestOSType__recommendedDVDStorageBus" xreflabel="IGuestOSType::recommendedDVDStorageBus"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHdStorageController</entry>
+ <entry><xref linkend="IGuestOSType__recommendedHDStorageController" xreflabel="IGuestOSType::recommendedHDStorageController"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHdStorageBus</entry>
+ <entry><xref linkend="IGuestOSType__recommendedHDStorageBus" xreflabel="IGuestOSType::recommendedHDStorageBus"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsbHid</entry>
+ <entry><xref linkend="IGuestOSType__recommendedUSBHID" xreflabel="IGuestOSType::recommendedUSBHID"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedHpet</entry>
+ <entry><xref linkend="IGuestOSType__recommendedHPET" xreflabel="IGuestOSType::recommendedHPET"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsbTablet</entry>
+ <entry><xref linkend="IGuestOSType__recommendedUSBTablet" xreflabel="IGuestOSType::recommendedUSBTablet"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedRtcUseUtc</entry>
+ <entry><xref linkend="IGuestOSType__recommendedRTCUseUTC" xreflabel="IGuestOSType::recommendedRTCUseUTC"/></entry>
+ </row>
+ <row>
+ <entry>IGuestOSType::recommendedUsb</entry>
+ <entry><xref linkend="IGuestOSType__recommendedUSB" xreflabel="IGuestOSType::recommendedUSB"/></entry>
+ </row>
+ <row>
+ <entry>INetworkAdapter::natDriver</entry>
+ <entry><xref linkend="INetworkAdapter__NATEngine" xreflabel="INetworkAdapter::NATEngine"/></entry>
+ </row>
+ <row>
+ <entry>IUSBController::enabledEhci</entry>
+ <entry><xref linkend="IUSBController__enabledEHCI" xreflabel="IUSBController::enabledEHCI"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpPrefix</entry>
+ <entry><xref linkend="INATEngine__TFTPPrefix" xreflabel="INATEngine::TFTPPrefix"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpBootFile</entry>
+ <entry><xref linkend="INATEngine__TFTPBootFile" xreflabel="INATEngine::TFTPBootFile"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::tftpNextServer</entry>
+ <entry><xref linkend="INATEngine__TFTPNextServer" xreflabel="INATEngine::TFTPNextServer"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsPassDomain</entry>
+ <entry><xref linkend="INATEngine__DNSPassDomain" xreflabel="INATEngine::DNSPassDomain"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsProxy</entry>
+ <entry><xref linkend="INATEngine__DNSProxy" xreflabel="INATEngine::DNSProxy"/></entry>
+ </row>
+ <row>
+ <entry>INATEngine::dnsUseHostResolver</entry>
+ <entry><xref linkend="INATEngine__DNSUseHostResolver" xreflabel="INATEngine::DNSUseHostResolver"/></entry>
+ </row>
+ <row>
+ <entry>VBoxEventType::OnHostPciDevicePlug</entry>
+ <entry><xref linkend="VBoxEventType__OnHostPCIDevicePlug" xreflabel="VBoxEventType::OnHostPCIDevicePlug"/></entry>
+ </row>
+ <row>
+ <entry>ICPUChangedEvent::cpu</entry>
+ <entry><xref linkend="ICPUChangedEvent__CPU" xreflabel="ICPUChangedEvent::CPU"/></entry>
+ </row>
+ <row>
+ <entry>INATRedirectEvent::hostIp</entry>
+ <entry><xref linkend="INATRedirectEvent__hostIP" xreflabel="INATRedirectEvent::hostIP"/></entry>
+ </row>
+ <row>
+ <entry>INATRedirectEvent::guestIp</entry>
+ <entry><xref linkend="INATRedirectEvent__guestIP" xreflabel="INATRedirectEvent::guestIP"/></entry>
+ </row>
+ <row>
+ <entry>IHostPciDevicePlugEvent</entry>
+ <entry><xref linkend="IHostPCIDevicePlugEvent" xreflabel="IHostPCIDevicePlugEvent"/></entry>
+ </row>
+ </tbody>
+ </tgroup></table></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+
+ <sect1>
+ <title>Incompatible API changes with version 4.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The method <xref linkend="IAppliance__importMachines"
+ xreflabel="IAppliance::importMachines()" /> has one more parameter
+ now, which allows to configure the import process in more detail.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>The method <xref linkend="IVirtualBox__openMedium"
+ xreflabel="IVirtualBox::openMedium()" /> has one more parameter
+ now, which allows resolving duplicate medium UUIDs without the need
+ for external tools.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <xref linkend="INetworkAdapter" xreflabel="INetworkAdapter"/>
+ interface has been cleaned up. The various methods to activate an
+ attachment type have been replaced by the
+ <xref linkend="INetworkAdapter__attachmentType" xreflabel="INetworkAdapter::attachmentType"/> setter.</para>
+ <para>Additionally each attachment mode now has its own attribute,
+ which means that host only networks no longer share the settings with
+ bridged interfaces.</para>
+ <para>To allow introducing new network attachment implementations
+ without making API changes, the concept of a generic network
+ attachment driver has been introduced, which is configurable through
+ key/value properties.</para>
+ </listitem>
+
+ <listitem>
+ <para>This version introduces the guest facilities concept. A guest
+ facility either represents a module or feature the guest is running or
+ offering, which is defined by <xref linkend="AdditionsFacilityType"
+ xreflabel="AdditionsFacilityType"/>. Each facility is member of a
+ <xref linkend="AdditionsFacilityClass" xreflabel="AdditionsFacilityClass"/>
+ and has a current status indicated by <xref linkend="AdditionsFacilityStatus"
+ xreflabel="AdditionsFacilityStatus"/>, together with a timestamp (in ms) of
+ the last status update.</para>
+ <para>To address the above concept, the following changes were made:
+ <itemizedlist>
+ <listitem>
+ <para>
+ In the <xref linkend="IGuest" xreflabel="IGuest"/> interface, the following were removed:
+ <itemizedlist>
+ <listitem>
+ <para>the <computeroutput>supportsSeamless</computeroutput> attribute;</para>
+ </listitem>
+ <listitem>
+ <para>the <computeroutput>supportsGraphics</computeroutput> attribute;</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The function <xref linkend="IGuest__getFacilityStatus" xreflabel="IGuest::getFacilityStatus()"/>
+ was added. It quickly provides a facility's status without the need to get the facility
+ collection with <xref linkend="IGuest__facilities" xreflabel="IGuest::facilities"/>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The attribute <xref linkend="IGuest__facilities" xreflabel="IGuest::facilities"/>
+ was added to provide an easy to access collection of all currently known guest
+ facilities, that is, it contains all facilies where at least one status update was
+ made since the guest was started.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The interface <xref linkend="IAdditionsFacility" xreflabel="IAdditionsFacility"/>
+ was added to represent a single facility returned by
+ <xref linkend="IGuest__facilities" xreflabel="IGuest::facilities"/>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="AdditionsFacilityStatus" xreflabel="AdditionsFacilityStatus"/>
+ was added to represent a facility's overall status.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="AdditionsFacilityType" xreflabel="AdditionsFacilityType"/> and
+ <xref linkend="AdditionsFacilityClass" xreflabel="AdditionsFacilityClass"/> were
+ added to represent the facility's type and class.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 4.0</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>A new Java glue layer replacing the previous OOWS JAX-WS
+ bindings was introduced. The new library allows for uniform code
+ targeting both local (COM/XPCOM) and remote (SOAP) transports. Now,
+ instead of <computeroutput>IWebsessionManager</computeroutput>, the
+ new class <computeroutput>VirtualBoxManager</computeroutput> must be
+ used. See <xref linkend="javaapi" xreflabel="Java API chapter" />
+ for details.</para>
+ </listitem>
+
+ <listitem>
+ <para>The confusingly named and impractical session APIs were
+ changed. In existing client code, the following changes need to be
+ made:<itemizedlist>
+ <listitem>
+ <para>Replace any
+ <computeroutput>IVirtualBox::openSession(uuidMachine,
+ ...)</computeroutput> API call with the machine's <xref
+ linkend="IMachine__lockMachine"
+ xreflabel="IMachine::lockMachine()" /> call and a
+ <computeroutput>LockType.Write</computeroutput> argument. The
+ functionality is unchanged, but instead of "opening a direct
+ session on a machine" all documentation now refers to
+ "obtaining a write lock on a machine for the client
+ session".</para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, replace any
+ <computeroutput>IVirtualBox::openExistingSession(uuidMachine,
+ ...)</computeroutput> call with the machine's <xref
+ linkend="IMachine__lockMachine"
+ xreflabel="IMachine::lockMachine()" /> call and a
+ <computeroutput>LockType.Shared</computeroutput> argument.
+ Whereas it was previously impossible to connect a client
+ session to a running VM process in a race-free manner, the new
+ API will atomically either write-lock the machine for the
+ current session or establish a remote link to an existing
+ session. Existing client code which tried calling both
+ <computeroutput>openSession()</computeroutput> and
+ <computeroutput>openExistingSession()</computeroutput> can now
+ use this one call instead.</para>
+ </listitem>
+
+ <listitem>
+ <para>Third, replace any
+ <computeroutput>IVirtualBox::openRemoteSession(uuidMachine,
+ ...)</computeroutput> call with the machine's <xref
+ linkend="IMachine__launchVMProcess"
+ xreflabel="IMachine::launchVMProcess()" /> call. The
+ functionality is unchanged.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <xref linkend="SessionState"
+ xreflabel="SessionState" /> enum was adjusted accordingly:
+ "Open" is now "Locked", "Closed" is now "Unlocked", "Closing"
+ is now "Unlocking".</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Virtual machines created with VirtualBox 4.0 or later no
+ longer register their media in the global media registry in the
+ <computeroutput>VirtualBox.xml</computeroutput> file. Instead, such
+ machines list all their media in their own machine XML files. As a
+ result, a number of media-related APIs had to be modified again.
+ <itemizedlist>
+ <listitem>
+ <para>Neither <xref linkend="IVirtualBox__createHardDisk"
+ xreflabel="IVirtualBox::createHardDisk()" /> nor <xref
+ linkend="IVirtualBox__openMedium"
+ xreflabel="IVirtualBox::openMedium()" /> register media
+ automatically any more.</para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__attachDevice"
+ xreflabel="IMachine::attachDevice()" /> and <xref
+ linkend="IMachine__mountMedium"
+ xreflabel="IMachine::mountMedium()" /> now take an IMedium
+ object instead of a UUID as an argument. It is these two calls
+ which add media to a registry now (either a machine registry
+ for machines created with VirtualBox 4.0 or later or the
+ global registry otherwise). As a consequence, if a medium is
+ opened but never attached to a machine, it is no longer added
+ to any registry any more.</para>
+ </listitem>
+
+ <listitem>
+ <para>To reduce code duplication, the APIs
+ IVirtualBox::findHardDisk(), getHardDisk(), findDVDImage(),
+ getDVDImage(), findFloppyImage() and getFloppyImage() have all
+ been merged into IVirtualBox::findMedium(), and
+ IVirtualBox::openHardDisk(), openDVDImage() and
+ openFloppyImage() have all been merged into <xref
+ linkend="IVirtualBox__openMedium"
+ xreflabel="IVirtualBox::openMedium()" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>The rare use case of changing the UUID and parent UUID
+ of a medium previously handled by
+ <computeroutput>openHardDisk()</computeroutput> is now in a
+ separate IMedium::setIDs method.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>ISystemProperties::get/setDefaultHardDiskFolder()</computeroutput>
+ have been removed since disk images are now by default placed
+ in each machine's folder.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <xref linkend="ISystemProperties__infoVDSize"
+ xreflabel="ISystemProperties::infoVDSize" /> attribute
+ replaces the <computeroutput>getMaxVDISize()</computeroutput>
+ API call; this now uses bytes instead of megabytes.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Machine management APIs were enhanced as follows:<itemizedlist>
+ <listitem>
+ <para><xref linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine()" /> is no longer
+ restricted to creating machines in the default "Machines"
+ folder, but can now create machines at arbitrary locations.
+ For this to work, the parameter list had to be changed.</para>
+ </listitem>
+
+ <listitem>
+ <para>The long-deprecated
+ <computeroutput>IVirtualBox::createLegacyMachine()</computeroutput>
+ API has been removed.</para>
+ </listitem>
+
+ <listitem>
+ <para>To reduce code duplication and for consistency with the
+ aforementioned media APIs,
+ <computeroutput>IVirtualBox::getMachine()</computeroutput> has
+ been merged with <xref linkend="IVirtualBox__findMachine"
+ xreflabel="IVirtualBox::findMachine()" />, and
+ <computeroutput>IMachine::getSnapshot()</computeroutput> has
+ been merged with <xref linkend="IMachine__findSnapshot"
+ xreflabel="IMachine::findSnapshot()" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVirtualBox::unregisterMachine()</computeroutput>
+ was replaced with <xref linkend="IMachine__unregister"
+ xreflabel="IMachine::unregister()" /> with additional
+ functionality for cleaning up machine files.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IConsole::forgetSavedState</computeroutput>
+ has been renamed to <xref
+ linkend="IConsole__discardSavedState"
+ xreflabel="IConsole::discardSavedState()" />.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>All event callbacks APIs were replaced with a new, generic
+ event mechanism that can be used both locally (COM, XPCOM) and
+ remotely (web services). Also, the new mechanism is usable from
+ scripting languages and a local Java. See <xref linkend="IEvent"
+ xreflabel="events" /> for details. The new concept will require
+ changes to all clients that used event callbacks.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>additionsActive()</computeroutput> was
+ replaced with <xref linkend="IGuest__additionsRunLevel"
+ xreflabel="additionsRunLevel()" /> and <xref
+ linkend="IGuest__getAdditionsStatus"
+ xreflabel="getAdditionsStatus()" /> in order to support a more
+ detailed status of the current Guest Additions loading/readiness
+ state. <xref linkend="IGuest__additionsVersion"
+ xreflabel="IGuest::additionsVersion()" /> no longer returns the
+ Guest Additions interface version but the installed Guest Additions
+ version and revision in form of
+ <computeroutput>3.3.0r12345</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>To address shared folders auto-mounting support, the following
+ APIs were extended to require an additional
+ <computeroutput>automount</computeroutput> parameter: <itemizedlist>
+ <listitem>
+ <para><xref linkend="IVirtualBox__createSharedFolder"
+ xreflabel="IVirtualBox::createSharedFolder()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__createSharedFolder"
+ xreflabel="IMachine::createSharedFolder()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IConsole__createSharedFolder"
+ xreflabel="IConsole::createSharedFolder()" /></para>
+ </listitem>
+ </itemizedlist> Also, a new property named
+ <computeroutput>autoMount</computeroutput> was added to the <xref
+ linkend="ISharedFolder" xreflabel="ISharedFolder" />
+ interface.</para>
+ </listitem>
+
+ <listitem>
+ <para>The appliance (OVF) APIs were enhanced as
+ follows:<itemizedlist>
+ <listitem>
+ <para><xref linkend="IMachine__export"
+ xreflabel="IMachine::export()" /> received an extra parameter
+ <computeroutput>location</computeroutput>, which is used to
+ decide for the disk naming.</para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IAppliance__write"
+ xreflabel="IAppliance::write()" /> received an extra parameter
+ <computeroutput>manifest</computeroutput>, which can suppress
+ creating the manifest file on export.</para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IVFSExplorer__entryList"
+ xreflabel="IVFSExplorer::entryList()" /> received two extra
+ parameters <computeroutput>sizes</computeroutput> and
+ <computeroutput>modes</computeroutput>, which contains the
+ sizes (in bytes) and the file access modes (in octal form) of
+ the returned files.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Support for remote desktop access to virtual machines has been
+ cleaned up to allow third party implementations of the remote
+ desktop server. This is called the VirtualBox Remote Desktop
+ Extension (VRDE) and can be added to VirtualBox by installing the
+ corresponding extension package; see the VirtualBox User Manual for
+ details.</para>
+
+ <para>The following API changes were made to support the VRDE
+ interface: <itemizedlist>
+ <listitem>
+ <para><computeroutput>IVRDPServer</computeroutput> has been
+ renamed to <xref linkend="IVRDEServer"
+ xreflabel="IVRDEServer" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IRemoteDisplayInfo</computeroutput> has
+ been renamed to <xref linkend="IVRDEServerInfo"
+ xreflabel="IVRDEServerInfo" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__VRDEServer"
+ xreflabel="IMachine::VRDEServer" /> replaces
+ <computeroutput>VRDPServer.</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IConsole__VRDEServerInfo"
+ xreflabel="IConsole::VRDEServerInfo" /> replaces
+ <computeroutput>RemoteDisplayInfo</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="ISystemProperties__VRDEAuthLibrary"
+ xreflabel="ISystemProperties::VRDEAuthLibrary" /> replaces
+ <computeroutput>RemoteDisplayAuthLibrary</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The following methods have been implemented in
+ <computeroutput>IVRDEServer</computeroutput> to support
+ generic VRDE properties: <itemizedlist>
+ <listitem>
+ <para><xref linkend="IVRDEServer__setVRDEProperty"
+ xreflabel="IVRDEServer::setVRDEProperty" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IVRDEServer__getVRDEProperty"
+ xreflabel="IVRDEServer::getVRDEProperty" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IVRDEServer__VRDEProperties"
+ xreflabel="IVRDEServer::VRDEProperties" /></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>A few implementation-specific attributes of the old
+ <computeroutput>IVRDPServer</computeroutput> interface have
+ been removed and replaced with properties: <itemizedlist>
+ <listitem>
+ <para><computeroutput>IVRDPServer::Ports</computeroutput>
+ has been replaced with the
+ <computeroutput>"TCP/Ports"</computeroutput> property.
+ The property value is a string, which contains a
+ comma-separated list of ports or ranges of ports. Use a
+ dash between two port numbers to specify a range.
+ Example:
+ <computeroutput>"5000,5010-5012"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::NetAddress</computeroutput>
+ has been replaced with the
+ <computeroutput>"TCP/Address"</computeroutput> property.
+ The property value is an IP address string. Example:
+ <computeroutput>"127.0.0.1"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::VideoChannel</computeroutput>
+ has been replaced with the
+ <computeroutput>"VideoChannel/Enabled"</computeroutput>
+ property. The property value is either
+ <computeroutput>"true"</computeroutput> or
+ <computeroutput>"false"</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>IVRDPServer::VideoChannelQuality</computeroutput>
+ has been replaced with the
+ <computeroutput>"VideoChannel/Quality"</computeroutput>
+ property. The property value is a string which contain a
+ decimal number in range 10..100. Invalid values are
+ ignored and the quality is set to the default value 75.
+ Example: <computeroutput>"50"</computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>The VirtualBox external authentication module interface has
+ been updated and made more generic. Because of that,
+ <computeroutput>VRDPAuthType</computeroutput> enumeration has been
+ renamed to <xref linkend="AuthType" xreflabel="AuthType" />.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>The following interfaces were renamed for consistency:
+ <itemizedlist>
+ <listitem>
+ <para>IMachine::getCpuProperty() is now <xref
+ linkend="IMachine__getCPUProperty"
+ xreflabel="IMachine::getCPUProperty()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::setCpuProperty() is now <xref
+ linkend="IMachine__setCPUProperty"
+ xreflabel="IMachine::setCPUProperty()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::getCpuIdLeaf() is now <xref
+ linkend="IMachine__getCPUIDLeaf"
+ xreflabel="IMachine::getCPUIDLeaf()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::setCpuIdLeaf() is now <xref
+ linkend="IMachine__setCPUIDLeaf"
+ xreflabel="IMachine::setCPUIDLeaf()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::removeCpuIdLeaf() is now <xref
+ linkend="IMachine__removeCPUIDLeaf"
+ xreflabel="IMachine::removeCPUIDLeaf()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>IMachine::removeAllCpuIdLeafs() is now <xref
+ linkend="IMachine__removeAllCPUIDLeaves"
+ xreflabel="IMachine::removeAllCPUIDLeaves()" />;</para>
+ </listitem>
+
+ <listitem>
+ <para>the CpuPropertyType enum is now <xref
+ linkend="CPUPropertyType"
+ xreflabel="CPUPropertyType" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>IVirtualBoxCallback::onSnapshotDiscarded() is now
+ IVirtualBoxCallback::onSnapshotDeleted.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>When creating a VM configuration with <xref
+ linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine" />) it is now possible to
+ ignore existing configuration files which would previously have
+ caused a failure. For this the
+ <computeroutput>override</computeroutput> parameter was
+ added.</para>
+ </listitem>
+
+ <listitem>
+ <para>Deleting snapshots via <xref
+ linkend="IConsole__deleteSnapshot"
+ xreflabel="IConsole::deleteSnapshot()" /> is now possible while the
+ associated VM is running in almost all cases. The API is unchanged,
+ but client code that verifies machine states to determine whether
+ snapshots can be deleted may need to be adjusted.</para>
+ </listitem>
+
+ <listitem>
+ <para>The IoBackendType enumeration was replaced with a boolean flag
+ (see <xref linkend="IStorageController__useHostIOCache"
+ xreflabel="IStorageController::useHostIOCache" />).</para>
+ </listitem>
+
+ <listitem>
+ <para>To address multi-monitor support, the following APIs were
+ extended to require an additional
+ <computeroutput>screenId</computeroutput> parameter: <itemizedlist>
+ <listitem>
+ <para><xref linkend="IMachine__querySavedThumbnailSize"
+ xreflabel="IMachine::querySavedThumbnailSize()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__readSavedThumbnailToArray"
+ xreflabel="IMachine::readSavedThumbnailToArray()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__querySavedScreenshotPNGSize"
+ xreflabel="IMachine::querySavedScreenshotPNGSize()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IMachine__readSavedScreenshotPNGToArray"
+ xreflabel="IMachine::readSavedScreenshotPNGToArray()" /></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>shape</computeroutput> parameter of
+ IConsoleCallback::onMousePointerShapeChange was changed from a
+ implementation-specific pointer to a safearray, enabling scripting
+ languages to process pointer shapes.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Due to the new flexibility in medium attachments that was
+ introduced with version 3.1 (in particular, full flexibility with
+ attaching CD/DVD drives to arbitrary controllers), we seized the
+ opportunity to rework all interfaces dealing with storage media to
+ make the API more flexible as well as logical. The <xref
+ linkend="IStorageController" xreflabel="IStorageController" />,
+ <xref linkend="IMedium" xreflabel="IMedium" />, <xref
+ linkend="IMediumAttachment" xreflabel="IMediumAttachment" /> and,
+ <xref linkend="IMachine" xreflabel="IMachine" /> interfaces were
+ affected the most. Existing code using them to configure storage and
+ media needs to be carefully checked.</para>
+
+ <para>All media (hard disks, floppies and CDs/DVDs) are now
+ uniformly handled through the <xref linkend="IMedium"
+ xreflabel="IMedium" /> interface. The device-specific interfaces
+ (<code>IHardDisk</code>, <code>IDVDImage</code>,
+ <code>IHostDVDDrive</code>, <code>IFloppyImage</code> and
+ <code>IHostFloppyDrive</code>) have been merged into IMedium; CD/DVD
+ and floppy media no longer need special treatment. The device type
+ of a medium determines in which context it can be used. Some
+ functionality was moved to the other storage-related
+ interfaces.</para>
+
+ <para><code>IMachine::attachHardDisk</code> and similar methods have
+ been renamed and generalized to deal with any type of drive and
+ medium. <xref linkend="IMachine__attachDevice"
+ xreflabel="IMachine::attachDevice()" /> is the API method for adding
+ any drive to a storage controller. The floppy and DVD/CD drives are
+ no longer handled specially, and that means you can have more than
+ one of them. As before, drives can only be changed while the VM is
+ powered off. Mounting (or unmounting) removable media at runtime is
+ possible with <xref linkend="IMachine__mountMedium"
+ xreflabel="IMachine::mountMedium()" />.</para>
+
+ <para>Newly created virtual machines have no storage controllers
+ associated with them. Even the IDE Controller needs to be created
+ explicitly. The floppy controller is now visible as a separate
+ controller, with a new storage bus type. For each storage bus type
+ you can query the device types which can be attached, so that it is
+ not necessary to hardcode any attachment rules.</para>
+
+ <para>This required matching changes e.g. in the callback interfaces
+ (the medium specific change notification was replaced by a generic
+ medium change notification) and removing associated enums (e.g.
+ <code>DriveState</code>). In many places the incorrect use of the
+ plural form "media" was replaced by "medium", to improve
+ consistency.</para>
+ </listitem>
+
+ <listitem>
+ <para>Reading the <xref linkend="IMedium__state"
+ xreflabel="IMedium::state" xrefstyle="" /> attribute no longer
+ automatically performs an accessibility check; a new method <xref
+ linkend="IMedium__refreshState"
+ xreflabel="IMedium::refreshState()" /> does this. The attribute only
+ returns the state any more.</para>
+ </listitem>
+
+ <listitem>
+ <para>There were substantial changes related to snapshots, triggered
+ by the "branched snapshots" functionality introduced with version
+ 3.1. IConsole::discardSnapshot was renamed to <xref
+ linkend="IConsole__deleteSnapshot"
+ xreflabel="IConsole::deleteSnapshot()" />.
+ IConsole::discardCurrentState and
+ IConsole::discardCurrentSnapshotAndState were removed; corresponding
+ new functionality is in <xref linkend="IConsole__restoreSnapshot"
+ xreflabel="IConsole::restoreSnapshot()" />. Also, when <xref
+ linkend="IConsole__takeSnapshot"
+ xreflabel="IConsole::takeSnapshot()" /> is called on a running
+ virtual machine, a live snapshot will be created. The old behavior
+ was to temporarily pause the virtual machine while creating an
+ online snapshot.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <computeroutput>IVRDPServer</computeroutput>,
+ <computeroutput>IRemoteDisplayInfo"</computeroutput> and
+ <computeroutput>IConsoleCallback</computeroutput> interfaces were
+ changed to reflect VRDP server ability to bind to one of available
+ ports from a list of ports.</para>
+
+ <para>The <computeroutput>IVRDPServer::port</computeroutput>
+ attribute has been replaced with
+ <computeroutput>IVRDPServer::ports</computeroutput>, which is a
+ comma-separated list of ports or ranges of ports.</para>
+
+ <para>An <computeroutput>IRemoteDisplayInfo::port"</computeroutput>
+ attribute has been added for querying the actual port VRDP server
+ listens on.</para>
+
+ <para>An IConsoleCallback::onRemoteDisplayInfoChange() notification
+ callback has been added.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter lists for the following functions were
+ modified:<itemizedlist>
+ <listitem>
+ <para><xref linkend="IHost__removeHostOnlyNetworkInterface"
+ xreflabel="IHost::removeHostOnlyNetworkInterface()" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IHost__removeUSBDeviceFilter"
+ xreflabel="IHost::removeUSBDeviceFilter()" /></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>In the OOWS bindings for JAX-WS, the behavior of structures
+ changed: for one, we implemented natural structures field access so
+ you can just call a "get" method to obtain a field. Secondly,
+ setters in structures were disabled as they have no expected effect
+ and were at best misleading.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 3.0</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>In the object-oriented web service bindings for JAX-WS, proper
+ inheritance has been introduced for some classes, so explicit
+ casting is no longer needed to call methods from a parent class. In
+ particular, IHardDisk and other classes now properly derive from
+ <xref linkend="IMedium" xreflabel="IMedium" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>All object identifiers (machines, snapshots, disks, etc)
+ switched from GUIDs to strings (now still having string
+ representation of GUIDs inside). As a result, no particular internal
+ structure can be assumed for object identifiers; instead, they
+ should be treated as opaque unique handles. This change mostly
+ affects Java and C++ programs; for other languages, GUIDs are
+ transparently converted to strings.</para>
+ </listitem>
+
+ <listitem>
+ <para>The uses of NULL strings have been changed greatly. All out
+ parameters now use empty strings to signal a null value. For in
+ parameters both the old NULL and empty string is allowed. This
+ change was necessary to support more client bindings, especially
+ using the web service API. Many of them either have no special NULL
+ value or have trouble dealing with it correctly in the respective
+ library code.</para>
+ </listitem>
+
+ <listitem>
+ <para>Accidentally, the <code>TSBool</code> interface still appeared
+ in 3.0.0, and was removed in 3.0.2. This is an SDK bug, do not use
+ the SDK for VirtualBox 3.0.0 for developing clients.</para>
+ </listitem>
+
+ <listitem>
+ <para>The type of <xref linkend="IVirtualBoxErrorInfo__resultCode"
+ xreflabel="IVirtualBoxErrorInfo::resultCode" /> changed from
+ <computeroutput>result</computeroutput> to
+ <computeroutput>long</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list of IVirtualBox::openHardDisk was
+ changed.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IConsole::discardSavedState was renamed to
+ IConsole::forgetSavedState, and a parameter was added.</para>
+ </listitem>
+
+ <listitem>
+ <para>The method IConsole::powerDownAsync was renamed to <xref
+ linkend="IConsole__powerDown" xreflabel="IConsole::powerDown" />,
+ and the previous method with that name was deleted. So effectively a
+ parameter was added.</para>
+ </listitem>
+
+ <listitem>
+ <para>In the <xref linkend="IFramebuffer"
+ xreflabel="IFramebuffer" /> interface, the following were
+ removed:<itemizedlist>
+ <listitem>
+ <para>the <computeroutput>operationSupported</computeroutput>
+ attribute;</para>
+
+ <para>(as a result, the
+ <computeroutput>FramebufferAccelerationOperation</computeroutput>
+ enum was no longer needed and removed as well);</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>solidFill()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>copyScreenBits()</computeroutput>
+ method.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>In the <xref linkend="IDisplay" xreflabel="IDisplay" />
+ interface, the following were removed:<itemizedlist>
+ <listitem>
+ <para>the
+ <computeroutput>setupInternalFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>lockFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the <computeroutput>unlockFramebuffer()</computeroutput>
+ method;</para>
+ </listitem>
+
+ <listitem>
+ <para>the
+ <computeroutput>registerExternalFramebuffer()</computeroutput>
+ method.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 2.2</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Added explicit version number into JAX-WS Java package names,
+ such as <computeroutput>org.virtualbox_2_2</computeroutput>,
+ allowing connect to multiple VirtualBox clients from single Java
+ application.</para>
+ </listitem>
+
+ <listitem>
+ <para>The interfaces having a "2" suffix attached to them with
+ version 2.1 were renamed again to have that suffix removed. This
+ time around, this change involves only the name, there are no
+ functional differences.</para>
+
+ <para>As a result, IDVDImage2 is now IDVDImage; IHardDisk2 is now
+ IHardDisk; IHardDisk2Attachment is now IHardDiskAttachment.</para>
+
+ <para>Consequentially, all related methods and attributes that had a
+ "2" suffix have been renamed; for example, IMachine::attachHardDisk2
+ now becomes IMachine::attachHardDisk().</para>
+ </listitem>
+
+ <listitem>
+ <para>IVirtualBox::openHardDisk has an extra parameter for opening a
+ disk read/write or read-only.</para>
+ </listitem>
+
+ <listitem>
+ <para>The remaining collections were replaced by more performant
+ safe-arrays. This affects the following collections:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>IGuestOSTypeCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostDVDDriveCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostFloppyDriveCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostUSBDeviceCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IHostUSBDeviceFilterCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IProgressCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>ISharedFolderCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>ISnapshotCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IUSBDeviceCollection</para>
+ </listitem>
+
+ <listitem>
+ <para>IUSBDeviceFilterCollection</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>Since "Host Interface Networking" was renamed to "bridged
+ networking" and host-only networking was introduced, all associated
+ interfaces needed renaming as well. In detail:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The HostNetworkInterfaceType enum has been renamed to
+ <xref linkend="HostNetworkInterfaceMediumType"
+ xreflabel="HostNetworkInterfaceMediumType" /></para>
+ </listitem>
+
+ <listitem>
+ <para>The IHostNetworkInterface::type attribute has been renamed
+ to <xref linkend="IHostNetworkInterface__mediumType"
+ xreflabel="IHostNetworkInterface::mediumType" /></para>
+ </listitem>
+
+ <listitem>
+ <para>INetworkAdapter::attachToHostInterface() has been renamed
+ to INetworkAdapter::attachToBridgedInterface</para>
+ </listitem>
+
+ <listitem>
+ <para>In the IHost interface, createHostNetworkInterface() has
+ been renamed to <xref
+ linkend="IHost__createHostOnlyNetworkInterface"
+ xreflabel="createHostOnlyNetworkInterface()" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Similarly, removeHostNetworkInterface() has been renamed
+ to <xref linkend="IHost__removeHostOnlyNetworkInterface"
+ xreflabel="removeHostOnlyNetworkInterface()" /></para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Incompatible API changes with version 2.1</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>With VirtualBox 2.1, error codes were added to many error
+ infos that give the caller a machine-readable (numeric) feedback in
+ addition to the error string that has always been available. This is
+ an ongoing process, and future versions of this SDK reference will
+ document the error codes for each method call.</para>
+ </listitem>
+
+ <listitem>
+ <para>The hard disk and other media interfaces were completely
+ redesigned. This was necessary to account for the support of VMDK,
+ VHD and other image types; since backwards compatibility had to be
+ broken anyway, we seized the moment to redesign the interfaces in a
+ more logical way.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Previously, the old IHardDisk interface had several
+ derivatives called IVirtualDiskImage, IVMDKImage, IVHDImage,
+ IISCSIHardDisk and ICustomHardDisk for the various disk formats
+ supported by VirtualBox. The new IHardDisk2 interface that comes
+ with version 2.1 now supports all hard disk image formats
+ itself.</para>
+ </listitem>
+
+ <listitem>
+ <para>IHardDiskFormat is a new interface to describe the
+ available back-ends for hard disk images (e.g. VDI, VMDK, VHD or
+ iSCSI). The IHardDisk2::format attribute can be used to find out
+ the back-end that is in use for a particular hard disk image.
+ ISystemProperties::hardDiskFormats[] contains a list of all
+ back-ends supported by the system. <xref
+ linkend="ISystemProperties__defaultHardDiskFormat"
+ xreflabel="ISystemProperties::defaultHardDiskFormat" /> contains
+ the default system format.</para>
+ </listitem>
+
+ <listitem>
+ <para>In addition, the new <xref linkend="IMedium"
+ xreflabel="IMedium" /> interface is a generic interface for hard
+ disk, DVD and floppy images that contains the attributes and
+ methods shared between them. It can be considered a parent class
+ of the more specific interfaces for those images, which are now
+ IHardDisk2, IDVDImage2 and IFloppyImage2.</para>
+
+ <para>In each case, the "2" versions of these interfaces replace
+ the earlier versions that did not have the "2" suffix.
+ Previously, the IDVDImage and IFloppyImage interfaces were
+ entirely unrelated to IHardDisk.</para>
+ </listitem>
+
+ <listitem>
+ <para>As a result, all parts of the API that previously
+ referenced IHardDisk, IDVDImage or IFloppyImage or any of the
+ old subclasses are gone and will have replacements that use
+ IHardDisk2, IDVDImage2 and IFloppyImage2; see, for example,
+ IMachine::attachHardDisk2.</para>
+ </listitem>
+
+ <listitem>
+ <para>In particular, the IVirtualBox::hardDisks2 array replaces
+ the earlier IVirtualBox::hardDisks collection.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="IGuestOSType" xreflabel="IGuestOSType" /> was
+ extended to group operating systems into families and for 64-bit
+ support.</para>
+ </listitem>
+
+ <listitem>
+ <para>The <xref linkend="IHostNetworkInterface"
+ xreflabel="IHostNetworkInterface" /> interface was completely
+ rewritten to account for the changes in how Host Interface
+ Networking is now implemented in VirtualBox 2.1.</para>
+ </listitem>
+
+ <listitem>
+ <para>The IVirtualBox::machines2[] array replaces the former
+ IVirtualBox::machines collection.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added <xref linkend="IHost__getProcessorFeature"
+ xreflabel="IHost::getProcessorFeature()" /> and <xref
+ linkend="ProcessorFeature" xreflabel="ProcessorFeature" />
+ enumeration.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameter list for <xref
+ linkend="IVirtualBox__createMachine"
+ xreflabel="IVirtualBox::createMachine()" /> was modified.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added IMachine::pushGuestProperty.</para>
+ </listitem>
+
+ <listitem>
+ <para>New attributes in IMachine: <xref
+ linkend="IMachine__accelerate3DEnabled"
+ xreflabel="accelerate3DEnabled" />, HWVirtExVPIDEnabled, <xref
+ linkend="IMachine__guestPropertyNotificationPatterns"
+ xreflabel="guestPropertyNotificationPatterns" />, <xref
+ linkend="IMachine__CPUCount" xreflabel="CPUCount" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Added <xref linkend="IConsole__powerUpPaused"
+ xreflabel="IConsole::powerUpPaused()" /> and <xref
+ linkend="IConsole__getGuestEnteredACPIMode"
+ xreflabel="IConsole::getGuestEnteredACPIMode()" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Removed ResourceUsage enumeration.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ </chapter>
+</book>
+<!-- vim: set shiftwidth=2 tabstop=2 expandtab: -->
diff --git a/doc/manual/fr_FR/UserManual.xml b/doc/manual/fr_FR/UserManual.xml
new file mode 100644
index 00000000..3b10a0dc
--- /dev/null
+++ b/doc/manual/fr_FR/UserManual.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<book>
+ <bookinfo>
+ <title>@VBOX_PRODUCT@<superscript>®</superscript></title>
+
+ <subtitle>Manuel de l'utilisateur</subtitle>
+
+ <edition>Version
+ @VBOX_VERSION_STRING@</edition>
+
+ <corpauthor>@VBOX_VENDOR@</corpauthor>
+
+ <othercredit class="translator">
+ <contrib>Traducteur</contrib>
+ <firstname>Jean-Philippe</firstname>
+ <surname>Mengual</surname>
+ </othercredit>
+
+ <address>http://www.virtualbox.org</address>
+
+ <copyright>
+ <year>2004-@VBOX_C_YEAR@</year>
+
+ <holder>@VBOX_VENDOR@</holder>
+ </copyright>
+ </bookinfo>
+
+ <xi:include href="user_Introduction.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Installation.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_BasicConcepts.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_GuestAdditions.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Storage.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Networking.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Frontends.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_VBoxManage.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_AdvancedTopics.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Technical.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_VirtualBoxAPI.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Troubleshooting.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Security.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_KnownIssues.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_ChangeLog.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_ThirdParty.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_PrivacyPolicy.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="user_Glossary.xml" xpointer="element(/1)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>
diff --git a/doc/manual/fr_FR/images/clone-vm.png b/doc/manual/fr_FR/images/clone-vm.png
new file mode 100644
index 00000000..5b0b8274
--- /dev/null
+++ b/doc/manual/fr_FR/images/clone-vm.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/create-vdi-1.png b/doc/manual/fr_FR/images/create-vdi-1.png
new file mode 100644
index 00000000..75f77000
--- /dev/null
+++ b/doc/manual/fr_FR/images/create-vdi-1.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/create-vm-1.png b/doc/manual/fr_FR/images/create-vm-1.png
new file mode 100644
index 00000000..42c98288
--- /dev/null
+++ b/doc/manual/fr_FR/images/create-vm-1.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/create-vm-2.png b/doc/manual/fr_FR/images/create-vm-2.png
new file mode 100644
index 00000000..948ba90d
--- /dev/null
+++ b/doc/manual/fr_FR/images/create-vm-2.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/dnd-modes.png b/doc/manual/fr_FR/images/dnd-modes.png
new file mode 100644
index 00000000..ad5f62e3
--- /dev/null
+++ b/doc/manual/fr_FR/images/dnd-modes.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/ovf-import.png b/doc/manual/fr_FR/images/ovf-import.png
new file mode 100644
index 00000000..f6671e67
--- /dev/null
+++ b/doc/manual/fr_FR/images/ovf-import.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/seamless.png b/doc/manual/fr_FR/images/seamless.png
new file mode 100644
index 00000000..502aebd2
--- /dev/null
+++ b/doc/manual/fr_FR/images/seamless.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/snapshots-1.png b/doc/manual/fr_FR/images/snapshots-1.png
new file mode 100644
index 00000000..fd8198d7
--- /dev/null
+++ b/doc/manual/fr_FR/images/snapshots-1.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vbox-components.png b/doc/manual/fr_FR/images/vbox-components.png
new file mode 100644
index 00000000..45ad6e50
--- /dev/null
+++ b/doc/manual/fr_FR/images/vbox-components.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vbox-sdl.png b/doc/manual/fr_FR/images/vbox-sdl.png
new file mode 100644
index 00000000..2c5b9fb3
--- /dev/null
+++ b/doc/manual/fr_FR/images/vbox-sdl.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vboxlogo.png b/doc/manual/fr_FR/images/vboxlogo.png
new file mode 100644
index 00000000..1fcdd79c
--- /dev/null
+++ b/doc/manual/fr_FR/images/vboxlogo.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/virtual-disk-manager.png b/doc/manual/fr_FR/images/virtual-disk-manager.png
new file mode 100644
index 00000000..8557bacb
--- /dev/null
+++ b/doc/manual/fr_FR/images/virtual-disk-manager.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/virtual-disk-manager2.png b/doc/manual/fr_FR/images/virtual-disk-manager2.png
new file mode 100644
index 00000000..ed34f60c
--- /dev/null
+++ b/doc/manual/fr_FR/images/virtual-disk-manager2.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/virtualbox-main-empty.png b/doc/manual/fr_FR/images/virtualbox-main-empty.png
new file mode 100644
index 00000000..d4ce6515
--- /dev/null
+++ b/doc/manual/fr_FR/images/virtualbox-main-empty.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/virtualbox-main.png b/doc/manual/fr_FR/images/virtualbox-main.png
new file mode 100644
index 00000000..de0dacba
--- /dev/null
+++ b/doc/manual/fr_FR/images/virtualbox-main.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vm-close.png b/doc/manual/fr_FR/images/vm-close.png
new file mode 100644
index 00000000..166f7033
--- /dev/null
+++ b/doc/manual/fr_FR/images/vm-close.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vm-groups.png b/doc/manual/fr_FR/images/vm-groups.png
new file mode 100644
index 00000000..53983429
--- /dev/null
+++ b/doc/manual/fr_FR/images/vm-groups.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vm-hostkey.png b/doc/manual/fr_FR/images/vm-hostkey.png
new file mode 100644
index 00000000..44e78753
--- /dev/null
+++ b/doc/manual/fr_FR/images/vm-hostkey.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vm-settings-harddisk.png b/doc/manual/fr_FR/images/vm-settings-harddisk.png
new file mode 100644
index 00000000..0b4290f0
--- /dev/null
+++ b/doc/manual/fr_FR/images/vm-settings-harddisk.png
Binary files differ
diff --git a/doc/manual/fr_FR/images/vm-vista-running.png b/doc/manual/fr_FR/images/vm-vista-running.png
new file mode 100644
index 00000000..bf31290e
--- /dev/null
+++ b/doc/manual/fr_FR/images/vm-vista-running.png
Binary files differ
diff --git a/doc/manual/fr_FR/user_AdvancedTopics.xml b/doc/manual/fr_FR/user_AdvancedTopics.xml
new file mode 100644
index 00000000..a4293c3f
--- /dev/null
+++ b/doc/manual/fr_FR/user_AdvancedTopics.xml
@@ -0,0 +1,3296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="AdvancedTopics">
+ <title>Sujets avancés</title>
+
+ <sect1 id="vboxsdl">
+ <title>VBoxSDL, l'afficheur simplifié de VM</title>
+
+ <sect2>
+ <title>Introduction</title>
+
+ <para>VBoxSDL est une interface graphique (GUI) simple qui élimine le
+ support du clicodrome fourni par VirtualBox, notre principale GUI.
+ VBoxSDL est utilisé actuellement d'abord pour déboguer VirtualBox, donc
+ il n'est pas officiellement supporté. Vous pouvez quand même le trouver
+ utile pour des environnements où les machines virtuelles ne sont pas
+ nécessairement contrôlées par la personne qui utilise la machine virtuelle.<note>
+ <para>VBoxSDL n'est pas disponible sur la plateforme hôte Mac OS X.</para>
+ </note></para>
+
+ <para>Comme pous pouvez le voir sur l'impression d'écran suivante, VBoxSDL
+ ne fournit vraiment qu'une fenêtre simple ne contenant que la machine
+ virtuelle "pure", sans menus ni contrôleurs sur lesquels cliquer et sans
+ indicateurs supplémentaires sur l'activité de la VM&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vbox-sdl.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>Pour démarrer une machine virtuelle avec VBoxSDL au lieu de l'interface
+ graphique de VirtualBox, tapez ce qui suit sur une ligne de
+ commandes&#xA0;:<screen>VBoxSDL --startvm &lt;vm&gt;</screen></para>
+
+ <para>où <computeroutput>&lt;vm&gt;</computeroutput> est, comme d'habitude
+ dans les paramètres en ligne de commande de VirtualBox, le nom ou l'UUID
+ d'une machine virtuelle existante.</para>
+ </sect2>
+
+ <sect2>
+ <title>Étiquetage sécurisé avec VBoxSDL</title>
+
+ <para>Quand vous lancez des systèmes d'exploitation invités en mode plein
+ écran, le système d'exploitation invité a en général le contrôle de tout
+ l'écran. Cela pourrait représenter un risque de sécurité car le système
+ d'exploitation invité pourrait, pour l'utilisateur, lui faire croire qu'il
+ est vraiment dans un autre système (qui pourrait avoir un haut niveau de sécurité),
+ ou lui faire assimiler des messages à l'écran comme provenant du système
+ d'exploitation hôte.</para>
+
+ <para>Afin de protéger l'utilisateur contre les risques de sécurité précités,
+ on a développpé la fonction d'étiquetage de sécurité. L'étiquetage de sécurité
+ n'est actuellement disponible que pour VBoxSDL. S'il est activé,
+ une partie de la zone d'affichage est réservée à une étiquette où est affiché
+ un message défini par l'utilisateur. La hauteur de l'étiquette est définie à
+ 20 pixels dans VBoxSDL. La couleur de la police et de l'arrière-plan de
+ l'étiquette peuvent éventuellement être définies en valeurs de couleurs
+ RGB hexadécimales. On utilise la syntaxe suivante pour activer l'étiquettage
+ de sécurité&#xA0;:</para>
+
+ <screen>VBoxSDL --startvm "nom VM"
+ --securelabel --seclabelfnt ~/fonts/arial.ttf
+ --seclabelsiz 14 --seclabelfgcol 00FF00 --seclabelbgcol 00FFFF</screen>
+
+ <para>Outre l'activation de l'étiquette de sécurité, il faut fournir une
+ police TrueType Pour utiliser uoe autre taille de police que 12 points,
+ utilisez le paramètre <computeroutput>--seclabelsiz</computeroutput>.</para>
+
+ <para>Vous pouvez définir le texte de l'étiquette avec <screen>VBoxManage setextradata "nom VM" "VBoxSDL/SecureLabel" "L étiquette"</screen>
+ Une modification de cette étiquette prendra effet immédiatement.</para>
+
+ <para>En général, les résolutions du plein écran sont limitées à
+ certaines géométries "standards" telles que 1024 x 768. Une augmentation
+ de vingt lignes n'est en général pas faisable, donc dans la plupart des
+ cas, VBoxSDL choisira la résolution suivante la plus élevée comme 1280 x 1024
+ et l'écran de l'invité ne couvrira pas toute la zone d'affichage. Si VBoxSDL
+ ne peut pas choisir de résolution plus élevée, l'étiquette de sécurité sera
+ dessinée en haut de la zone de l'écran de l'invité. Pour surmonter le
+ problème selon lequel le bas de l'écran de l'invité est caché, VBoxSDL
+ peut fournir des modes graphiques personnalisés à l'invité, réduits par
+ la hauteur de l'étiquette. Pour les invités Windows et les
+ Solaris et Linux récents, les suppléments invité de VirtualBox fournissent
+ automatiquement les modes graphiques réduits. De plus, le BIOS VESA a été
+ ajusté pour dupliquer sa table en mode standard avec des résolutions
+ ajustées. Les IDs du mode ajusté se calculent en utilisant la formule
+ suivante&#xA0;:</para>
+
+ <screen>reduced_modeid = modeid + 0x30</screen>
+
+ <para>Par exemple, pour démarrer Linux avec 1024 x 748 x 16, le mode
+ standard 0x117 (1024 x 768 x 16) est utilisé de base. Le paramètre du
+ noyau Linux du mode graphique se calcule alors en faisant&#xA0;:</para>
+
+ <screen>vga = 0x200 | 0x117 + 0x30
+vga = 839</screen>
+
+ <para>On duplique les modes standards au lieu de ne fournir que les modes
+ ajustés car la plupart des systèmes d'exploitation invités ont besoin des
+ modes VESA standards figés et ils refusent de démarrer avec d'autres modes.</para>
+
+ <para>Quand vous utilisez le pilote VESA de X.org, il faut calculer les
+ modes personnalisés et les ajouter à la main à la configuration (en général,
+ dans <literal>/etc/X11/xorg.conf</literal>. Vous pouvez trouver un outil à
+ la main pour déterminer les entrées des modes sur <literal><ulink
+ url="http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html">http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html</ulink></literal>.)</para>
+ </sect2>
+
+ <sect2>
+ <title>Libérer les modificateurs avec VBoxSDL sur Linux</title>
+
+ <para>Quand vous basculez d'un terminal virtuel (VT) X à un autre en utilisant
+ Ctrl-Alt-Fx pendant que la fenêtre VBoxSDL contient le focus d'entrée,
+ l'invité recevra les événements d'appui sur Ctrl et Alt sans recevoir les événements
+ de relâchement correspondant de la touche. C'est une limite liée à
+ l'architecture de Linux. Pour réinitialiser les touches modificatrices,
+ il est possible d'envoyer
+ <computeroutput>SIGUSR1</computeroutput> au fil principal de VBoxSDL (première
+ entrée de la liste <computeroutput>ps</computeroutput>). Par exemple, quand
+ vous basculez vers un autre VT et quand vous enregistrez la machine virtuelle
+ à partir de ce terminal, la séquence suivante peut être utilisée pour
+ s'assurer que la VM n'est pas sauvegardée avec des modificateurs bloqué&#xA0;:</para>
+
+ <para><screen>kill -usr1 &lt;pid&gt;
+VBoxManage controlvm "Windows 2000" savestate</screen></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="autologon">
+ <title>Identifications automatiques dans l'invité</title>
+
+ <para>VirtualBox fournit des modules invité supplémentaires pour Windows, Linux
+ et Solaris pour activer l'identification automatique dans l'invité.</para>
+
+ <para>Quand on lance un système d'exploitation dans une machine virtuelle,
+ il pourrait être souhaitable d'effectuer des identifications automatiques et
+ coordonnées en utilisant des autorisations issues d'un système d'identification
+ maître. (Avec les "autorisations", on se réfère aux informations d'identification
+ qui consistent en nom d'utilisateur, mot de passe et nom de domaine,
+ où chaque valeur pourrait être vide.)</para>
+
+ <sect2 id="autologon_win">
+ <title>Identification automatique dans un invité Windows</title>
+
+ <para>Depuis Windows NT, Windows fourni un sous-système d'identification
+ modulaire ("Winlogon") qu'on peut utiliser et étendre par ce qu'on appelle
+ des modules GINA (Graphical Identification and Authentication).
+ Avec Windows Vista et Windows 7, les modules GINA ont été remplacés par un
+ nouveau mécanisme appelé "fournisseurs d'autorisations". Les suppléments
+ invité de VirtualBox pour Windows sont fournis à la fois avec un module
+ GINA et un fournisseur d'autorisations, ils permettent donc à n'importe quel
+ invité Windows d'effectuer des identifications automatiques.</para>
+
+ <para>Pour activer le module GINA ou fournisseur d'autorisations des
+ suppléments invité de VirtualBox, installez les suppléments invité en
+ utilisant le paramètre <computeroutput>/with_autologon</computeroutput> en
+ ligne de commande. Toutes les étapes manuelles suivantes exigés pour installer
+ ces modules se feront via l'installeur.</para>
+
+ <para>Pour installer à la main le module GINA de VirtualBox, extrayez les
+ suppléments invité (voir <xref linkend="windows-guest-file-extraction" />)
+ et copiez le fichier <computeroutput>VBoxGINA.dll</computeroutput> dans le
+ répertoire Windows <computeroutput>SYSTEM32</computeroutput>. Puis, dans
+ le registre, créez la clé suivante&#xA0;: <screen>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL</screen>
+ avec la valeur <computeroutput>VBoxGINA.dll</computeroutput>.</para>
+
+ <note>
+ <para>Le module GINA de VirtualBox est implémenté sur le module GINA
+ standard de Windows (<computeroutput>MSGINA.DLL</computeroutput>). En
+ conséquence, il ne fonctionnera vraisemblablement pas avec des modules
+ GINA tiers.</para>
+ </note>
+
+ <para>Pour installer à la main le module fournisseur d'autorisation de
+ VirtualBox, extrayez les suppléments invité (voir <xref
+ linkend="windows-guest-file-extraction" />) et copiez le fichier
+ <computeroutput>VBoxCredProv.dll</computeroutput> dans le répertoire Windows
+ <computeroutput>SYSTEM32</computeroutput>. Puis, dans le registre, créez
+ les clés suivantes&#xA0;:<screen>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
+ Authentication\Credential Providers\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}
+
+HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}
+
+HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}\InprocServer32</screen></para>
+
+ <para>avec pour valeurs celles par défault (la clé nommée
+ <computeroutput>(Default)</computeroutput> dans chaque clé) définies sur
+ <computeroutput>VBoxCredProv</computeroutput>. Après quoi, il faut créer
+ une nouvelle chaîne nommée <screen>HKEY_CLASSES_ROOT\CLSID\{275D3BCC-22BB-4948-A7F6-3A3054EBA92B}\InprocServer32\ThreadingModel</screen>
+ avec une valeur de <computeroutput>Apartment</computeroutput>.</para>
+
+ <para>Pour définir les autorisations, utilisez la commande suivante sur
+ une VM <emphasis>en fonction</emphasis>&#xA0;:</para>
+
+ <screen>VBoxManage controlvm "Windows XP" setcredentials "John Doe" "secretpassword" "DOMTEST"</screen>
+
+ <para>Pendant que la VM est en fonction, vous pouvez interroger les autorisations
+ accordées par les modules d'identification de VirtualBox (GINA ou
+ fournisseur d'autorisation) en utilisant le pérphérique des suppléments
+ invité de VirtualBox. Quand Windows est en mode "déconnecté", les modules
+ d'identification interrogeront constament les autorisations et si elles
+ existent, il tentera une identification. Après avoir récupéré les autorisations,
+ les modules d'identification les écraseront pour que la commande ci-dessus
+ doive se répéter pour les identifications consécutives.</para>
+
+ <para>Pour des raisons de sécurité, les autorisations ne sont pas stockées
+ de façon permanente et vous les perdrez quand vous redémarrerez la VM.
+ En outre, les autorisations sont en "écriture seule", c'est-à-dire qu'il n'y
+ a aucun moyen de récupérer les autorisations côté hôte. Vous pouvez
+ réinitialiser les autorisations côté hôte en définissant des valeurs vides.</para>
+
+ <para>Selon la variante particulière de votre invité Windows, les restrictions
+ suivantes s'appliquent&#xA0;: <orderedlist>
+ <listitem>
+ <para>Pour les <emphasis role="bold">invités Windows XP,</emphasis>
+ le sous-système d'identification doit être configuré pour utiliser
+ la boîte de dialogue classique d'identification car le module GINA
+ de VirtualBox ne supporte pas la boîte de dialogue de bienvenue à
+ la XP.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour les <emphasis role="bold">invités Windows Vista, Windows 7
+ et Windows 8,</emphasis>
+ le sous-système d'identification ne supporte pas ce qu'on appelle la
+ Secure Attention Sequence (<computeroutput>CTRL+ALT+DEL</computeroutput>).
+ Il s'en suit que les paramètres des règles du groupe de l'invité
+ doivent être modifiés pour ne pas utiliser la Secure Attention Sequence.
+ De plus, le nom d'utilisateur donné n'est comparé qu'au vrai nom d'utilisateur,
+ pas au nom convivial d'utilisateur. Cela veut dire que quand vous
+ renommez un utilisateur, vous devez aussi fournir le nom d'utilisateur
+ originel (en interne, Windows ne renomme jamais les comptes
+ utilisateurs).</para>
+ </listitem>
+
+ <listitem>
+ <para>La gestion de l'identification automatique du Windows Remote Desktop
+ Service (connu jadis sous le nom Terminal Services) est désactivée
+ par défaut. Pour l'activer, créez la clé de registre
+ <screen>HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox Guest Additions\AutoLogon</screen>
+ avec une valeur <computeroutput>DWORD</computeroutput> de
+ <computeroutput>1</computeroutput>.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>La commande suivante oblige VirtualBox à garder les autorisations
+ après leur lecture par l'invité et au redémarrage de la VM&#xA0;:
+ <screen>VBoxManage setextradata "Windows XP" VBoxInternal/Devices/VMMDev/0/Config/KeepCredentials 1</screen>Remarquez
+ que c'est un risque de sécurité potentiel car une application malveillante
+ en fonction sur l'invité pourrait solliciter ces informations en utilisant
+ la bonne interface.</para>
+ </sect2>
+
+ <sect2 id="autologon_unix">
+ <title>Identifications automatisées à un invité Linux/Unix</title>
+
+ <para>À partir de la version 3.2, VirtualBox fournit un module PAM personnalisé
+ (Pluggable Authentication Module) qu'on peut utiliser pour effectuer des
+ identifications automatiques dans l'invité sur des plateformes qui supportent
+ cet environnement. Virtuellement, toutes les distributions Linux/Unix modernes
+ s'appuient sur PAM.</para>
+
+ <para>Pour des identifications automatiques sur des distributions Ubuntu
+ (ou dérivées d'Ubuntu), qui utilisent le gestionnaire d'affichage
+ LightDM, merci de voir <xref linkend="autologon_unix_lightdm" />.</para>
+
+ <para>Pour des identifications automatiques sur des distributions Ubuntu
+ (ou dérivées d'Ubuntu), qui utilisent le gestionnaire d'affichage
+ LightDM, merci de voir <xref linkend="autologon_unix_lightdm" />.</para>
+
+ <para>Le module <computeroutput>pam_vbox.so</computeroutput> lui-même
+ <emphasis role="bold">ne fait pas</emphasis> de vérification effective des
+ autorisations passées à l'OS invité&#xA0;; il s'appuie plutôt sur d'autres
+ modules tels que <computeroutput>pam_unix.so</computeroutput> ou
+ <computeroutput>pam_unix2.so</computeroutput> dans la pile PAM pour faire
+ la validation effective en utilisant les autorisations récupérées par
+ <computeroutput>pam_vbox.so</computeroutput>. Dès lors, il faut que
+ <computeroutput>pam_vbox.so</computeroutput> soit en haut de la liste d'authentification
+ du service PAM.</para>
+
+ <note>
+ <para><computeroutput>pam_vbox.so</computeroutput> ne supporte que la primitive
+ <computeroutput>auth</computeroutput>. D'autres primitives telles
+ que <computeroutput>account</computeroutput>,
+ <computeroutput>session</computeroutput> ou
+ <computeroutput>password</computeroutput> ne sont pas supportées.</para>
+ </note>
+
+ <para>Le module <computeroutput>pam_vbox.so</computeroutput> est inclu
+ dans les suppléments invité mais il n'est pas installé et/ou activé par défaut
+ sur l'OS invité. Afin de l'installer, il faut le copier de
+ <computeroutput>/opt/VBoxGuestAdditions-&lt;version&gt;/lib/VBoxGuestAdditions/</computeroutput>
+ dans le répertoire des modules de sécurité, en général
+ <computeroutput>/lib/security/</computeroutput> sur les invités Linux 32
+ bit ou <computeroutput>/lib64/security/</computeroutput> sur ceux 64 bits.
+ Merci de vous reporter à la documentation de votre OS invité pour le bon
+ répertoire du module PAM.</para>
+
+ <para>Par exemple, pour utiliser <computeroutput>pam_vbox.so</computeroutput>
+ avec un OS invité Linux Ubuntu et GDM (GNOME Desktop Manager) pour identifier
+ les utilisateurs automatiquement avec les droits passés par l'hôte, l'OS
+ invité doit être configuré comme ce qui suit&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Le module <computeroutput>pam_vbox.so</computeroutput> doit être
+ copié dans le répertoire des modules de sécurité, dans ce cas, c'est
+ <computeroutput>/lib/security</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Éditez le fichier de configuration de PAM avec GDM qui se trouve
+ dans <computeroutput>/etc/pam.d/gdm</computeroutput>, en ajoutant la
+ ligne <computeroutput>auth requisite pam_vbox.so</computeroutput> au
+ début. En outre, dans la plupart des distributions Linux, il existe
+ un fichier appelé <computeroutput>/etc/pam.d/common-auth</computeroutput>.
+ Ce fichier est inclu dans de nombreux services (comme le fichier GDM
+ indiqué ci-dessus). Vous devez y ajouter la ligne <computeroutput>auth
+ requisite pam_vbox.so</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous voulez une authentification via la base de données
+ shadow en utilisant <computeroutput>pam_unix.so</computeroutput> ou
+ <computeroutput>pam_unix2.so</computeroutput>, l'argument
+ <computeroutput>try_first_pass</computeroutput> de
+ <computeroutput>pam_unix.so</computeroutput> ou
+ <computeroutput>use_first_pass</computeroutput> pour
+ <computeroutput>pam_unix2.so</computeroutput> est nécessaire pour
+ passer les autorisations du module VirtualBox au module d'authentification
+ de la base de données shadow. Pour Ubuntu, il faut ajouter cela à
+ <computeroutput>/etc/pam.d/common-auth</computeroutput>, à la fin
+ de la ligne référençant <computeroutput>pam_unix.so</computeroutput>.
+ Cet argument dit au module PAM d'utiliser les autorisations déjà
+ présentes dans la pile, à savoir celles fournies par
+ le module PAM de VirtualBox.</para>
+ </listitem>
+ </orderedlist>
+
+ <para><warning>
+ <para>Une pile PAM mal configurée peut vraiment vous empêcher de vous connecter
+ à votre système invité&#xA0;!</para>
+ </warning></para>
+
+ <para>Pour faciliter le déploiement, vous pouvez passer l'argument
+ <computeroutput>debug</computeroutput> juste après la ligne
+ <computeroutput>pam_vbox.so</computeroutput>. La sortie du journal de
+ débogage sera enregistrée en utilisant syslog.</para>
+
+ <para><note>
+ <para>Par défaut, pam_vbox n'attendra pas les autorisations venant de
+ l'hôte, en d'autres termes&#xA0;: quand une invite de connexion s'affiche
+ (ppar exemple via GDM/KDM ou la console texte) et quand pam_vbox n'a
+ pas encore les autorisations, il n'attend pas qu'elles viennent. Le module
+ suivant de la pile PAM (selon la configuration de PAM) aura l'opportunité
+ d'authentifier.</para>
+ </note></para>
+
+ <para>À partir de VirtualBox 4.1.4 pam_vbox supporte plusieurs paramètres
+ de propriétés d'invité résidant tous dans
+ <computeroutput>/VirtualBox/GuestAdd/PAM/</computeroutput>. Ces paramètres
+ permettent à pam_vbox d'attendre que les autorisations soient fournies par
+ l'hôte et, éventuellement, il peut afficher un message tout en les attendant.
+ Les propriétés d'invité suivantes peuvent être définies&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para><computeroutput>CredsWait</computeroutput>&#xA0;: Indiquez
+ "1" si pam_vbox devrait commencer à attendre jusqu'à ce que les autorisations
+ viennent de l'hôte. En attendant, aucune autre méthode d'authentification
+ comme la connexion à la main ne sera disponible. Si cette propriété est
+ vide ou effacée, les autorisations ne seront pas attendues et pam_vbox
+ agira comme avant (voir paragraphe ci-dessus). Cette propriété doit être
+ définie en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>CredsWaitAbort</computeroutput>&#xA0;: Annule
+ l'attente des autorisations si une valeur est définie. Elle peut être
+ définie à partir de l'hôte et de l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>CredsWaitTimeout</computeroutput>&#xA0;: Timeout (en
+ secondes) pendant lequel il faut laisser pam_vbox attendre les autorisations.
+ Si aucune autorisation ne vient dans ce délai, l'authentification de
+ pam_vbox sera définie comme échouée et le prochain module PAM de la
+ chaîne sera appelé. Si vous ne spécifiez pas cette propriété, ou que
+ vous la réglez sur "0" ou sur une valeur invalide, on utilisera un timeout
+ infini. Cette propriété doit être paramétrée en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Pour personnaliser davantage pam_vbox, il existe les propriétés
+ invité suivantes&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para><computeroutput>CredsMsgWaiting</computeroutput>&#xA0;: message
+ personnalisé affiché pendant que pam_vbox attend les autorisations
+ de l'hôte. Cette propriété doit être réglée en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>CredsMsgWaitTimeout</computeroutput>&#xA0;:
+ message personnalisé affiché pendant l'attente de la fin du timeout des
+ autorisations de pam_vbox, par exemple si elles ne sont pas arrivées
+ à temps. Cette propriété doit être réglée en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+ </orderedlist>
+
+ <para><note>
+ <para>Si une propriété pam_vbox est définie avec de mauvais drapeaux
+ (<computeroutput>RDONLYGUEST</computeroutput>), cette propriété sera
+ ignorée et - selon la propriété - une valeur par défaut sera utilisée.
+ Il peut s'en suivre que pam_vbox n'attendra pas les autorisations.
+ Consultez le fichier syslog adéquat pour plus d'informations et utilisez
+ l'option <computeroutput>debug</computeroutput>.</para>
+ </note></para>
+
+ <sect3 id="autologon_unix_lightdm">
+ <title>VirtualBox Greeter pour Ubuntu / LightDM</title>
+
+ <para>À partir de la version 4.2.12, VirtualBox est fourni avec son
+ propre module greeter, qui s'appelle vbox-greeter et qu'on peut utiliser
+ avec LightDM 1.0.1 ou supérieur. LightDM est le gestionnaire d'affichage
+ par défaut depuis Ubuntu 10.11 et on peut donc l'utiliser également
+ pour des identifications automatiques sur l'invité.</para>
+
+ <para>vbox-greeter n'a pas besoin du module pam_vbox décrit ci-dessus
+ pour fonctionner -- il est fourni avec son propre mécanisme d'authentification
+ fourni par LightDM. Cependant, pour offrir le maximum de flexibilité,
+ vous pouvez utiliser les deux modules ensemble sur le même invité.</para>
+
+ <para>Comme pour le module pam_vbox, vbox-greeter est fourni avec
+ les suppléments invité mais il n'est pas installé et/ou activé par défaut
+ sur l'OS invité. Pour installer vbox-greeter automatiquement pendant
+ l'installation des suppléments invité, utilisez le paramètre
+ <computeroutput>--with-autologon</computeroutput> au lancement du fichier
+ VBoxLinuxAdditions.run :<screen>
+ # ./VBoxLinuxAdditions.run -- --with-autologon</screen></para>
+
+ <para>Pour une installation manuelle ou différée, le fichier
+ <computeroutput>vbox-greeter.desktop</computeroutput> doit être copié
+ de <computeroutput>/opt/VBoxGuestAdditions-&lt;version&gt;/shared/VBoxGuestAdditions/</computeroutput>
+ dans le répertoire <computeroutput>xgreeters</computeroutput>,
+ généralement <computeroutput>/usr/share/xgreeters/</computeroutput>.
+ Merci de vous reporter à la documentation de votre OS invité pour le
+ bon répertoire de LightDM greeter.</para>
+
+ <para>Le module vbox-greeter lui-même a été installé par l'installeur
+ des suppléments invité de VirtualBox et il se trouve dans
+ <computeroutput>/usr/sbin/</computeroutput>. Pour activer vbox-greeter
+ en tant que module greeter standard, le fichier
+ <computeroutput>/etc/lightdm/lightdm.conf</computeroutput> doit être
+ modifié :</para>
+
+ <para><screen>
+ [SeatDefaults]
+ greeter-session=vbox-greeter</screen></para>
+
+ <note><para>Il faut complètement relancer le serveur LightDM afin que
+ vbox-greeter soit utilisé comme greeter par défaut. En tant qu'administrateur,
+ exécutez un
+ <computeroutput>service lightdm --full-restart</computeroutput> sur
+ Ubuntu, ou redémarrez tout simplement l'invité.</para></note>
+
+ <note><para>vbox-greeter est indépendant de la session graphique choisie
+ par l'utilisateur (comme Gnome, KDE, Unity etc). Néanmoins, il exige
+ FLTK 1.3 pour afficher sa propre interface utilisateur.</para></note>
+
+ <para>De noubreuses propriétés invité peuvent être utilisées pour
+ personnaliser davantage l'identification de l'utilisateur. Pour identifier
+ automatiquement les utilisateurs, s'appliquent les mêmes propriétés
+ qu'avec pam_vbox, voir <xref linkend="autologon_unix" />.</para>
+
+ <para>Outre les propriétés invité indiquées ci-dessus, vbox-greter
+ permet davantage de personnalisation de son interface
+ utilisateur. Ces propriétés invité spéciales se trouvent toutes dans
+ <computeroutput>/VirtualBox/GuestAdd/Greeter/</computeroutput> :</para>
+
+ <orderedlist>
+ <listitem>
+ <para><computeroutput>HideRestart</computeroutput> : Indiquez
+ "1" si vbox-greeter doit masquer le bouton de redémarrage de l'invité.
+ Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>HideShutdown</computeroutput> : Indiquez
+ à "1" si vbox-greeter doit masquer le bouton d'extinction de
+ l'invité. Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>BannerPath</computeroutput> : Chemin vers
+ un fichier .PNG à utiliser comme bannière en haut. La taille de
+ l'image doit être de 460 x 90 pixels, quelle que soit la profondeur
+ de bit. Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>UseTheming</computeroutput> : Indiquez
+ "1" pour activer les options de thème suivantes.
+ Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>Theme/BackgroundColor</computeroutput> :
+ Couleur RRGGBB hexadécimale du fond. Vous devez définir cette
+ propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>Theme/LogonDialog/HeaderColor</computeroutput> :
+ Couleur d'avant RRGGBB hexadécimale pour le texte d'en-tête.
+ Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>Theme/LogonDialog/BackgroundColor</computeroutput>:
+ Couleur en RRGGBB hexadécimale du fond de la boîte de dialogue
+ d'identification.
+ Vous devez définir cette propriété en lecture seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>Theme/LogonDialog/ButtonColor</computeroutput> :
+ Couleur de fond RRGGBB hexadécimale du bouton de la boîte de dialogue
+ d'identification. Vous devez définir cette propriété en lecture
+ seule pour l'invité
+ (<computeroutput>RDONLYGUEST</computeroutput>).</para>
+ </listitem>
+ </orderedlist>
+
+ <note><para>Les mêmes restrictions des propriétés invité ci-dessus
+ s'appliquent comme celles indiquées dans la section
+ pam_vbox.</para></note>
+ </sect3>
+
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Configuration avancées pour les invités Windows</title>
+
+ <sect2 id="sysprep">
+ <title>Préparation automatique du système Windows</title>
+
+ <para>À partir de Windows NT 4.0, Microsoft offre un outil "préparation système"
+ (en bref&#xA0;: Sysprep) pour préparer un système Windows à être déployé ou
+ redistribué. Si Windows 2000 et XP sont inclus avec Sysprep sur leur média
+ d'installation, l'outil est également disponible en téléchargement sur le
+ site Internet de Microsoft. Dans une installation standard de Windows Vista
+ et 7, Sysprep est déjà inclu. Sysprep consiste principalement dans un
+ exécutable qui s'appelle <computeroutput>sysprep.exe</computeroutput> qui
+ est appelé par l'utilisateur pour passer l'installation Windows en mode
+ préparation.</para>
+
+ <para>À partir VirtualBox 3.2.2, les suppléments invité offrent un moyen de
+ lancer une préparation du système sur le système d'exploitation invité de
+ manière automatisée et contrôlée depuis le système hôte. Pour faire cela,
+ voir <xref linkend="guestadd-guestcontrol" /> pour utiliser la fonction
+ avec l'identifiant spécial <computeroutput>sysprep</computeroutput> pour que
+ le programme s'exécute avec le nom d'utilisateur
+ <computeroutput>sysprep</computeroutput> et le mot de passe
+ <computeroutput>sysprep</computeroutput> des autorisations. Sysprep se lance
+ avec les droits système requis.</para>
+
+ <note>
+ <para>La spécification de l'emplacement de "sysprep.exe" <emphasis
+ role="bold">n'est pas possible</emphasis> -- les chemins suivants seront
+ plutôt utilisés (basés sur le système d'exploitation)&#xA0;: <itemizedlist>
+ <listitem>
+ <para><computeroutput>C:\sysprep\sysprep.exe</computeroutput>
+ pour Windows NT 4.0, 2000 et XP</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>%WINDIR%\System32\Sysprep\sysprep.exe</computeroutput>
+ pour Windows Vista, 2008 Server et 7</para>
+ </listitem>
+ </itemizedlist> Les suppléments invité utiliseront automatiquement le
+ chemin adapté pour exécuter l'outil de préparation système.</para>
+ </note>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Configuration avancée pour les invités Linux et Solaris</title>
+
+ <sect2>
+ <title>Paramétrage manuel des services sélectionnés sur l'invité Linux</title>
+
+ <para>Les suppléments invité de VirtualBox contiennent plusieurs pilotes.
+ Si, pour une raison quelconque, vous ne souhaitez pas les installer, vous
+ pouvez installer les suppléments invité en utilisant la commande suivante&#xA0;:</para>
+
+ <screen> sh ./VBoxLinuxAdditions.run no_setup</screen>
+
+ <para>Après quoi, vous devrez au moins compiler les modules noyau en lançant
+ la commande <screen> /usr/lib/VBoxGuestAdditions/vboxadd setup</screen>
+ en tant que root (vous devrez remplacer <emphasis>lib</emphasis> par
+ <emphasis>lib64</emphasis> sur certains invités 64 bits), et sur les
+ anciens invités sans service udev, vous devrez ajouter le service
+ <emphasis>vboxadd</emphasis> au niveau d'exécution par défaut pour vous
+ assurer que les modules sont chargés.</para>
+
+ <para>Pour régler le service de synchronisation du temps, lancez la commande
+ <screen> /usr/lib/VBoxGuestAdditions/vboxadd-service setup</screen> et
+ ajoutez le service vboxadd-service au niveau d'exécution par défaut.
+ Pour paramétrer la partie X11 et OpenGL des suppléments invité, lancez
+ la commande <screen> /usr/lib/VBoxGuestAdditions/vboxadd-x11 setup</screen>
+ (vous n'avez pas besoin d'activer un service).</para>
+
+ <para>Pour recompiler les modules noyau invité, utilisez cette commande&#xA0;:
+ <screen> /usr/lib/VBoxGuestAdditions/vboxadd setup</screen>
+ Après la compilation, vous devriez redémarrer votre invité pour vous assurer
+ que les nouveaux modules sont bien utilisés.</para>
+ </sect2>
+
+ <sect2 id="guestxorgsetup">
+ <title>Paramétrage approfondi des pilotes graphique et souris de l'invité</title>
+
+ <para>Cette section suppose que vous êtes familier de la configuration de
+ votre serveur X.Org en utilisant xorg.conf et éventuellement des mécanismes
+ récents en utilisant hal ou udev et xorg.conf.d. Sinon, vous pouvez apprendre
+ à les utiliser en étudiant la documentation fournie avec X.Org.</para>
+
+ <para>Les suppléments invité de VirtualBox sont fournis avec les pilotes
+ pour les versions X.Org <itemizedlist>
+ <listitem>
+ <para>X11R6.8/X11R6.9 et XFree86 version 4.3 (vboxvideo_drv_68.o et vboxmouse_drv_68.o)</para>
+ </listitem>
+
+ <listitem>
+ <para>X11R7.0 (vboxvideo_drv_70.so and vboxmouse_drv_70.so)</para>
+ </listitem>
+
+ <listitem>
+ <para>X11R7.1 (vboxvideo_drv_71.so and vboxmouse_drv_71.so)</para>
+ </listitem>
+
+ <listitem>
+ <para>Serveur X.Org versions 1.3 et later (vboxvideo_drv_13.so et vboxmouse_drv_13.so et
+ ainsi de suite).</para>
+ </listitem>
+ </itemizedlist> Par défaut, vous pouvez trouver ces pilotes dans le
+ répertoire</para>
+
+ <para><computeroutput>/opt/VBoxGuestAdditions-&lt;version&gt;/lib/VBoxGuestAdditions</computeroutput></para>
+
+ <para>et les bonnes versions du serveur X sont liées de façon symbolique
+ aux répertoires du pilote de X.Org.</para>
+
+ <para>Pour que l'intégration graphique fonctionne correctement, le serveur
+ X doit charger le pilote vboxvideo (beaucoup de versions récentes du serveur
+ X le cherchent automatiquement si elles voient qu'elles sont sur VirtualBox)
+ et pour une expérience utilisateur optimale, les pilotes du noyau invité
+ doivent être chargés et l'outil des suppléments invité VBoxClient doit être
+ en fonction en tant que client dans la session X. Pour que l'intégration de
+ la souris fonctionne correctement, les pilotes du noyau invité doivent
+ être chargés et, au surplus, dans les serveurs X de X.Org X11R6.8
+ à X11R7.1 et dans XFree86 version 4.3, le bon pilote vboxmouse doit être
+ chargé et associé à /dev/mouse ou /dev/psaux&#xA0;; dans le serveur X.Org
+ 1.3 ou supérieur, un pilote de souris PS/2 doit être chargé et le bon
+ pilote vboxmouse doit être associé à /dev/vboxguest.</para>
+
+ <para>Le pilote graphique invité de VirtualBox peut utiliser n'importe quelle
+ configuration graphique pour laquelle la résolution rentre dans la mémoire
+ graphique affectée à la machine virtuelle (moins une petite quantité utilisée
+ par le pilote invité) comme décrit au <xref
+ linkend="settings-display" />. Le pilote offrira une gamme de n&#x153;uds
+ standards allant au moins jusqu'à la résolution invité par défaut pour tous
+ les écrans invités. Dans le serveur X.Org et supérieur, le mode par défaut
+ peut être modifié en définissant la propriété de sortie VBOX_MODE sur
+ "&lt;width&gt;x&lt;height&gt;" pour tout écran invité. Quand VBoxClient et
+ les pilotes du noyau sont actifs, cela se fait automatiquement quand l'hôte
+ demande une modification du mode. Le pilote des anciennes versions ne peut
+ recevoir de nouveaux modes qu'en demandant à l'hôte les requêtes à intervalles
+ réguliers.</para>
+
+ <para>Avec les serveurs X pre-1.3, vous pouvez également ajouter vos propres
+ modes dans le fichier de configuration du serveur X. Vous devez simplement
+ les ajouter à la liste des "Modes" de la sous-section "Display" de la
+ section "Screen". Par exemple, la section affichée ici a un mode de
+ résolution personnalisé de 2048x800&#xA0;:</para>
+
+ <screen>Section "Screen"
+ Identifier "Default Screen"
+ Device "VirtualBox graphics card"
+ Monitor "Generic Monitor"
+ DefaultDepth 24
+ SubSection "Display"
+ Depth 24
+ Modes "2048x800" "800x600" "640x480"
+ EndSubSection
+EndSection</screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="cpuhotplug">
+ <title>Montage de processeur à chaud</title>
+
+ <para>Quand des machines virtuelles fonctionnent sur des systèmes
+ d'exploitation serveurs modernes, VirtualBox supporte le montage à chaud de
+ processeur.<footnote>
+ <para>Le support du montage de processeur à chaud a été introduit avec VirtualBox
+ 3.2.</para>
+ </footnote> Alors que, sur un ordinateur physique, cela voudrait dire qu'un
+ processeur peut être ajouté ou supprimé pendant que la machine fonctionne,
+ VirtualBox supporte l'ajout et le retrait de processeurs virtuels pendant que la
+ machine virtuelle est en fonction.</para>
+
+ <para>Le montage à chaud de processeur ne fonctionne qu'avec les systèmes
+ d'exploitation invités qui le supportent. Jusque-là, il ne s'applique qu'à
+ Linux et Windows Server 2008 x64 édition Data Center. Windows ne supporte que
+ l'ajout à chaud alors que Linux supporte l'ajout et le retrait à chaud. Mais
+ pour utiliser cette fonction avec plus de 8 processeurs, il faut un invité
+ Linux 64 bits.</para>
+
+ <para>Pour l'instant, le branchement à chaud d'un processeur exige d'utiliser
+ l'interface en ligne de commandes VBoxManage. Tout d'abord, il faut activer
+ le branchement à chaud pour une machine virtuelle&#xA0;:<screen>VBoxManage modifyvm "nom VM" --cpuhotplug on</screen></para>
+
+ <para>Ensuite, l'option --cpus spécifie le nombre maximum de processeurs
+ que peut avoir la machine virtuelle&#xA0;:<screen>VBoxManage modifyvm "nom VM" --cpus 8</screen>Quand
+ la VM est désactivée, vous pouvez ajouter et supprimer des processeurs virtuels
+ avec les sous-commandes modifyvm --plugcpu et --unplugcpu, qui prend le nombre
+ de processeurs virtuels en paramètre, comme ceci&#xA0;:<screen>VBoxManage modifyvm "nom VM" --plugcpu 3
+VBoxManage modifyvm "nom VM" --unplugcpu 3</screen>Remarquez que le processeur 0
+ne peut jamais être supprimé.</para>
+
+ <para>Pendant que la VM est en fonction, les processeurs peuvent être ajoutés
+ avec les commandes <computeroutput>controlvm plugcpu/unplugcpu</computeroutput>&#xA0;:<screen>VBoxManage controlvm "nom VM" plugcpu 3
+VBoxManage controlvm "nom VM" unplugcpu 3</screen></para>
+
+ <para>Voir <xref linkend="vboxmanage-modifyvm" /> et <xref
+ linkend="vboxmanage-controlvm" /> pour des détails.</para>
+
+ <para>Avec des invités Linux, ce qui suit s'applique&#xA0;: Pour empêcher
+ d'éjecter alors que le processeur est utilisé, il doit être éjecté de l'invité
+ au préalable. Les suppléments invité pour Linux contiennent un service qui
+ reçoit les événements de retrait à chaud et ils éjectent le processeur.
+ De plus, après qu'un processeur ait été ajouté à la VM, il n'est pas utilisé
+ automatiquement par Linux. Le service des suppléments invité pour Linux s'en
+ chargera s'il est installé. Sinon, vous pouvez démarrer un processeur avec
+ la commande suivante&#xA0;:<screen>echo 1 &gt; /sys/devices/system/cpu/cpu&lt;id&gt;/online</screen></para>
+ </sect1>
+
+ <sect1 id="pcipassthrough">
+ <title>PCI passthrough</title>
+
+ <para>Sur des hôtes Linux, avec un noyau assez récent (au moins la
+ version <computeroutput>2.6.31</computeroutput>), le passthrough de
+ périphériques PCI expérimental est disponible.<footnote>
+ <para>Le support expérimental pour le passthrough PCI a été introduit avec
+ VirtualBox 4.1.</para>
+ </footnote></para>
+
+ <note>
+ <para>Le module PCI passthrough est inclu comme un paquet d'extension de
+ VirtualBox, qui doit être installé séparément. Voir <xref
+ linkend="intro-installing" /> pour plus d'informations.</para>
+ </note>
+
+ <para>Cette fonction vous permettra essentiellement d'utiliser directement
+ les périphériques PCI physiques de l'hôte sur l'invité même si l'hôte n'a pas
+ de pilote pour ce périphérique particulier. Tant les cartes PCI normales que
+ certaines cartes PCI express sont supportées. L'AGP et certaines cartes PCI
+ Express ne sont pas supportées pour l'instant si elles s'appuient sur la
+ programmation d'unités GART (Graphics Address Remapping Table) pour la gestion
+ des textures vu qu'il fait plutôt des opérations non triviales avec l'association
+ de pages qui s'interfacent avec IOMMU. Il se peut que cette limite soit
+ surmontée dans les prochaines versions.</para>
+
+ <para>Pour être totalement opérationnel, le support PCI passthrough de
+ VirtualBox dépend d'une unité matérielle IOMMU qui n'est pas encore trop
+ largement disponible. Si le périphérique utilise le bus mastering (à savoir
+ qu'il fait sa propre DMA sur la mémoire de l'OS), une IOMMU est requise,
+ sinon de telles transactions DMA peuvent écrire sur la mauvaise adresse physique
+ de la mémoire car le moteur DMA du périphérique est programmé pour utiliser
+ un protocole spécifique au périphérique pour faire des transactions avec la
+ mémoire. Les fonctions IOMMU telle que la translation des unités de correspondance de
+ mémoire physique accèdent aux requêtes du périphérique en utilisant la connaissance
+ de l'adresse physique de la mémoire de l'invité via les règles de traduction
+ d'adresse physique de l'hôte.</para>
+
+ <para>La solution d'Intel pour IOMMU est vendue sous le nom "Intel Virtualization
+ Technology for Directed I/O" (VT-d), et celle d'AMD s'appelle AMD-Vi. Merci
+ donc de vérifier si le modèle de votre carte mère comporte la technologie
+ adaptée. Même si votre matériel n'a pas d'IOMMU, certaines cartes PCI peuvent
+ fonctionner (comme des adaptateurs série PCI), mais l'invité affichera un
+ avertissement au démarrage et l'exécution de la VM s'achèvera si le pilote
+ invité essaie d'activer le bus mastering de la carte.</para>
+
+ <para>Très couramment, le BIOS ou
+ l'OS hôte désactive par défaut l'IOMMU. Donc avant d'essayer de l'utiliser,
+ merci de vous assurer que
+ <orderedlist>
+ <listitem>
+ <para>Votre carte mère a une unité IOMMU.</para>
+ </listitem>
+
+ <listitem>
+ <para>Votre processeur supporte l'IOMMU.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'IOMMU est activé dans le BIOS.</para>
+ </listitem>
+
+ <listitem>
+ <para>La VM doit fonctionner avec VT-x/AMD-V et la pagination imbriquée
+ doit être activée.</para>
+ </listitem>
+
+ <listitem>
+ <para>Votre noyau Linux a été compilé avec le support IOMMU (y compris
+ la réassociation du DMA, voir l'option de compilation
+ <computeroutput>CONFIG_DMAR</computeroutput>). Le pilote PCI stub
+ (<computeroutput>CONFIG_PCI_STUB</computeroutput>) est requis aussi.</para>
+ </listitem>
+
+ <listitem>
+ <para>Votre noyau Linux reconnaît et utilise l'unité IOMMU (l'option
+ (de démarrage <computeroutput>intel_iommu=on</computeroutput> pourrait
+ être nécessaire). Cherchez DMAR et PCI-DMA dans le journal du démarrage.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Une fois que vous êtes sûre que le noyau hôte supporte l'IOMMU, la
+ prochaine étape est de sélectionner la carte PCI et de l'attacher à l'invité.
+ Pour visualiser la liste des périphériques PCI disponibles, utilisez
+ la commande <computeroutput>lspci</computeroutput>. La sortie ressemblera à
+ ceci :</para>
+
+ <screen>01:00.0 VGA compatible controller: ATI Technologies Inc Cedar PRO [Radeon HD 5450]
+01:00.1 Audio device: ATI Technologies Inc Manhattan HDMI Audio [Mobility Radeon HD 5000 Series]
+02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit
+ Ethernet controller (rev 03)
+03:00.0 SATA controller: JMicron Technology Corp. JMB362/JMB363 Serial ATA Controller (rev 03)
+03:00.1 IDE interface: JMicron Technology Corp. JMB362/JMB363 Serial ATA Controller (rev 03)
+06:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8500 GT] (rev a1)</screen>
+
+ <para>La première colonne est une adresse PCI (au format
+ <computeroutput>bus:device.function</computeroutput>). Cette adresse pourrait
+ être utilisée pour identifier les périphériques pour aller plus loin. Par
+ exemple, pour attacher un contrôleur réseau PCI du système listé ci-dessus,
+ au second bus PCI de l'invité, en périphérique 5, la fonction 0, utilisez
+ la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --pciattach 02:00.0@01:05.0</screen>
+ Pour détacher ce même périphérique, utilisez <screen>VBoxManage modifyvm "nom VM" --pcidetach 02:00.0</screen>
+ Merci de remarquer que l'hôte et l'invité pourraient librement affecter une
+ autre adresse PCI à la carte attachée à l'exécution, donc ces adresses ne
+ s'appliquent qu'à l'adresse de la carte au moment d'être attaché (hôte), et
+ lors de l'initialisation du PCI de BIOS (invité).</para>
+
+ <para>Si la machine virtuelle a un périphérique PCI attaché, certaines
+ limitations s'appliquent&#xA0;: <orderedlist>
+ <listitem>
+ <para>Seules les cartes PCI aux interruptions non partagées (telles que
+ l'utilisation de MSI sur l'hôte) sont supportées pour le moment.</para>
+ </listitem>
+
+ <listitem>
+ <para>On ne peut pas sauvegarder/restaurer de façon fiable l'état de l'invité
+ (car l'état interne de la carte PCI ne pourrait pas être récupéré).</para>
+ </listitem>
+
+ <listitem>
+ <para>La téléportation (migration en direct) ne fonctionne pas (pour la même
+ raison).</para>
+ </listitem>
+
+ <listitem>
+ <para>Aucune couche d'affectation de mémoire physique. L'hôte préaffectera
+ toute la RAM nécessaire au démarrage de la VM (vu que nous ne pouvons
+ pas relier les accès physiques au matériel à la mémoire physique).</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1>
+ <title>Webcam passthrough</title>
+
+ <sect2 id="webcam-passthrough">
+ <title>Utilisation d'une webcam hôte dans l'invité</title>
+
+ <para>VirtualBox 4.3 inclut une fonction expérimentale permettant à un
+ invité d'utiliser une webcam hôte. Ceci complète le support général du
+ passthrough USB qui était la façon dont on utilisait généralement les webcams
+ dans les anciennes versions. Le support de webcam passthrough peut gérer
+ théoriquement des sources graphiques non USB, mais cela n'a pas été testé du
+ tout.</para>
+
+ <note>
+ <para>Le module webcam passthrough fait partie du pack d'extension Oracle VM VirtualBox
+ que vous devez installer séparément. Voir <xref
+ linkend="intro-installing" /> pour plus d'informations.</para>
+ </note>
+
+ <para>Vous pouvez connecter la webcam de l'hôte à la VM en utilisant le
+ menu "Périphériques" dans la barre de menus de la VM. Le menu "Webcams"
+ contient une liste des périphériques d'entrée vidéo disponibles sur l'hôte.
+ Un clic sur le nom d'une webcam connecte ou déconnecte le périphérique
+ de l'hôte correspondant.</para>
+
+ <para>Il faut utiliser l'outil en ligne de commandes VBoxManage pour
+ activer le passthrough webcam. Merci de voir les
+ sections ci-dessous spécifiques aux hôtes pour des détails complémentaires.
+ Les commandes suivantes sont disponibles :
+ <itemizedlist>
+ <listitem><para>Obtenir une liste des webcams hôtes (ou d'autres
+ périphériques d'entrée vidéos):
+ <screen>VBoxManage list webcams</screen>
+ Le format de sortie est :
+ <screen>alias "nom lisible par l'utilisateur"chemin sur l'hôte ou identifiant</screen>
+ L'alias est utilisable en tant que raccourci dans d'autres commandes.
+ L'alias '.0' signifie le périphérique d'entrée vidéo par défaut sur
+ l'hôte, '.1', '.2', etc renvoient au premier, au deuxième, etc.
+ périphérique d'entrée vidéo. L'ordre des périphériques dépend de
+ l'hôte.
+ </para></listitem>
+ <listitem><para>Connecter une webcam à une VM en fonction :
+ <screen>VBoxManage controlvm "nom VM" webcam attach [chemin_hôte_|alias [paramètres]]</screen>
+ Ceci connectera une webcam à l'invité. Le paramètre
+ <computeroutput>settings</computeroutput> est une chaîne
+ <computeroutput>Paramètre1=Valeur1;Paramètre2=Valeur2</computeroutput>, qui
+ permet de configurer la webcam émulée. Les paramètres suivants
+ sont supportés :</para>
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>MaxFramerate</computeroutput> La vitesse maximale
+ d'envoi des plans graphiques à l'invité. Une vitesse élevée
+ demande beaucoup de puissance de processeur. Donc, parfois, il
+ vaut mieux mettre une limite plus basse. Par défaut, il n'y a
+ aucune limite et l'invité peut utiliser tous les ratios graphiques
+ supportés par la webcam de l'hôte.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>MaxPayloadTransferSize</computeroutput> Combien d'octets
+ à la fois peut envoyer la webcam à l'invité. La valeur par défaut
+ est de 3060 octets, ce qu'utilisent certaines
+ webcams. Des valeurs supérieures réduisent légèrement la charge du
+ processeur si l'invité peut utiliser des tampons plus gros. Cependant,
+ il se pourrait qu'un <computeroutput>MaxPayloadTransferSize</computeroutput>
+ ne soit pas supporté par certains invités.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem><para>Déconnecter une webcam d'une VM en fonction :
+ <screen>VBoxManage controlvm "nom VM" webcam detach [chemin_hôte|alias]</screen>
+ </para></listitem>
+ <listitem><para>Lister les webcams connectées à une VM en fonction :
+ <screen>VBoxManage controlvm "nom VM" webcam list</screen>
+ La sortie comprend le chemin ou l'alias utilisés dans la commande
+ 'webcam attach' pour chaque webcam connectée
+ </para></listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Hôtes Windows</title>
+
+ <para>Quand on déconnecte la webcam de l'hôte, la webcam émulée est
+ automatiquement déconnectée de l'invité.</para>
+ </sect2>
+
+ <sect2>
+ <title>Hôtes Mac OS X</title>
+
+ <para>OS X version 10.7 ou supérieur est requis.</para>
+
+ <para>Quand on déconnecte la webcam de l'hôte, la webcam émulée
+ reste connectée à l'invité et vous devez la déconnecter à la main en
+ utilisant la commande <computeroutput>VBoxManage controlvm "nom VM" webcam detach ...</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Hôtes Linux et Solaris</title>
+
+ <para>Quand on déconnecte la webcam de l'hôte, la webcam émulée n'est automatiquement
+ déconnectée de l'invité que si la webcam est en train de transmettre
+ de l'image. Si la webcam est inactive, vous devrez la déconnecter à la
+ main en utilisant la commande
+ <computeroutput>VBoxManage controlvm "nom VM" webcam detach ...</computeroutput>.</para>
+
+ <para>Les aliases <computeroutput>.0</computeroutput> et
+ <computeroutput>.1</computeroutput> sont associés à <computeroutput>/dev/video0</computeroutput>
+ l'alias <computeroutput>.2</computeroutput> est associé à
+ <computeroutput>/dev/video1</computeroutput> et ainsi de suite.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Configuration d'affichage avancée</title>
+
+ <sect2>
+ <title>Résolutions VESA personnalisées</title>
+
+ <para>Outre les résolutions VESA standards, le BIOS VESA de VirtualBox
+ vous permet d'ajouter jusqu'à 16 modes graphiques personnalisés qui seront
+ signalés au système d'exploitation invité. Quand on utilise des invités
+ Windows avec les suppléments invité de VirtualBox, un pilote graphique
+ personnalisé sera utilisé à la place de la solution VESA de repli, donc
+ ces informations ne s'appliquent pas.</para>
+
+ <para>Vous pouvez configurer des modes graphiques supplémentaires pour
+ chaque VM en utilisant la fonction de données supplémentaires. La clé des
+ données supplémentaires s'appelle
+ <literal>CustomVideoMode&lt;x&gt;</literal> avec <literal>x</literal> étant
+ un numéro de 1 à 16. Merci de remarquer que les modes seront lus de 1 au
+ numéro suivant non défini ou jusqu'à 16. L'exemple suivant ajoute un mode
+ graphique correspondant à la résolution d'affichage native de nombreux
+ ordinateurs notebook&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "CustomVideoMode1" "1400x1050x16"</screen>
+
+ <para>Les IDs du mode VESA pour les modes graphiques personnalisés commencent
+ à <literal>0x160</literal>. Afin d'utiliser le mode graphique personnalisé
+ ci-dessus, vous devez donner à Linux la ligne de commande suivante&#xA0;:</para>
+
+ <screen>vga = 0x200 | 0x160
+vga = 864</screen>
+
+ <para>Pour les systèmes d'exploitation ayant les suppléments invité,
+ vous pouvez définir un mode graphique personnalisé en utilisant la fonction
+ d'astuce du mode graphique.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configuration de la résolution maximum des invités quand on utilise
+ l'interface graphique</title>
+
+ <para>Quand on démarre des systèmes invités ayant les suppléments invité
+ installés en utilisant l'interface graphique (l'application normale de
+ VirtualBox), ils ne seront pas autorisés à utiliser des résolutions d'écran
+ supérieures à la taille de l'écran de l'hôte sauf si l'utilisateur les
+ redimensionne à la main en utilisant la fenêtre, en basculant en mode plein
+ écran ou transparent ou en envoyant une astuce de mode graphique utilisant
+ VBoxManage. Ce comportement est celui que la plupart des utilisateurs voudront
+ mais si vous avez d'autres besoins, il est possible de le modifier en
+ exécutant une des commandes suivantes sur la ligne de commandes&#xA0;:</para>
+
+ <screen>VBoxManage setextradata global GUI/MaxGuestResolution any</screen>
+
+ <para>supprimera toutes les limites des résolutions de l'invité.</para>
+
+ <screen>VBoxManage setextradata global GUI/MaxGuestResolution &gt;width,height&lt;</screen>
+
+ <para>spécifie à la main une résolution maximum.</para>
+
+ <screen>VBoxManage setextradata global GUI/MaxGuestResolution auto</screen>
+
+ <para>restaure les paramètres par défaut. Remarquez que ces paramètres
+ s'appliquent globalement à tous les systèmes invités, pas seulement à une
+ seule machine.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Configuration avancée du stockage</title>
+
+ <sect2 id="rawdisk">
+ <title>Utiliser un disque dur brut de l'hôte à partir de l'invité</title>
+
+ <para>À partir de la version 1.4, plutôt que d'utiliser des images de disques
+ virtuels (comme décrit en détail au <xref linkend="storage" />),
+ VirtualBox peut aussi présenter aux machines virtuelles soit des disques
+ durs entiers, soit des partitions sélectionnées, comme des disques virtuels.</para>
+
+ <para>Avec VirtualBox, ce type d'accès s'appelle "l'accès au disque dur brut"&#xA0;;
+ il permet à un système d'exploitation invité d'accéder à son disque dur
+ virtuel sans passer par le système de fichiers de l'OS hôte. La
+ différence de performance finale entre les fichiers images et les disques
+ bruts varie beaucoup selon l'overhead du système de fichiers hôte et le
+ dynamisme de la croissance des images, et enfin des stratégies de mise en
+ cache de l'OS hôte. La mise en cache concerne aussi indirectement d'autres
+ aspects tels que le comportement en cas d'échec, à savoir si le disque dur
+ contient toutes les données écrites avant un OS hôte ne plante. Consultez
+ la documentation de votre OS hôte pour les détails à ce sujet.</para>
+
+ <para><warning>
+ <para>L'accès au disque dur brut est réservé aux utilisateurs experts.
+ Une utilisation incorrecte ou d'une configuration obsolète peut provoquer
+ une <emphasis role="bold">perte totale des données</emphasis> du disque
+ physique. Surtout, <emphasis>n'essayez pas</emphasis> de démarrer la
+ partition avec le système d'exploitation hôte actuellement en fonction
+ dans un invité. Cela entraînera une grave corruption de données.</para>
+ </warning></para>
+
+ <para>L'accès au disque dur brut -- tant entiers qu'aux partitions individuelles --
+ est implémenté comme support du format image VMDK. Il s'en suit que vous
+ devrez créer un fichier image VMDK qui définit l'endroit où les données
+ seront stockées. Après avoir créé une image VMDK spéciale, vous pouvez
+ l'utiliser comme un disque virtuel normal. Par exemple, vous pouvez
+ utiliser le gestionnaire VirtualBox (<xref linkend="vdis" />) ou
+ <computeroutput>VBoxManage</computeroutput> pour affecter l'image à une machine
+ virtuelle.</para>
+
+ <sect3>
+ <title>L'accès à un disque dur physique</title>
+
+ <para>Si cette variante est la plus simple à paramétrer, vous devez avoir à
+ l'esprit que cela donnera au système d'exploitation invité un accès total
+ et direct à <emphasis>tout un disque dur</emphasis>. Si votre système
+ d'exploitation <emphasis>hôte</emphasis> démarre aussi sur ce disque,
+ merci de faire particulièrement attention à ne pas accéder à la partition
+ avec l'invité. Côté positif, le disque physique peut être repartitionné
+ de façon arbitraire sans devoir recréer le fichier image qui donne accès
+ au disque brut.</para>
+
+ <para>Pour créer une image qui représente un disque dur physique entier
+ (qui ne contiendra pas de vraies données physiques vu qu'elles seront
+ stockées sur le disque physique), sur un hôte Linux, utilisez la
+ commande<screen>VBoxManage internalcommands createrawvmdk -filename /chemin/vers/fichier.vmdk
+ -rawdisk /dev/sda</screen>Ceci crée l'image
+ <code>/chemin/vers/fichier.vmdk</code> (il doit être absolu), et toutes
+ les données seront lues et écrites à partir de <code>/dev/sda</code>.</para>
+
+ <para>Sur un hôte Windows, plutôt que de spécifier le périphérique comme
+ ci-dessus, utilisez par exemple <code>\\.\PhysicalDrive0</code>. Sur un
+ hôte Mac OS X, utilisez plutôt, par exemple, <code>/dev/disk1</code>.
+ Remarquez que sur OS X, vous ne pouvez avoir d'accès à tout un disque
+ que si aucun volume n'est monté à partir de là.</para>
+
+ <para>La création de l'image exige un accès en lecture/écriture au
+ périphérique donné. L'accès en lecture/écriture sera aussi nécessaire
+ plus tard lors de l'utilisation de l'image d'une machine virtuelle. Sur
+ certaines plateformes hôtes (comme Windows Vista et supérieur), l'accès
+ au disque brut peut être restreint et non autorisé par l'OS hôte dans
+ certaines situations.</para>
+
+ <para>Comme avec les images de disque normales, ceci n'attache pas
+ automatiquement l'image nouvellement créée à une machine virtuelle. Ceci
+ peut se faire avec, par exemple, <screen>VBoxManage storageattach WindowsXP --storagectl "IDE Controller"
+ --port 0 --device 0 --type hdd --medium /path/to/file.vmdk</screen>Quand
+ cela se fait, la machine virtuelle démarrera depuis le disque physique
+ spécifié.</para>
+ </sect3>
+
+ <sect3>
+ <title>Accès aux partitions individuelles d'un disque dur physique</title>
+
+ <para>Ce "support de partition brut" est très semblable à l'accès au
+ "disque dur complet" décrit ci-dessus. Cependant, dans ce cas, toutes les
+ informations de partitionnement seront stockées dans l'image VMDK, donc
+ vous pouvez par exemple installer un autre chargeur d'amorçage dans le
+ disque dur virtuel sans toucher les informations de partitionnement de
+ l'hôte. Alors que l'invité pourra <emphasis>voir</emphasis> toutes
+ les partitions existantes sur le disque physique, l'accès sera filtré de
+ sorte que la lecture des partitions pour lesquelles aucun accès n'est
+ autorisé ne contiendra que des zéros et que toutes les écritures dessus
+ soient ignorées.</para>
+
+ <para>Pour créer une image spéciale pour le support d'une partition brute
+ (qui contiendra une petite quantité de données, comme déjà indiqué), sur
+ un hôte Linux, utilisez la commande<screen>VBoxManage internalcommands createrawvmdk -filename /chemin/vers/fichier.vmdk
+ -rawdisk /dev/sda -partitions 1,5</screen></para>
+
+ <para>Comme vous pouvez le voir, la commande est identique à celle pour
+ l'accès "au disque dur brut", sauf le paramètre supplémentaire
+ <computeroutput>-partitions</computeroutput>. Cet exemple créerait
+ l'image <code>/chemin/vers/fichier.vmdk</code> (qui, de nouveau,
+ doit être absolu), et les partitions 1 et 5 de <code>/dev/sda</code> deviendraient
+ accessibles à l'invité.</para>
+
+ <para>VirtualBox utilise la même numérotation de partitions que l'hôte Linux.
+ Il s'en suit que les numéros donnés dans l'exemple ci-dessus se référeraient
+ respectivement à la première partition primaire et au premier lecteur
+ logique de la partition étendue.</para>
+
+ <para>Sur un hôte Windows, au lieu de spécifier le périphérique comme
+ ci-dessus, utilisez par exemple <code>\\.\PhysicalDrive0</code>. Sur un
+ hôte Mac OS X, utilisez plutôt par exemple <code>/dev/disk1</code>.
+ Remarquez que sur OS X, vous ne pouvez utiliser que des partitions non
+ montées (éjectez d'abord les volumes concernés). Les numéros de partition
+ sont les mêmes sur les hôtes Linux, Windows et Mac OS X.</para>
+
+ <para>Vous pouvez prendre les numéros dans la liste des partitions dans la
+ sortie de<screen>VBoxManage internalcommands listpartitions -rawdisk /dev/sda</screen>La
+ sortie liste les types et les tailles des partitions pour donner à
+ l'utilisateur assez d'informations pour identifier les partitions nécessaires
+ à l'invité.</para>
+
+ <para>Les images donnant accès aux partitions individuelles sont spécifiques
+ à un paramétrage de disque particulier à un hôte. Vous ne pouvez pas
+ transposer ces images à un autre hôte&#xA0;; et à chaque fois que le
+ partitionnement de l'hôte change, l'image <emphasis>doit être recréée</emphasis>.</para>
+
+ <para>La création d'une image exige l'accès en écriture sur le périphérique
+ donné. L'accès en lecture/écriture sera également nécessaire plus tard
+ pour utiliser l'image à partir d'une machine virtuelle. Si ce n'est pas
+ faisable, il existe une variante spéciale de l'accès à une partition brute
+ (disponible aujourd'hui uniquement sur les hôtes Linux) qui évite de devoir
+ donner à l'utilisateur actuel l'accès à tout le disque. Pour faire une telle
+ image, utilisez<screen>VBoxManage internalcommands createrawvmdk -filename /chemin/vers/fichier.vmdk
+ -rawdisk /dev/sda -partitions 1,5 -relative</screen>Utilisée depuis une
+ machine virtuelle, l'image ne se réfèrera pas à tout le disque mais seulement
+ aux partitions individuelles (dans l'exemple
+ <code>/dev/sda1</code> et <code>/dev/sda5</code>). Par conséquent, l'accès
+ en lecture/écriture n'est requis que pour les partitions concernées, pas
+ pour tout le disque. Mais lors de la création, un accès en lecture seule
+ à tout le disque est nécessaire pour avoir les informations de
+ partitionnement.</para>
+
+ <para>Dans certaines configurations, il peut être nécessaire de modifier
+ le code du MBR de l'image créée, par exemple pour remplacer le chargeur
+ de démarrage Linux utilisé sur l'hôte par un autre chargeur de démarrage.
+ Cela permet, par exemple, à l'invité, de démarrer directement sur Windows,
+ alors que l'hôte démarre sur Linux sur le "même" disque. Pour obtenir cela,
+ le paramètre <computeroutput>-mbr</computeroutput> vous est offert. Il
+ spécifie un nom de fichier à partir duquel il faut prendre le code du MBR.
+ La table des partitions n'est pas modifiée, donc on peut utiliser un fichier
+ MBR d'un système ayant un partitionnement totalement différent. Un exemple
+ est<screen>VBoxManage internalcommands createrawvmdk -filename /chemin/vers/fichier.vmdk
+ -rawdisk /dev/sda -partitions 1,5 -mbr winxp.mbr</screen>Le MBR modifié sera
+ stocké dans l'image, pas sur le disque hôte.</para>
+
+ <para>L'image créée peut être attachée à un contrôleur de stockage dans
+ une configuration de VM, comme d'habitude.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="changevpd">
+ <title>Configuration des vendor product data (VPD) du disque dur</title>
+
+ <para>VirtualBox signale les données liées au fabricant du produit de
+ ses disques durs virtuels, consistant dans le numéro de série du disque dur,
+ le numro de révision du firmware et du modèle. Vous pouvez modifier ces
+ données en utilisant les commandes suivantes&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" "serial"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision" "firmware"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" "model"</screen>
+
+ <para>Le numéro de série est une chaîne alphanumérique de 20 octets, la
+ Révision du firmware est une chaîne alphanumérique de 8 octets et le
+ numéro de modèle est une chaîne alphanumàrique de 40 octets. Au lieu de
+ "Port0" (qui renvoie au premier port), spécifiez le port SATA désiré du disque dur.</para>
+
+ <para>Les commandes ci-dessus s'appliquent aux machines virtuelles ayant
+ un contrôleur AHCI (SATA). Les commandes pour les machines virtuelles ayant
+ un contrôleur IDE sont&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/SerialNumber" "serial"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/FirmwareRevision" "firmware"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/ModelNumber" "model"</screen>
+
+ <para>Pour les disques durs, il est aussi possible de marquer le lecteur
+ comme ayant un média non rotationnel avec&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/NonRotational" "1"</screen>
+
+ <para>Trois paramètres supplémentaires sont nécessaires pour que les lecteurs
+ CD/DVD signalent les données produit du fabricant&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIVendorId" "vendor"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIProductId" "product"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIRevision" "revision"</screen>
+
+ <para>L'id du fabricant est une chaîne alphanumérique de 8 octets, l'id du
+ produit est une chaîne alphanumérique de 16 octets, la révision est une chaîne
+ alphanumérique de 4 octets. À la place de "Port0" (qui renvoie au premier
+ port), spécifiez le port du disque dur SATA désiré.</para>
+ </sect2>
+
+ <sect2 id="iscsi-intnet">
+ <title>Accès à des cibles iSCSI via le réseau interne</title>
+
+ <para>En fonctionnalité expérimentale, VirtualBox permet d'accéder à une
+ cible iSCSI d'une machine virtuelle en fonction configurée pour utiliser
+ le mode réseau interne. Merci de voir le <xref linkend="storage-iscsi" />&#xA0;;
+ <xref linkend="network_internal" />&#xA0;; et <xref
+ linkend="vboxmanage-storageattach" /> pour avoir des informations supplémentaires.</para>
+
+ <para>La pile IP d'accès au réseau interne doit être configurée dans la
+ machine virtuelle qui accède à la cible iSCSI. Vous devez choisir une
+ IP statique libre et une adresse MAC non utilisée par d'autres machines
+ virtuelles. Dans l'exemple ci-dessous, adaptez le nom de la machine virtuelle,
+ l'adresse MAC, la configuration IP et le nom du réseau interne ("MyIntNet")
+ selon vos besoins. Les huit commandes suivantes doivent être d'abord
+ lancées&#xA0;:<screen>VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/Trusted 1
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/Config/MAC 08:00:27:01:02:0f
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/Config/IP 10.0.9.1
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/Config/Netmask 255.255.255.0
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/LUN#0/Driver IntNet
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/Network MyIntNet
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/TrunkType 2
+VBoxManage setextradata "nom VM" VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/IsService 1</screen></para>
+
+ <para>Enfin, le disque iSCSI doit être attachée avec l'option
+ <computeroutput>--intnet</computeroutput> pour dire à l'initiateur iSCSI
+ d'utiliser le réseau interne&#xA0;:<screen>VBoxManage storageattach ... --medium iscsi
+ --server 10.0.9.30 --target iqn.2008-12.com.sun:sampletarget --intnet</screen></para>
+
+ <para>Par rapport à une configuration iSCSI "ordinaire", l'adresse IP de
+ la cible <emphasis>doit</emphasis> être spécifiée comme un adaptateur IP
+ numérique, vu qu'il n'y a pas de résolveur DNS pour le réseau interne.</para>
+
+ <para>La machine virtuelle ayant la cible iSCSI devrait être démarrée avant
+ que la VM qui l'utilise ne soit allumée. Si vous démarrez une machine
+ virtuelle qui utilise un disque iSCSI sans que la cible iSCSI ne poit allumée,
+ elle peut mettre jusqu'à 200 secondes avant de détecter cette situation.
+ La VM ne pourra pas s'allumer.</para>
+ </sect2>
+ </sect1>
+
+
+ <sect1>
+ <title>Commandes de base pour utiliser les ports série</title>
+
+ <para>À partir de la version 1.4, VirtualBox fournissait le support des
+ ports série virtuels qui, pour l'instant, était plutôt compliqué à paramétrer
+ avec la séquence des commandes
+ <computeroutput>VBoxManage setextradata</computeroutput>. Depuis la version 1.5,
+ cette façon de paramétrer les ports série n'est plus nécessaire et
+ <emphasis>obsolète.</emphasis> Pour paramétrer les ports série virtuels, utilisez
+ les méthodes décrites maintenant au <xref
+ linkend="serialports" />.<note>
+ <para>Pour être rétro-compatible, les anciennes commandes
+ <computeroutput>setextradata</computeroutput>, dont la description ci-dessous
+ est issue de l'ancienne version du manuel, <emphasis>restent valables</emphasis>
+ côté de la nouvelle façon de configurer les ports série. Il s'en suit
+ que si la première méthode de configuration des ports série ne marche
+ pas, assurez-vous que la VM en question ne contient pas d'anciennes
+ données de configuration actives telles que écrites ci-dssous.</para>
+ </note></para>
+
+ <para>L'ancienne séquence de configuration d'un port série utilisait les 6
+ commandes suivantes&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/Config/IRQ" 4
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/Config/IOBase" 0x3f8
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/LUN#0/Driver" Char
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Driver" NamedPipe
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Config/Location" "\\.\pipe\vboxCOM1"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Config/IsServer" 1</screen>
+
+ <para>Cela définit un port série dans l'invité avec les paramètres par défaut
+ de COM1 (IRQ 4, adresse E/S 0x3f8) et le paramètre
+ <computeroutput>Location</computeroutput> suppose que cette configuration est
+ utilisée sur un hôte Windows, car on utilise la syntaxe de tuyau (pipe) nommé
+ Windows. Gardez à l'esprit que sur les hôtes Windows, un tuyau nommé doit
+ toujours commencer par <computeroutput>\\.\pipe\</computeroutput>. Sur Linux,
+ s'appliquent les mêmes paramètres de configuration, sauf que vous pouvez choisir
+ le nom du chemin de <computeroutput>Location</computeroutput> plus librement.
+ Les sockets du domaine local se mettent n'importe où, pourvu que l'utilisateur
+ qui exécute VirtualBox ait le droit de créer un nouveau fichier dans le
+ répertoire. La dernière commande ci-dessus définit que VirtualBox agit comme
+ un serveur, c'est-à-dire qu'il crée lui-même le tuyau nommé au lieu de se
+ connecter à un autre qui existe déjà.</para>
+ </sect1>
+
+ <sect1 id="changenat">
+ <title>Régler le moteur NAT de VirtualBox</title>
+
+ <sect2>
+ <title>Configurer l'adresse d'une interface réseau NAT</title>
+
+ <para>En mode NAT, on affecte à l'interface réseau de l'invité une plage
+ IPv4 <computeroutput>10.0.x.0/24</computeroutput> par défaut, où
+ <computeroutput>x</computeroutput> correspond à l'instance d'une interface
+ NAT +2. Donc, <computeroutput>x</computeroutput> vaut 2 quand il n'y a
+ qu'une instance NAT d'active. Dans ce cas, l'invité se voit affecter l'adresse
+ <computeroutput>10.0.2.15</computeroutput>, la passerelle est définie sur
+ <computeroutput>10.0.2.2</computeroutput> et on peut trouver le serveur de
+ noms sur <computeroutput>10.0.2.3</computeroutput>.</para>
+
+ <para>Si, pour une raison quelconque, vous devez modifier le réseau NAT,
+ ce qui se fait avec la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage modifyvm "nom VM" --natnet1 "192.168/16"</screen>
+
+ <para>Cette commande réserverait les adresses réseaux de
+ <computeroutput>192.168.0.0</computeroutput> à
+ <computeroutput>192.168.254.254</computeroutput> à la première instance
+ réseau NAT de "nom VM". On affecterait à l'invité l'IP
+ <computeroutput>192.168.0.15</computeroutput> et on pourrait trouver la
+ passerelle par défaut sur <computeroutput>192.168.0.2</computeroutput>.</para>
+ </sect2>
+
+ <sect2 id="nat-adv-tftp">
+ <title>Configurer le serveur d'amorçage (prochain serveur) d'une interface
+ réseau NAT</title>
+
+ <para>Pour un amorçage réseau en mode NAT, VirtualBox utilise par défaut
+ le serveur TFTP inclu, qui se trouve à l'adresse 10.0.2.4. Ce comportement
+ par défaut devrait très bien fonctionner pour les scénari de démarrage
+ à distance courants. Cependant, il est possible de modifier l'IP du serveur
+ d'amorçage et l'emplacement de l'image de démarrage avec les commandes
+ suivantes&#xA0;: <screen>VBoxManage modifyvm "nom VM" --nattftpserver1 10.0.2.2
+VBoxManage modifyvm "nom VM" --nattftpfile1 /srv/tftp/boot/MyPXEBoot.pxe</screen></para>
+ </sect2>
+
+ <sect2 id="nat-adv-settings">
+ <title>Réglage des tampons TCP/IP pour NAT</title>
+
+ <para>La performance de la pile NAT de VirtualBox est souvent déterminée
+ par son interaction avec la pile TCP/IP de l'hôte et la taille de plusieurs
+ tampons (<computeroutput>SO_RCVBUF</computeroutput> et
+ <computeroutput>SO_SNDBUF</computeroutput>). Pour certaines configurations,
+ les utilisateurs pourraient vouloir ajuster la taille des tampons pour une
+ meilleure performance. Vous pouvez faire cela en utilisant les commandes
+ suivantes (les valeurs s'expriment en kilo-octets peuvent varier de
+ 8 à 1024)&#xA0;: <screen>VBoxManage modifyvm "nom VM" --natsettings1 16000,128,128,0,0</screen>
+ Cet exemple illustre le réglage des paramètres NAT. Le premier paramètre
+ est le MTU, puis la taille du tampon d'envoi du socket et la taille du
+ tampon de réception du socket, la taille initiale de la fenêtre d'envoi
+ TCP, et enfin, la taille initiale de la fenêtre de réception TCP. Remarquez
+ que la spécification de zéro revient à se rabattre sur la valeur par défaut.</para>
+
+ <para>Chacun de ces tampons a une taille par défaut de 64Ko et un MTU par
+ défaut de 1500.</para>
+ </sect2>
+
+ <sect2>
+ <title>Associer des sockets à une interface spécifique</title>
+
+ <para>Par défaut, le moteur NAT de VirtualBox dirigera les paquets TCP/IP
+ via l'interface par défaut affectée par la pile TCP/IP de l'hôte. (La
+ raison technique en est que le moteur NAT utilise des sockets pour la
+ communication.) Si, pour une raison quelconque, vous voulez changer ce
+ comportement, vous pouvez dire au moteur NAT d'associer à une interface en
+ particulier une adresse IP. Utilisez la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --natbindip1 "10.45.0.2"</screen></para>
+
+ <para>Après cela, le trafic sortant sera envoyé par interface ayant l'adresse
+ IP 10.45.0.2. Merci de vous assurer que cette interface est active et en
+ fonction avant cette affectation.</para>
+ </sect2>
+
+ <sect2 id="nat-adv-dns">
+ <title>Activer le proxy DNS en mode NAT</title>
+
+ <para>Le moteur NAT offre par défaut les mêmes serveurs DNS à l'invité
+ que ceux configurés sur l'hôte. Dans certains scenari, il peut être souhaitable
+ de cacher les IPs du serveur DNS à l'invité, par exemple quand ces informations
+ peuvent changer sur l'hôte après l'expiration de l'allocation DHCP. Dans ce cas,
+ vous pouvez dire au moteur NAT d'agir comme un proxy DNS en utilisant la
+ commande suivante&#xA0;: <screen>VBoxManage modifyvm "nom VM" --natdnsproxy1 on</screen></para>
+ </sect2>
+
+ <sect2 id="nat_host_resolver_proxy">
+ <title>Utiliser le résolveur de l'hôte comme proxy DNS en mode NAT</title>
+
+ <para>Pour résoudre les noms de réseau, le serveur DHCP du moteur NAT offre
+ une liste de serveurs DNS enregistrés de l'hôte. Si pour une raison quelconque,
+ vous devez cacher cette liste de serveurs DNS et utiliser les paramètres du
+ serveur DNS de l'hôte, forçant ainsi le moteur NAT de VirtualBox à
+ intercepter les requêtes DNS et à les rediriger sur le résolveur de l'hôte,
+ utilisez la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --natdnshostresolver1 on</screen>
+ Remarquez que ce paramètre est identique au mode proxy DNS, cependant alors
+ que le mode proxy ne redirige que les requêtes DNS sur les serveurs appropriés,
+ le mode résolveur interprètera les requêtes DNS et utilisera l'.API DNS de
+ l'hôte pour prendre les informations et les retourner à l'invité.</para>
+
+ <sect3 id="nat_host_resolver_name_intercepting">
+ <title>Résolution de noms d'hôte définie par l'utilisateur</title>
+ <para>Dans certains cas, il pourrait être utile d'intercepter le mécanisme
+ de résolution de noms, en fournissant une adresse IP définie par l'utilisateur
+ pour une requête DNS en particulier. Le mécanisme d'interception permet
+ à l'utilisateur d'associer non seulement un hôte, mais aussi des
+ domaines et même des conventions de nommage plus complexes si nécessaire.</para>
+ <para>
+ La commande suivante définit la règle d'association d'un nom et
+ d'une IP spécifiée&#xA0;:</para>
+ <screen>VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/Config/HostResolverMappings/ \
+ &lt;nom unique de la règle d'interception&gt;/HostIP" &lt;IPv4&gt;
+VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/Config/HostResolverMappings/ \
+ &lt;nom unique de la règle d'interception&gt;/HostName" &lt;nom de hôte&gt;</screen>
+ <para>La commande suivante définit une règle pour associer un échantillon de
+ nom à une IP spécifiée&#xA0;:</para>
+ <screen>VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/Config/HostResolverMappings/ \
+ &lt;nom unique de la règle d'interception&gt;/HostIP" &lt;IPv4&gt;
+VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/{pcnet,e1000}/0/LUN#0/Config/HostResolverMappings/ \
+ &lt;nom unique de la règle d'interception&gt;/HostNamePattern" &lt;échantillonhôte&gt;</screen>
+ <para>L'échantillon hôte peut inclure <computeroutput>"|", "?" et "*"</computeroutput>.</para>
+ <para>Cette exmeple montre la façon de demander au mécanisme du résolveur
+ de l'hôte de résoudre tout le domaine et probablement des mirroirs du site
+ www.blocked-site.info avec l'IP 127.0.0.1:</para>
+ <screen>VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/e1000/0/LUN#0/Config/HostResolverMappings/ \
+ all_blocked_site/HostIP" 127.0.0.1
+VBoxManage setextradata "nom VM" \
+ "VBoxInternal/Devices/e1000/0/LUN#0/Config/HostResolverMappings/ \
+ all_blocked_site/HostNamePattern" "*.blocked-site.*|*.fb.org"</screen>
+ <note><para>Le mécanisme de résolution de l'hôte devrait être activé
+ pour utiliser les règles d'association définies par l'utilisateur
+ (merci de voir <xref linkend="nat_host_resolver_proxy" /> pour plus
+ de détails).</para></note>
+ </sect3>
+ </sect2>
+
+ <sect2 id="nat-adv-alias">
+ <title>Configurer des aliases pour le moteur NAT</title>
+
+ <para>Par défaut, le c&#x153;ur de NAT utilise des alias et des ports
+ aléatoires quand il génère un alias pour la connexion. Cela fonctionne bien
+ pour la plupart des protocoles comme SSH, FTP et ainsi de suite. Mais
+ certains protocoles pourraient nécessiter un comportement plus transparent
+ ou dépendre du vrai numéro de port pour envoyer un paquet. Il est possible
+ de modifier le mode NAT avec l'interface VBoxManage avec les commandes
+ suivantes&#xA0;: <screen>VBoxManage modifyvm "nom VM" --nataliasmode1 proxyonly</screen>
+ et <screen>VBoxManage modifyvm "Linux Guest" --nataliasmode1 sameports</screen>
+ Le premier exemple désactive les alias et passe NAT en mode transparent,
+ le deuxième exemple renforce la préservation des numéros des ports. Ces
+ modes peuvent se combiner si nécessaire.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="changedmi">
+ <title>Configurer les informations DMI du BIOS</title>
+
+ <para>Vous pouvez changer les données DMI que VirtualBox fournit aux invités
+ pour une VM spécifique. Utilisez les commandes suivantes pour configurer les
+ informations DMI du BIOS. Si votre VM est configurée pour utiliser un firmware
+ EFI, vous devez remplacer <code>pcbios</code> par <code>efi</code> dans les
+ clés.</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>Informations DMI du BIOS</glossterm>
+ <glossdef>
+ <para>(type 0)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "fabricant BIOS"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "Version BIOS"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "date publication BIOS"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor" 1
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor" 2
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor" 3
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor" 4</screen>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Informations système DMI</glossterm>
+ <glossdef>
+ <para>(type 1)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "Fabricant Système"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "Produit système"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion" "Version système"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "Numéro de série système"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSKU" "System SKU"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily" "Famille système"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid"
+ "9852bf98-b83c-49db-a8de-182c42c7226b"</screen>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Informations carte mère DMI</glossterm>
+ <glossdef>
+ <para>(type 2)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardVendor" "Fabricant carte"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardProduct" "Produit carte"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardVersion" "Version carte mère"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardSerial" "Série carte"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardAssetTag" "Tag Board"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardLocInChass" "Emplacement carte"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiBoardBoardType" 10</screen>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Boîtier système DMI ou chassis</glossterm>
+ <glossdef>
+ <para>(type 3)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiChassisVendor" "Fabricant Chassis"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiChassisType" 3
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiChassisVersion" "Version Chassis"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiChassisSerial" "Série Chassis"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiChassisAssetTag" "Tag Chassis"</screen>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Informatiions DMI du processeur</glossterm>
+ <glossdef>
+ <para>(type 4)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiProcManufacturer" "GenuineIntel"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiProcVersion" "Pentium(R) III"</screen>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Chaînes OEM DMI</glossterm>
+ <glossdef>
+ <para>(type 11)</para>
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxVer" "vboxVer_1.2.3"
+VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxRev" "vboxRev_12345"</screen>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>Si une chaîne DMI n'est pas définie, la valeur par défaut de VirtualBox
+ est utilisée. Pour définir une chaîne vide, utilisez
+ <computeroutput>"&lt;EMPTY&gt;"</computeroutput>.</para>
+
+ <para>Remarquez que dans la liste ci-dessus, tous les paramètres cités
+ (DmiBIOSVendor, DmiBIOSVersion mais pas DmiBIOSReleaseMajor) sont censés
+ être des chaînes. Si la chaîne est un nombre valide, le paramètre est traité
+ comme un nombre et la VM refusera probablement de démarrer avec une erreur
+ <computeroutput>VERR_CFGM_NOT_STRING</computeroutput>. Dans ce cas, utilisez
+ <computeroutput>"string:&lt;valeur&gt;"</computeroutput>, par exemple,
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:1234"</screen></para>
+
+ <para>La modification de ces informations peut s'avérer nécessaire pour
+ donner les informations DMI de l'hôte à l'invité afin d'empêcher Windows de
+ demander une nouvelle clé du produit. Sur les hôtes Linux, vous pouvez obtenir
+ les informations de BIOS DMI avec
+ <screen>dmidecode -t0</screen>et les informations du système DMI avec
+ <screen>dmidecode -t1</screen></para>
+ </sect1>
+
+ <sect1 id="changeacpicust">
+ <title>Configurer la table ACPI personnalisée</title>
+
+ <para>VirtualBox peut être configuré pour présenter à l'invité une table ACPI
+ personnalisée. Utilisez la commande suivante pour la configurer&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/acpi/0/Config/CustomTable" "/chemin/vers/table.bin"</screen>
+
+ <para>La configuration d'une table ACPI personnalisée peut empêcher Windows
+ Vista et Windows 7 de demander une nouvelle clé du produit. Sur les hôtes
+ Linux, on peut lire une des tables de l'hôte dans
+ <filename>/sys/firmware/acpi/tables/</filename>.</para>
+ </sect1>
+
+ <sect1>
+ <title>Régler les horloges et la synchronisation du temps</title>
+
+ <sect2 id="changetscmode">
+ <title>Configurer le time stamp counter (TSC) (horodateur) de l'invité pour refléter l'heure de l'exécution</title>
+
+ <para>Par défaut, VirtualBox synchronise toutes les sources de l'heure dans
+ une source d'heure unique, l'heure monotonic de l'hôte. Cela reflète les
+ suppositions de nombreux systèmes d'exploitation invités qui s'attendent
+ à ce que toutes les sources d'heure reflètent l'heure de "la pendule". Dans
+ des circonstances spéciales, il peut être cependant utile de faire en
+ sorte que le TSC (time stamp counter) de l'invité reflète le temps effectif
+ passé à exécuter l'invité.</para>
+
+ <para>Ce mode de gestion spécial du TSC peut s'activer individuellement
+ par VM et, pour de meilleurs résultats, il ne faut l'utiliser qu'en
+ association avec la virtualisation matérielle. Pour activer ce mode,
+ utilisez la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/TM/TSCTiedToExecution" 1</screen>
+
+ <para>Pour inverser le mode de gestion TSC par défaut, utilisez&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/TM/TSCTiedToExecution"</screen>
+
+ <para>Remarquez que si vous utilisez le mode de gestion TSC spécial avec
+ un système d'exploitation invité qui est très strict quant à la cohérence
+ des sources de l'heure, il se peut que vous receviez un message d'avertissement
+ ou d'erreur lié à l'incohérence de l'heure. Cela peut aussi rendre l'heure
+ non fiable avec certains systèmes d'exploitation invités en fonction de
+ leur utilisation du TSC.</para>
+ </sect2>
+
+ <sect2 id="warpguest">
+ <title>Accélérer ou ralentir l'horloge de l'invité</title>
+
+ <para>Pour certains objectifs, il peut être utile d'accélérer ou de
+ ralentir l'horloge virtuelle de l'invité. Vous pouvez le faire comme
+ suit&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/TM/WarpDrivePercentage" 200</screen>
+
+ <para>L'exemple ci-dessus doublera la vitesse de l'horloge de l'invité
+ alors que</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/TM/WarpDrivePercentage" 50</screen>
+
+ <para>ralentira l'horloge de l'invité. Remarquez que la modification du
+ rythme de l'horloge virtuelle peut perturber l'invité et même provoquer
+ un comportement anormal de l'invité. Par exemple, une vitesse plus élevée
+ signifie des timeouts plus courts pour les périphériques virtuels,
+ provoquant un délai de réponse légèrement accru du périphérique virtuel, à
+ l'origine d'une augmentation de la charge de l'hôte qui peut provoquer des
+ échecs de l'invité. Notez aussi que tous les mécanismes de synchronisation
+ du temps essaieront souvent de resynchroniser l'heure de l'invité sur
+ l'heure de référence (qui est celle de l'hôte si les suppléments invité
+ de VirtualBox sont actifs). Donc, toutes les synchronisation du temps
+ devraient être désactivés si vous modifiez la vitesse de l'horloge invité
+ comme indiqué ci-dessus (voir <xref linkend="changetimesync" />).</para>
+ </sect2>
+
+ <sect2 id="changetimesync">
+ <title>Régler les paramètres de synchronisation du temps des suppléments
+ invité</title>
+
+ <para>Les suppléments invité de VirtualBox garantissent que l'heure du
+ système invité se synchronise avec l'heure de l'hôte. Plusieurs paramètres
+ peuvent être personnalisés. Vous pouvez définir les paramètres pour une VM
+ spécifique en utilisant la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage guestproperty set "nom VM" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE</screen>
+
+ <para>où <computeroutput>PARAMETER</computeroutput> est un des suivants&#xA0;:</para>
+
+ <para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>--timesync-interval</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Spécifie l'intervalle entre deux synchronisations de l'heure invité
+ par rapport à l'hôte. Par défaut, il est de 10000 ms (10 secondes).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-min-adjust</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Valeur absolue minimum du débit mesuré en millisecondes pour
+ faire les ajustements. Par défaut, c'est 1000 ms sur OS/2 et 100
+ ms ailleurs.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-latency-factor</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Le multiplicateur de latence de demande de temps pour calculer
+ le temps minimum ajusté dymamiquement. Il est par défaut de 8 fois,
+ ce qui veut dire en détails&#xA0;: mesurer le temps mis pour
+ déterminer l'heure de l'hôte (l'invité doit contacter le service
+ hôte de la VM, ce qui peut prendre du temps), multiplier cette
+ valeur par 8 et n'ajuster que si la différence d'heure entre l'hôte
+ et l'invité dépasse cette valeur. Sinon, ne pas ajuster l'heure.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-max-latency</computeroutput></glossterm>
+
+ <glossdef>
+ <para>La latence de demande de l'horloge max acceptée. Par défaut,
+ il s'agit de 250 ms.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-set-threshold</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Début du débit absolu donné en millisecondes, où doit commencer
+ le réglage de l'heure, plutôt que d'essayer de l'ajuster tout
+ simplement. Il s'agit par défaut de 20 minutes.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-set-start</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Définit l'heure à laquelle démarrer le service de synchro
+ du temps.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timesync-set-on-restore
+ 0|1</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Règle l'heure après que la VM a été restaurée d'un état
+ sauvegardé si vous mettez 1 en paramètre (par défaut). Désactivez-le
+ en mettant 0. Dans ce dernier cas, l'heure sera ajustée tout
+ simplement, ce qui peut mettre du temps.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Vous pouvez aussi spécifier tous ces paramètres comme options de la ligne de
+ commandes du service BoxService.</para>
+ </sect2>
+
+ <sect2 id="disabletimesync">
+
+ <title>Désactiver la synchronisation des suppléments invité</title>
+
+ <para>Une fois installés et démarrés, les suppléments invité de VirtualBox
+ essaieront de synchroniser l'heure de l'invité avec celle de l'hôte. Vous
+ pouvez l'empêcher en interdisant le service de l'invité de lire l'horloge
+ de l'hôte&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1</screen>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="vboxbowsolaris11">
+ <title>Installer le pilote du réseau bridgé alternatif sur les invités
+ Solaris 11</title>
+
+ <para>À partir de VirtualBox 4.1, VirtualBox inclut un nouveau pilote de
+ filtre réseau qui utilise la fonction Crossbow de Solaris 11. Par défaut,
+ ce nouveau pilote est installé pour les hôtes Solaris 11 (construction 159
+ ci-dessus) qui le supportent.</para>
+
+ <para>Pour obliger l'installation de l'ancien pilote de filtre réseau basé
+ sur STREAMS, exécutez en tant qu'administrateur la commande suivante avant
+ d'installer le paquet VirtualBox&#xA0;:</para>
+
+ <screen>touch /etc/vboxinst_vboxflt</screen>
+
+ <para>Pour obliger l'installation du pilote de filtre réseau basé sur Crossbow,
+ exécutez en tant qu'administrateur la commande suivante avant d'installer
+ le paquet VirtualBox&#xA0;:</para>
+
+ <screen>touch /etc/vboxinst_vboxbow</screen>
+
+ <para>Pour vérifier le pilote actuellement utilisé par VirtualBox,
+ exeécutez&#xA0;:</para>
+
+ <screen>modinfo | grep vbox</screen>
+
+ <para>Si la sortie contient "vboxbow", cela indique que VirtualBox utilise
+ le pilote de filtre réseau Crossbow, alors que le nom "vboxflt" indique que
+ l'ancien pilote de filtre réseau STREAMS est utilisé.</para>
+ </sect1>
+
+ <sect1 id="vboxbowvnictemplates">
+ <title>Échantillons de VNIC VirtualBox pour les VLANs sur les hôtes Solaris 11</title>
+
+ <para>VirtualBox supporte des échantillons VNIC (Virtual Network Interface)
+ pour configurer des VMs via des VLANs.<footnote>
+ <para>Le support du réseau bridgé basé sur Crossbow a été introduit avec
+ VirtualBox 4.1 et il exige Solaris 11 construction 159 ou supérieur.</para>
+ </footnote> Un échantillon VNIC de VirtualBox est un VNIC dont le nom
+ commence par "vboxvnic_template" (sensible à la casse).</para>
+
+ <para>Voici un exemple de la façon d'utiliser un échantillon VNIC pour
+ configurer un VLAN pour des VMs. Créez un échantillon VNIC de VirtualBox en
+ exécutant, en tant qu'administrateur&#xA0;:</para>
+
+ <screen>dladm create-vnic -t -l nge0 -v 23 vboxvnic_template0</screen>
+
+ <para>Cela créera un VNIC temporaire par l'interface "nge0" avec l'ID de VLAN
+ 23. Pour créer des échantillons VNIC résistant aux redémarrages de l'hôte,
+ sautez le paramètre <computeroutput>-t</computeroutput> dans la commande
+ ci-dessus. Vous pouvez vérifier l'état actuel des liens en utilisant&#xA0;:</para>
+
+ <para><screen>$ dladm show-link
+LINK CLASS MTU STATE BRIDGE OVER
+nge0 phys 1500 up -- --
+nge1 phys 1500 down -- --
+vboxvnic_template0 vnic 1500 up -- nge0
+
+$ dladm show-vnic
+LINK OVER SPEED MACADDRESS MACADDRTYPE VID
+vboxvnic_template0 nge0 1000 2:8:20:25:12:75 random 23</screen></para>
+
+ <para>Une fois que l'échantillon VNIC est créé, toutes les VMs ayant besoin
+ de faire partie du VLAN 23 par l'interface physique "nge0" pourront utiliser
+ le même échantillon VNIC. Cela simplifie et rend plus efficace la gestion des
+ VMs sur des VLANs car les détails du VLAN ne sont pas stockés dans la
+ configuration de chaque VM mais récupérés dans le modèle VNIC qve vous pouvez
+ modifier n'importe quand en utilisant
+ <computeroutput>dladm</computeroutput>. Outre l'ID du VLAN, des patrons de
+ VNIC peuvent être créées avec des propriétés supplémentaires telles que les
+ limites de bande passante, le fanout du processeur, etc. Reportez-vous à
+ la documentation du réseau de votre Solaris pour savoir comment faire cela.
+ Ces propriétés supplémentaires, s'il y en a, s'appliquent aussi aux VMs qui
+ utilisent l'échantillon VNIC.</para>
+ </sect1>
+
+ <sect1 id="addhostonlysolaris">
+ <title>Configurer plusieurs interfaces réseaux host-only sur les hôtes
+ Solaris</title>
+
+ <para>Par défaut, VirtualBox vous offre une interface réseau host-only
+ L'ajout de davantage d'interfaces réseaux host-only sur les hôtes Solaris
+ exige une configuration manuelle. Voici comment ajouter deux interfaces
+ réseaux host-only supplémentaires.</para>
+
+ <para>Vous devez d'abord arrêter toutes les VMs en fonction et désactiver
+ toutes les interfaces "vboxnet". Exécutez les commandes suivantes en tant
+ qu'administrateur&#xA0;:</para>
+
+ <screen>ifconfig vboxnet0 unplumb</screen>
+
+ <para>Après vous être assuré que toutes les interfaces vboxnet sont
+ désactivées, supprimez le pilote en utilisant&#xA0;:</para>
+
+ <para><screen>rem_drv vboxnet</screen>puis éditez le fichier
+ <computeroutput>/platform/i86pc/kernel/drv/vboxnet.conf</computeroutput> et
+ ajoutez une ligne pour les nouvelles interfaces&#xA0;:</para>
+
+ <para><screen>name="vboxnet" parent="pseudo" instance=1;
+name="vboxnet" parent="pseudo" instance=2;</screen>Ajoutez autant de lignes comme
+celles-ci que nécessaire et assurez-vous que le nombre d'"instance" soit implémenté
+de façon unique. Ensuite, rechargez le pilote vboxnet en utilisant&#xA0;:</para>
+
+ <para><screen>add_drv vboxnet</screen>Maintenant, activez toutes les
+ interfaces en utilisant <computeroutput>ifconfig vboxnetX plumb</computeroutput>
+ (où X peut être 0, 1 ou 2 dans ce cas) et une fois activée, vous pouvez
+ alors configurer l'interface comme n'importe quelle interface réseau.</para>
+
+ <para>Pour que les paramètres de vos nouvelles interfaces réseaux persistent
+ entre les redémarrages, vous devrez éditer les fichiers
+ <computeroutput>/etc/netmasks</computeroutput>, utilisez NWAM
+ <computeroutput>/etc/nwam/llp</computeroutput> et ajoutez les entrées adéquates
+ pour définir le masque réseau et l'IP statique de chacune de ces interfaces.
+ L'installeur de VirtualBox ne met à jour ces fichiers de configuration que
+ pour l'interface "vboxnet0" qu'il crée par défaut.</para>
+ </sect1>
+
+ <sect1 id="solariscodedumper">
+ <title>Configurer le CoreDumper sur les hôtes Solaris</title>
+
+ <para>VirtualBox est capable de produire ses propres fichiers c&#x153;ur pour
+ un débogage étendu si quelque chose ne va pas. Cela n'est actuellement
+ disponible que sur les hôtes Solaris.</para>
+
+ <para>On peut activer le CoreDumper en utilisant la commande
+ suivante&#xA0;:</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" VBoxInternal2/CoreDumpEnabled 1</screen></para>
+
+ <para>Vous pouvez spécifier le répertoire à utiliser pour y mettre les
+ fichiers c&#x153;ur avec cette commande&#xA0;:</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" VBoxInternal2/CoreDumpDir &lt;chemin-du-répertoire&gt;</screen>Assurez-vous
+ que le répertoire que vous spécifiez se trouve sur un volume ayant un espace
+ disque suffisant et où le processus VirtualBox a assez de droits pour écrire
+ des fichiers dans ce répertoire. Si vous sautez cette commande et si vous
+ ne spécifiez aucun répertoire où mettre les fichiers c&#x153;ur, le répertoire
+ actuel de l'exécutable de VirtualBox sera utilisé (ce qui échouerait
+ vraisemblablement au moment de l'écriture des c&#x153;urs car ils sont
+ protégés par des droits administrateur). Il est recommandé que vous définissiez
+ explicitement un répertoire d'envoi des fichiers c&#x153;ur.</para>
+
+ <para>Vous devez spécifier le moment où les CoreDumper de VirtualBox devraient
+ être récupérés. Cela se fait en utilisant les commandes suivantes&#xA0;:</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" VBoxInternal2/CoreDumpReplaceSystemDump 1
+VBoxManage setextradata "nom VM" VBoxInternal2/CoreDumpLive 1</screen>Vous devrez
+passer au moins une des deux commandes ci-dessus si vous avez activé les CoreDumper.</para>
+
+ <para>Le réglage de <computeroutput>CoreDumpReplaceSystemDump</computeroutput>
+ prévoit que la VM outrepasse le mécanisme c&#x153;ur de l'hôte et en cas
+ de plantage, seul le vidage VirtualBox produirait le fichier
+ c&#x153;ur.</para>
+
+ <para>Le réglage de <computeroutput>CoreDumpLive</computeroutput> demande
+ à la VM de produire des c&#x153;urs à chaque fois que le processus de la
+ VM reçoit un signal <computeroutput>SIGUSR2</computeroutput>. Après avoir
+ produit le fichier c&#x153;ur, la VM ne sera pas interrompu et continuerà
+ fonctionner. Vous pouvez ainsi récupérer des c&#x153;urs du processus de
+ la VM en utilisant&#xA0;:</para>
+
+ <para><screen>kill -s SIGUSR2 &lt;VM-process-id&gt;</screen></para>
+
+ <para>Les fichiers c&#x153;ur produits par le CoreDumper de VirtualBox ont
+ la forme <computeroutput>core.vb.&lt;ProcessName&gt;.&lt;ProcessID&gt;</computeroutput>,
+ par exemple <computeroutput>core.vb.VBoxHeadless.11321</computeroutput>.</para>
+ </sect1>
+
+ <sect1 id="guitweaks">
+ <title>Déverrouiller l'interface graphique du gestionnaire de VirtualBox</title>
+
+ <sect2>
+ <title>Personnalisation du gestionnaire de VM</title>
+
+ <para>Il existe plusieurs paramètres de personnalisation avancés pour
+ déverrouiller le gestionnaire de VirtualBox, c'est-à-dire pour supprimer
+ des fonctionnalités que l'utilisateur ne devrait pas voir.</para>
+
+ <para><screen>VBoxManage setextradata global GUI/Customizations OPTION[,OPTION...]</screen></para>
+
+ <para>où <computeroutput>OPTION</computeroutput> est un des mots-clés
+ suivants&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>noSelector</computeroutput></glossterm>
+
+ <glossdef>
+ <para>N'autorise pas le démarrage du gestionnaire de VirtualBox.
+ Ceci affichera une fenêtre contenant un vrai message d'erreur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>noMenuBar</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Les fenêtres de la VM ne contiendront pas de barre de menus.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>noStatusBar</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Les fenêtres de la VM ne contiendront pas de barre d'état.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Pour désactiver toutes les personnalisations du gestionnaire de
+ VM, faites <screen>VBoxManage setextradata global GUI/Customizations</screen></para>
+ </sect2>
+ <sect2>
+ <title>Personnalisation du sélecteur de VM</title>
+ <para>Les paramètres de données supplémentaires suivants sont disponibles,
+ par machine, pour modifier le comportement de la fenêtre du sélecteur de VM
+ selon certaines VMs :</para>
+ <screen>VBoxManage setextradata "VM name" PARAMETRE true</screen>
+ <para>où <computeroutput>PARAMETRE</computeroutput> peut être :</para>
+ <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>GUI/HideDetails</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiehe pas la configuration de VM d'une VM en particulier.
+ Les fenêtre des détails sera tout simplement vide si on sélectionne
+ cette VM.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>GUI/PreventReconfiguration</computeroutput></glossterm>
+ <glossdef>
+ <para>Ne permet pas à l'utilisateur d'ouvrir la boîte de dialogue
+ des paramètres d'une VM en particulier.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>GUI/PreventSnapshotOperations</computeroutput></glossterm>
+ <glossdef>
+ <para>Empêche de prendre des instantanés d'une VM avec la GUI, pendant
+ son exécution ou quand on coupe la VM.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>GUI/HideFromManager</computeroutput></glossterm>
+ <glossdef>
+ <para>Cache une VM en particulier dans la fenêtre du sélecteur de VM.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>GUI/PreventApplicationUpdate</computeroutput></glossterm>
+ <glossdef>
+ <para>Désactive la vérification automatique des mises à jour et
+ cache l'élément de menu correspondant.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>Merci de remarquer que ces paramètres n'empêchent pas l'utilisateur de
+ reconfigurer la VM avec <computeroutput>VBoxManage modifyvm</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configurer les entrées du menu de sélection de VM</title>
+
+ <para>Vous pouvez désactiver (c'est-à-dire inhiber) certaines entrées
+ de l'onglet des paramètres globaux dans le sélecteur de VM :</para>
+ <screen>VBoxManage setextradata global GUI/RestrictedGlobalSettingsPages OPTION[,OPTION...]</screen>
+ <para>où <computeroutput>OPTION</computeroutput> est un des mots-clés
+ suivants :</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>General</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Général</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Input</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Entrée</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Update</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Mise à jour</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Language</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Langue</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Display</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>AAffichage</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Network</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Réseau</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Extensions</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Extensions</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Proxy</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'onglet <emphasis>Proxy</emphasis> des
+ paramètres.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ <para>C'est un paramètre global. Toutes les combinaisons de ce qui précède
+ est possible. Pour restaurer le comportement par défaut, utilisez</para>
+ <screen>VBoxManage setextradata global GUI/RestrictedGlobalSettingsPages</screen>
+
+ </sect2>
+
+
+
+ <sect2>
+ <title>Configurer les entrées du menu de la fenêtre d'une VM</title>
+
+ <para>Vous pouvez désactiver (c'est-à-dire inhiber) certaines actions
+ du menu dans la fenêtre de la VM :</para>
+ <screen>VBoxManage setextradata "nom VM" GUI/RestrictedRuntimeMenus OPTION[,OPTION...]</screen>
+
+ <para>où <computeroutput>OPTION</computeroutput> est l'un des mots-clés
+ suivants :</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>All</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas de menu dans la fenêtre de la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Machine</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas le menu <emphasis>Machine</emphasis> dans la fenêtre
+ de la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>View</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas le menu <emphasis>Vue</emphasis> dans la fenêtre de la
+ VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Devices</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas le menu <emphasis>Périphéhiques</emphasis> dans la
+ fenêtre de la VM.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Help</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas le menu <emphasis>Aide</emphasis> dans la fenêtre de
+ la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Debug</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas le menu <emphasis>Débogage</emphasis> dans la fenêtre
+ de la VM. Le menu de débogage n'est visible que si on démarre la GUI avec
+ des paramètres spécial en ligne de commandes ou des paramètres de
+ variables d'environnement particulières.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist>
+
+ <para>C'est un paramètre spécifique à chaque VM. Toute combinaison de ce
+ qui précède est possible. Pour restaurer le comportement par défaut, lancez :</para>
+ <screen>VBoxManage setextradata "VM name" GUI/RestrictedRuntimeMenus</screen>
+
+ </sect2>
+ <sect2>
+ <title>Configurer les entrées de la barre d'état de la fenêtre de la VM</title>
+
+ <para>Vous pouvez désactiver (c'est-à-dire inhiber) certains éléments
+ de la barre d'état :</para>
+ <screen>VBoxManage setextradata "nom VM" GUI/RestrictedStatusBarIndicators OPTION[,OPTION...]</screen>
+
+ <para>où <computeroutput>OPTION</computeroutput> est un des mots-clés
+ suivants :</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>HardDisks</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône du disque dur dans la barre d'état de la
+ fenêtre de la VM. Par défaut, l'icône de disque dur ne s'affiche que
+ si la configuration de la VM contient un ou plusieurs disques durs.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>OpticalDisks</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône du CD dans la barre d'état de la fenêtre
+ de la VM. Par défaut, l'icône du CD ne s'affiche que si la configuration
+ de la VM contient un ou plusieurs lecteurs CD.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>FloppyDisks</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône du lecteur amovible dans la barre d'état
+ de la fenêtre de la VM. Par défaut, l'icône du lecteur amovible ne
+ s'affiche que si la configuration de la VM contient un ou plusieurs
+ lecteurs amovibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Network</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône du réseau dans la barre d'état de la
+ fenêtre de la VM. Par défaut, l'icône de réseau ne s'affiche que si la
+ configuration de la VM contient un ou plusieurs adaptateurs réseaux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>USB</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône de l'USB dans la barre d'état.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>SharedFolders</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône des dossiers dans la barre d'état.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>VideoCapture</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône de la capture vidéo dans la barre d'état.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Features</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône des fonctions du processeur dans la barre
+ d'état.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm><computeroutput>Mouse</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône de la souris dans la barre d'état.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Keyboard</computeroutput></glossterm>
+ <glossdef>
+ <para>N'affiche pas l'icône du clavier dans la barre d'état.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist>
+
+ <para>C'est un paramètre individuel à chaque VM. Toutes les combinaisons de
+ ce qui précède est possible. Si vous spécifiez toutes les options, aucune
+ icône n'est affichée dans la barre d'état de la fenêtre de la VM. Pour
+ restaurer le comportement par défaut, utilisez</para>
+ <screen>VBoxManage setextradata "VM name" GUI/RestrictedStatusBarIndicators</screen>
+ </sect2>
+
+ <sect2>
+ <title>Configurer les modes visuels de la fenêtre</title>
+
+ <para>Vous pouvez désactiver (c'est-à-dire inhiber) certains modes visuels de la VM :</para>
+ <screen>VBoxManage setextradata "nom VM" GUI/RestrictedVisualStates OPTION[,OPTION...]</screen>
+
+ <para>où <computeroutput>OPTION</computeroutput> est un des mots-clés
+ suivants :</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>Fullscreen</computeroutput></glossterm>
+ <glossdef>
+ <para>Ne pas autoriser le passage de la VM en mode plein-écran.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Seamless</computeroutput></glossterm>
+ <glossdef>
+ <para>Ne pas autoriser le passage de la VM en mode transparent.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Scale</computeroutput></glossterm>
+ <glossdef>
+ <para>Ne pas autoriser le passage de la VM en mode échelonné.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist>
+
+ <para>C'est un paramètre individuel à chaque VM. Vous pouvez combiner
+ n'importe comment ce qui précède. Pour restaurer le comportement par défaut,
+ utilisez</para>
+
+ <screen>VBoxManage setextradata "nom VM" GUI/RestrictedVisualStates</screen>
+
+ </sect2>
+
+
+ <sect2>
+ <title>Personnalisation de la touche hôte</title>
+
+ <para>Pour désactiver toutes les combinaisons de touches de l'hôte,
+ ouvrez les préférences et modifiez la touche hôte sur <emphasis>Aucune</emphasis>.
+ Cela pourrait être utile lors de l'utilisation de VirtualBox en mode
+ kiosque.</para>
+
+ <para>Pour redéfinir ou désactiver certaines actions de la touche hôte,
+ utilisez la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata global GUI/Input/MachineShortcuts "FullscreenMode=F,...."</screen>
+
+ <para>La liste suivante montre les actions possibles avec la touche
+ hôte ainsi que leur raccourci par défaut avec la touche hôte. Le paramétrage
+ d'une action sur <emphasis>Aucune</emphasis> désactivera cette action
+ de la touche hôte.</para>
+ <table>
+ <title>ignoreme</title>
+ <tgroup cols="3">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Action</emphasis></entry>
+ <entry><emphasis role="bold">Touche par défaut</emphasis></entry>
+ <entry><emphasis role="bold">Action</emphasis></entry>
+ </row>
+ <row>
+ <entry><computeroutput>TakeSnapshot</computeroutput></entry>
+ <entry>T</entry>
+ <entry>prend un instantané</entry>
+ </row>
+ <row>
+ <entry><computeroutput>TakeScreenshot</computeroutput></entry>
+ <entry>E</entry>
+ <entry>fait une impression d'écran</entry>
+ </row>
+ <row>
+ <entry><computeroutput>MouseIntegration</computeroutput></entry>
+ <entry>I</entry>
+ <entry>bascule l'intégration de la souris</entry>
+ </row>
+ <row>
+ <entry><computeroutput>TypeCAD</computeroutput></entry>
+ <entry>Del</entry>
+ <entry>envoie Ctrl+Alt+Supp</entry>
+ </row>
+ <row>
+ <entry><computeroutput>TypeCABS</computeroutput></entry>
+ <entry>Backspace</entry>
+ <entry>envoie Ctrl+Alt+Effacement</entry>
+ </row>
+ <row>
+ <entry><computeroutput>Pause</computeroutput></entry>
+ <entry>P</entry>
+ <entry>Met la VM en pause</entry>
+ </row>
+ <row>
+ <entry><computeroutput>Reset</computeroutput></entry>
+ <entry>R</entry>
+ <entry>réinitialisation (brutale) de l'invité</entry>
+ </row>
+ <row>
+ <entry><computeroutput>SaveState</computeroutput></entry>
+ <entry></entry>
+ <entry>enregistre l'état de la VM et ferme la VM</entry>
+ </row>
+ <row>
+ <entry><computeroutput>Shutdown</computeroutput></entry>
+ <entry>H</entry>
+ <entry>appuie sur le bouton ACPI (virtuel) d'alimentation</entry>
+ </row>
+ <row>
+ <entry><computeroutput>PowerOff</computeroutput></entry>
+ <entry></entry>
+ <entry>coupe la VM (sans sauvegarder son état !)</entry>
+ </row>
+ <row>
+ <entry><computeroutput>Close</computeroutput></entry>
+ <entry>Q</entry>
+ <entry>affiche la boîte de dialogue de fermeture de la VM</entry>
+ </row>
+ <row>
+ <entry><computeroutput>FullscreenMode</computeroutput></entry>
+ <entry>F</entry>
+ <entry>passe la VM en plein écran</entry>
+ </row>
+ <row>
+ <entry><computeroutput>SeamlessMode</computeroutput></entry>
+ <entry>L</entry>
+ <entry>passe la VM en mode transparent</entry>
+ </row>
+ <row>
+ <entry><computeroutput>ScaleMode</computeroutput></entry>
+ <entry>C</entry>
+ <entry>passe la VM en mode échelonné</entry>
+ </row>
+ <row>
+ <entry><computeroutput>GuestAutoResize</computeroutput></entry>
+ <entry>G</entry>
+ <entry>redimensionne automatiquement la fenêtre de l'invité</entry>
+ </row>
+ <row>
+ <entry><computeroutput>WindowAdjust</computeroutput></entry>
+ <entry>A</entry>
+ <entry>redimensionne immédiatement la fenêtre invité</entry>
+ </row>
+ <row>
+ <entry><computeroutput>PopupMenu</computeroutput></entry>
+ <entry>Home</entry>
+ <entry>affiche un menu en mode plein écran/transparent</entry>
+ </row>
+ <row>
+ <entry><computeroutput>SettingsDialog</computeroutput></entry>
+ <entry>S</entry>
+ <entry>ouvre la boîte de dialogue des paramètres de la VM</entry>
+ </row>
+ <row>
+ <entry><computeroutput>InformationDialog</computeroutput></entry>
+ <entry>N</entry>
+ <entry>affiche la fenêtre d'informations sur la VM</entry>
+ </row>
+ <row>
+ <entry><computeroutput>NetworkAdaptersDialog</computeroutput></entry>
+ <entry></entry>
+ <entry>affiche la boîte de dialogue des adaptateurs réseaux</entry>
+ </row>
+ <row>
+ <entry><computeroutput>SharedFoldersDialog</computeroutput></entry>
+ <entry></entry>
+ <entry>affiche la boîte de dialogue des dossiers partagés de la
+ VM</entry>
+ </row>
+ <row>
+ <entry><computeroutput>InstallGuestAdditions</computeroutput></entry>
+ <entry>D</entry>
+ <entry>mounte l'ISO contenant les suppléments invité</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>Pour désactiver le mode plein-écran ainsi que le mode transparent,
+ utilisez la commande suivante&#xA0;:
+ <screen>VBoxManage setextradata global GUI/Input/MachineShortcuts "FullscreenMode=None,SeamlessMode=None"</screen>
+ </para>
+
+ </sect2>
+ <sect2>
+ <title>Action quand la VM s'arrête</title>
+
+ <para>Vous pouvez interdire (c'est-à-dire inhiber) certaines actions
+ quand la VM s'arrête. Pour interdire des actions spécifiques,
+ tapez&#xA0;:</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" GUI/RestrictedCloseActions OPTION[,OPTION...]</screen></para>
+
+ <para>où <computeroutput>OPTION</computeroutput> est l'un des mots-clés
+ suivants&#xA0;:</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>SaveState</computeroutput></glossterm>
+
+ <glossdef>
+ <para>N'autorise pas l'utilisateur à sauvegarder l'état de la VM
+ quand elle s'arrête.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Shutdown</computeroutput></glossterm>
+
+ <glossdef>
+ <para>N'autorise pas l'utilisateur à éteindre la VM en envoyant
+ l'événement ACPI d'extinction à l'invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>PowerOff</computeroutput></glossterm>
+
+ <glossdef>
+ <para>N'autorise pas l'utilisateur à couper la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>PowerOffRestoringSnapshot</computeroutput></glossterm>
+
+ <glossdef>
+ <para>N'autorise pas l'utilisateur à revenir au dernier instantané
+ lors de l'extinction de la VM.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>Il s'agit d'un paramètre individuel à chaque VM. Toutes les combinaison de ce qui précède est possible. Si
+ vous spécifiez toutes les options, la VM ne pourra pas être éteinte.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vboxwebsrv-daemon">
+ <title>Démarrer le service Web de VirtualBox automatiquement</title>
+
+ <para>Le service Web de VirtualBox
+ (<computeroutput>vboxwebsrv</computeroutput>) est utilisé pour contrôler
+ VirtualBox à distance. Il est documenté en détails dans le Software
+ Development Kit (SDK) de VirtualBox&#xA0;; merci de voir <xref linkend="VirtualBoxAPI" />.
+ Comme la base client qui utilise cette interface grossit, nous avons ajouté
+ des scripts de démarrage pour les systèmes d'exploitation que nous supportons.
+ Les sections suivantes décrivent la manière de les utiliser. Le service
+ Web de VirtualBox ne démarre jamais automatiquement suite à une installation
+ standard.</para>
+
+ <sect2 id="vboxwebsrv-linux">
+ <title>Linux&#xA0;: démarrer le service web via <computeroutput>init</computeroutput></title>
+
+ <para>Sur Linux, le service web peut être démarré automatiquement au
+ démarrge de l'hôte en ajoutant les paramètres adéquats au fichier
+ <computeroutput>/etc/default/virtualbox</computeroutput>. Un paramètre est
+ obligatoire, <computeroutput>VBOXWEB_USER</computeroutput>, qui doit être
+ défini sur l'utilisateur qui démarrera alors les VMs. Les paramètres
+ du tableau ci-dessous commencent tous par <computeroutput>VBOXWEB_</computeroutput>
+ (<computeroutput>VBOXWEB_HOST</computeroutput>,
+ <computeroutput>VBOXWEB_PORT</computeroutput> etc.)&#xA0;:
+ <table>
+ <title>ignored</title>
+ <tgroup cols="3">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Paramètre</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ <entry><emphasis role="bold">Par défaut</emphasis></entry>
+ </row>
+ <row>
+ <entry><computeroutput>USER</computeroutput></entry>
+ <entry>L'utilisateur sous lequel fonctionne le service web</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>HOST</computeroutput></entry>
+ <entry>L'hôte où on doit chercher le service web</entry>
+ <entry>localhost</entry>
+ </row>
+ <row>
+ <entry><computeroutput>PORT</computeroutput></entry>
+ <entry>Le port où on doit chercher le service web</entry>
+ <entry>18083</entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_KEYFILE</computeroutput></entry>
+ <entry>Fichier de clé et du certificat du serveur, format PEM</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_PASSWORDFILE</computeroutput></entry>
+ <entry>Nom du fichier mot de passe de la clé du serveur</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_CACERT</computeroutput></entry>
+ <entry>Fichier de certificat CA, format PEM</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_CAPATH</computeroutput></entry>
+ <entry>Chemin du certificat CA</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_DHFILE</computeroutput></entry>
+ <entry>Nom du fichier DH ou longueur de la clé DH en octets</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>SSL_RANDFILE</computeroutput></entry>
+ <entry>Fichier contenant l'amorce du générateur de nombre aléatoire</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>TIMEOUT</computeroutput></entry>
+ <entry>Timout de la session en secondes&#xA0;; 0 désactive le timeout</entry>
+ <entry>300</entry>
+ </row>
+ <row>
+ <entry><computeroutput>CHECK_INTERVAL</computeroutput></entry>
+ <entry>Fréquence des vérifications des timeouts en secondes</entry>
+ <entry>5</entry>
+ </row>
+ <row>
+ <entry><computeroutput>THREADS</computeroutput></entry>
+ <entry>Nombre maximum de sessions simultanées possibles</entry>
+ <entry>100</entry>
+ </row>
+ <row>
+ <entry><computeroutput>KEEPALIVE</computeroutput></entry>
+ <entry>Nombre maximum de requêtes avant de fermer un socket</entry>
+ <entry>100</entry>
+ </row>
+ <row>
+ <entry><computeroutput>ROTATE</computeroutput></entry>
+ <entry>Nombre de fichiers journaux&#xA0;; 0 désactive la journalisation</entry>
+ <entry>10</entry>
+ </row>
+ <row>
+ <entry><computeroutput>LOGSIZE</computeroutput></entry>
+ <entry>Taille maximum d'un fichier journal en octets à récupérer</entry>
+ <entry>1Mo</entry>
+ </row>
+ <row>
+ <entry><computeroutput>LOGINTERVAL</computeroutput></entry>
+ <entry>Délai maximum en secondes pour ratraper l'enregistrement des journaux</entry>
+ <entry>1 day</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+
+ <para>La définition du paramètre <computeroutput>SSL_KEYFILE</computeroutput>
+ active le support SSL/TLS. L'utilisation de chiffrement est fortement
+ recommandée, car sans cela, tout (même les mots de passe) sera transféré
+ en clair.</para>
+ </sect2>
+
+ <sect2 id="vboxwebsrv-solaris">
+ <title>Solaris: démarrer le service web par SMF</title>
+
+ <para>Sur les hôtes Solaris, le démon du service Web de VirtualBox est
+ intégré à l'environnement SMF. Vous pouvez modifier les paramètres mais
+ vous n'êtes pas obligé si ceux par défaut ci-dessous correspondent déjà à
+ vos besoins&#xA0;:<screen>svccfg -s svc:/application/virtualbox/webservice:default setprop config/host=localhost
+svccfg -s svc:/application/virtualbox/webservice:default setprop config/port=18083
+svccfg -s svc:/application/virtualbox/webservice:default setprop config/user=root</screen></para>
+
+ <para>Le tableau de la section précédente montrant le nom des paramètres
+ et leurs réglages par défaut s'applique également à Solaris. Vous devez
+ passer le nom des paramètres en minuscules et ajouter le préfixe
+ <computeroutput>config/</computeroutput>, par exemple
+ <computeroutput>config/user</computeroutput> ou
+ <computeroutput>config/ssl_keyfile</computeroutput>. Si vous avez changé
+ quelque chose, n'oubliez pas de lancer la commande suivante pour que les
+ changements aient un effet immédiat&#xA0;:<screen>svcadm refresh svc:/application/virtualbox/webservice:default</screen></para>
+
+ <para>Si vous oubliez la commande ci-dessus, les paramètres ci-dessus
+ seront utilisés au moment de l'activation du service. Vérifiez les
+ réglages actuels des propriétés avec&#xA0;:<screen>svcprop -p config svc:/application/virtualbox/webservice:default</screen></para>
+
+ <para>Lorsque tout est bien configuré, vous pouvez démarrer le service
+ web de VirtualBox avec la commande suivante&#xA0;:<screen>svcadm enable svc:/application/virtualbox/webservice:default</screen></para>
+
+ <para>Pour plus d'informations sur SMF, merci de vous reporter à la
+ documentation de Solaris.</para>
+ </sect2>
+
+ <sect2 id="vboxwebsrv-osx">
+ <title>Mac OS X&#xA0;: démarrer le service web par launchd</title>
+
+ <para>Sur Mac OS X, on utilise launchd pour démarrer le service web de
+ VirtualBox. Vous pouvez trouver un fichier exemple de configuration dans
+ <computeroutput>$HOME/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist</computeroutput>.
+ Vous pouvez l'activer en changeant la clé
+ <computeroutput>Disabled</computeroutput> de
+ <computeroutput>true</computeroutput> en
+ <computeroutput>false</computeroutput>. Pour démarrer manuellement
+ le service, utilisez la commande suivante&#xA0;: <screen>launchctl load ~/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist</screen>
+ Pour des informations supplémentaires sur la façon dont vous pourriez
+ configurer les services de launchd, voir <literal><ulink
+ url="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.html">http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.html</ulink></literal>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vboxwatchdog">
+ <title>Surveillance VirtualBox (Watchdog)</title>
+ <para>À partir de VirtualBox 4.2, le service de ballon de mémoire, connu
+ jadis comme le <computeroutput>VBoxBalloonCtrl</computeroutput>, a été
+ renommé en VBoxWatchdog, ce qui intègre à présent plusieurs services de
+ l'hôte qui sont conçus pour fonctionner dans un environnement serveur.</para>
+
+ <para>Il s'agit des services&#xA0;: <itemizedlist>
+ <listitem>
+ <para>Contrôle du ballon de mémoire, qui prend en charge automatiquement
+ un ballon de mémoire configuré pour une VM (voir <xref linkend="guestadd-balloon" />
+ pour une présentation du jeu de ballon avec la méomire). Cela
+ est surtout utile pour les environnements serveurs où les VMs peuvent
+ solliciter de manière dynamique plus ou moins de mémoire pendant
+ leur fonctionnement.</para>
+
+ <para>Le service vérifie régulièrement le ballon d'une
+ VM et sa RAM invitée disponible et il ajuste automatiquement
+ le ballon de mémoire en l'augmentant ou le réduisant selon
+ le cas. Cette gestion ne s'applique qu'aux VMs en fonction ayant
+ installé des suppléments invité récents.</para>
+ </listitem>
+ <listitem>
+ <para>La détection d'un isolement de l'hôte, qui offre un moyen de
+ détecter si l'hôte ne peut plus atteindre une instance en particulier
+ du serveur VirtualBox et qui prend les mesures appropriées telles que
+ l'extinction, la sauvegarde de l'état actuel, voire la coupure
+ de certaines VMs.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>
+ Vous pouvez spécifier toutes les valeurs de configuration soit en ligne
+ de commande, soit par des données supplémentaires globales, tandis que
+ les valeurs en ligne de commandes ont toujours une priorité élevée si on
+ les définit. Certaines des valeurs de configuration peuvent être également
+ spécifiées sur une base individuelle par VM. Donc, l'ordre pour regarder
+ les paramètres est&#xA0;: ligne de comande, données supplémentaires pour
+ chaque VM (s'il y en a), données supplémentaires globales.
+ </para>
+
+ <sect2 id="vboxwatchdog-ballonctrl">
+ <title>Contrôle du jeu de ballon de mémoire</title>
+ <para>Le contrôle des ballons de mémoire augmente ou réduit le ballon
+ de mémoire des VMs à partir de la mémoire disponible sur les VMs et
+ de la taille maximale désirée d'un ballon.</para>
+
+ <para>Pour régler le contrôle du jeu de ballons mémoires, il faut
+ paramétrer la taille que peut atteindre une VM. Vous pouvez le faire en
+ ligne de commande avec
+ <screen>--balloon-max &lt;Taille en Mo&gt;</screen>, individuellement
+ pour chaque VM avec les données supplémentaires avec
+ <screen>VBoxManage setextradata &lt;VM-Name&gt; VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax &lt;Taille en Mo&gt;</screen>
+ ou en utilisant une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonSizeMax &lt;Taille en Mo&gt;</screen>
+ <note><para>Si vous ne spécifiez pas de taille maximale du ballon avec au
+ moins un des paramètres ci-aessus, vous ne pourrez faire aucun jeu
+ de ballon.</para></note>
+ </para>
+
+ <para>Vous pouvez régler la taille incrémentale d'un ballon, en Mo,
+ soit en ligne de commandes avec <screen>--balloon-inc &lt;Taille en Mo&gt;</screen>,
+ soit en utilisant une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonIncrementMB &lt;Taille en Mo&gt;</screen>
+ La taille d'incrémentation par défaut est de 256 Mo si vous ne spécifiez
+ rien.</para>
+
+ <para>La même chose marche pour une taille minimale incrémentée de ballon&#xA0;:
+ en ligne de commande avec
+ <screen>--balloon-dec &lt;Taille en Mo&gt;</screen> ou en utilisant
+ une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonDecrementMB &lt;Taille en Mo&gt;</screen>
+ La taille minimale incrémentale d'un ballon par défaut est de 128 Mo si
+ vous n'indiquez rien.</para>
+
+ <para>Pour définir la limite inférieure d'un ballon en Mo, c'est en
+ ligne de commande avec <screen>--balloon-lower-limit &lt;Taille en Mo&gt;</screen>
+ ou par une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/BalloonCtrl/BalloonLowerLimitMB &lt;Taille en Mo&gt;</screen>.
+ La limite inférieure par défaut est de 128 si vous n'indiquez rien.</para>
+ </sect2>
+
+ <sect2 id="vboxwatchdog-hostisln">
+ <title>Détection de l'isolement de l'hôte</title>
+ <para>Pour détecter si l'hôte va être isolé, c'est-à-dire qu'il ne va plus
+ pouvoir atteindre la session du serveur VirtualBox, l'hôte doit régler
+ une valeur dans une donnée supplémentaire pour une période de temps.
+ Si cette valeur n'est pas définie dans le délai du timeout, une fois ce
+ délai dépassé, ce qu'on appelle une réponse à l'isolement de l'hôte
+ sera envoyée aux VMs gérées. Vous pouvez contrôler les VMs gérées
+ en définissant des groupes de VM et en affectant des VMs à ces groupes.
+ Par défaut, aucun groupe n'est défini, ce qui veut dire que toutes les
+ VMs du serveur seront gérées lorsqu'aucune réponse hôte ne sera reçue
+ dans les 30 secondes.</para>
+
+ <para>Pour définir en ligne de commandes les groupes gérés par la
+ détection de l'isolement de l'hôte&#xA0;:
+ <screen>--apimon-groups=&lt;string[,stringN]&gt;</screen> ou utilisez
+ une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/Groups &lt;chaîne[,chaîneN]&gt;</screen>
+ </para>
+
+ <para>Pour définir le timeout d'isolement de l'hôte en ligne de
+ commandes&#xA0;:
+ <screen>--apimon-isln-timeout=&lt;ms&gt;</screen> ou utilisez une donnée
+ supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationTimeoutMS &lt;ms&gt;</screen>
+ </para>
+
+ <para>Pour régler la réponse d'isolement finale en ligne de commandes&#xA0;:
+ <screen>--apimon-isln-response=&lt;cmd&gt;</screen> ou en utilisant
+ une donnée supplémentaire globale avec
+ <screen>VBoxManage setextradata global VBoxInternal2/Watchdog/APIMonitor/IsolationResponse &lt;cmd&gt;</screen>
+ Les commandes de réponse suivantes sont disponibles&#xA0;:
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>none</computeroutput>, qui ne fait rien.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>pause</computeroutput>, qui met
+ en pause l'exécution d'une VM.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>poweroff</computeroutput>, qui éteint
+ la VM en appuyant sur le bouton d'alimentation de la VM. La VM
+ n'aura aucune chance de sauvegarder des données ou de lancer
+ le processus d'extinction.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>save</computeroutput>, qui enregistre
+ l'état actuel de la machine et qui coupe ensuite la VM. Si la
+ sauvegarde de l'état de la machine échoue, la VM sera mise en
+ pause.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>shutdown</computeroutput>, qui éteint
+ la VM gentiment, en envoyant un événement
+ <computeroutput>ACPI</computeroutput> d'extinction au système
+ d'exploitation de la VM. L'OS a alors une chance de s'éteindre
+ proprement.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="vboxwatchdog-moreinfo">
+ <title>Plus d'informations</title>
+ <para>Pour des options et des paramètres plus avancés comme la vérification
+ de la verbosité de la journalisation, l'aide intégrée à la ligne de commande
+ est accessible avec
+ <computeroutput>--help</computeroutput>.</para>
+ </sect2>
+
+ <sect2 id="vboxwatchdog-linux">
+ <title>Linux&#xA0;: démarrer le service watchdog via <computeroutput>init</computeroutput></title>
+
+ <para>Sur Linux, vous pouvez démarrer automatiquement le service watchdog
+ lors du démarrage de l'hôte en ajoutant les paramètres adéquats au fichier
+ <computeroutput>/etc/default/virtualbox</computeroutput>. Un paramètre est
+ obligatoire, <computeroutput>VBOXWATCHDOG_USER</computeroutput>, vous devez
+ le personnaliser avec l'utilisateur qui démarrera les VMs. Pour une rétro
+ compatibilité, vous pouvez spécifier également <computeroutput>VBOXBALLOONCTRL_USER</computeroutput>
+ Les paramètres du tableau suivant comment tous par <computeroutput>VBOXWATCHDOG_</computeroutput>
+ (<computeroutput>VBOXWATCHDOG_BALLOON_INTERVAL</computeroutput>,
+ <computeroutput>VBOXWATCHDOG_LOGSIZE</computeroutput> etc., et pour les
+ paramètres qui existaient précédemment, vous pouvez utiliser les paramètres
+ <computeroutput>VBOXBALLOONCTRL_INTERVAL</computeroutput> etc)&#xA0;:
+ <table>
+ <title>ignored</title>
+ <tgroup cols="3">
+ <tbody>
+ <row>
+ <entry><emphasis role="bold">Paramètre</emphasis></entry>
+ <entry><emphasis role="bold">Description</emphasis></entry>
+ <entry><emphasis role="bold">Réglage par défaut</emphasis></entry>
+ </row>
+ <row>
+ <entry><computeroutput>USER</computeroutput></entry>
+ <entry>L'utilisateur sous lequel fonctionne le service watchdog</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry><computeroutput>ROTATE</computeroutput></entry>
+ <entry>Nombre de fichiers journaux&#xA0;; 0 désactive la gestion des journaux</entry>
+ <entry>10</entry>
+ </row>
+ <row>
+ <entry><computeroutput>LOGSIZE</computeroutput></entry>
+ <entry>Taille maximum du fichier journal, en octets, pour faire la gestion</entry>
+ <entry>1Mo</entry>
+ </row>
+ <row>
+ <entry><computeroutput>LOGINTERVAL</computeroutput></entry>
+ <entry>Intervalle de secondes maximum en secondes pour faire la
+ rotation des journaux</entry>
+ <entry>1 day</entry>
+ </row>
+ <row>
+ <entry><computeroutput>BALLOON_INTERVAL</computeroutput></entry>
+ <entry>Intervalle de la vérification de la taille du ballon (msec)</entry>
+ <entry>30000</entry>
+ </row>
+ <row>
+ <entry><computeroutput>BALLOON_INCREMENT</computeroutput></entry>
+ <entry>Incrémentation de la taille du ballon (Mo)</entry>
+ <entry>256</entry>
+ </row>
+ <row>
+ <entry><computeroutput>BALLOON_DECREMENT</computeroutput></entry>
+ <entry>Diminution de la taille du ballon (Mo)</entry>
+ <entry>128</entry>
+ </row>
+ <row>
+ <entry><computeroutput>BALLOON_LOWERLIMIT</computeroutput></entry>
+ <entry>Limite la plus basse de la taille du ballon (Mo)</entry>
+ <entry>64</entry>
+ </row>
+ <row>
+ <entry><computeroutput>BALLOON_SAFETYMARGIN</computeroutput></entry>
+ <entry>Mémoire libre nécessaire pour diminuer la taille du ballon (Mo)</entry>
+ <entry>1024</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ </sect2>
+
+ <sect2 id="vboxwatchdog-solaris">
+ <title>Solaris&#xA0;: démarrer le service watchdog via SMF</title>
+
+ <para>Sur les hôtes Solaris, le démon du service watchdog de VirtualBox
+ est intégré à l'environnement SMF. Vous pouvez modifier les paramètres,
+ mais ce n'est pas obligatoire si ceux par défaut correspondent déjà à vos
+ besoins&#xA0;:<screen>svccfg -s svc:/application/virtualbox/balloonctrl:default setprop config/balloon_interval=10000
+svccfg -s svc:/application/virtualbox/balloonctrl:default setprop config/balloon_safetymargin=134217728</screen></para>
+
+ <para>Le tableau de la section précédente expliquant les noms des paramètres
+ et les réglages par défaut s'applique également à Solaris. Vous devez
+ passer les noms des paramètres en minuscules et ajouter un préfixe
+ <computeroutput>config/</computeroutput>, par exemple
+ <computeroutput>config/user</computeroutput> ou
+ <computeroutput>config/balloon_safetymargin</computeroutput>. Si vous
+ avez fait un changement, n'oubliez pas de lancer la commande suivante
+ pour donner aux changements un effet immédiat&#xA0;:<screen>svcadm refresh svc:/application/virtualbox/balloonctrl:default</screen></para>
+
+ <para>Si vous oubliez la commande ci-dessus, les paramètres précédents
+ seront utilisés lors de l'activation du service. Vérifiez les paramètres
+ des propriétés actuels avec&#xA0;:<screen>svcprop -p config svc:/application/virtualbox/balloonctrl:default</screen></para>
+
+ <para>Quand tout est configuré correctement, vous pouvez démarrer le service
+ watchdog de VirtualBox avec la commande suivante&#xA0;:<screen>svcadm enable svc:/application/virtualbox/balloonctrl:default</screen></para>
+
+ <para>Pour plus d'informations sur SMF, merci de vous reporter à la
+ documentation de Solaris.</para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="otherextpacks">
+ <title>Autres packs d'extension</title>
+
+ <para>À partir de VirtualBox 4.2.0, il existe un autre pack d'extension,
+ <code>VNC</code>, open source et qui remplace l'intégration précédente du
+ protocole d'accès à distance VNC. C'est du code expérimental et il ne sera
+ d'abord disponible que dans le paquet du code source de VirtualBox. Une
+ grande partie du code est issue de contributions d'utilisateurs et elle
+ n'est en aucun cas supportée par Oracle.</para>
+
+ <para>La gestion du clavier est très sérieusement limitée et seul la couche
+ du clavier américain fonctionne. Les autres plans de clavier auront au
+ moins quelques touches, qui produiront de mauvais résultats (avec des
+ effets souvent très surprenants), et pour les plans ayant des différences
+ significatives avec le plan de clavier américain, ils sont très probablement
+ inutilisables.</para>
+
+ <para>Il est possible d'installer à la fois le pack d'extension VirtualBox
+ d'Oracle VM et VNC, mais on ne peut activer qu'un module VRDE à la fois.
+ La commande suivante passe en module VRDE de VNC dans VNC&#xA0;:
+ <screen>VBoxManage setproperty vrdeextpack VNC</screen></para>
+
+ <para>La configuration de l'accès à distance fonctionne de la même façon
+ que VRDP (voir <xref linkend="vrde" />), avec quelques limites&#xA0;: VNC
+ ne supporte pas la spécification de plusieurs numéros de ports et
+ l'authentification se fait différemment. VNC ne peut gérer que l'authentification
+ par mot de passe et il n'y a aucune possibilité d'utiliser le hachage de
+ mots de passe. Il ne reste pas d'autre choix que de donner un mot de passe
+ en clair dans la configuration de VNC, ce qu'on peut faire avec la
+ commande suivante&#xA0;:<screen>VBoxManage modifyvm "nom VM" --vrdeproperty VNCPassword=secret</screen></para>
+
+ <para>L'utilisateur est responsable du secret de son mot de passe et vous
+ devriez le supprimer quand vous donnez la configuration d'une VM à quelqu'un
+ d'autre, quelle que soit la finalité. Certains serveurs VNC prétendent
+ qu'ils gardent le mot de passe "chiffré dans leur configuration. Ce n'est
+ pas du vrai chiffrement, ce ne sont que des mots de passe, ce qui est exactement aussi sécurisé que les mots de
+ passe en clair.</para>
+
+ <para>La commande suivante revient à VRDP (s'il est installé)&#xA0;:
+ <screen>VBoxManage setproperty vrdeextpack "Oracle VM VirtualBox Extension Pack"</screen></para>
+ </sect1>
+
+ <sect1 id="autostart">
+ <title>Démarrer des machines virtuelles lors de l'amorçage du système</title>
+
+ <para>À partir de VirtualBox 4.2.0, il est possible de démarrer des VMs
+ automatiquement à l'amorçage du système sur Linux, Solaris et Mac OS X,
+ pour tous les utilisateurs. </para>
+
+ <sect2 id="autostart-linux">
+ <title>Linux&#xA0;: démarrer le service autostart par <computeroutput>init</computeroutput></title>
+
+ <para>Sur Linux, le service autostart s'active en définissant deux variables
+ de <computeroutput>/etc/default/virtualbox</computeroutput>. La première
+ est <computeroutput>VBOXAUTOSTART_DB</computeroutput>, qui contient un
+ chemin absolu vers le répertoire de la base de données existante.
+ Tous les utilisateurs devraient avoir un accès en écriture au répertoire
+ pour démarrer automatiquement des machines virtuelles. En outre, vous
+ devriez donner au répertoire le bit sticky. La deuxième variable est
+ <computeroutput>VBOXAUTOSTART_CONFIG</computeroutput>, qui fait pointer le
+ service vers le fichier de configuration d'autostart utilisé lors du
+ démarrage pour déterminer s'il faut autoriser des utilisateurs individuels
+ à démarrer une VM automatiquement et les délais de démarrage de la
+ configuration.Vous pouvez mettre le fichier de configuration dans
+ <computeroutput>/etc/vbox</computeroutput> et il contient plusieurs options.
+ Une s'appelle <computeroutput>default_policy</computeroutput> qui contrôle
+ si le service autostart autorise ou non les utilisateurs non dans la liste
+ d'exceptions à démarrer des VMs. La liste d'exceptions commence par
+ <computeroutput>exception_list</computeroutput> et elle contient une liste
+ de nom d'utilisateurs séparée par des virgules.De plus, vous pouvez
+ configurer un délai de démarrage propre à chaque utilisateur pour éviter
+ une surcharge de l'hôte. Une configuration modèle est présentée ci-dessous&#xA0;:</para>
+
+ <para><screen>
+# La politique par défaut est d'interdire le démarrage d'une VM, l'autre
+# choix étant "allow".
+default_policy = deny
+
+# Bob est autorisé à démarrer des machines virtuelles, mais chacune à intervalle
+# de 10 secondes
+bob = {
+ allow = true
+ startup_delay = 10
+}
+
+# Alice n'est pas autorisée à démarrer des machines virtuelles, utile pour
+# exclure certains utilisateurs si la politique par défaut est allow.
+alice = {
+ allow = false
+}
+ </screen></para>
+
+ <para>Tout utilisateur voulant activer autostart pour des machines en
+ particulier doit définir le chemin du répertoire de la base de données
+ autostart avec <screen>VBoxManage setproperty autostartdbpath &lt;Autostart directory&gt;</screen>
+ </para>
+ </sect2>
+
+ <sect2 id="autostart-solaris">
+ <title>Solaris&#xA0;: démarrer le service autostart par SMF</title>
+
+ <para>Sur les hôtes Solaris, Le démon autostart de VirtualBox est
+ intégré à l'environnement SMF. Pour l'activer, vous devez faire pointer le
+ service vers un fichier de configuration existant qui est au même format
+ que sur Linux (voir <xref linkend="autostart-linux" />)&#xA0;:
+ <screen>svccfg -s svc:/application/virtualbox/autostart:default setprop config/config=/etc/vbox/autostart.cfg</screen>
+ </para>
+
+ <para>Quand tout est bien configuré, vous pouvez démarrer le service autostart
+ de VirtualBox avec la commande suivante&#xA0;:<screen>svcadm enable svc:/application/virtualbox/autostart:default</screen></para>
+
+ <para>Pour plus d'informations sur SMF, merci de vous reporter à la
+ documentation de Solaris.</para>
+ </sect2>
+
+ <sect2 id="autostart-osx">
+ <title>Mac OS X&#xA0;: démarrer le service autostart par launchd</title>
+
+ <para>Sur Mac OS X, on utilise launchd pour démarrer le service autostart
+ de VirtualBox. Vous pouvez trouver un fichier de configuration exemple
+ dans
+ <computeroutput>/Applications/VirtualBox.app/Contents/MacOS/org.virtualbox.vboxautostart.plist</computeroutput>.
+ Pour activer le service, copiez le fichier dans <computeroutput>/Library/LaunchDaemons</computeroutput>
+ et passez la clé <computeroutput>Disabled</computeroutput> de
+ <computeroutput>true</computeroutput> à
+ <computeroutput>false</computeroutput>. Par ailleurs, remplacez le
+ deuxième paramètre par un fichier de configuration existant et qui est
+ au même format que sur Linux (voir <xref linkend="autostart-linux" />).
+ Pour démarrer le service à la main, utilisez la commande suivante&#xA0;:
+ <screen>launchctl load /Library/LaunchDaemons/org.virtualbox.vboxautostart.plist</screen>
+ Pour avoir des informations supplémentaires sur la façon dont les
+ services launchd pourraient se configurer, voir <literal><ulink
+ url="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.html">http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.html</ulink></literal>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vboxexpertstoragemgmt">
+ <title>La gestion experte par VirtualBox du stockage</title>
+
+ <para>Si le modèle d'instantané de VirtualBox ne suffit pas, il est possible
+ d'activer un mode spécial qui permet de configurer des connexions de supports
+ de stockage pendant que la VM est en pause. L'utilisateur doit être sûr que
+ les données du disque restent cohérentes pour l'invité car, tout comme avec
+ le montage à chaud, l'invité n'est pas informé des médias déconnectés
+ ou nouvellement connectés.</para>
+
+ <para>Vous pouvez activer le mode de gestion experte du stockage pour chaque
+ VM en exécution :</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal2/SilentReconfigureWhilePaused" 1</screen>
+
+ <para>Vous pouvez reconfigurer les connexions de supports de stockage pendant
+ que la VM est en pause en utilisant :</para>
+ <screen>VBoxManage storageattach ...</screen>
+ </sect1>
+
+ <sect1 id="hostpowertweaks">
+ <title>Prise en charge des événements de gestion de l'énergie de l'hôte</title>
+
+ <para>Certains événements de la gestion d'énergie de l'hôte sont gérés par
+ VirtualBox. Le comportement dépend en fait de la plateforme :</para>
+
+ <para>
+ <glosslist>
+ <glossentry>
+ <glossterm>Mise en veille prolongée de l'hôte</glossterm>
+ <glossdef>
+ <para>
+ Cet événement est généré quand l'hôte va se mettre en veille prolongée,
+ c'est-à-dire quand l'hôte sauvegarde son état sur un support
+ de stockage non volatile puis s'éteint.
+ </para>
+ <para>
+ Cet événement n'est actuellement géré que sur les hôtes Windows
+ et Mac OS X. Quand il est généré, VirtualBox mettra en pause toutes
+ les VMs en fonction.
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>Réveil de l'hôte</glossterm>
+ <glossdef>
+ <para>
+ Cet événement est généré lorsque l'hôte sort d'une mise en veille
+ prolongée.
+ </para>
+ <para>
+ Cet événement n'est actuellement géré que sur les hôtes Windows
+ et Mac OS X.
+ Quand cet événement est généré, VirtualBox réveillera les VMs qui
+ ont été mises en pause.
+ </para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>Batterie faible</glossterm>
+ <glossdef>
+ <para>
+ Le niveau de la batterie a atteint un seuil critique (en général
+ moins de 5 pour cent de sa charge).
+ </para>
+ <para>
+ Cet événement n'est actuellement géré que sur les hôtes Windows
+ et Mac OS X.
+ Quand cet événement est généré, VirtualBox sauvegardera l'état et
+ terminera toutes les VMs pour préparer une coupure potentielle de
+ l'hôte
+ </para>
+ <para>Ce comportement est configurable. En utilisant la commande
+ suivante, aucune VM n'est sauvegardé :</para>
+ <screen>VBoxManage setextradata global "VBoxInternal2/SavestateOnBatteryLow" 0</screen>
+ <para>Il s'agit d'un réglage global ou individuel aux VMs. La valeur
+ individuelle à une VM est prioritaire sur celle globale. La commande
+ suivante sauvegardera l'état de toutes les VMs, sauf celui de la VM
+ "foo" :</para>
+ <screen>VBoxManage setextradata global "VBoxInternal2/SavestateOnBatteryLow" 1
+VBoxManage setextradata "foo" "VBoxInternal2/SavestateOnBatteryLow" 0</screen>
+ <para>La première ligne n'est pas vraiment obligatoire puisque par
+ défaut, c'est une sauvegarde qui est effectuée.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ </para>
+
+ <sect2>
+ <title>Eléments pour gérer une Guru Meditation</title>
+
+ <para>Une VM tombe en Guru Meditation si elle rencontre un problème non
+ corrigible par d'autres moyens que celui de terminer le processus. Par
+ défaut, on affiche une fenêtre de message demandant à l'utilisateur
+ d'ouvrir un rapport de bogue.</para>
+ <para>Vous pouvez configurer ce comportement :</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" GUI/GuruMeditationHandler MODE</screen></para>
+
+ <para>où <computeroutput>MODE</computeroutput> est un des mots-clés
+ qui suit :</para><glosslist>
+ <glossentry>
+ <glossterm><computeroutput>Default</computeroutput></glossterm>
+ <glossdef>
+ <para>Une fenêtre de message s'affiche. Après la confirmeation de
+ l'utilisateur, la VM se termine.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>PowerOff</computeroutput></glossterm>
+ <glossdef>
+ <para>La VM se coupe immédiatement sans afficher de fenêtre message.
+ Le fichier journal de la VM affichera des informations sur ce
+ qu'il s'est passé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>Ignore</computeroutput></glossterm>
+ <glossdef>
+ <para>On quitte la VM en mode dépannage. L'exécution s'arrête mais
+ aucune fenêtre de message ne s'affiche. Vous devez couper la VM
+ manuellement.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>C'est un paramètre individuel à chaque VM.</para>
+ </sect2>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/fr_FR/user_BasicConcepts.xml b/doc/manual/fr_FR/user_BasicConcepts.xml
new file mode 100644
index 00000000..cee18220
--- /dev/null
+++ b/doc/manual/fr_FR/user_BasicConcepts.xml
@@ -0,0 +1,1442 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="BasicConcepts">
+ <title>Configurer des machines virtuelles</title>
+
+ <para>Alors que le <xref linkend="Introduction" /> vous donnait une introduction
+ rapide à VirtualBox et sur la façon de faire marcher votre première machine
+ virtuelle, le chapitre qui suit décrit en détail la manière de configurer des
+ machines virtuelles.</para>
+
+ <para>Vous disposez d'une latitude considérable dans la décision sur le matériel
+ qui sera donné à l'invité. Le matériel virtuel peut être utilisé pour
+ communiquer avec le système hôte ou avec d'autres invités. Par exemple, si vous
+ fournissez à VirtualBox l'image d'un CD-ROM dans un fichier ISO, VirtualBox
+ peut présenter cette image à un système invité comme s'il s'agissait d'un
+ CD-ROM physique. De la même façon, vous pouvez donner à un système invité
+ un accès au réseau par sa carte réseau virtuelle, si tel est votre choix,
+ donner au système hôte, à d'autres invités ou à des ordinateurs un accès
+ Internet au système hôte.</para>
+
+ <sect1 id="guestossupport">
+ <title>Systèmes d'exploitation invités supportés</title>
+
+ <para>Comme VirtualBox est conçu pour offrir un environnement de virtualisation
+ générique pour les systèmes x86, il peut exécuter des systèmes d'exploitation
+ de tout type, même ceux non cités ici. Cependant, le principal est pour
+ nous d'optimiser VirtualBox pour les systèmes invités suivants&#xA0;:</para>
+
+ <para><glosslist>
+ <glossentry>
+ <glossterm>Windows NT 4.0</glossterm>
+
+ <glossdef>
+ <para>Toutes les versions, les éditions et les packs service sont
+ complètement supportés&#xA0;; cependant, il y a des problèmes avec
+ les anciens packs service. Nous recommandons d'installer le pack
+ service 6a. Les suppléments invité sont disponibles avec des fonctionnalités
+ limitées.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Windows 2000 / XP / Server 2003 / Vista / Server 2008 /
+ Windows 7 / Windows 8 / Server 2012</glossterm>
+
+ <glossdef>
+ <para>Toutes les versions, les éditions et les packs service sont
+ complètement supportés (y compris les versions 64 bits, sous réserve
+ des conditions préalables listées ci-dessous). Les suppléments invité
+ sont disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>DOS / Windows 3.x / 95 / 98 / ME</glossterm>
+
+ <glossdef>
+ <para>Un test restreint a été effectué. Utilisation non recommandée
+ au-delà des mécanismes d'installation primitive. Pas de suppléments
+ invité disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Linux 2.4</glossterm>
+
+ <glossdef>
+ <para>Support limité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Linux 2.6</glossterm>
+
+ <glossdef>
+ <para>Toutes les versions/éditions sont complètement supportées (32
+ bits et 64 bits). Les suppléments invité sont disponibles.</para>
+
+ <para>Nous recommandons fortement d'utiliser un noyau Linux version
+ 2.6.13 ou supérieur pour une meilleure performance.<note>
+ <para>Certaines versions du noyau Linux ont des bogues les empêchant
+ de s'exécuter dans un environnement virtuelle&#xA0;; merci de
+ voir <xref
+ linkend="ts_linux-buggy" /> pour des détails.</para>
+ </note></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Linux 3.x</glossterm>
+
+ <glossdef>
+ <para>Toutes les versions/éditions sont complètement supportées (32 bits et 64
+ bits). Les suppléments invité sont disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Solaris 10 (u6 et supérieur), Solaris 11 (y compris Solaris
+ 11 Express)</glossterm>
+
+ <glossdef>
+ <para>Complètement supporté (32 bits et 64 bits). Les suppléments
+ invité sont disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>FreeBSD</glossterm>
+
+ <glossdef>
+ <para>Exige l'activation de la virtualisation matérielle. Support
+ limité. Les suppléments invité ne sont pas encore disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>OpenBSD</glossterm>
+
+ <glossdef>
+ <para>Exige l'activation de la virtualisation matérielle. Les versions
+ 3.7 et supérieur sont supportées. Les suppléments invité ne sont pas
+ encore disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>OS/2 Warp 4.5</glossterm>
+
+ <glossdef>
+ <para>Exige l'activation de la virtualisation matérielle. Nous ne
+ supportons officiellement que MCP2&#xA0;; les autres versions d'OS/2
+ peuvent ou pas fonctionner. Les suppléments invité sont disponibles
+ avec des fonctionnalités limitées.<footnote>
+ <para>Voir <xref linkend="KnownIssues" />.</para>
+ </footnote></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Mac OS X</glossterm>
+
+ <glossdef>
+ <para>VirtualBox 3.2 a ajouté un support expérimental des invités
+ Mac OS X, mais il est fourni avec des restrictions. Merci de voir
+ la section suivante et <xref linkend="KnownIssues" />.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <sect2 id="intro-macosxguests">
+ <title>Invités Mac OS X</title>
+
+ <para>À partir de la version 3.2, VirtualBox a un support expérimental des
+ invités Mac OS X. Il vous permet d'installer et d'exécuter des
+ versions non modifiées de Mac OS X sur du matériel hôte supporté.</para>
+
+ <para>Si les solutions concurrentes offrent des modifications des
+ DVDs d'installation de Mac OS X (chargeur d'amorçage différent, fichiers
+ remplacés), VirtualBox est le premier produit à offrir une architecture PC
+ moderne qu'attend OS X sans besoin de "bidouilles".</para>
+
+ <para>Vous devriez garder en tête un certain nombre de <emphasis role="bold">problèmes
+ importants</emphasis> avant d'essayer d'installer un invité Mac OS X&#xA0;:<orderedlist>
+ <listitem>
+ <para>Mac OS X est un logiciel propriétaire sous licence et il contient
+ <emphasis role="bold">des restrictions juridiques et techniques</emphasis>
+ limitant son utilisation à certains matériels et scénarios
+ d'utilisations. Il est important que vous compreniez et que vous
+ respectiez ces restrictions.</para>
+
+ <para>En particulier, pour la plupart des versions de Mac OS X, Apple
+ interdit de les installer sur du matériel non Apple.</para>
+
+ <para>Ces restrictions juridiques sont également renforcées au niveau
+ technique. Mac OS X vérifie si il s'exécute sur du matériel Apple et
+ la plupart des DVDs fournis avec le matériel Apple vérifient même
+ le modèle exact. Ces restrictions <emphasis>ne sont pas</emphasis>
+ contournées par VirtualBox et s'appliquent toujours.</para>
+ </listitem>
+
+ <listitem>
+ <para>Seuls des <emphasis role="bold">processeurs</emphasis> connus
+ et testés par Apple sont supportés. Il s'en suit que si votre processeur
+ Intel est plus récent que la construction de Mac OS X, ou si vous
+ avez un processeur non Intel, il plantera très probablement au moment
+ du démarrage avec une exception "Unsupported CPU". Il vaut mieux
+ généralement utiliser le DVD de Mac OS X fourni avec votre matériel
+ Apple.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'installeur de Mac OS X s'attend à ce que le disque dur soit
+ <emphasis role="bold">partitionné</emphasis>, donc quand il n'offre
+ pas de sélection, vous devez lancer l'Outil de disque du menu
+ "Outils" et partitionner le disque dur. Puis, fermez l'outil de disque
+ et poursuivez l'installation.</para>
+ </listitem>
+
+ <listitem>
+ <para>En outre, comme le support de Mac OS X de VirtualBox est
+ actuellement encore expérimental, merci de vous reporter aussi à <xref linkend="KnownIssues" />.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="intro-64bitguests">
+ <title>Invités 64 bits</title>
+
+ <para>VirtualBox supporte les systèmes d'exploitation invités 64 bits,
+ même sur des systèmes d'exploitation hôtes 32 bits,<footnote>
+ <para>Le support des invités 64 bits a été ajouté avec VirtualBox 2.0&#xA0;;
+ le support des invités 64 bits sur des hôtes 32 bits a été ajouté avec
+ VirtualBox 2.1.</para>
+ </footnote> pourvu qu'existent les conditions suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Vous avez besoin d'un processeur 64 bits avec le support de la
+ virtualisation matérielle (voir <xref linkend="hwvirt" />).</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous devez activer la virtualisation matérielle pour la VM
+ particulière où vous voulez le support du 64 bits&#xA0;; la virtualisation
+ logicielle n'est pas supportée pour les VMs 64 bits.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous voulez utiliser un invité 64 bits sur un système
+ d'exploitation hôte 32 bits, vous devez aussi sélectionner un système
+ d'exploitation 64 bits pour la VM en particulier. Comme le support
+ du 64 bits sur des hôtes 32 bits implique des dépassements
+ supplémentaires, VirtualBox n'active ce support qu'à la demande expresse.</para>
+
+ <para>Sur des hôtes 64 bits (fournis en général avec le support de la
+ virtualisation matérielle), les systèmes d'exploitation invités
+ 64 bits sont toujours supportés, indépendamment des paramètres, donc
+ vous pouvez simplement installer un système d'exploitation
+ 64 bits dans l'invité.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para><warning>
+ <para>Sur tous les hôtes, vous devriez activer le <emphasis role="bold">I/O
+ APIC</emphasis> pour les machines virtuelles que vous souhaitez utiliser
+ en mode 64 bits. C'est surtout vrai pour les VMs Windows 64 bits. Voir
+ <xref linkend="settings-general-advanced" />. En outre, pour les invités
+ Windows 64 bits, vous devriez vous assurer que la VM utilise le
+ <emphasis role="bold">périphérique réseau Intel</emphasis>, car il
+ n'y a pas de support pour le pilote 64 bits pour la carte AMD PCNet&#xA0;;
+ voir <xref
+ linkend="nichardware" />.</para>
+ </warning></para>
+
+ <para>Si vous utilisez l'assistant "Créer une VM" de l'interface graphique
+ de VirtualBox, (voir <xref linkend="gui-createvm" />), VirtualBox utilisera
+ automatiquement les bons paramètres pour chaque type de système d'exploitation
+ 64 bits choisi.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Matériel émulé</title>
+
+ <para>VirtualBox virtualise presque tout le matériel de l'hôte. Selon la
+ configuration de la VM, l'invité utilisera le matériel virtuel suivant&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Périphériques d'entrée.</emphasis> Par
+ défaut, VirtualBox émule un clavier et une souris PS/2 standards. Ces
+ périphériques sont supportés par presque tous les systèmes d'exploitation
+ passés et actuels.</para>
+
+ <para>En outre, VirtualBox peut fournir des périphériques d'entrée
+ virtuels pour éviter de devoir capturer la souris et un clavier, comme
+ décrit au <xref
+ linkend="keyb_mouse_normal" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Graphisme.</emphasis> Le périphérique graphique
+ de VirtualBox (parfois cité comme périphérique VGA) n'est pas, contrairement
+ à presque tous les autres périphériques émulés, basé sur un équivalent
+ physique. C'est un périphérique de synthèse simple qui fournit une
+ compatibilité avec les VGA et plusieurs registres étendus standards
+ par la VESA BIOS Extensions (VBE).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Stockage.</emphasis> VirtualBox émule
+ actuellement l'interface ATA standard qu'on trouve dans les puces
+ PIIX3/PIIX4 Intel, l'interface SATA (AHCI) et deux adaptateurs SCSI
+ (LSI Logic et BusLogic)&#xA0;; voir <xref linkend="harddiskcontrollers" />
+ pour des détails. Bien qu'en fournir un d'entre eux suffirait pour
+ VirtualBox en lui-même, cette multitude d'adaptateurs de stockage est
+ requise pour des raisons de compatibilité avec d'autres hyperviseurs.
+ Windows est particulièrement pointilleux sur ces périphériques d'amorçage,
+ et la migration des VMs entre hyperviseurs est très difficile voire impossible
+ si les contrôleurs de stockage sont différents.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Réseau.</emphasis> Voir <xref
+ linkend="nichardware" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">USB.</emphasis> VirtualBox émule deux contrôleurs
+ d'hôte USB, EHCI et OHCI. Deux contrôleurs hôtes sont nécessaires car
+ l'OHCI ne gère que les périphériques USB à faible ou grande vitesse
+ (USB 1.x et 2.0), alors que l'EHCI ne gère que les périphériques à
+ très haute vitesse (USB 2.0 seulement). Les contrôleurs USB émulés
+ ne communiquent pas directement avec les périphériques sur l'hôte,
+ mais plutôt avec une couche USB virtuelle qui rend abstrait le protocole USB et qui
+ permet d'utiliser des périphériques USB distants.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Audio.</emphasis> Voir <xref
+ linkend="settings-audio" />.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="generalsettings">
+ <title>Paramètres généraux</title>
+
+ <para>Dans la fenêtre des paramètres, dans "Général", vous pouvez configurer
+ la plupart des aspects fondamentaux de la machine virtuelle, tels que la
+ mémoire ou du matériel essentiel. Il y a trois onglets, "Simple", "Avancé" et
+ "Description".</para>
+
+ <sect2>
+ <title>Onglet "Simple"</title>
+
+ <para>Sous l'onglet "Simple" de la catégorie Général
+ des paramètres, vous pouvez voir ces paramètres&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>Nom</glossterm>
+
+ <glossdef>
+ <para>Le nom sous lequel apparaît la VM dans la liste des VMs de la
+ fenêtre principale. Sous ce nom, VirtualBox enregistre aussi les
+ fichiers de configuration de la VM. En changeant le nom, VirtualBox
+ renomme aussi ces fichiers. Il s'en suit que vous ne pouvez utiliser
+ que des caractères autorisés par les noms de fichier de votre système
+ d'exploitation hôte.</para>
+
+ <para>Remarquez qu'en interne, VirtualBox utilise des identifieants
+ unique (UUIDs) pour identifier les machines virtuelles. Vous pouvez
+ les afficher avec <computeroutput>VBoxManage</computeroutput>.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Système d'exploitation / version</glossterm>
+
+ <glossdef>
+ <para>Le type du système d'exploitation invité qui est (ou sera)
+ installé dans la VM. C'est le même paramètre que celui spécifié dans
+ l'assistant "Nouvelle machine virtuelle", comme décrit au <xref
+ linkend="gui-createvm" />.</para>
+
+ <para>Si les paramètres par défaut d'une VM nouvellement créée sont
+ fonction du type de système d'exploitation sélectionné, la modification
+ ultérieure du type n'a aucun effet sur les paramètres de la VM&#xA0;;
+ cette valeur est donc purement informative et décorative.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ </sect2>
+
+ <sect2 id="settings-general-advanced">
+ <title>Onglet "Avancé"</title>
+
+ <para><glosslist>
+ <glossentry>
+ <glossterm>Dossier d'instantané</glossterm>
+
+ <glossdef>
+ <para>Par défaut, VirtualBox enregistre les données de l'instantané
+ avec vos autres données de configuration de VirtualBox&#xA0;; voir <xref
+ linkend="vboxconfigdata" />. Avec ce paramètre, vous pouvez spécifier
+ un autre dossier pour chaque VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Presse-papier partagé</glossterm>
+
+ <glossdef>
+ <para>Vous pouvez sélectionner ici si le presse-papier du système
+ d'exploitation invité devrait être partagé avec celui de votre hôte.
+ Si vous sélectionnez "Bidirectionnel", VirtualBox s'assurera toujours
+ que les deux presse-papier contiennent les mêmes données. Si vous
+ sélectionnez "Hôte vers invité" ou "Invité vers hôte", VirtualBox
+ copiera les données du presse-papier dans une direction.</para>
+
+ <para>Le partage du presse-papier nécessite que les suppléments
+ invité de VirtualBox soient installés. Il s'en suit que ce paramètre
+ n'a aucun effet sans cela&#xA0;; voir <xref linkend="guestadditions" /> pour
+ les détails.</para>
+
+ <para>Le presse-papier partagé est désactivé par défaut. Voir
+ <xref linkend="security_clipboard"/> pour une explication. On peut
+ changer ce paramètre n'importe quand en utilisant le menu "Presse-papier"
+ du menu "Périphériques" de la machine virtuelle.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Drag'n'Drop</glossterm>
+ <glossdef>
+ <para>Ce paramètre permet d'activer le support du glisser/déplacer : sélectionnez
+ un objet (comme un fichier) sur le bureau de l'hôte ou de l'invité
+ et copiez-le ou ouvrez-le directement sur l'invité ou l'hôte. Plusieurs
+ modes de glisser/déplacer individuels à chaque VM vous permettent
+ de restreindre les accès dans tous les sens.</para>
+
+ <para>Pour que le glisser/déplacer fonctionne, les suppléments
+ invité doivent être installés sur l'invité.</para>
+
+ <para><note><para>Le glisser/déplacer est désactivé par défaut.
+ Vous pouvez changer ce réglage n'importe quand en utilisant
+ l'icône Glisser/déplacer du menu "Périphériques" de la machine
+ virtuelle.</para></note></para>
+
+ <para>Voir <xref linkend="guestadd-dnd"/> pour plus d'informations.
+ <footnote><para>Le support expérimental du glisser/déplacer a été.
+ introduit avec VirtualBox 4.2.</para></footnote></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Média amovible&#xA0;: enregistrer les changements pendant
+ l'exécution</glossterm>
+
+ <glossdef>
+ <para>Si ceci est coché, VirtualBox enregistrera l'état des médias
+ montés entre deux exécutions d'une
+ machine virtuelle.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Mini barre d'outils</glossterm>
+
+ <glossdef>
+ <para>En mode plein écran ou transparent, VirtualBox peut afficher
+ une petite barre d'outils contenant certains éléments disponibles
+ normalement dans la barre de menus de la machine virtuelle. Cette
+ barre d'outils se réduit à une ligne grise, sauf si vous déplacez
+ la souris dessus. Avec la barre d'outils, vous pouvez basculer entre
+ le mode plein écran et transparent, contrôler l'exécution de la
+ machine ou activer certains périphériques. Si vous ne voulez pas voir
+ la barre d'outils, désactivez ce paramètre.</para>
+ <para>Le deuxième paramètre permet d'afficher la barre d'outil en haut
+ de l'écran et non en bas.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </sect2>
+
+ <sect2>
+ <title>Onglet "Description"</title>
+
+ <para>Ici, vous pouvez taper une description pour votre machine virtuelle si
+ vous le voulez. Cela n'a aucun effet sur le fonctionnement de la machine,
+ mais vous pourriez trouver cet espace utile pour y noter des choses comme
+ la configuration d'une machine virtuelle et le logiciel
+ installé dedans.</para>
+ <para>Pour insérer un saut de ligne dans la zone de texte de la
+ description, appuyez sur <emphasis>Majuscule+Entrée</emphasis>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="settings-system">
+ <title>Paramètres système</title>
+
+ <para>La catégorie "Système" regroupe divers paramètres liés au matériel de
+ base présenté à la machine virtuelle.<note>
+ <para>Le mécanisme d'activation de Microsoft Windows étant sensible aux
+ modifications matérielles, si vous modifiez les paramètres matériels pour
+ un invité Windows, certains de ces changements peuvent provoquer la
+ demande d'une nouvelle activation de Microsoft.</para>
+ </note></para>
+
+ <sect2 id="settings-motherboard">
+ <title>Onglet "Carte mère"</title>
+
+ <para>Dans l'onglet "Carte mère", vous pouvez influencer le matériel
+ virtuel qui serait normalement sur la carte mère d'un vrai ordinateur.<glosslist>
+ <glossentry>
+ <glossterm>Mémoire de base</glossterm>
+
+ <glossdef>
+ <para>Ceci définit la quantité de RAM affectée et donnée à la VM
+ quand elle est en fonction. La quantité de mémoire spécifiée
+ sera récupérée sur le système d'exploitation hôte, donc il faut
+ qu'elle soit disponible ou rendue disponible comme mémoire libre
+ sur l'hôte au moment du démarrage de la VM et elle ne sera pas
+ disponible pour l'hôte tant que la VM sera en fonction. C'est le
+ même paramètre que celui spécifié dans l'assistant "Nouvelle machine
+ virtuelle", comme décrit dans les grandes lignes du
+ <xref linkend="gui-createvm" />.</para>
+
+ <para>En général, il est possible de modifier la taille de la mémoire
+ après avoir installé le système d'exploitation invité (pourvu que
+ vous ne réduisiez pas la mémoire à une quantité telle qu'un système
+ d'exploitation ne démarrerait plus).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Ordre d'amorçage</glossterm>
+
+ <glossdef>
+ <para>Ce paramètre détermine l'ordre dans lequel le système d'exploitation
+ invité essaiera de s'amorcer sur les différents péripréhiques de
+ démarrage virtuels. Analogue à un paramètre du BIOS d'un vrai PC,
+ VirtualBox peut dire à un OS invité de démarrer sur une disquette,
+ un lecteur CD/DVD virtuel, le disque dur virtuel (chacun d'eux
+ étant défini par les autres paramètres de la VM), le réseau ou
+ aucun.</para>
+
+ <para>Si vous sélectionnez "Réseau", la VM essaiera de démarrer sur
+ le mécanisme PXE du réseau virtuel. Il faut le configurer en détail
+ en ligne de commande Merci de voir <xref
+ linkend="vboxmanage-modifyvm" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Chipset</glossterm>
+
+ <glossdef>
+ <para>Vous pouvez sélectionner ici le chipset qui sera présenté
+ à la machine virtuelle. Avant VirtualBox 4.0, PIIX3 était ici la
+ seule option disponible. Pour les systèmes d'exploitation invités
+ modernes tels que Mac OS X, ce vieux chipset n'est plus bien
+ supporté. Du coup, VirtualBox 4.0 a introduit une émulation du
+ chipset ICH9, plus moderne, qui supporte le PCI express, trois bus
+ PCI, des ponts PCI-à-PCI et des Message Signaled Interrupts
+ (MSI). Cela permet aux systèmes d'exploitation modernes de gérer
+ davantage de périphériques PCI sans besoin d'un partage d'IRQ.
+ Remarquez que le support ICH9 est expérimental et non recommandé
+ pour les systèmes d'exploitation invités qui n'en ont pas besoin.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Pointage de périphériques</glossterm>
+
+ <glossdef>
+ <para>Le périphérique de pointage par défaut des invités anciens
+ est une souris PS/2 traditionnelle. Avec <emphasis>USB tablet</emphasis>,
+ VirtualBox indique à la machine virtuelle qu'une tablette USB est
+ connectée et il envoie les événements de souris à la machine
+ virtuelle via ce périphérique. Le troisième paramètre est un
+ <emphasis>USB Multi-Touch Tablet</emphasis> adapté aux invités
+ Windows récents.</para>
+
+ <para>L'utilisation de la tablette USB virtuelle a l'avantage que les
+ mouvements sont envoyés avec une synchronisation absolue (et non
+ seulement les changements relatifs), ce qui permet à VirtualBox de
+ traduire les événements de souris dans la fenêtre de la VM en
+ événements de la tablette sans devoir "capturer" la souris dans l'invité,
+ comme décrit au
+<xref
+ linkend="keyb_mouse_normal" />. Cela rend l'utilisation de la
+ VM moins pénible même si les suppléments invité ne sont pas
+ installés.<footnote>
+ <para>La tablette USB virtuelle a été ajoutée avec VirtualBox
+ 3.2. Selon le système d'exploitation choisi, elle est maintenant
+ activée par défaut pour les nouvelles machines virtuelles.</para>
+ </footnote></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Activer I/O APIC</glossterm>
+
+ <glossdef>
+ <para>Advanced Programmable Interrupt Controllers (APICs) (contrôleurs
+ d'interruptions programmables avancés) sont des fonctionnalités
+ du matériel x86 récent ayant remplacé ces dernières années le
+ Programmable Interrupt Controllers (PICs). Avec un
+ I/O APIC, les systèmes d'exploitation peuvent utiliser plus de
+ 16 requêtes d'interruption (IRQs), évitant donc le partage d'IRQ
+ pour une meilleure fiabilité.<note>
+ <para>L'activation de I/O APIC est <emphasis>requis</emphasis>
+ pour les systèmes d'exploitation invités 64 bits, surtout Windows
+ Vista&#xA0;; il est aussi nécessaire si vous voulez utiliser
+ plus d'un processeur virtuel dans une machine virtuelle.</para>
+ </note></para>
+
+ <para>Cependant, le support des I/O APICs logiciel n'est pas fiable
+ avec les systèmes d'exploitation autres que Windows. De plus,
+ l'utilisation de I/O APIC augmente légèrement la charge de la
+ virtualisation et donc, cela ralentit un peu l'OS invité.<warning>
+ <para>Tous les systèmes d'exploitation Windows à partir de Windows
+ 2000 installent des noyaux différents en fonction de la
+ disponibilité de l'I/O APIC. Comme avec l'ACPI, l'I/O APIC
+ <emphasis>ne doit pas être désactivé après
+ l'installation</emphasis> d'un OS invité Windows. Son
+ activation après l'installation n'aura par contre aucun effet.</para>
+ </warning></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Activer l'EFI</glossterm>
+
+ <glossdef>
+ <para>Ceci active la Extensible Firmware Interface (EFI), qui remplace
+ le BIOS de base et peut servir dans certains cas d'utilisation avancée.
+ Merci de vous reporter à <xref linkend="efi" /> pour les
+ détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Horloge matérielle en temps UTC</glossterm>
+
+ <glossdef>
+ <para>Si ceci est coché, VirtualBox indiquera à l'invité l'heure
+ du système au format UTC plutôt qu'en temps local (hôte). Cela
+ change la façon dont agit l'horloge en temps réel virtuelle (RTC)
+ et peut être utile pour des systèmes d'exploitation invité de type
+ Unix qui attendent généralement une horloge matérielle en UTC.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist></para>
+
+ <para>De plus, vous pouvez désactiver <emphasis role="bold">Advanced
+ Configuration and Power Interface (ACPI)</emphasis> que VirtualBox présente
+ par défaut au système d'exploitation invité. L'ACPI est le standard industriel
+ actuel permettant au système d'exploitation de reconnaître le matériel, de
+ configurer les cartes mères et d'autres périphériques, et de gérer l'énergie.
+ Comme tous les PCs modernes contiennent cette fonctionnalité et Windows
+ et Linux le supportent depuis des années, il est activé par défaut dans
+ VirtualBox. On ne peut le désactiver qu'en ligne de commande&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm" />.<warning>
+ <para>Tous les systèmes d'exploitation Windows à partir de Windows 2000
+ installent des noyaux différents selon que l'ACPI est activé, donc l'ACPI
+ <emphasis>ne doit pas être désactivé</emphasis> après l'installation
+ d'un OS invité Windows. Son activation après l'installation n'aura
+ par contre aucun effet.</para>
+ </warning></para>
+ </sect2>
+
+ <sect2 id="settings-processor">
+ <title>Onglet "Processeur"</title>
+
+ <para>Dans l'onglet "Processeur", vous pouvez définir le nombre de
+ <emphasis
+ role="bold">c&#x153;urs de processeur</emphasis> virtuels que devrait voir
+ le système d'exploitation invité. À partir de la version 3.0, VirtualBox
+ supporte le symmetrical multiprocessing (SMP) et peut présenter jusqu'à 32
+ c&#x153;urs de processeur virtuels à chaque machine virtuelle.</para>
+
+ <para>Vous ne devriez quand même pas configurer une machines virtuelles
+ pour utiliser plus de c&#x153;urs de processeur que vous n'en avez physiquement
+ (coeurs réels, pas d'hyperthreads).</para>
+
+ <para>Dans cet onglet, vous pouvez aussi définir le <emphasis role="bold">"CPU execution cap"</emphasis>.
+ Ce paramètre limite la quantité de temps qu'un processeur hôte peut donner
+ pour émuler un processeur virtuel. Le réglage par défaut est de 100%
+ ce qui veut dire qu'il n'y a aucune limite. Un réglage à 50% implique
+ qu'un seul processeur peut utiliser jusqu'à 50% d'un seul processeur hôte.
+ Remarquez que la limitation du temps d'exécution des processeurs virtuels
+ peut provoquer des problèmes de timing dans l'invité.</para>
+
+ <para>Par ailleurs, le paramètre <emphasis role="bold">"Activer PAE/NX"</emphasis>
+ détermine si les possibilités PAE et NX du processeur hôte seront proposées
+ à la machine virtuelle. PAE signifie "Physical Address
+ Extension". Normalement, s'il est activé et supporté par le système d'exploitation,
+ même un processeur x86 32 bits peut accéder à plus de 4 Go de RAM. Cela
+ est rendu possible par l'ajout de 4 bits aux adresses mémoire, de sorte qu'avec
+ 36 bits, on peut gérer jusqu'à 64 Go. Certains systèmes d'exploitation
+ (tels qu'Ubuntu Server)exigent le support PAE du processeur et ne peuvent
+ pas fonctionner dans une machine virtuelle sans cela.</para>
+
+ <para>Sur des machines virtuelles qui exécutent des systèmes d'exploitation serveurs modernes,
+ VirtualBox supporte aussi le branchement à chaud du processeur. Pour des
+ détails là-dessus, merci de vous reporter à <xref linkend="cpuhotplug" />.</para>
+ </sect2>
+
+ <sect2>
+ <title>Onglet "Accélération"</title>
+
+ <para>Dans cet onglet, vous pouvez déterminer si VirtualBox devrait utiliser
+ les extensions de virtualisation matérielle que peut supporter votre hôte
+ et comment. C'est le cas avec la plupart des processeurs fabriqués après 2006.</para>
+
+ <para>Vous pouvez sélectionner individuellement pour chaque machine virtuelle
+ si VirtualBox devrait utiliser la virtualisation logicielle ou matérielle.<footnote>
+ <para>Avant VirtualBox version 2.2, la virtualisation logicielle était
+ par défaut&#xA0;; à partir de la version 2.2, VirtualBox activera la
+ virtualisation matérielle par défaut pour les nouvelles machines
+ virtuelles créées. (Les machines virtuelles existantes ne sont pas
+ automatiquement modifiées pour des raisons de
+ compatibilité, et vous pouvez bien sûr modifier le réglage par défaut
+ pour chaque machine virtuelle.)</para>
+ </footnote></para>
+
+ <para>Dans la plupart des cas, les paramètres défaut conviendront&#xA0;;
+ VirtualBox aura choisi des options par défaut en fonction du système
+ d'exploitation que vous avez sélectionné quand vous avez créé la machine
+ virtuelle. Toutefois, dans certaines situations, il se peut que vous vouliez
+ modifier ces réglages par défaut préconfigurés.</para>
+
+ <para>Il se peut que les utilisateurs avancés s'intéressent aux détails
+ techniques sur la virtualisation logicielle Vs matérielle&#xA0;; merci
+ de voir <xref
+ linkend="hwvirt" />.</para>
+
+ <para>Si votre processeur hôte supporte les fonctions <emphasis role="bold">pagination
+ nested</emphasis> (AMD-V) ou <emphasis role="bold">EPT</emphasis> (Intel
+ VT-x), vous pouvez compter sur une augmentation significative des
+ performances en activant la pagination nested en plus de la virtualisation
+ matérielle. Pour des détails techniques, voir <xref linkend="imbriquéepaging" />.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="settings-display">
+ <title>Paramètres d'affichage</title>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>Taille de la mémoire graphique</glossterm>
+
+ <glossdef>
+ <para>Ceci définit la taille de la mémoire fournie par la carte
+ graphique virtuelle et disponible pour l'invité, en Mo. Comme avec la
+ mémoire globale, la quantité spécifiée sera affectée à partir de la
+ mémoire résidente de l'hôte. À partir de la quantité de mémoire graphique,
+ certaines résolutions et profondeur des couleurs peuvent être disponibles.</para>
+
+ <para>L'interface graphique affichera un avertissement si la quantité
+ de mémoire graphique est trop petite pour pouvoir passer la VM
+ en mode plein écran. La valeur minimum dépend du nombre d'écrans virtuels,
+ de la résolution de l'écran et de la profondeur des couleurs sur l'affichage
+ hôte, ainsi que de l'activation de <emphasis>l'accélération 3D</emphasis>
+ et de <emphasis>l'accélération graphique 2D</emphasis>. Une ébauche
+ d'estimation est <emphasis>profondeur des couleurs</emphasis> / 8) x
+ <emphasis>nombre de pixels verticalement</emphasis> x
+ <emphasis>nombre de pixels horizontalement</emphasis> x
+ <emphasis>nombre d'écrans</emphasis> = <emphasis>nombre de bytes</emphasis>.
+ Comme indiqué ci-dessus, de la mémoire supplémentaire pourrait être nécessaire
+ pour définir les accélération´s d'affichage activées.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Nombre d'écrans</glossterm>
+
+ <glossdef>
+ <para>Avec ce paramètre, VirtualBox peut fournir plusieurs écrans
+ virtuels à une machine virtuelle. Si un système d'exploitation invité
+ (tel que Windows) supporte le rattachement à plusieurs écrans, VirtualBox
+ peut affirmer que plusieurs écrans virtuels sont présents.<footnote>
+ <para>Le support multi-écrans a été ajouté avec VirtualBox
+ 3.2.</para>
+ </footnote> Jusqu'à 8 écrans virtuels peuvent ainsi être supportés.</para>
+
+ <para>La sortie de plusieurs écrans virtuels peut être affichée sur l'hôte
+ dans plusieurs fenêtres de VM placées côte à côte.</para>
+
+ <para>Néanmoins, en mode plein écran ou transparent, ils utiliseront
+ les écrans physiques disponibles connectés à l'hôte. Il s'en suit que
+ pour que les modes plein écran et transparent fonctionnent avec plusieurs
+ écrans, vous aurez besoin d'au moins autant d'écrans physiques que
+ d'écrans virtuels configurés, sans quoi VirtualBox renverra une erreur.
+ Vous pouvez configurer la relation entre les écrans hôte et invité
+ en utilisant le menu Vue, en appuyant sur Touche hôte + Origine pendant
+ que vous êtes en mode plein écran ou transparent.</para>
+
+ <para>Merci de voir aussi <xref linkend="KnownIssues" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Activer l'accélération 3D</glossterm>
+
+ <glossdef>
+ <para>Si vous avez installé les Suppléments invité sur une machine
+ virtuelle, vous pouvez ici sélectionner si l'invité devrait supporter
+ la vidéo accélérée 3D. Merci de vous reporter à <xref linkend="guestadd-3d" />
+ pour des détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Activer l'accélération graphique 2D</glossterm>
+
+ <glossdef>
+ <para>Si vous avez installé les Suppléments invité sur une machine
+ virtuelle contenant Windows, vous pouvez ici sélectionner si l'invité
+ doit supporter la vidéo accélérée 2D. Merci de vous reporter à <xref
+ linkend="guestadd-2d" /> pour les détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Affichage distant</glossterm>
+
+ <glossdef>
+ <para>Dans l'onglet "Affichage distant", si vous avez installé l'extension
+ VirtualBox Remote Display Extension (VRDE), vous pouvez activer le serveur
+ VRDP construit dans VirtualBox. Cela vous permet de vous connecter à
+ la console de la machine virtuelle à distance avec n'importe quel
+ client RDP standard tel que <computeroutput>mstsc.exe</computeroutput>
+ fourni avec Microsoft Windows. Sur les systèmes Linux et Solaris,
+ vous pouvez utiliser le programme standard open-source
+ <computeroutput>rdesktop</computeroutput>. Ces fonctionnalités sont
+ décrites en détail au
+ <xref linkend="vrde" />.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>Capture graphique</glossterm>
+
+ <glossdef>
+ <para>Dans l'onglet "Capture graphique", vous pouvez activer la capture
+ graphique d'une VM. Remarquez que cette fonction peut être activée/désactivée aussi
+ pendant l'exécution de la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist>
+ </sect1>
+
+ <sect1 id="settings-storage">
+ <title>Paramètres du stockage</title>
+
+ <para>La catégorie "Stockage" des paramètres de la VM vous permet de connecter
+ des images et des lecteurs de disque dur, de CD/DVD et de disquette virtuelles
+ à votre machine virtuelle.</para>
+
+ <para>Dans un vrai PC, ce qu'on appelle les "contrôleurs de stockage" connectent
+ des lecteurs de disque physiques au reste de l'ordinateur. De la même façon,
+ VirtualBox présente des contrôleurs de stockage virtuels à une machine virtuelle.
+ Sous chaque contrôleur, vous voyez les périphériques virtuels connectés
+ (disques durs, lecteur CD/DVD ou disquette).<note>
+
+ <para>Cette section ne peut vous donner qu'une brève introduction aux
+ paramètres de stockage de VirtualBox. Comme VirtualBox vous donne
+ un choix énorme d'options dans cette zone, nous avons consacré tout un
+ chapitre de ce manuel de l'utilisateur à l'explication de tous les
+ détails&#xA0;: merci de voir <xref
+ linkend="storage" />.</para>
+ </note></para>
+
+ <para>Si vous avez utilisé l'assistant "Créer une VM" pour créer une machine,
+ vous verrez normalement quelque chose comme suit&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-settings-harddisk.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>Selon le type de système d'exploitation invité que vous avez sélectionné
+ quand vous avez créé la VM, la présentation classique des périphériques de stockage
+ dans une nouvelle VM est ainsi&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Vous verrez un <emphasis role="bold">contrôleur IDE,
+ </emphasis> auquel on a connecté un lecteur CD/DVD virtuel (sur le
+ "deuxième port maître") du contrôleur IDE).</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous verrez aussi un <emphasis role="bold">contrôleur SATA
+ controller,</emphasis> qui est un type plus moderne de contrôleur de
+ stockage pour un transport de données du disque dur plus rapide, où
+ on a rattaché les disques durs virtuels. Au départ, vous aurez en
+ principe un disque comme celui-ci, mais comme vous pouvez le voir dans
+ l'impression d'écran ci-dessus, vous pouvez en avoir plusieurs,
+ chacun représenté par un fichier image de disque (fichiers
+ (VDI, dans ce cas).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Si vous avez créé votre VM avec une version antérieure de VirtualBox,
+ la présentation des stockages par défaut peut varier. Il se peut donc
+ que vous ayez qu'un contrôleur IDE auquel on a connecté le lecteur CD/DVD et
+ les disques durs. Cela pourrait aussi être le cas si vous avez sélectionné un
+ ancien type de système d'exploitation quand vous avez créé la VM. Comme les
+ anciens systèmes d'exploitation ne supportent pas
+ le SATA sans pilotes supplémentaires, VirtualBox veillera à ce qu'aucun
+ périphérique de ce type ne soit présent au départ. Merci de voir <xref
+ linkend="harddiskcontrollers" /> pour des informations supplémentaires.</para>
+
+ <para>VirtualBox fournit aussi un <emphasis role="bold">contrôleur amovible
+ </emphasis> spécial&#xA0;: vous ne pouvez pas y ajouter d'autres périphériques
+ que des lecteurs amovibles. Les périphériques amovibles virtuels comme les
+ lecteurs CD/DVD virtuels peuvent être connectés soit à un lecteur amovible hôte
+ (si vous en avez un), soit associés à une image de disque qui doit alors être
+ au format RAW.</para>
+
+ <para>Vous pouvez modifier librement ces connexions de médias. Par exemple,
+ si vous copier des fichiers depuis un autre disque dur virtuel que vous avez
+ créé, vous connecter ce disque comme deuxième disque dur, comme dans
+ l'impression d'écran ci-dessus. Vous pourriez aussi ajouter un deuxième
+ lecteur CD/DVD virtuel ou modifier l'endroit où ces éléments sont branchés.
+ Les options suivantes sont disponibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Pour <emphasis role="bold">ajouter un autre disque dur virtuel
+ ou un lecteur CD/DVD ou de disquette,</emphasis> sélectionnez un
+ contrôleur de stockage auquel l'ajouter (IDE, SATA, SCSI, SAS, contrôleur
+ amovible), puis cliquez sur le bouton "ajouter un disque" sous
+ l'arborescence. Vous pouvez alors sélectionner soit "Ajouter un
+ périphérique CD/DVD" soit "Ajouter un disque dur". (Si vous avez cliqué
+ sur un contrôleur amovible, vous pouvez plutôt ajouter un lecteur amovible.)
+ Sinon, effectuez un clic droit sur le contrôleur de stockage et
+ sélectionnez-y un élément de menu.</para>
+
+ <para>Sur la partie droite de la fenêtre, vous pouvez alors définir ce
+ qui suit&#xA0;:<orderedlist>
+ <listitem>
+ <para>Vous pouvez sélectionner à quel <emphasis
+ role="bold">slot de périphérique</emphasis> du contrôleur devrait
+ se connecter le disque virtuel. Les contrôleurs IDE ont quatre
+ slots qu'on appelle traditionnellement le "maître primaire",
+ "esclave primaire"&#xA0;, "maître secondaire" et "esclave secondaire".
+ Au contraire, les contrôleurs SATA et SCSI vous offrent jusqu'à
+ 30 slots pour connecter des prériphériques virtuels.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez sélectionner le <emphasis role="bold">fichier image
+ </emphasis> à utiliser.<itemizedlist>
+ <listitem>
+ <para>Pour les disques durs virtuels, un ascenseur en liste
+ déroulante apparaît à droite, vous offrant la sélection
+ soit de <emphasis role="bold">fichier de disque dur virtuel
+ </emphasis> en utilisant une boîte de dialogue fichier standard
+ soit de
+ <emphasis role="bold">créer un nouveau disque dur</emphasis>
+ (fichier image), qui ouvrira l'assistant "Créer un nouveau
+ disque", décrite au <xref
+ linkend="gui-createvm" />.</para>
+
+ <para>Pour des détails sur les types de fichiers images
+ supportés, merci de voir <xref
+ linkend="vdidetails" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour les lecteurs CD/DVD virtuels, les fichiers
+ image seront en général au format standard ISO. La plupart
+ du temps, vous sélectionnerez cette option quand vous
+ installerez un système d'exploitation à partir d'une image
+ ISO que vous avez récupéré sur Internet. Par exemple, la
+ plupart des distributions Linux sont disponibles par ce biais.</para>
+
+ <para>Pour les lecteurs CD/DVD virtuels, les options
+ suivantes sont disponibles&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Si vous sélectionnez <emphasis role="bold">"Lecteur
+ hôte"</emphasis> dans la liste, le périphérique physique
+ de l'ordinateur hôte sera connecté à la VM, pour que
+ le système d'exploitation invité puisse lire et écrire
+ sur votre périphérique physique. Cela sert, par exemple,
+ si vous voulez installer Windows depuis un vrai CD
+ d'installation. Dans ce cas, sélectionnez votre lecteur
+ hôte dans la liste déroulante affichée.</para>
+
+ <para>Si vous voulez écrire (graver) des CDs ou des
+ DVDs en utilisant le lecteur hôte, vous devez également
+ activer l'option
+ <emphasis role="bold">"Mode direct (Passthrough)"</emphasis>&#xA0;;
+ voir <xref linkend="storage-cds" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous sélectionnez <emphasis role="bold">"
+ Supprimer un disque du lecteur virtuel",</emphasis> VirtualBox
+ présentera un lecteur CD/DVD vide à l'invité dans
+ lequel on a inséré le média.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Pour <emphasis role="bold">supprimer une connexion,</emphasis>,
+ sélectionnez-la et cliquez sur l'icône "Supprimer" tout en bas (ou
+ effectuez un clic droit dessus et sélectionnez l'élément du menu).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>On peut changer de média amovible (de CD/DVDs et de disquettes) pendant
+ que l'invité fonctionne. Comme la boîte de dialogue "Paramètres" n'est pas
+ disponibles à ce moment-là, vous pouvez aussi accéder à ces paramètres à
+ partir du menu "Périphériques" de la fenêtre de votre machine virtuelle.</para>
+ </sect1>
+
+ <sect1 id="settings-audio">
+ <title>Paramètres de son</title>
+
+ <para>La section "Son" de la fenêtre de paramètres d'une machine virtuelle
+ détermine si la VM verra une carte son connectée et si la sortie son se fait
+ en dur sur le système hôte.</para>
+
+ <para>Si le son est activé pour un invité, vous pouvez choisir entre
+ l'émulation d'un contrôleur Intel AC'97, un contrôleur Intel HD Audio<footnote>
+ <para>Le support d'Intel HD Audio a été ajouté avec VirtualBox 4.0 car
+ Windows 7 (versions 32 bits et 64 bits) ainsi que Windows Vista 64 bits
+ ne supportent pas le contrôleur Intel AC'97.</para>
+ </footnote> ou une carte SoundBlaster 16. Dans tous les cas, vous pouvez
+ sélectionner le pilote son que VirtualBox utilisera sur l'hôte.</para>
+
+ <para>Sur un hôte Linux, selon votre configuration hôte, vous pouvez aussi
+ choisir entre les sous-systèmes OSS, ALSA ou PulseAudio sur les
+ distributions Linux récentes (Fedora 8 et supérieur, Ubuntu 8.04 et supérieur),
+ le sous-système PulseAudio devrait être privilégié.</para>
+ </sect1>
+
+ <sect1 id="settings-network">
+ <title>Paramètres réseau</title>
+
+ <para>La section "Réseau" de la fenêtre des paramètres d'une machine virtuelle
+ vous permet de configurer la façon dont VirtualBox présente des cartes réseaux
+ virtuelles à votre VM et comment elles agissent.</para>
+
+ <para>Quand vous créez une machine virtuelle la première fois, VirtualBox
+ active par défaut une carte réseau virtuelle et sélectionne le mode "Network
+ Address Translation" (NAT) pour celle-ci. De cette manière, l'invité peut
+ se connecter au monde extérieur en utilisant le réseau de l'hôte et le monde
+ extérieur peut se connecter aux services de l'invité que vous choisissez de
+ rendre visibles à l'extérieure de la machine virtuelle.</para>
+
+ <para>Ce comportement par défaut convient probablement à 95% des utilisateurs
+ de VirtualBox. Cependant, VirtualBox est extrêmemen flexible quant à la
+ manière de virtualiser le réseau. Il supporte de nombreuses cartes réseaux
+ par machine virtuelle, les quatre premières peuvent être configurées en
+ détail dans la fenêtre du gestionnaire. Des cartes réseaux supplémentaires
+ peuvent être configurées en ligne de commande avec
+ VBoxManage. </para>
+
+ <para>Du fait de la large gamme d'options disponibles, nous avons consacré
+ un chapitre complet de ce manuel à la configuration réseau&#xA0;; merci de
+ voir <xref linkend="networkingdetails" />.</para>
+ </sect1>
+
+ <sect1 id="serialports">
+ <title>Ports série</title>
+
+ <para>VirtualBox supporte pleinement les ports série virtuels d'une machine
+ virtuelle d'une manière facile à utiliser.<footnote>
+ <para>Le support du port série a été ajouté avec VirtualBox 1.5.</para>
+ </footnote></para>
+
+ <para>Jadis, les PC originels d'IBM, les ordinateurs personnels (Personal
+ Computers) étaient équipés d'un ou deux ports série (appelés aussi des ports
+ COM par DOS et Windows). Les ports série sont généralement utilisés avec des
+ modems et certaines souris se connectaient en port série avant que l'USB ne
+ ne devienne omnipotent.
+ </para>
+
+ <para>Si les ports série ne sont plus aussi omniprésents qu'avant, il leur
+ reste encore des cas d'usage importants. Par exemple, on peut utiliser des
+ ports série pour paramétrer un réseau primitif par un câble null-modem,
+ au cas où Ethernet n'est pas disponible. De plus, les ports série sont
+ indispensables pour les programmeurs système ayant besoin de faire du débogage de noyau,
+ car les logiciels de débogage de noyaux interagissent avec les développeurs
+ par le port série. Avec les ports série virtuels, les programmeurs système
+ peuvent faire du débogage de noyau sur une machine virtuelle plutôt qu'un vrai
+ ordinateur où ils se connecteraient.</para>
+
+ <para>Si un port série virtuel est activé, le système d'exploitation invité
+ voit un périphérique UART 16550A compatible standard. La réception et la
+ transmission de données est supportée. La manière dont le port série virtuel
+ est alors connecté à l'hôte peut se configurer et les détails dépendent de
+ votre système d'exploitation hôte.
+ </para>
+
+ <para>Vous pouvez utiliser soit l'outil graphique, soit
+ <computeroutput>VBoxManage</computeroutput> en ligne de commande pour paramétrer
+ des ports série virtuels. Pour le dernier cas, merci de vous reporter à <xref
+ linkend="vboxmanage-modifyvm" />&#xA0;; dans cette section, cherchez les
+ options <computeroutput>--uart</computeroutput> et
+ <computeroutput>--uartmode</computeroutput>.</para>
+
+ <para>Dans le premier cas, vous pouvez configurer jusqu'à deux ports série
+ virtuels par machine virtuelle. Pour chaque périphérique, vous devrez
+ déterminer<orderedlist>
+ <listitem>
+ <para>le type de port série que la machine virtuelle devrait voir en
+ sélectionnant un I/O base address and interrupt (IRQ). Pour ceux-ci,
+ nous vous recommandons d'utiliser les valeurs traditionnelles<footnote>
+ <para>Voir, par exemple, <ulink
+ url="http://en.wikipedia.org/wiki/COM_(hardware_interface)">http://en.wikipedia.org/wiki/COM_(hardware_interface)</ulink>.</para>
+ </footnote>, qui sont&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>COM1: I/O base 0x3F8, IRQ 4</para>
+ </listitem>
+
+ <listitem>
+ <para>COM2: I/O base 0x2F8, IRQ 3</para>
+ </listitem>
+
+ <listitem>
+ <para>COM3: I/O base 0x3E8, IRQ 4</para>
+ </listitem>
+
+ <listitem>
+ <para>COM4: I/O base 0x2E8, IRQ 3</para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Puis, vous devrez déterminer à quoi ce port série virtuel devrait
+ être connecté. Pour chaque port série virtuel, vous avez les options
+ suivantes&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Vous pouvez choisir que le port série virtuel soit
+ "déconnecté", ce qui signifie que l'invité verra le périphérique
+ mais il se comportera comme si aucun câble n'y avait été
+ connecté.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez connecter le port série virtuel à un port série
+ existant sur votre hôte. (Sur un hôte Windows, cela sera un nom
+ comme <computeroutput>COM1</computeroutput>&#xA0;; sur des hôtes
+ Linux ou Solaris, ce sera un n&#x153;ud de périphérique comme
+ <computeroutput>/dev/ttyS0</computeroutput>). VirtualBox redirigera
+ alors simplement toutes les données reçues et envoyées sur le
+ port série virtuel vers le périphérique physique.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez dire à VirtualBox de connecter le port série
+ virtuel à un tunnel logiciel sur l'hôte. Cela dépend de votre
+ système d'exploitation hôte&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur un hôte Windows, les données seront envoyées et
+ reçues par un tunnel nommé. Le nom du tunnel doit être au
+ format
+ <computeroutput>\\.\pipe\&lt;nom&gt;</computeroutput>
+ où <computeroutput>&lt;name&gt;</computeroutput> devrait
+ identifier la machine virtuelle mais vous êtes libre dans
+ votre choix.</para>
+ <para>Pour rediriger du trafic série, vous pouvez utiliser
+ un programme d'aide appelé VMware Serial Line Gateway,
+ disponible en téléchargement sur
+ <literal> <ulink
+ url="http://www.l4ka.org/91.php">http://www.l4ka.org/91.php</ulink>
+ </literal>. Cet outil fournit un mode serveur fixé
+ nommé tunnel sur
+ <computeroutput>\\.\pipe\vmwaredebug</computeroutput>
+ et il connecte les connexions TCP entrantes sur le port 567
+ avec le tunnel nommé.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur un hôte Mac, Linux ou Solaris, un socket local
+ est plutôt utilisé. Le nom de fichier du socket doit
+ être choisi de telle sorte que l'utilisateur de VirtualBox
+ ait assez de droits pour créer et écrire dessus. Le répertoire
+ <computeroutput>/tmp</computeroutput> est souvent un bon
+ candidat.</para>
+ <para>Sur Linux, plusieurs outils peuvent se connecter à
+ un socket de domaine local ou en créer un en mode serveur.
+ L'outil le plus flexible est
+ <computeroutput>socat</computeroutput> et il est disponible
+ dans beaucoup de distributions.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Dans ce cas, vous pouvez configurer si VirtualBox devrait
+ créer le tunnel nommé (ou, sur les hôtes non Windows, le socket
+ de domaine local) lui-même ou si VirtualBox devrait supposer que
+ le tunnel (ou le socket) existe déjà. Avec les options en ligne
+ de commande de
+ <computeroutput>VBoxManage</computeroutput>, ceci est désigné
+ respectivement comme le mode "serveur" ou "client".</para>
+
+ <para>Pour une connexion directe entre deux machines virtuelles,
+ (ce qui correspond à un câble null-modem), configurez simplement
+ une VM pour créer un tunnel/socket et un autre pour s'y relier.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez envoyer la sortie du port série virtuel vers
+ un fichier. Cette option est très utile pour récupérer des sorties
+ de diagnostic sur un invité. Vous pouvez utiliser n'importe quel
+ fichier dans ce but, tant que l'utilisateur de VirtualBox a
+ assez de droits pour créer et écrire dans le fichier.
+ </para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </orderedlist>Vous pouvez configurer jusqu'à deux ports série par machine
+ virtuelle, mais vous pouvez choisir n'importe quel numéro de port hors
+ de ceux ci-dessus. Cependant, les ports série ne sont pas capables de partager
+ de manière fiable des interruptions&#xA0;; si deux ports doivent être
+ utilisés en même temps, ils doivent utiliser différents niveaux d'interruption,
+ par exemple COM1 et COM2, mais pas COM1 et COM3.
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Support USB</title>
+
+ <sect2 id="settings-usb">
+ <title>Paramètres USB</title>
+
+ <para>La section "USB" de la fenêtre de paramètres d'une machine virtuelle
+ vous permet de configurer le support USB sophistiqué de VirtualBox.</para>
+
+ <para>VirtualBox peut permettre à des machines virtuelles d'accéder aux
+ périphériques USB directement sur votre hôte. Pour cela, VirtualBox présente
+ au système d'exploitation invité un contrôleur USB virtuel. Dès que le
+ système invité démarre en utilisant un périphérique USB, il apparaîtra
+ comme indisponible sur l'hôte.<note>
+ <orderedlist>
+ <listitem>
+ <para>Faites attention avec les périphériques USB utilisés sur
+ l'hôte&#xA0;! Par exemple, si vous permettez à votre invité de se
+ connecter à votre disque dur USB actuellement monté sur l'hôte,
+ lorsque l'invité est actif, il sera déconnecté de l'hôte sans
+ débranchement propre. Cela peut entraîner une perte de données.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les hôtes Solaris ont quelques limites connues avec le
+ support USB&#xA0;; merci de voir <xref linkend="KnownIssues" />.</para>
+ </listitem>
+ </orderedlist>
+ </note></para>
+
+ <para>Au-delà de permettre un accès de l'invité à vos périphériques USB
+ locaux, VirtualBox permet même à vos invités de se connecter à des périphériques
+ USB distants en utilisant le VirtualBox Remote Desktop Extension (VRDE).
+ Pour des détails sur cela, voir <xref linkend="usb-over-rdp" />.</para>
+
+ <para>Dans la boîte de dialogue des paramètres, vous pouvez d'abord
+ configurer si l'USB est disponible dans l'invité et éventuellement activer
+ le contrôleur USB 2.0 (EHCI) pour l'invité. Si tel est le cas, vous pouvez
+ déterminer en détail les périphériques disponibles. Pour ce faire, vous
+ devez créer ce qu'on appelle des "filtres" en spécifiant certaines propriétés
+ du périphérique USB.<note>
+ <para>Le contrôleur EHCI est inclu dans une extension de VirtualBox
+ qu'il faut installer séparément. Voir <xref
+ linkend="intro-installing" /> pour plus d'informations.</para>
+ </note></para>
+
+ <para>Un clic sur le bouton "+" à droite de la fenêtre "Filtres des périphériques
+ USB" crée un <emphasis role="bold">nouveau filtre.</emphasis>
+ Vous pouvez donner au filtre un nom (pour le retrouver plus tard) et
+ spécifier les critères du filtre. Plus vous spécifiez ce critères, plus les
+ périphériques seront sélectionnés avec précision. Par exemple, si vous ne
+ spécifiez qu'un ID de fabricant 046d, tous les périphériques fabriqués par
+ Logitech seront disponibles pour l'invité. Si vous complétez tous les champs,
+ le filtre ne s'appliquera plutôt qu'à un modèle de périphérique particulier
+ d'un fabricant particulier et pas aux autres périphériques du même type
+ ayant un autre numéro de série ou de révision.</para>
+
+ <para>Dans le détail, les critères suivants sont disponibles:</para>
+
+ <orderedlist>
+ <listitem>
+ <para><emphasis role="bold">ID du fabricant et du produit.</emphasis>
+ Avec l'USB, chaque fabricant de produits USB a un numéro d'identification
+ unique au monde, l'"ID fabricant". De la même façon, chaque ligne de
+ produits se voit affecté un numéro "ID de produit". Les deux numéros
+ sont écrits en général en hexadécimal (c'est-à-dire qu'ils se composent
+ des chiffres 0 à 9 et des lettres A à F), et deux-points sépare l'ID
+ du fabricant et du produit. Par exemple,
+ <computeroutput>046d:c016</computeroutput> signifie le fabricant
+ Logitech et le produit Souris optique à roulette M-UV69a".</para>
+
+ <para>Sinon, vous pouvez aussi spécifier un nom de <emphasis
+ role="bold">"fabricant"</emphasis> et de <emphasis
+ role="bold">"Produit"</emphasis>.</para>
+
+ <para>Pour lister tous les périphériques USB connectés à votre
+ machine hôte avec leurs IDs de fabricant et de produit respectifs, vous
+ pouvez utiliser la commande suivante (voir <xref linkend="vboxmanage" />): <screen>VBoxManage list usbhost</screen></para>
+
+ <para>Sur Windows, vous pouvez aussi voir tous les périphériques USB
+ connectés à votre système dans le gestionnaire de périphériques. Sur
+ Linux, vous pouvez utiliser la commande
+ <computeroutput>lsusb</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Numéro de série.</emphasis> Si l'ID du
+ fabricant et du produit sont déjà très spécifiques pour identifier des
+ périphériques USB, si vous avez deux périphériques identiques de la même
+ gamme et de la même ligne de produits, vous aurez aussi besoin de leur
+ numéro de série pour les filtrer
+ correctement.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Distant.</emphasis> Ce paramètre
+ spécifie si le périphérique est seulement en local, distant (par VRDP),
+ ou autrement.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Sur un hôte Windows, vous devrez débrancher et reconnecter un périphérique
+ USB pour l'utiliser après avoir créé un filtre pour lui.</para>
+
+ <para>Par exemple, vous pourriez créer un nouveau filtre USB et spécifier
+ un ID fabricant de 046d (Logitech, Inc), un index de fabricant à 1, et
+ "non distant". Tous les périphériques USB de l'hôte fabriqués par Logitech,
+ Inc ayant un numéro d'index 1 seront visibles pour le système invité.</para>
+
+ <para>Plusieurs filtres peuvent sélectionner un périphérique unique -- par
+ exemple, un filtre qui sélectionne tous les périphériques Logitech et un
+ qui sélectionne une webcam en particulier.</para>
+
+ <para>Vous pouvez <emphasis role="bold">désactiver</emphasis> des filtres
+ sans les supprimer en cliquant dans la case à cocher à côté du nom du filtre.</para>
+ </sect2>
+
+ <sect2>
+ <title>Notes d'implémentation pour les hôtes Windows et Linux</title>
+
+ <para>Sur les hôtes Windows, un pilote de périphérique en mode noyau fournit
+ un support proxy USB. Il implémente un moniteur USB, qui permet à VirtualBox
+ de capturer des périphériques quand ils sont branchés et un pilote de
+ périphérique USB qui amène les périphériques USB à une machine virtuelle
+ VirtualBox antérieures à 1.4.0, un redémarrage du systme n'est plus nécessaire
+ après l'installation du pilote. De plus, vous n'avez plus besoin de rebrancher
+ des périphériques pour que VirtualBox les gère.</para>
+
+ <para>Sur les hôtes Linux récents, VirtualBox accède aux périphériques USB
+ par des fichiers spéicaux du système de fichiers. Quand VirtualBox est
+ installé, ils sont rendus disponibles pour tous les utilisateurs dans le
+ groupe système
+ <computeroutput>vboxusers</computeroutput>. Pour pouvoir accéder à l'USB
+ à partir de systèmes invités, assurez-vous d'être membre de ce groupe.</para>
+
+ <para>Sur les anciens hôtes Linux, on accède aux périphériques USB en
+ utilisant le système de fichiers
+ <computeroutput>usbfs</computeroutput>. Donc, l'utilisateur qui exécute
+ VirtualBox a besoin des droits en lecture et écriture sur le système de
+ fichiers USB. La plupart des distributions fournissent un groupe (comme
+ <computeroutput>usbusers</computeroutput>) où doit être ajouté l'utilisateur
+ VirtualBox. En outre, VirtualBox ne peut pas faire un proxy avec les périphériques
+ USB de la machine virtuelle qui ne sont pas gérés par un pilote USB de
+ l'hôte Linux. L'entrée
+ <computeroutput>Driver=</computeroutput> de
+ <computeroutput>/proc/bus/usb/devices</computeroutput> vous montrera les
+ périphériques actuellement reconnus. Merci de vous reporter aussi à <xref
+ linkend="ts_usb-linux" /> pour des détails sur
+ <computeroutput>usbfs</computeroutput>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Dossiers partagés</title>
+
+ <para>Les dossiers partagés vous permettent d'échanger facilement des données
+ entre une machine virtuelle et votre hôte. Cette fonctionnalité exige que
+ les suppléments invité de VirtualBox soient installés dans une machine
+ virtuelle et ceci est décrit en détail au
+ <xref linkend="sharedfolders" />.</para>
+ </sect1>
+
+ <sect1 id="efi">
+ <title>Autre firmware (EFI)</title>
+
+ <para>À partir de la version 3.1, VirtualBox inclut un support expérimental
+ pour l'Extensible Firmware Interface (EFI), qui est un nouveau
+ standard industriel conçu pour remplacer éventuellement, à terme, le BIOS traditionnel
+ comme interface pour les ordinateurs faisant du bootstrapping et certains
+ services système.</para>
+
+ <para>Par défaut, VirtualBox utilise le firmware BIOS pour les machines virtuelles.
+ Pour utiliser l'EFI pour une machine virtuelle donnée, vous pouvez activer l'EFI
+ dans la boîte de dialogue "Paramètres" de la machine (voir <xref linkend="settings-motherboard" />).
+ Sinon, utilisez l'interface en ligne de commande <computeroutput>VBoxManage</computeroutput>
+ comme ceci&#xA0;: <screen>VBoxManage modifyvm "nom VM" --firmware efi</screen>
+ Pour revenir à l'utilisation du BIOS, utilisez&#xA0;: <screen>VBoxManage modifyvm "nom VM" --firmware bios</screen>Un
+ utilisateur notable de l'EFI est Mac OS X d'Apple, mais les Linux
+ (tels que Fedora 11) et Windows récents (à partir de Vista) offrent des
+ versions spéciales qu'on peut démarrer en utilisant l'EFI.</para>
+
+ <para>Une autre utilisation possible de l'EFI dans VirtualBox est le
+ développement et le test d'applications EFI, sans démarrer d'OS.</para>
+
+ <para>Remarquez que le support EFI de VirtualBox est expérimental et il
+ sera amélioré au fur et à mesure des progrès d'EFI et de son extension.
+ Mac OS X et Linux sont connus pour très bien fonctionner, les invités
+ Windows sont actuellement incapables de démarrer avec l'implémentation EFI
+ de VirtualBox.</para>
+
+ <sect2 id="efividmode">
+ <title>Modes graphiques dans EFI</title>
+
+ <para>EFI fournit deux interfaces graphiques distinctes&#xA0;: GOP (Graphics Output
+ Protocol) et UGA (Universal Graphics Adapter). Mac OS X utilise GOP, tandis
+ que Linux a tendance à utiliser UGA. VirtualBox fournit une option de
+ configuration pour contrôler la taille du framebuffer pour les deux interfaces.</para>
+
+ <para>Pour contrôler GOP, utilisez la commande
+ <computeroutput>VBoxManage</computeroutput> suivante&#xA0;: <screen>VBoxManage setextradata "nom VM" VBoxInternal2/EfiGopMode N</screen>
+ Où N peut être 0,1,2,3,4,5, respectivement pour des résolutions d'écran
+ 640x480, 800x600, 1024x768, 1280x1024, 1440x900, 1920x1200.</para>
+
+ <para>Pour modifier la résolution UGA,&#xA0;: <screen>VBoxManage setextradata "nom VM" VBoxInternal2/UgaHorizontalResolution 1440
+VBoxManage setextradata "nom VM" VBoxInternal2/UgaVerticalResolution 900</screen></para>
+
+ <para>Le mode graphique pour GOP et UGA ne peut être modifié que quand la
+ VM est éteinte; il persiste jusqu'à ce qu'il soit modifié.</para>
+ </sect2>
+ <sect2 id="efibootargs">
+ <title>Spécifier des arguments au démarrage</title>
+
+ <para>Il n'est actuellement pas possible de manipuler les variables EFI
+ depuis un invité en fonction (par exemple définir la variable "boot-args"
+ en lançant l'outil <computeroutput>nvram</computeroutput> dans un invité
+ Mac OS X ne fonctionnera pas). Comme alternative, la donnée externe
+ "VBoxInternal2/EfiBootArgs" peut être passée à la VM pour définir la
+ variable "boot-args". Pour modifier la variable EFI "boot-args" :
+ <screen>VBoxManage setextradata "nom VM" VBoxInternal2/EfiBootArgs &lt;valeur&gt;</screen>
+ </para>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_ChangeLog.xml b/doc/manual/fr_FR/user_ChangeLog.xml
new file mode 100644
index 00000000..156d5a45
--- /dev/null
+++ b/doc/manual/fr_FR/user_ChangeLog.xml
@@ -0,0 +1,11947 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="ChangeLog">
+ <title>Historique des changements</title>
+
+ <para>Cette section résume les changements entre les versions de VirtualBox.
+ Remarquez que cet historique n'est pas exhaustif&#xA0;; tous les changements
+ ne sont pas listés.</para>
+
+ <para>Les numéros de version de VirtualBox consistent en trois nombres séparés
+ par des points où le premier et le second numéro représentent la version
+ majeure et le 3ème nombre la version mineure. Les numéros des versions mineures
+ des versions officielles sont toujours là. Un numéro de version mineure ad
+ hoc représente une construction de développement ou de test. En outre, chaque
+ construction contient un numéro de révision.</para>
+
+
+ <sect1>
+ <title>Version 4.4.0 (yyyy-mm-dd)</title>
+
+ <para>C'est une mise à jour majeure. Les nouvelles fonctions importantes
+ suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : support du branchement à chaud des disques SATA</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>En outre, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VBoxManage : lors de l'export d'un applicatif, support de la
+ suppression des adresses MAC, ce qui signifie qu'elles seront toujours
+ recréées au moment de l'importation, évitant des doublons d'adresses MAC
+ entre les VMs importées plusieurs fois.</para>
+ </listitem>
+ <listitem>
+ <para>API : blocage de la suppression de l'instantané actuel s'il a des
+ instantanés fils (pertinent seulement pour les VMs où aucun instantané
+ durs n'est pas possible car leur présence empêchait toujours la
+ suppression), ce qui provoquait une corruption de la config de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>API : marquage des configs de VM ayant des instantanés mais aucun
+ d'accessible actuellement comme inaccessibles, car cette combinaison
+ n'a pas de sens</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction des informations de certains événements générées
+ automatiquement (seulement avec XPCOM, l'hôte Windows n'était pas concerné),
+ ce qui provoquait des erreurs de récupération d'attributs par le service
+ Web (bogue #12379)</para>
+ </listitem>
+ <listitem>
+ <para>API : correction de plantages des clients de l'API Java qui
+ utilisent les bindings XPCOM et qui survenaient surtout dans la sortie
+ des paramètres (bogue #11232)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.3.8 (25-02-2014)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : davantage de travail sur l'amélioration de l'émulation de
+ certains registres MSR (par exemple, bogues #12224, #12544)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VERR_INVALID_RPL</emphasis>
+ lors du démarrage de certains invités (bogue #11350)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : support expérimental de SSE 4.1 / SSE 4.2 passthrough, voir
+ dans le manuel de l'utilisateur la façon de l'activer (bogue #8651)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction pour les noyaux Linux récents avec la virtualisation
+ logicielle</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: expérimentale des LEDs HID pour les hôtes
+ Windows, voir le manuel de l'utilisateur</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement de l'utilisateur si le pack d'extensions
+ Oracle n'est pas installé et si l'utilisateur essaie d'activer la fonction
+ d'affichage à distance (bogue #9104)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on s'assure qu'un inviqé minimisé (en utilisant la mini
+ barre d'outils en mode plein écran ou transparent) reste minimisé (bogue #12199)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage d'une case à cocher "ne plus afficher ce message"
+ à la place du bouton correspondant</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les câbles de l'adaptateur réseau peuvent maintenant être
+ connectés/déconnectés directement dans le menu Périphériques / Réseau
+ dans la machine virtuelle actuelle, via un indicateur d'état Réseau</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : l'assistant NouvelleVM propose maintenant par défaut des
+ invités 64 bits sur des hôtes 64 bits ; meilleure distinction entre les
+ types d'OS 32 bits et ceux 64 bits (bogue #12533)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : e d'erreur si l'importation d'un applicatif
+ échoue (bogue #12657)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de définir la host-combination (combinaison d'hôte)
+ à 'Aucune' en utilisant les paramètres globaux / onglet Entrée (bogue #12730)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne met pas la VM en écran noir pendant la synchronisation
+ d'un instantané en ligne (régression 4.3)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : à l'export d'un applicatif, support de la suppression
+ des adresses MAC, ce qui veut dire qu'elles seront toujours recréées
+ lors de l'importation, évitant d'avoir des adresses MAC doubles pour
+ des VMs importées plusieurs fois</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'un accroc de VM pendant la suspension dans
+ certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'un accroc de VM pendant la synchronisation des
+ instantanés en ligne dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI: correction d'un bogue faisant planter les invités
+ Windows XP si un lecteur CD-ROM SATA est connecté (bogue #12417)</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'une Guru Meditation dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : échec de l'éjection d'un CD/DVD dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction du branchement à chaud d'un disque</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : gestion transparente des veilles prolongées/réveils de l'hôte
+ et des changements de configurationréseau si dnsproxy est actif eu si
+ hostresolver est utilisé
+ (bogue #12441)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un plantage et d'un mauvais comportemen dans
+ certaines circonstances avec des paquets ICMP ayant TTL=1</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau NAT : correction du réassemblage en IPv6</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau NAT : implémentation du ping d'un proxy</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de la lecture de l'élément de section d'OVF 0.9
+ (régression 4.3 ; bogue #12345)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : plusieurs corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections, notamment le multi-écrans
+ (voir bogue #9124)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : inclusion d'un contenu 3D dans les vidéos capturées
+ (bogue #12666)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : inclusion d'un contenu 3D dans les impressions d'écran
+ capturées (bogue #11758)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : bonne gestion des modes graphiques rudimentaires si les
+ suppléments invité sont actifs (bogue #6649)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage pendant un transfert asynchrone
+ dans de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : meilleure gestion de la géométrie des disques SCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction de plantages dans les clients de l'API Java
+ utilisant le binding XPCOM, ce qui n'arrivait qu'avec les paramètres de
+ sortie (bogue #11232)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : documentation de la prise en charge des événements de
+ gestion d'énergie de l'hôte (voir <xref linkend="hostpowertweaks" xreflabel="here"/>)
++ et ajout d'une donnée externe pour configurer la gestion de l'événement
+ batterie faible (bogue #9925)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction d'un bogue pouvant provoquer un plantage
+ si l'instantané d'une VM était restauré une deuxième fois alors que
+ la VM avait des groupes de bandes passantes associés
+ (bogue #12569)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : bonne détection d'ifconfig s'il se trouve dans
+ <emphasis>/bin</emphasis>
+ (bogue #12713)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction d'un échec pour restaurer
+ des dossiers partagés précédemment utilisés lors du démarrage d'une VM
+ d'un état sauvegardé (bogue #12578)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un problème quand l'icône de l'application
+ a été maintenue dans le dock si l'interface de bridge n'était pas
+ connectée à un réseau
+ (bogue #12241)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : prise en compte de l'ID physique des paquets lors de
+ la détermination du nombre de c&oelig;urs de processeurs physiques</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : pas d'avertissement dans le journal du
+ noyau en cas d'échec d'affectation de mémoire (bogue #11171)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction du script SMF de démarrage automatique
+ (bogue #11720)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : corrections des noms d'utilisateur des pages de
+ code non ANSI ou des contenus d'environnements du même genre (bogue #12596)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Windows : correction du réglage et de l'utilisation
+ des variables d'environnement du processus d'un utilisateur de l'invité
+ (par cohérence avec le contrôle de l'invité)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la gestion des fuites dans
+ VBoxTray (bogue #12563)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un plantage pendant la détection
+ des utilisateurs actifs sur l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la restauration des fichiers
+ D3D sauvegardés lors du passage de XPDM à WDDM</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôoe invité : correction de la définition et de l'utilisation
+ des variables d'environnement du processus de l'utilisateur de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support des noyaux Linux Enterprise 6.5
+ (bogue #12505)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la suppression à chaud du
+ processeur sur les nouveaux noyaux Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux / Solaris : ne monte pas automatiquement un
+ dossier partagé qui est déjà monté</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : support de X.Org Server 1.15 (bogue #12623)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.3.6 (18-12-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VINF_EM_TRIPLE_FAULT</emphasis>
+ causée par la mise en cache VMCB avec la pagination nested sur
+ certains processeurs AMD (bogue #12451)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE</emphasis>
+ pendant l'interception des exceptions de débogage (VT-x seulement ; bogue #12410)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VERR_SVM_UNEXPECTED_EXIT</emphasis>
+ pendant l'interception des accès aux registres de débogage (AMD-V
+ seulement ; bogue #12481)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM correction d'une erreur a <emphasis>VERR_SSM_STRUCTURE_MAGIC</emphasis>
+ quand on essaie de charger un état sauvegardé établi par VBox 4.3.4
+ quand VT-x/AMD-V est désactivé. Malheureusement,
+ VBox 4.3.4 produisait des états sauvegardé cassés dans cette
+ configuration, donc vous devez désactiver ces états (bogue #12414)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ajout de quelques MSRs supplémentaires pour la liste
+ blanche exigée par certains invitçs (bogue #12245)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la suppression des VMs inaccessibles
+ (régression 4.3, bogue #12205)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'avertissements dans les paramètres de la VM /
+ nombre de processeurs de l'invité (bogue #12480)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : n'active pas automatiquement les invités 64 bits sur
+ des hôtes 64 bits si VT-x/AMD-V n'est pas disponible (bogue #12424)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : on présente toujours les informations en mémoire DMI
+ pour les invités Windows 2012 (bogue #12017)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de plantages occasionels sur lors d'un
+ changement de résolution de l'affichage de l'invité (bogue #7063)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de l'affichage des noms temporaires quand on
+ appelle <emphasis>IGuestSession::DirectoryCreateTemp()</emphasis> (bogue #12498)</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction d'un accroc au lancement d'une VM avec GUI via
+ l'API, qui plante car la GUI n'est pas disponible</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'erreurs à l'exécution de
+ <emphasis>BLKCACHE_IOERR</emphasis>
+ dans de rares circonstances (bogue #11030)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : possibilité de démarrer plus de 5 instances PCNet (bogue #12426)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : si le câble a été déconnecté avant l'initialisation par
+ l'invité du périphérique, l'état du lien n'était pas bien passé en
+ 'désactivé' après la fin de l'initialisation, malgré le fait qu'il n'y
+ avait pas de connexion</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un offset d'éléments d'une image 3D dans
+ l'invité (hôtes Mac OS X Retina seulement ; bogue #11021)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de l'accès au pilote de l'hôte à parti
+ zones non globales (régression 4.3, bogue #12271)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.3.4 (2013-11-29)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'un bogue dans l'émulation de l'APIC Local provoquant
+ un BSOD au démarrage de certains invités (régression 4.3.0 ; bogue #12240)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du chargement des états sauvegardés si VT-x/AMD-V
+ a été désactivé (régression 4.3.2 ; bogue #12291)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du single-stepping dans l'invité pour certaines
+ instructions (VT-x seulement ; bogue #10947)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un problème de performance impliquant les accès
+ à l'APIC après le redémarrage d'une VM (régression 4.3.0 ; VT-x seulement ;
+ bogue #12296)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de l'activation d'un correctif TPR pour les
+ invités 32 bits même quand le type d'invité choisi était un 32 bit
+ (régression 4.3.0 ; AMD-V seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'erreurs <emphasis>VINF_EM_TRIPLE_FAULT</emphasis> occasionnelles
+ sur des hôtes sans la fonction d'exécution sans restriction de l'invité (bogue #12198)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on n'ennuie pas l'utilisateur avec l'avertissement BPP si
+ les suppléments invité ne sont pas installés</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de dessins artifcacts dans la fenêtre de la machine
+ au redémarrage de la VM / redimensionnement de l'écran de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on s'assure que la licence et la description sont reliées
+ à l'applicatif exporté</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de bogues dans la gestion des restrictions de
+ fermeture d'une VM (bogue #12333)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de mauvaises couleurs du texte des assistants
+ dans certaines apparences inhabituelles et pour certains styles (bogue #11743)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : devrait restaurer le mode transparent dès que possible après
+ le redémarrage ou l'extinction de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : corrections de l'énumération des médias</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les points chauds d'OS X n'étaient pas accessibles tant qu'une
+ VM VirtualBox est en fonction (hôtes Mac OS X seulement ; bogue #4139)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un vieux bogue qui empêchait vhôte de s'éteindre /
+ redémarrer proprement si la fenêtre de sélection d'une VM est ouverte
+ (hôtes Mac OS X seulement ; bogue #8254)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only : correction de la création d'interfaces réseaux
+ host-only (régression 4.3.0 ; bogue #12182)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : n'entre pas dans une boucle infinie si l'hôte ne peut pas
+ accéder à un serveur DNS (régression 4.3.0 ; bogue #12300)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : ne rebranche pas le câble si les informations de DNS changent
+ et si le câble a été déconnecté auparavant (régression 4.3.0 ; bogue #12225)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de plusieurs problèmes avec le démarrage/fin automatique
+ des réseaux NAT au démarrage " arrêt de la VM et lors des changements
+ de configuration</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxNetDHCP : le non bloc ge empêche VBoxSVC de se terminer
+ (bogue #12264)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction de plantages lors des
+ changements de modes d'affichage
+ (bogue #9194)</para>
+ </listitem>
+
+ <listitem>
+ <para>BusLogic : possibilité de lancer des VMs ayant plus d'un contrôleur
+ SCSI BusLogic activé</para>
+ </listitem>
+
+ <listitem>
+ <para>Clavier : correction d'un plantage de VM si une VM s'est réveillée
+ d'un état sauvegardé par l'appui sur au moins une touche (bogue #11289)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction d'une corruption heap dans certaines conditions (régression
+ 4.3.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction d'un conflit provoquant un accroc pendant
+ l'initialisation (bogue #12349)</para>
+ </listitem>
+ <listitem>
+ <para>OVF : correction d'une logique importation pour les applicatifs OVF
+ contenant plusieurs
+ VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : amélioration logique de la recherche d'un format d'image
+ adéquat pendant l'importation d'un OVF</para>
+ </listitem>
+
+ <listitem>
+ <para>API : blocage de la suppression de l'instantané actuel s'il a des
+ instantanés fils (pertinent seulement pour les VMs sans disque dur
+ pouvant faire l'objet d'instantanés, leur présence empêchait toujours
+ la suppression), ce qui entraînait une corruption de la config de la VM
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>API : marquage des configurations de VM avec des instantanés sans
+ celui actuel, inaccessible, car cette combinaison est ridicule</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction des informations sur certains événements générés
+ automatiquement (seulement avec XPCOM, l'hôte Windows n'était pas concerné),
+ ce qui provoquait des erreurs lors de ;a définition de certains attributs
+ via le service Web
+ (bogue #12379)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : extension des fonctionnalités des bindings C</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle d'invité : diverses corrections de bogues et amélioration
+ de l'aide de VBoxManage (bogues #8072, #11044, #12336, #12338, #12346, #12371)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : nouvelle tentative de correction de la forte latence
+ DPC
+ (bogue #6242)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôtes Windows : l'enregistrement des extensions de
+ fichiers devient facultatif, contribution de Tal Aloni (bogue #8009)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : signature correct des extensions du noyau pour
+ les hôtes Mavericks (bogue #12256)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un bogue où l'icône VirtualBox du dock
+ n'était bien supprimée du dock après la fin d'une VM, empêchant
+ les hîtes Mavericks de s'éteindre (bogue #12241)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un petit problème de l'installeur
+ (bogue #12275)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : corrections de compilation avec Linux 3.13
+ (bogue #12358)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : bonne construction du module noyau vboxvideo sur les
+ invités OL/RHEL 6.1 (bogue #11996)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : la 3D fonctionne sur Slackware 14.1
+ (bogue #12320 commentaires 3 et 4)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité/3D : correction d'un dead-lock occasionnel (bogue #12319)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows/3D : correction d'une fuite de mémoire possible
+ (bogue #12228)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows/XPDM : utilisation de tables séparées contenant
+ des modes graphiques valides pour chaque écran</para>
+ </listitem>
+ <listitem>
+ <para>Suppléments Windows : correction des icentifications automatiques
+ sur les invités Windows Vista et supérieur (bogue #12332)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.3.2 (01-11-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de la restauration du TSC MSR auxiliaire en VT-x
+ qui provoquait des BSODs de l'hôte sur les hôtes Windows 8.1 et un comportement
+ imprévisible sur les autres hôtes (bogue #12237)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : on fournit de fausses valeurs pour deux MSRs afin de
+ mieux contenter l'invité sur certains hôtes</para>
+ </listitem>
+ <listitem>
+ <para>VMM : correction de la détection de VT-x sur certaines machines
+ où le BIOS ne définirait pas le bit de la fonction VMX LOCK, ce qui
+ concernait les paramètres de la VM dans la GUI</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du threshold TPR qui provoquait des BSODs sur
+ les invités Windows XP qui utilisent l'APIC E/S (VT-x seulement ; bogue #12227)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une incompatibilité PATM dans l'état sauvegardé
+ pour les VMs virtualisées de façon logicielle (bogue #12222)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : n'échoue pas si if AMD-V n'est pas disponible si la VM est
+ configurée pour utiliser la virtualisation logicielle</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'une rupture du redimensionnement de l'invité
+ lors des changements des modes d'affichage (quand on passe du mode normal
+ au plein écran, etc)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on s'assure que l'écran de l'invité se redimensionne après
+ la restauration d'une VM d'un état sauvegardé si la taille de l'écran
+ de l'hôte a changé</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : désactivation de la synchronisation de la LED du défilement
+ par rapport à la synchronisation des LEDs HID
+ (hôtes Mac OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Amélioration du Webcam passthrough, y compris le support en
+ GUI support (voir
+ <xref linkend="webcam-passthrough" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle d'invité : implémentation de davantage de méthodes
+ <computeroutput>IGuestSession</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle invité : ajout du support de l'effacement et du renommage
+ des fichiers et des répertoires de l'invité dans VBoxManage</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle invité : plusieurs corrections de bogues</para>
+ </listitem>
+
+ <listitem>
+ <para>API : mauvaise gestion de la valeur par défaut de l'UUID, ce qui
+ donne des UUIDs DMI/SMBIOS pleins de zéros, amenant Windows à
+ demander d'être réactivé (régression 4.3 ; bogue #12244)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage à l'extinction si l'accélération
+ graphique 2D est activée (hôtes Mac OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corrections diverses</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de la détection des CD/DVD quand on passe
+ d'un lecteur vide à un rattaché à l'hôte avec passthrough activé</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc du processus de VM quand le disque
+ est plein dans certaines
+ circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : écoute des changements de paramétrage du réseau NAT pendant
+ l'exécution.</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : le serveur DHCP du réseau NAT enregistre maintenant les
+ adresses sur un support de stockage permanent</para>
+ </listitem>
+ <listitem>
+ <para>Principal : changements d'écran dans la configuration du DNS de l'hôte </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôte Mac OS X : on a retravaillé un mécanisme d'ajout d'un alias
+ sur le bureau vers une VM à partir du sélecteur de VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : suppression des extensions pour les
+ vieux noyaux lors de la mise à jour (bogue #12258)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : bonne définition de l'umask avant d'installer
+ (bogue #12166)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 /3D : correction de gels au lancement d'un bureau
+ 3D (bogue #11503, merci à Sam Spilsbury)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 / 3D : correction du support de tampons en profondeur
+ (bogue #11905)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 / 3D : correction de l'affichage Age Of Empires 3
+ (bogue #11331)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows / 3D : correction de l'affichage du greffon
+ Google Earth</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows / WDDM : corrections de personnalisation</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.3.0 (2013-10-15)</title>
+
+ <para>C'est une mise à jour majeure. Les nouvelles fonctions suivantes ont
+ été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : grosse réécriture du code VT-x et du code AMD-V, incluant
+ de nombreuses corrections de bogues et des améliorations de performance
+ (par exemple bogue #9659)</para>
+ </listitem>
+ <listitem>
+ <para>VMM : introduction d'un petit interpréteur d'instructions pour les
+ situations que ne gère pas la virtualisation matérielle</para>
+ </listitem>
+ <listitem>
+ <para>GUI : mécanisme de messages étendus (utilisation des nouvelles
+ couches d'affichage non modales pour afficher des avertissements non
+ critiques et donner à l'utilisateur des informations supplémentaires)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : extension de la gestion de raccourcis claviers (onglet Entrée des préférences
+ globales avec la possibilité de modifier des raccourcis généraux du
+ gestionnaire de VirtualBox et de la machine virtuelle)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : support de la capture graphique (bogue #4766)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout de l'émulation d'un pavé tactile USB</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support expérimental du webcam passthrough en complément
+ du passthroough USB (voir <xref linkend="webcam-passthrough" />)</para>
+ </listitem>
+ <listitem>
+ <para>Ajout de l'émulation d'un CD-ROM SCSI, incluant le support au
+ démarrage</para>
+ </listitem>
+ <listitem>
+ <para>VRDP : support d'IPv6</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle de l'invité : les sessions de l'invité s'exécutent
+ maintenant dans des processus de sessions dédiés et individualisés (avec
+ les supplément invité au moins 4.3 installés)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle invité : implémentation du support d'<computeroutput>IGuestFile</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : mode routeur expérimental : plusieurs VMs sont connectées
+ au même réseau interne et partagent un service NAT (voir <xref linkend="network_nat_service" />)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>En outre, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+
+ <listitem>
+ <para>VMM : amélioration significative des performances des invités
+ NetWare 5.x/6.x sur des systèmes hôte ne supportant pas la pagination
+ imbriquée</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une perte des NMIs de l'hôte en VT-x guest-context</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : changement de l'ordre des actions dans la bascule de l'émulated
+ de tâches (bogue #10532)</para>
+ </listitem>
+ <listitem>
+ <para>VMM : possibilité d'activer VT-x tout en étant en mode IMX et
+ on donne plus d'informations si ce n'est pas possible</para>
+ </listitem>
+ <listitem>
+ <para>GUI : la vérification des mises à jour utilise https</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : nombreux petits nettoyages internes et corrections de bogues</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : synchronisation des LEDs HID pendant le changement
+ de fenêtre hôte-invité (hôtes (Mac OS X seulement)</para>
+ </listitem>
+ <listitem>
+ <para>GUI, VBoxManage : lorsqu'on désenregistre une VM, désenregistrement
+ également des images de disques durs utilisées exclusivement par celle-ci
+ (bogue #10311)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : utilisation du nombre de coeurs de processeurs physiques
+ présentés au lieu du nombre de coeurs de processeurs logiques pour
+ vérifier si les utilisateurs ont affecté trop de processeurs virtuels à
+ l'invité</para>
+ </listitem>
+ <listitem>
+ <para>Instantanés : les instantanés en direct fonctionnent de nouveau
+ (bogue #9255)</para>
+ </listitem>
+
+ <listitem>
+ <para>Téléportation : cela fonctionne de nouveau (khn1e #9455)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : implémentation du mode de compatibilité AHA-154x dans le
+ BusLogic SCSI HBA émulé</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : amélioration significative des performances des gros
+ transferts ATAPI PIO (les invités BeOS, Minix 3 sont concernés)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : ajout de l'émulation du formatage d'une disquette (NB :
+ inutilisable pour repartitionner un média)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : configuration d'une interface par défaut globale
+ et par VM, utile pour choisir d'utiliser des interfaces de VMs
+ alternatives</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : le paramètre hwvirtextexcl par VM a été remplacé
+ par une propriété hwvirtexclusive globale</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : implémentation d'une nouvelle queue d'événements qui
+ n'utilise plus la queue d'événements native de l'hôte pour gérer les
+ événements de VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : élimination des sémaphores SysV sur tous les OS hôtes
+ autres que Windows, à savoir Linux, Solaris et Mac OS X, d'où il s'ensuit
+ qu'aucune reconfiguration du système n'est nécessaire pour lancer
+ environ plus de 100 VMs</para>
+ </listitem>
+ <listitem>
+ <para>Principal : utilisation du dossier de configuration standard
+ de XDG au lieu de .VirtualBox sur des systèmes où c'est nécessaire (bogue
+ #5099)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : l'environnement de développement du pack d'extension
+ peut maintenant supporter le chargement des modules HGCM produits par
+ Jeff Westphal</para>
+ </listitem>
+ <listitem>
+ <para>VBoxManage : listage de davantage d'informations sur le disque
+ dur//DVD/amovible et support de l'option
+ <computeroutput>--long</computeroutput> pour afficher véritablement
+ tous les détails disponibles</para>
+ </listitem>
+ <listitem>
+ <para>VBoxManage : ajout du support de paramètres en ligne de commandes
+ pour la mise à jour automatique des suppléments invité.</para>
+ </listitem>
+ <listitem>
+ <para>VBoxManage : ajout du support de la présentation des sessions,
+ des processus et/ou des fichiers de l'invité actifs avec
+ <computeroutput>guestcontrol list &lt;all|sessions|processes|files&gt;</computeroutput>.</para>
+ </listitem>
+ <listitem>
+ <para>VBoxManage : ajout du support de la fermeture de sessions actives
+ sur l'invité avec via
+ <computeroutput>guestcontrol session close --session-id &lt;ID&gt;|
+ --session-name &lt;nom ou modèle&gt;|--all</computeroutput>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout du support de l'arrêt des processus invités
+ actifs via
+ <computeroutput>guestcontrol process kill|close|terminate --session-id &lt;ID&gt;|
+ --session-name &lt;nom ou modèle&gt; &lt;PID&gt; ... &lt;PID n&gt;</computeroutput>
+ ou
+ <computeroutput>guestcontrol [p[s]]kill --session-id &lt;ID&gt;|
+ --session-name &lt;nom ou modèle&gt; &lt;PID&gt; ... &lt;PID n&gt;</computeroutput>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout du support de supervision des sessions de l'invité via
+ <computeroutput>guestcontrol watch</computeroutput>
+ </para>
+ </listitem>
+ <listitem>
+ <para>VBoxManage : ajout de <computeroutput>modifyvm --triplefaultreset</computeroutput>
+ pour que la VM redémarre après trois erreurs au lieu de tomber en
+ Meditation Gourou.</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections pour les hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : plusieurs corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout du support de la fin des processus actifs de
+ l'invité via <computeroutput>guestcontrol process kill|close|terminate --session-id &lt;ID&gt;|
+ --session-name &lt;nom ou modèle&gt; &lt;PID&gt; ... &lt;PID n&gt;</computeroutput>
+ ou
+ <computeroutput>guestcontrol [p[s]]kill --session-id &lt;ID&gt;|
+ --session-name &lt;nom ou modèle&gt; &lt;PID&gt; ... &lt;PID n&gt;</computeroutput>
+ </para>
+ </listitem>
+
+
+ <listitem>
+ <para>support 3D : plusieurs corrections pour les hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur des packs d'extension : cela fonctionne si le dossier
+ contient des caractères spéciaux</para>
+ </listitem>
+ <listitem>
+ <para>Clavier : correction de séquences de touches de renvoi comme
+ Ctrl+Alt+Supp pour l'émulation d'un clavier USB</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier partagé/X11 : support des images au format BMP
+ contribution de François Revol</para>
+ </listitem>
+ <listitem>
+ <para>Hôtes Mac OS X : support limité pour Mac OS X 10.9 (Mavericks)</para>
+ </listitem>
+ <listitem>
+ <para>Hôtes Mac OS X : utilisation d'un script de lancement au lieu
+ du mécanisme obsolète StartupItem (bogue #8940)</para>
+ </listitem>
+ <listitem>
+ <para>Hôtes Windows : ne provoque pas de grosse latence DPC (seulement
+ sur certains hôtes ; a encore besoin d'améliorations ; bogue #6242)</para>
+ </listitem>
+ <listitem>
+ <para>Hôtes Windows : prise en compte des liens symboliques dans la
+ récupération des informations sur le volume (bogue #11962)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un mauvais comportement
+ avec l'affichage de la gestion de l'énergie dans l'invité (pilote WDDM
+ seulement ; bogue #11170)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une fuite de mémoire à cause
+ d'un WTSQuerySessionInformation() sur les invités Windows 2000
+ (bogue #12072)</para>
+ </listitem>
+ <listitem>
+ <para>Invités Windows : possibilité de repérer les moments d'inactivité
+ de l'utilisateur dans l'invité grâce à l'événement
+ IGuestUserStateChangedEvent, introduit récemment.</para>
+ </listitem>
+ <listitem>
+ <para>Suppléments Linux : correction de la détection par udev dans le
+ script de démarrage avec les noyaux 3.x</para>
+ </listitem>
+
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.22 (10-01-2014)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : hôte Mac OS X : introduction de la donnée externe "GUI/HidLedsSync"
+ destinée à activer la synchronisation des LEDs HID (fonction désactivée
+ par défaut)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : hôte Mac OS X : correction d'un problème sur les hôtes
+ MacBook Air/Pro quand la GUI pourrait se figer en essayant de synchroniser
+ les LEDs HID</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : présentation en permanence des informations de la
+ mémoire DMI aux invités Windows 2012 (bogue #12017)</para>
+ </listitem>
+
+ <listitem>
+ <para>HGCM : correction de plantages dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'erreurs <emphasis>BLKCACHE_IOERR</emphasis>
+ à l'exécution dans de rares circonstances (bogue #11030)</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'un bogue qui causait un accroc des invités
+ Windows XP si un lecteur CDROM SATA est connecté (bogue #12417)</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'une Guru Meditation dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : si le câble a été déconnecté avant que l'invité a initialisé
+ le périphérique, l'état de la liaison n'était pas bien passé à 'inactif'
+ après que l'initialisation ne se soit terminée malgré le fait qu'il n'y
+ avait pas de connexion</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un offset des éléments d'une image 3D
+ sur certains invités (hôtes Mac OS X Retina seulement ;
+ bogue #11021)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : nombreuses corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support des noyaux Linux Enterprise 6.5
+ (bogue #12505)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du retrait à chaud d'un processeur
+ sur les noyaux Linux récents</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de plantages de l'hôte dans le
+ service dossiers partagés dans certaines conditions</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.20 (28-11-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : on signale toujours les résolutions recommandées pour tous
+ les écrans (craa ne se faisait pas toujours depuis la 4.2.12)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on s'assure que la licence et la description affectées sont
+ en lien avec l'applicatif exporté</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les angles chauds d'OS X n'étaient pas accessibles tant qu'une
+ VM VirtualBox est en fonction (hôtes Mac OS X seulement ; bogue #4139)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : ne tombe pas en boucle infinie si l'hôte ne peut pas
+ accéder à un serveur de DNS (régression 4.3.0 ; bogue #12300)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : pas de reconnexion du câble si les informations DNS
+ changent et si le câble a été déconnecté auparavant (régression 4.3.0 ; bogue #12225)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : sauvegarde correcte du drapeau <emphasis>passthrough</emphasis>
+ pour les lecteurs DVD sans média inséré</para>
+ </listitem>
+
+ <listitem>
+ <para>Clavier : correction d'un plantage de VM si une VM se réveille
+ d'un état sauvegardé où on appuie au moins sur une touche (bogue #11289)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction de plantages lors des changements
+ de mode d'affichage (bogue #9194)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'erreurs d'instantanés quand on utilise des
+ images de disque QCOW ou QED (bogue #12144)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction pour les noyaux Linux récents qui ne détectent
+ pas un disque dur en tant que SSD quand on utilise un contrôleur
+ IDE ou SATA (bogue #12025)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stocmage : correction de la détection des CD/DVD quane on passe d'un
+ contenu vide au lecteur hôte quand passthrough est activé</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'un bogue qui pouvait faire perdre la
+ connexion avec les médias (régression 4.2.18, bogue #11750)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papiers partagç : correction d'une erreur de segmentation
+ potentielle quand on travaille avec un contenu UTF8 et UTF16 (hôtes Mac
+ OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'une logique d'importation pour les applicatifs
+ OVF contenant plusieurs VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur du pack d'extension : il fonctionne si le fichier se
+ trouve dans un dossier ayant des caractères spéciaux</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : extension de la fonctionnalité pour les bindings C</para>
+ </listitem>
+
+ <listitem>
+ <para>API : blocage de la suppression de l'instantané actuel s'il a des
++ instantanés fils (pertinent seulement pour les VMs sans disques durs,
+ dont on peut prendre un instantané, leur présence empêchait toujours
+ la suppression), ce qui créait une corruption de configuration de la
+ VM</para>
+ </listitem>
+
+ <listitem>
+ <para>API : marquage des configurations de VM par des instantanés sans
+ que l'instantané actuel ne soit inaccessible, car cette combinaison
+ n'a aucun sens</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction des informations sur certains événements
+ générés automatiquement (seulement avec XPCOM, l'hôte Windows n'était pas
+ concerné), ce qui ne provoquait pas d'erreurs quand on récupérait les
+ attributs par le service Web (bogue #12379)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : support pour Mac OS X 10.9 (Mavericks)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hîtes Mac OS X : bonne signature des extensions noyau pour les
+ hôtes Mavericks (bogue #12256)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : utilisation d'un script de lancement au lieu
+ d'un mécanisme StartupItem obsolète (bogue #8940)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un bogue où l'icône de dock de
+ VirtualBox n'était pas bien supprimé du dock après la fin d'une VM,
+ empêchant les hôtes Mavericks de s'éteindre (bogue #12241)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation avec Linux 3.13
+ (bogue #12358)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation avec Linux 3.12 (bogue #12083)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation avec Linux 3.11
+ pour les dossiers partagés (bogues #11946, #12128)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation avec SLES11 SP3</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : bonne définftion de l'umask avant l''installation
+ (bogue #12166)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : construction correcte du module de noyau vboxvideo
+ sur des invités OL/RHEL 6.1 (bogue #11996)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : on a fait en sorte que la 3D fonctionne sur
+ Slackware 14.1 (bogue #12320 commentaires 3 et 4)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de fuites de mémoire causçes par
+ <emphasis>WTSQuerySessionInformation()</emphasis>
+ sur des invités Windows 2000 (bogue #12072)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du redimensionnement avec plusieurs
+ écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11/3D : correction de gels au démarrage du bureau 3D
+ (bogue #11503, merci à Sam Spilsbury)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité/3D : correction d'un dead-lock occasionnel
+ (bogue #12319)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.18 (09-06-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : gestion correcte des NMIs sur les hôtes Linux où X2APIC est
+ activé</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages potentiels avec les invités 64 bits
+ sur des hôtes 32 bits (bogue #11979)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI / transparence : gestion correcte du défilement via la roulette
+ de la souris</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI, VBoxManage : quand on désenregistre une VM, désenregistrement
+ également des images de disque dur utilisées exclusivement par cette VM
+ (bogue #10311)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on empêche des plantages dans certaines conditions sur les
+ hôtes X11</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corrections du multiécrans (mauvais positionnement de la souris,
+ morcellements)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections du pilote graphique WDDM de Windows
+ (multiécrans, transparence)</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : la prise d'instantanés en direct fonctionne de nouveau
+ (bogue #9255)</para>
+ </listitem>
+
+ <listitem>
+ <para>Téléportation : elle fonctionne à nouveau (bogue #9455)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : avec <emphasis>snapshot take</emphasis>, <emphasis>
+ --pause</emphasis> est par défaut et <emphasis>--live</emphasis>
+ correspond à la prise d'instantanés en direct</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : pas de plantage sur les systèmes ayant de nombreuses
+ interfaces
+ (hôtes Solaris seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : après le réveil de l'hôte d'une suspension, déconnexion
+ et reconnexion des câbles réseaux virtuels pour forcer le renouvellement
+ des baux DHCP de l'invité. Jusque-là, seuls les hôtes Mac OS X et
+ Windows le faisaient (bogue #10063)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : lors des changements de noms des serveurs, on force la notification
+ de la reconnexion du câble réseau virtuel (hôtes Mac OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Mac OS X : on laisse les packs d'extension précédemment
+ installés lors des mises à jour de VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : corrections pour Linux 3.11 (bogue #12001)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un kernel panic potentiel à cause
+ d'une préemption imprévue due à la journalisation</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'un problème où les périphériques USB2
+ étaient inaccessibles si on les branchait à des ports USB3</para>
+ </listitem>
+ <listitem>
+ <para>Suppléments Linux : ajout de l'identifiant de périphérique PCI
+ à vboxvideo.ko pour corriger l'initialisation du DRI sous certaines conditions (bogue #11957)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la détection par udev dans le
+ script de démarrage avec les noyaux Linux 3.x</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.16 (04-07-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>OVF/OVA : ne plante pas lors de l'importation si aucun manifeste
+ n'est utilisé (régression 4.2.14 ;
+ bogue #11895)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne restaure pas l'instantané actuel si on coupe après une
+ Mediation Gourou</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un plantage lorsqu'on branche à chaud un
+ lecteur DVD vide dans la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un plantage quand un invité lit un DVD
+ connecté au contrôleur SATA dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : n'échoue pas avec des invités 64 bits sur des hôtes 32 bits
+ (bogue #11456)</para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrage automatique : correction du démarrage de la VM sur OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : contrôles natifs Windows 8</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : restauration du style d'origine sur Vista 32</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Windows : adaptions pour Windows 8.1 (bogue #11899)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : après la suppression de VirtualBox par
+ <emphasis>VirtualBox_Uninstall.tool</emphasis>, suppression de la
+ liste <emphasis>pkgutil --pkgs</emphasis> list as well</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.14 (21-06-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une autre invalidation TLB pour les pages non
+ présentes</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une régression de performance (régression 4.2.8 ;
+ bogue #11674)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage à l'extinction</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on empêche les touches mortes dans certaines conditions sur
+ les hôtes Windows (bogues #2613, #6171)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage rare lors du redimensionnement de
+ l'écran de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : possibilité de changer les paramètres VRDP (y compris
+ l'activation/désactivation du serveur) si la VM est en pause</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction des périphériques en passing through sur des hôtes
+ Mac OS X avec une VM ayant 2 ou plusieurs processeurs virtuels (bogue
+ #7462)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un accroc lors d'un transfert asynchrone avec
+ certains périphériques (régression 4.1 ; hôtes Windows seulement ; bogues #11839)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : bonne gestion des adresses orphelines (bogue #11207)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction de la fonction de bascule de la table de routage
+ PCI (corrige les invités NetWare 6.x)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : n'utilise pas les instructions <emphasis>ENTER</emphasis> / <emphasis>LEAVE</emphasis>
+ du BIOS car elles ne fonctionnent pas en mode réel comme l'ont défini
+ certains invités (comme Plan 9 et QNX 4)</para>
+ </listitem>
+
+ <listitem>
+ <para>DMI : possibilité de configurer <emphasis>DmiChassisType</emphasis>
+ (bogue #11832)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une perte d'écritures si on utilise
+ iSCSI avec des instantanés et des E/S asynchrones (bogue #11479)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de l'accès à certaines images VHDX créées par
+ Windows 8 (bogue #11502)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc à la création d'un instantané en
+ utilisant des images de disque Parallels (bogue #9617)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corrections du mode transparent + 3D (bogue #11723)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : la version 4.2.12 ne pouvait pas lire les états suvegardés des
+ anciennes versions dans certaines conditions (bogue #11718)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/Propriétés : pas de création d'une propriété invité sur des
+ VMs non en fonction si la propriété n'existe pas et est sur le point
+ d'être supprimée (bogue #11765)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/propriétés : n'oublie pas de rendre permanentes les
+ propriéés après l'extinction d'une VM (bogue #11719)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/affichage : pas de perte des régions transparentes lors
+ du redimensionnement d'un écran</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/OVF : pas de plantage à l'importation si le client a
+ oublié d'appeler <emphasis>Appliance::interpret()</emphasis> (bogue #10845)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/OVF : ne cée pas d'applicatifs invalides en découpant le
+ nom des fichiers lorsque le nom de la VM est très long (bogue #11814)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/OVF : pas d'échec si l'applicatif contient plusieurs références
+ de fichiers (bogue #10689)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/mesures :: correction de fuites du descripteur de fichier
+ Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : limitation de la profondeur de l'arborescence des
+ instantanés à 250 niveaux car au-delà, cela entraînera une perte de performance
+ et cela peut provoquer des plantages</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la définition de l'UUID parent sur
+ les images de différenciation qui utilisent
+ <emphasis>sethdparentuuid</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : contournement pour éviter un plantage suite à une balance
+ NUMA automatique qui a été introduite dans Linux 3.8
+ (bogue #11610)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Windows : installation forcée du certificat public en
+ arrière-plan (donc en empêchant totalement l'interaction de l'utilisateur)
+ si on spécifie l'option <emphasis>--silent</emphasis> en ligne de commandes</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de problèmes avec l'instalation partielle
+ dans l'installation sans efforts</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du morcellement de l'affichage avec
+ le bouton démarrer en mode transparent dans certains thèmes</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : corrections du mode transparent et du
+ redimensionnement automatique</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la tentative de récupération
+ des nouvelles autorisations d'identification automatique si celles actuelles
+ n'étaient pas encore traitées</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur des suppléments Windows : ajout du paramètre
+ <emphasis>/with_wddm</emphasis> pour sélectionner par défaut le pilote
+ WDDM expérimental</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du paramétrage du délai maximale
+ propre et des textes annulés
+ dans les informations d'étiquette du greeter
+ lightdm</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation avec les noyaux
+ Linux 3.2.0 d'Ubuntu (régression 4.2.12, effet colatéral de la correction
+ de construction avec le nyau Debian ; bogue #11709)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : réduction de la charge processeur de VBoxClient
+ en mode glisser/déplacer</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments OS/2 : la roulette de la souris fonctionne (bogue #6793)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de problèmes de copier/coller entre
+ deux invités sur un hôte X11 (bogue #11792)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de la gestion du dépassement de déllai /
+ tuage des processus de l'invité</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.12 (12-04-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation quand on branche un
+ processeur dans un invité Linux si la pagination imbriquée est désactivée</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : invalidation des entrées TLB même pour des pages non présentes</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : support du Multi-écrans : correction d'un plantage quand on
+ change de mode visuel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : Support Multi-écran : la désactivation des écrans invités
+ devrait maintenant persister quand on change de mode visuel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : Support Multi-écrans : gestion du branchement/débranchement
+ d'un écran hôte/invité dans les différents modes visuels</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : support Multi-écrans : mode transparent : correction d'un
+ bogue quand les écrans sont vides en mode transparent et étaient représentés
+ représentés par des fenêtres en plein écran</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : Support Multi-écrans : chaque fenêtre de machine en configuration
+ multi-écrans devrait maintenant avoir la bonne barre de menus (hôtes
+ Mac OS X)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : Support Multi-écrans : le menu Vue de la fenêtre de la machine
+ devrait maintenant avoir le bon contenu en mode transparent/plein écran
+ (hôtes Mac OS X)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : gestionnaire de VM : les barres de défilement verticales
+ devraient maintenant se mettre à jour lors du redimensionnement du
+ contenu/de la fenêtre</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : paramètres VM : correction d'un plantage lors d'un événement
+ de changement d'état de la machine</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : n'affiche pas d'avertissements sur l'activation et la
+' désactivation de l'intégration de la souris si la VM a été restaurée
+ d'un état sauvegardé</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : signalement correct que l'invité doit prendre en
+ charge les sommes de vérification MD5 TCP partielles (bogue #9380)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un mauvais alignment des images VDI qui
+ faisait changer la taille du disque lors de l'utilisation des instantanés
+ (bogue #11597)</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : correction d'un ALSA &amp; PulseAudio cassés sur certains
+ hôtes Linux à cause d'une symbole de résolution invalide (bogue #11615)</para>
+ </listitem>
+
+ <listitem>
+ <para>Clavier PS/2 : nouvelle application du délai de répétition du
+ clavier et de la vitesse après la resta[ation d'une VM sauvegardée (bogue #10933)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : mise à jour des informations de la table du processeur DMI
+ (type 4) : correction des gestions de la table du cache L1 &amp; L2</para>
+ </listitem>
+
+ <listitem>
+ <para>Prise du temps : correction de plusieurs problèmes pouvant conduire
+ à une heure incorrecte, les invités Solaris affichaient de façon sporadique
+ l'heure qui revenait brièvement au 1 janvier 1970</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/mesures : les mesures du disque sont récupérées
+ correctement quand on utilise un RAID logiciel, des liens symboliques
+ ou rootfs sur hôtes Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ne reste pas en pause après la création d'un
+ instantané et que la VM était en fonction avant</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : introduction de <emphasis>controlvm nicpromisc</emphasis>
+ (bogue #11423)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ne plante pas lors d'un <emphasis>controlvm
+ guestmemoryballoon</emphasis> quand la VM n'est pas en fonction
+ (bogue #11639)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : ne filtre pas les événements de propriétés invité
+ car cela toucherait tous les clients (bogue #11644)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle de l'invité : on empêche le double retour à la ligne dans
+ la sortie généée par les commandes de l'invité et conversion NLS</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : correction d'erreurs de construction sur
+ les noyaux Linux 3.5 et plus récent si on a activé l'option de configuration
+ <emphasis>CONFIG_UIDGID_STRICT_TYPE_CHECKS</emphasis> (bogue #11664)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : gestion du rabattement sur le pilote VESA sur
+ les invités basés sur RedHat si vboxvideo ne peut pas être chargé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de compilation RHEL/OEL/CentOS 6.4 (bogue #11586)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de compilation sur un noyau Debian
+ Linux 3.2.0-4 (3.2.39) (bogue #11634)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support de l'identification automatique
+ pour les invités Linux qui utilisent
+ LightDM comme gestionnaire d'affichage</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : Support du multiécrans. Activation/désactivation
+ Dynamique des écrans virtuels secondaires. Support des invités basés
+ sur XPDM/WDDM (bogue #6118)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : support de X.Org Server 1.14 (bogue #11609)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.10 (05-03-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : correction du clavier avec XQuartz X server (bogue #10664)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/affichage : correction d'un plantage avec plusieurs écrans
+ dans certaines conditions (hôtes Mac OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/propriétés : correction d'un plantage dans certaines
+ conditions, par exemple après un retour d'hibernation de l'hôte (bogue #11444)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : pas de perte des paramètres du réseau interne s'ils
+ ne sont pas actuellement actifs</para>
+ </listitem>
+
+ <listitem>
+ <para>Stocmage : nouvelle correction d'incompatibilité des images de différenciation
+ VHD avec Hyper-V (bogue #5990)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : pas de lecture au-delà de la fin d'un fichier spécifiée
+ avec <emphasis>export --eulafile (bogue #11528)</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : corrections de compilation avec Linux 3.9-rc0</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : corrections de deux avertissements dans le
+ module des dossiers partagés du noyau de l'invité (bogue #11390)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux: ne plante pas VBoxService si libdbus n'est pas
+ disponilable (bogue #8638)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la mise à jour du
+ support MultiMedia Redirection (MMR)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.8 (20-02-2013)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de l'invité avec un invité à grande
+ quantité de RAM sur les hôtes VT-x (bogue #11306)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un bogue d'affichage dans la boîte de dialogue
+ de Mac OS X de clonage d'une VM (bogue #10982)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : tous les tags de traduction n'étaient pas pris en compte
+ quand on changeait de langue (bogue #11342)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la boîte de dialogue <emphasis>faire une impression d'écran
+ de l'invité</emphasis> n'avait parfois aucune possibilité de saisie au
+ clavier sur les hôtes Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/Machine: correction de la génération d'un événement
+ spurious pour les VMs inaccessibles qui rapportaient une boxle de génération
+ d'événement sans fin en coopération avec la GUI qui ne répondait plus
+ (régression 4.2.6 ; bogue
+ #11323)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/Affichage : correction d'une violation d'accès dans
+ certaines conditions avec des configurations multiécrans (bogue #10539)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal/mesures : les mesures du réseau sont désormais ne récupérées
+ que pour les interfaces actives, l'état d'une interface étant évalué
+ quand la mesure correspondante est activée via <emphasis>setupMetrics</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : réduction du temps de synchronisation des instantanés dans
+ certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une corruption de données après le
+ redimensionnement d'une image VDI dans
+ certaines circonstances (bogue #11344)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de la synchronisation d'instantanés en ligne
+ qui ne fonctionnait pas (régression 4.2.6, bogue #11359)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un plantage à la connexion à certaines
+ cibles iSCSI QNAP</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une incompatibilité des images de
+ différenciation VHD avec Hyper-V (bogue #5990)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction du calcul de la somme de contrôle d'une pseudo
+ en-tête TCP pour IPv6 (bogue #9380)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages du jeu Battlefield 1942 (bogue #11369)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : vrai nettoyage du nom des dossiers de VM et du iichier
+ des paramètres, le code était jusque-là désactivé (bogue #10549)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : possibilité de modifier les paramètres VRDE pour les VMs
+ sauvegardées</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ne plante pas pendant <emphasis>screenshotpng</emphasis>
+ s'il n'y a pc; d'affichage (bogue #11363)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : contournement du bogue 55940 de gcc qui pourrait
+ conduire à un faux code de module de noyau si on utilise gcc 4.7 pour
+ compiler le noyau 32 bits de l'hôte Linux (bogue #11035)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'un état de verrouillage incohérent et
+ d'avertissements deadlock de la charge du module et au démarrage de la VM
+ quand CONFIG_PROVE_LOCKING est activé (bogue #11318)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : la touche "]" fonctionne à nouveau sur les claviers
+ japonais</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : ne fait pas planter le noyau pendant un dtrace si
+ les extensions VBox du noyau sont chargées (hôtes 10.6 seulement ; bogue #11273)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris / Mac OS X : les mesures de la charge processeur de
+ la machine signalement maintenant 100% si tous les coeurs sont entièrement
+ utilisés (pour être un coeur unique)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur hôte Solaris 11 : attente de la fin des services d'une
+ précédente installation pour éviter une collision SMF.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : ne bloque pas les signaux des processus exécutés
+ via le contrôle de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'une petite fuite de mémoire dans
+ VBoxService
+ (bogue #10970)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un problème de dossier partagé
+ en gros besoins de lecture/écriture sur les invités Windows 64 bits (bogue #11115)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : corrections de compilation sur Linux 3.8 (bogue #11036)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction des SIGALRM bloqués dans les sessions
+ du bureau 3D
+ (bogue #10987)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction d'une référence non résolue dans vboxvideo_drv
+ pour les invités X.org 6.8 et antérieurs (comme RHEL4 ; régression 4.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction du redimensionnement automatique de
+ l'écran pour les invités ayant X.org 1.3 ou antérieur (régression 4.2.0)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+ <sect1>
+ <title>Version 4.2.6 (19-12-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : n'envoie pas d'événements stale VT-x pour empêcher des
+ plantages après le redémarrage de la VM
+ (bogue #11256)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : contournement des BIOS bogués ne permettant un <emphasis>MONITOR</emphasis>
+ que pour certains processeurs (bogue #9460)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du trimming du texte sans alias dans les
+ en-têtes de l'élément à voir en détails
+ (régression 4.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'une fonctionnalité create-settings-file-alias
+ sur les hôtes Mac
+ (régression 4.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la fonctionnalité fixed take-guest-screenshot sur les hôtes
+ Windows
+ (bogue #11095)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : plusieurs petites corrections notamment de la palette (bogue #11191)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du type d'OS Windows 2012 (bogue #11206)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité d'éteindre la VM même si VBoxSVC a planté</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction de l'annulation d'instantanés, qui pouvait
+ provoquer des configurations de VMs incohérentes (bogue #6877)</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction de l'identification des images de disque par l'UUID (bogue #11209)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage occasionnel avec l'authentification externe
+ (bogue #11156)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : correction d'un doublon d'analyse dans les modes de texte</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de l'énumération des requêtes invalides en attente
+ au moment du service de requêtes <emphasis>DEVICE POWER</emphasis> (hôtes
+ Windows seulement ;
+ bogues #10021, #11056)</para>
+ </listitem>
+
+ <listitem>
+ <para>Clavier USB : contournement pour les claviers coéens (bogue #11150)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage: correction d'un accroc avec les images QCOW et quand
+ les E/S asynchrones sont activées</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc avec les images VHD récentes (bogue #11279)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : on a enfin écrit le drapeau non rotationel pour les
+ paramètres de la VM (régression 4.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction d'un problème avec les compteurs de
+ statistiques réseaux dans la boîte de dialogue d'informations de la
+ session (GUI)</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : introduction de <emphasis>network rate</emphasis> et de
+ <emphasis>disk usage</emphasis> metrics</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : correction d'un plantage dans certaines conditions sur
+ les hôtes Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction pour El Torito</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : si l'association d'un dossier de l'hôte à un
+ dossier partagé n'existe pas, on le laisse actif mais on le note comme
+ invalide pour empêcher une incohérence des états sauvegardés (bogue #11147)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la conversion des disques depuis des
+ images brutes</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : affichage de la description des instantanés dans
+ les informations de la VM ou des instantanés</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ouverture cohérente des médias implicits dans tous
+ les endroits gérant des médias</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : le nom de l'initiateur iSCSI n'était pas stocké dans le
+ fichier des paramètres quand on faisait un <emphasis>storageattach</emphasis> (bogue #11212)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : <emphasis>metrics collect</emphasis> gère maintenant
+ correctement les mesures
+ <computeroutput>'CPU/MHz'</computeroutput> et
+ <computeroutput>'Net/*/LinkSpeed'</computeroutput> metrics</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : modification de l'UUID de l'image ou de l'UUID parent
+ pour faire en sorte que
+ <emphasis>storageattach</emphasis> fonctionne dans tous les cas
+ à coup sûr</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : introduction de <emphasis>storageattach --medium additions</emphasis>,
+ raccourci pour monter l'images des suppléments (bogue #11165)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de l'imroqtation de fichiers OVF créés par
+ un VMware récent (bogue #10905)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / Réseau Bridgé : correction du problème de fuite de
+ connexions avec conntrack (bogue #11178)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support des sessions ConsoleKit dans
+ le service vminfo de VBoxService</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ne plante pas au remontage dans certaines
+ conditions (bogue #11291)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux/Solaris : correction du recueil des mesures de
+ la mémoire de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : ajout d'une dépendance pour garantir que les
+ répertoires de l'utilisateur soient accessibles lors du démarrage de VBox services</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur hôte Windows : intégration des traductions issues de
+ contributions des utilisateurs, merci à tous les contributeurs !</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de l'installation des identifications
+ automatiques pour Windows 8</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : n'échoue pas si le service hôte des dossiers
+ partagés n'est pas disponible</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du démarrage des suppléments
+ invité sur les invités Windows 2000 (bogue #11253)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du redimensionnement automatique
+ des invités Windows 8</para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.4 (26-10-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : correction d'avertissements de validation dans l'onglet des
+ paramètres globaux / proxy (régression 4.2.2, bogue #11089)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage en multiécrans dans certaines
+ conditions (hôtes OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxBalloonCtrl : correction de la gestion de l'argument en ligne
+ de commandes dans le module du jeu de ballon</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage occasionnel lors de la lecture d'une vidéo
+ dans l'invité (bogue #11082)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction d'informations DMI cassées (régression 4.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : contournement du démarrage à partir de disquettes Windows 2000</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : correction de la perte de la élection du mode graphique au
+ redémarrage de la VM (#10983)</para>
+ </listitem>
+
+ <listitem>
+ <para>Parallèle : correction d'échec de l'impression sur port parallèle
+ / erreur de file du papier vide (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un plantage aux réponses DNS sans alias quand
+ on utilise le résolveur de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc dans de rares circonstances</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.2.2 (18-10-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été
+ corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : adaptaption aux changements sur Mac OS X 10.8.2 (bogue #10965)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : rétablissement de la fonction du bouton de barre d'outils des
+ VMs (régression 4.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout de la fonctionnalité Groupe à la barre d'outils</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la gestion de l'association des noms de fichiers
+ .ova/.ovf (régression 4.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : il n'était pas possible de modifier un paramètre avant
+ la création de la première VM (bogue #10928)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : désactivation du groupage si tous les éléments sélectionnés
+ sont dans une liste de fils d'un même groupe</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un menu pour changer l'option glisser/déplacer lors de
+ l'exécution </para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : nettoyage du menu presse-papier partagé lors du changement
+ de mode visuel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on s'assure que la VM reçoit le focus du clavier en entrant
+ en mode plein écran sur un hôte Win (bogue #11051)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : désactivation de l'authentification de proxy pour des raisons de sécuri!é</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de l'implémentation
+ <emphasis>DrawIndexedPrimitiveUP</emphasis> pour le pilote graphique
+ Windows WDDM (bogue #10929) </para>
+ </listitem>
+
+ <listitem>
+ <para>Stocmage : correction d'une déclaration de version dans l'émulation
+ AHCI lors des requêtes où les E/S asynchrones sont désactivées</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc au redémarrage de la VM dans
+ certaines circonstances (bogue #10898)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un plantage dans de rares circonstances (hôtes
+ Windows seulement ; bogue #10128)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : utilisation automatique du résolveur de l'hôte si le nom
+ du serveur hôte est défini sur une valeur inhabituelle (bogue #10864)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction d'un plantage de VirtualBox lors de gros
+ transferts réseaux (régression 4.2 ; bogues #10936, #10969, #10980)</para>
+ </listitem>
+
+ <listitem>
+ <para>ICH9 : correction de l'initialisation du pont PCI</para>
+ </listitem>
+
+ <listitem>
+ <para>Souris USB : garantie que le dernier événement de souris ne se perde pa
+ si aucune adresse n'est disponible</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : certains invités primaires (comme Windows 95) ne trouvaient
+ pas de périphérique d'amorçage après un redémarrage à chaud</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : on ne jette pas la palette en mode texte lors du paramétrage
+ de la couleur des contours</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : correction du démarrage automatique des invités OS X (régression 4.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la sortie de <emphasis>showvminfo --machinereadable</emphasis>
+ (bogue #10973)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de l'analyse de <emphasis>storageattach --discard</emphasis>
+ (bogue #11023)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'une mauvaise sortie du paramètre HPET
+ de <emphasis>showvminfo</emphasis>
+ (bogue #11065)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la fermeture de la session de l'invité
+ après l'exécution d'un processus invité via le contrôle de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxShell : adaptations aux changements de nom de l'interface</para>
+ </listitem>
+
+ <listitem>
+ <para>Périphériques suppléments invité : correction d'un accroc des
+ suppléments invité quand on a relancé une machine après un plantage</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes / invités Linux : corrections pour Linux 3.7-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux: support de X.Org Server 1.13</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'un accroc au redémarrage du serveur X
+ avec 'anciens noyaux invités</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'un plantage de VBoxService lkrs
+ du retrait à chaud d'un processeur
+ (bogue #10964)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un problème de
+ redimensionnement automatique de l'écrn avec les invités NT4</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments OS/2 : correction d'un accroc à l'extinction</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments OS/2 : correction d'un problème du pilote de la souris</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction du service de démarrage automatique qui
+ partait en mode maintenance après le démarrage de toutes les VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction du lien entre le pilote de l'hôte et le
+ module dtrace</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+
+ <title>Version 4.2.0 (13-09-2012)</title>
+
+ <para>C'est une version majeure. Les nouvelles fonctions essentielles suivantes
+ ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Amélioration du support de Windows 8, en particulier beaucoup de
+ corrections liées à la 3D</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : groupes de VMs (bogue #288)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : mode expert dans les assistants</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on permet de modifier certains paramètres pendant
+ l'exécution</para>
+ </listitem>
+
+ <listitem>
+ <para>Support jusqu'à 36 cartes réseaux, associées à une configuration
+ de chipset ICH9 (bogue #8805)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle des ressources : ajout du support de la limitation
+ de la bande passante E/S du réseau virtuel ; voir <xref linkend="network_bandwidth_limit" />
+ (bogue #3653)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajokt de la possibilité de démarrer des VMs au démarrage du système
+ sur Linux, OS X et Solaris ; voir <xref linkend="autostart" /> (bogue #950)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support expérimental de Drag'n'drop de l'hôte pour les
+ invités Linux. Le support de plus d'invités et pour le sens invité-vers-hôte
+ est prévu. (bogue #81)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support du passthrough pour le port parallèle sur les
+ hôtes Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>Amélioration de l'API pour contrôler l'invité ; merci de voir
+ la documentation de référence du SDK et de l'API pour plus d'informations</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>En outre, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Mac OS X : signature de l'application et de l'installeur
+ pour éviter des avertissements sur Mountain Lion</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage potentiel de l'hôte lors de
+ l'extinction d'une VM quand une autre VM est en fonction (ne concernait
+ que les hôtes 32 bits et ceux 64 bits OS X, régression de la de la
+ 4.1, bogue #9897)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage potentiel de l'hôte en cas de forte
+ pression sur la mémoire de l'invité (découvert dans les invités Windows
+ 8)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : amélioration des performances du passage en contexte VM pour
+ les processeurs Intel qui utilisent la pagination nestée</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ajout du support des fonctions <emphasis>FlushByASID</emphasis>
+ des processeurs AMD (Bulldozer et plus récents)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la gestion du mode non-réel sur les anciens
+ processeurs ayant activé VT-x (gPXE, Solaris 7/8/9 ; bogue #9941)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction des tableaux MP pour les routines d'interruption
+ E/S d'APIC pour les harmoniser avec les anciens invités SMP (comme
+ les anciennes versions d'OS/2)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : support des processeurs VIA récents (bogue #10005)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la gestion des délimitateurs de tâches si
+ VT-x/AMD-V est désactivé</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : corrections de la fusion de page</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : gestionnaire des opérations réseaux</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : permet de prendre des instantanés du contenu de la fenêtre de la VM
+ actuelle (bogue #5561)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : permet de trier automatiquement la liste des VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : permet le démarrage des VMs transparentes à partir de
+ l'interface graphique</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : permet la réinitialisation, l'extinction et la coupure depuis
+ la fenêtre du gestionnaire</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : permet de limiter globalement la résolution maximum de
+ l'écran pour les invités</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage de toute la partie du média dans ;a liste des
+ images ISO récemment utilisées</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne crée pas de dossiers supplémentaires quand une nouvelle
+ machine a un caractère de séparation dans son nom (bogue #6541)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne plante pas ou ne se termine pas si la boîte de dialogue
+ des paramètres est toujours ouverte.
+ (bogue #9973)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : prise en compte des valeurs DPI échelonnées lors de l'affichage
+ des polices sur des hôtes Windows
+ (bogue #9864)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : si une interface réseau bridgée ne peut pas être trouvée,
+ ne refuse pas de démarrer la VM mais permet à l'utilisateur de modifier
+ immédiatement le paramètre</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'un plantage lors de la restauration d'un
+ ancien instantané au moment de l'extinction d'une VM (bogues
+ #9364, #9604, #10491)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier : désactivation du presse-papier par défaut sur les
+ nouvelles VMs (voir <xref linkend="security_clipboard" />). Vous pouvez
+ l'activer n'importe quand en utilisant le menu de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : mettoyage du nom des dossiers de VMs et du fichier
+ des paramètres (bogue #10549)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : permet de stocker de façon chiffrée le mot de passe
+ de l'initiateur iSCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : améliorations du serveur TFTP intégré (bogues #7385, #10286)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une fuite de mémoire lors de la désactivation du
+ moteur NAT (bogue #10801)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : support du VLAN 802.1q (bogue #10429)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : implémentation de la gravure de CDs audio en mode
+ passthrough</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction du passthrough des CDs audio pour certains
+ lecteurs multimédias</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : implémentation du support de la désactivation des
+ blocs inusités d'une image via TRIM pour SATA et IDE, et via UNMAP
+ pour SCSI lorsqu'on utilise des images VDI</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : ajout du support des images QED</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : ajout du support de QCOW (support complet de la v1 et
+ en lecture seule pour les images v2)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : ajout du support en lecture seule des images VHDX</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : ne plante pas si on branche ou débranche un périphérique USB
+ pendant la sauvegarde ou le chargement de l'état d'une VM (invités
+ SMP seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout du support du serveur X.org 1.11 et
+ 1.12</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : passage à l'utilisation du pilote de souris inclu
+ dans le noyau</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : pas besoin de recréer les adaptateurs réseaux
+ host-only: pas besoin de recréer d'adaptateurs host-only après une mise
+ à jour de VirtualBox update</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : Mise à jour de l'ensemble d'outils ; le code source
+ a été rendu compatible avec VC 2010 et des options du compilateur liées
+ à la sécurité ont été activées</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une perte de mémoire dans VBoxTray (bogue #10808)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.18 (06-06-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés
+ et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de <emphasis>VERR_REM_VIRTUAL_CPU_ERROR</emphasis>
+ dans des conditions rares après que l'invité a été réinitialisé (bogue #5164
+ et autres)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de gels de l'hôte avec les invités 64 bits sur
+ des hôtes Linux 32 bits (bogue #10528)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : ajout d'un contournement pour les clients rdesktop qui ne
+ mettent pas à jour correctement la taille de l'écran lorsqu'on le minimise</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : correction d'un bogue rare qui peut entraîner une corruption
+ de la mémoire de l'invité après que le contrôleur de stockage de l'invité
+ a été réinitialisé</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : nouvelle tentative pour corriger des plantages dans
+ certaines conditions (hôtes Windows seulement ; bogue #10513)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : traitement des problèmes lors de l'exécution de
+ Leopard / Snow Leopard
+ (bogue #10631)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / Réseau bridgé : correction du problème de déchargement
+ du pilote de périphérique sur les noyaux 3.2.18 et supérieur, du fait
+ d'un compteur de références invalide
+ (bogue #10624)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / invités : corrections Linux 3.5-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : le contenu de l'invité n'était parfois pas
+ mis à jour correctement (bogue #9887)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de l'installeur pour le serveur
+ X.org 1.11 et 1.12</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.16 (22-05-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VERR_ACCESS_DENIED</emphasis>
+ avec certains invités (bogues #7589, #8247)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru Meditation <emphasis>VERR_PAGE_TABLE_NOT_PRESENT</emphasis>
+ avec les invités Ubuntu 32 bits où la pagination nestée est activée
+ sur les processeurs AMD
+ (bogue #10183)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : préservation des limites et des attributs de segmentation lors
+ du passage en mode non-réel nécessaire pour que certains invités basiques
+ (legacy) fonctionnent correctement (VT-x sans exécution non restreinte de
+ l'invité seulement ; bogue #9941)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc de la VM après le retour d'un état en
+ pause / sauvegardé avec les invités SMP dans de rares cas</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : plusieurs corrections de plantages des pilotes
+ graphiques WDDM de Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un plantage quand on essaie de traiter des
+ diagrammes (datagram) ICMP dans certaines
+ circonstances (bogue #10527)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only : passage du nombre maximal d'interfaces à
+ 128 sur les hôtes Linux et Mac OS X (il n'existe pas cette limite
+ pour les hôtes Solaris et Windows)</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : correction d'un mauvais calcul du point d'entrée SEC/PEI Core (bogue #10531)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : définition de la bonne VM si l'état sauvegardé a
+ échoué pour une raison quelconque (bogue #6189)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : message d'erreur plus utile si un média est inaccessible</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>controlvm savestate</emphasis>
+ si la VM est déjà en
+ pause</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : traitement de problèmes d'exécution sur Mountain Lion Preview 3
+ (bogue #10267)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de compilation sur Linux 3.4</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'un mauvais chemin de l'aide sur certains
+ paquets de type rpm
+ (bogue #10418)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de la gestion des variables
+ d'environnement personnalisées pendant
+ (bogue #10581)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de plantages du pilote invité
+ de VBoxSF idanscertains cas (régression de la 4.1.10, bogue #10408)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ne charge pas le pilote WDDM si le support
+ 3D n'est pas disponible pour les invités que les Windows 8 gardent des
+ invités maintenables dans ce cas (toujours mieux de se passer de
+ certaines fonctions que d'avoir un écran vide)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout du support du serveur X.org 1.11 et
+ 1.12</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.14 (13-04-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Réseau : correction du problème avec les paquets plus gres que
+ MTU-4 quand PCnet ou PRO/1000 ont été reliés à certains types d'adaptateurs
+ sur les hôtes OS X
+ (bogue #3783)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une erreur de segmentation dans de rares
+ circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages du pilote graphique WDDM de
+ Windows pour certains invités SMP
+ (bogues #10200, #10331)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité Windows, VRDP: correction de corruptions
+ occasionnelles du texte à la verticale</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.12 (03-04-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation
+ <emphasis>VERR_NOT_SUPPORTED</emphasis> et
+ <emphasis>VERR_RAW_MODE_INVALID_SMP</emphasis> due à une reprogrammation
+ invalide en mode brut (bogue #10370)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation
+ <emphasis>PDMCritSectLeave</emphasis> dans de rares circonstances avec
+ les invités SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : bonne gestion de <emphasis>Math Fault</emphasis> avec
+ certains invités basiques (bogue #9042)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une perte de la socket dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : meilleure vérification de propreté des lectures dépassant
+ le end-of-file</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : correction d'un plantage de la fondation son NUL (bogue #10374;
+ régression de la 4.1.10)</para>
+ </listitem>
+
+ <listitem>
+ <para>HGCM : correction d'un plantage en état sauvegardé dans de rares
+ circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : correction d'un plantage occasionnel lors de l'extinction
+ de la VM si les mesures de la RAM/VMM de l'hôte sont activées</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction de plusieurs verrouillages</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : renvoi du bon code d'erreur si
+ <emphasis>controlvm savestate</emphasis> a échoué (bogue #10134)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : VBoxService ne devrait pas planter lors
+ de la sortie (bogue #10326 ;
+ régression de la 4.1.10)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : définition du bon horodatage quand un fichier
+ est fermé (bogue #6473)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : meilleure aide si les sauvegardes DirectX
+ ne sont pas bien installées</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : corrections de compilation Linux 3.4-rc1</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.10 (13-03-2012)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : si le support 3D n'est pas disponible sur l'hôte pour une
+ raison quelconque, non seulement on désactive ce paramètre de la VM,
+ mais on décoche aussi la case</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un problème potentiel provoquant des interruptions
+ de programmation lors de <emphasis>SYSEXIT</emphasis> juste après <emphasis>STI</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un problème potentiel de corruption de la
+ mémoire de l'invité
+ avec la fusion de page</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ajustement d'un module correspondant un peu à l'algorithme de la
+ fusion de page, aboutissant en général à des pages légèrement plus
+ éparpillées</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : les interfaces de l'hôte n'ont pas de réglages
+ par défaut d'adresse IP et d'attributs de masque de réseau</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : pas de dépendance du mot de passe pour certaines
+ opérations de contrôle de l'invité
+ (bogue #10030)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support des hôtes Windows XP (régression de la
+ 4.1.8 ; bogues #10071 et #10088</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corrections d'affichage pour les hôtes Linux ayant
+ des cartes NVIDIA</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de problèmes de l'état
+ sauvegardé (régression de la 4.1.8 ; bogue #10126)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : Pilote WDDM : correction de plantages de
+ powershell_ise (bogue #10167), on a fait en sorte que les appli basées sur
+ WPF fonctionnent quand Aero est activé, correction d'autres plantages
+ possibles de WinSAT</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de problèmes de compatibilité du presse-papier distant
+ avec certains clients</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une corruption possible des données lors
+ de la compression d'images VDI ou VHD avec des instantanés (hôtes 32 bits
+ seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction d'un plantage lors de l'utilisation de mauvaises
+ autorisations quand on s'authentifie avec une cible LIO (bogue #10173)</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : ne plante pas en mode hôte en cas de rare error conditions
+ (hôtes non Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : inclusion des bindings C actuels</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : correction du code Java glue pour JDK 1.7.0 (bogue #9848)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : ajout d'un exemple de Python</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : prises de mesures plus robustes quand les VMs sont
+ bloquées</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : ajout du support SSL/TLS</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxShell : correction de la recherche d'informations sur les
+ suppléments invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Solaris : correction de la vérification des dépendences
+ lors de l'installation de VirtualBox dans une
+ zone</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : corrcctions de compilation dans Linux 3.3-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de kernel panics lors de l'ouverture
+ de données CTF du module
+ (bogue #9651)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction du support Python sur Lion</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : on a fait en sorte que passthrough 3D
+ fonctionne sur OL/RHEL 6.2 (bogue
+ #10010)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une implémentation manquante
+ lors de la copie des données d'un dossier partagé par la mémoire haute
+ du noyau (bogue #9878)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : on a garanti que toutes les données s'écrivent
+ à la fermeture d'un fichier affecté à la mémoire dans un dossier
+ partagé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support du serveur X.Org 1.12</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction du pilote du noyau invité pour
+ qu'il se charge correctement au redémarrage de l'invité (régression
+ 4.1.8 ; bogue #10113)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de l'absence de la bibliothèque
+ VBoxOGL.so dans OpenGL 64 bits
+ (bogue #10151)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de l'importation et du démarrage
+ de VBoxService pour les invités Solaris 11</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : quelques adaptations à Windows 8</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : plusieurs corrections des dossiers partagés
+ (bogue #9753)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle de l'invité : corrections générale de bogues</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.8 (19-12-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de <emphasis>VERR_MAP_FAILED</emphasis> en
+ état sauvegardé dans certaines circonstances (bogue #7929)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : plus d'icône de l'état des mises à jour de la VM quand la
+ VM est en pause (bogue #8368)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'un mauvais code de renvoi après
+ <emphasis>startvm</emphasis> (bogue #9642)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction d'accrocs au lancement d'applications DOS
+ générées par Clipper 5.3 (remarquez que la virtualisation matérielle
+ peut être nécessaire)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'accrocs au démarrage d'OS/2 lors de l'utilisation
+ de pilotes USB récentt</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : augmentation du nombre maximum de connexions parallèles,
+ rendant plus robustes les connexions avec redirection de ports (#8471)</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : correction d'un problème potentielle d'accès invalide
+ dans la prise des mesures de l'invité lors de la destruction d'une
+ VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : ne plante pas si si un média est éjecté deux fois
+ (bogue #9922)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction d'un plantage dans de rares circonstances
+ (comme un plantage du client)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un gel de l'écran (bogue #9620)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : correction d'images de disque cassées lors d'une importation
+ dans de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : meilleur message d'erreur quand l'importation a corrompu
+ des applicatifs</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK/VHD : correction d'une corruption possible quand le cache de
+ l'hôte est désactivé quand on utilise des instantanés dans de rares
+ circonstances (bogue #9749)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de problèmes en mode plein écran pour
+ les cartes ATI (bogue #9775), de l'affichage dans
+ Windows Media Player avec le support Direct3D basé sur XPDM (bogue# 8341).
+ Plusieurs corrections du support 3D basé sur XPDM et WDDM pour
+ les invités Windows et pour le support 3D en
+ général</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : corrections pour Fedoras Linux 2.6.41 (bogue #9948)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : corrections pour Linux 3.2 (bogue #9743)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : plusieurs corrections du dossier partagé
+ (bogues #9856, #9862, #9917)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : plusieurs corrections de la (dés)installation
+ du support Direct3D, ajout de la détection des fichiers du système
+ Direct3D manquants ou incorrects</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.6 (04-11-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VRDP : correction de la corruption de l'écran</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : l'interface s'arrêtait de fonctionner après beaucoup de
+ d'échecs de requêtes ICMP (bogue #9371)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de rares accrocs avec un invité Windows 7,
+ soit au moment du démarrage soit lors de la reconfiguration de la carte
+ réseau dans des configurations inhabituelles (bogue #6223)</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : correction d'un plantage possible en ATAPI passthrough avec
+ certains invités</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : amélioration de la compatibilité avec les anciens noyaux
+ Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction des informations de framebuffer incorrectes
+ après qu'on a quitté le mode plein écran avec les invités X11, cela
+ provoquait par exemple une fenêtre d'affichage brouillée dans l'interface
+ graphique</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un problème avec la duplication de
+ paquets passant par un pont sans fil (bogue #9648)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction du support sur Fedora 15 (bogue #9799)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : n'appelle pas <emphasis>del_timer_sync</emphasis>
+ dans un contexte d'interruption (Fedora bogue 746331 signalé)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows Vista et 7 : encore des corrections WDDM</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'échecs de compilation du module
+ noyau sur Redhat
+ Enterprise Linux 4 (bogue #9709)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : installation correcte d'un pilote DRI sur les
+ invités Ubuntu 11.10</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout du support mmap en lecture seule pour
+ des dossiers partagés</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout des options directory, file mode et
+ mask pour les dossiers partagés</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : implémentation d'une détection plus rapide
+ des utilisateurs identifiés dans l'invité et des sessions stale</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppéments X.Org : correction d'une corruption graphique quand
+ on bascule dans un terminal virtuel (bogue #9490)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.4 (10-03-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction du PAE sur l'invité sur des hôtes 32 bits (régression
+ 4.0 ;
+ bogue #9458)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation
+ <emphasis>INVALID_PARAMETER</emphasis> due à des conditions de mémoire
+ insuffisants (régression 4.1.0 ; bogue #9240)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction des registres morcelés du processeur pendant
+ l'émulation <emphasis>stos/lods/ins/outs</emphasis> dans de rares
+ circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : une autre correction pour les invités 64 bits sur des
+ processeurs AMD récents</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement de l'utilisateur s'il utilise un pack d'extension
+ et, dans ce cas, possibilité de télécharger et de mettre à jour (bogue
+ #8025)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'événements malicieux de touches LCtrl sur
+ certains hôtes Windows (régression 4.0.6 ; bogue #373)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : une autre correction de <emphasis>extpack install --replace</emphasis>
+ (bogue #9308)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : on peut spécifier l'UUID de l'image cible avec
+ <emphasis>convertfromraw</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage rare quand deux ou plusieurs clients
+ se connectent au serveur
+ (bogue #9503)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un souci quand un client n'a pas été redimensionné
+ correctement
+ (bogue #9242)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : on a fait en sorte que la capture de périphérique fonctionne
+ sur des hôtes Windows avec les pilotes de filtres de la classe usbhub
+ installés (bogue #9298) ;
+ corrections de bogues du support USB dans l'hôte Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction de lectures croisant les sondages de blocs
+ (bogue #8532)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction de l'indicateur de défilement lors de la
+ création d'images VMDK découpées</para>
+ </listitem>
+
+ <listitem>
+ <para>Amovible : correction de la détection de la taille des médias
+ physiques (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de l'initialisation de la VM si l'USB
+ n'existe pas (bogue #7941)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un gel possible entre l'énumération des
+ disques durs et la redéfinition des disques immuables (bogue #9549)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction du non détachement du stockage virtuel
+ après la restauration d'un instantané
+ (bogue #8296)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : réinitialisation permanente de l'état modifié après
+ la restauration d'un instantané (bogue
+ #9387)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de l'écriture des paramètres modifiés
+ de la VM concernant le disque lors de l'utilisation d'instantanés
+ (bogue #8932)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de la prise d'instantanés (comme la fenêtre
+ d'aperçu) pour les VMs transparentes si les suppléments invité sont
+ actifs</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction du problème d'excès de paquets UDP du
+ MTU (bogue #9370)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de l'affichage incorrect et de plantages
+ possibles lors de la bascule du mode plein écran quand l'accélération 3D
+ est activée</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de compiz sous ubuntu 9.10</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle de l'invité : corrections de petits bogues généraux</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / Solaris : n'utilise pas de liens en dur dans les
+ paquets (régression 4.1.2 ; bogue #9441)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de problèmes d'installation lors d'une
+ installation en tant qu'administrateur
+ (bogue #1578)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de problèmes de capture de paquets
+ avec les interfaces host-only vboxnetX
+ (bogue #8076)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de la diffusion de plusieurs paquets
+ entrants pour les réseaux bridgés basés sur Crossbow
+ (bogue #9532)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction du démarrage des invités EFI à cause
+ de fichiers ROM EFI manquants
+ (bogue #9535)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôtes Windows : correction de l'utilisation de
+ <emphasis>ADDLOCAL</emphasis> sur la ligne de commandes (régression
+ 4.1.0 ; bogue #9488)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôtes Windows : correction du raccourci de dangling
+ vers le fichier d'aide .chm
+ (bogue #9646)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôtes Windows : essai de correction d'une erreur
+ d'installation 2869 apparue dans certaines circonstances (bogue #9664)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : VBoxHeadless ne devrait jamais ouvrir une autre
+ fenêtre de console (bogue #3549)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'accrocs pendant l'attente
+ de la sortie de l'exécution de l'invité (régression 4.1.2 ; bogue #9446)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support du serveur X.Org 1.11 (bogue #9519)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : suppression d'un message d'erreur incorrect
+ et possibilité de monter un dossier partagé à plusieurs endroits
+ (bogue #9627)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : démarrage correct de VBoxService sur
+ openSUSE 12.1 (bogue #6229)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : achèvement correct de l'installation même si
+ la compilation du module DRM échoue (ce qui n'est pas fatal)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de fuites de mémoire et de
+ panics lors du montage (en console) et du démontage des dossiers
+ partagés</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la corrdination du hotspot
+ du curseur de la souris échangé (régression 4.1.0 ; bogue #9447)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de <emphasis>PAGE_FAULT_IN_NONPAGED_AREA</emphasis>
+ BSOD dans VBoxDisp.dll lors de l'exécution de SnippingTool (bogue #9508)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : on a fait en sorte que le visualiseur d'image
+ fonctionne bien quand Aero est activé (Vista et Windows 7)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de bords de fenêtres bleus avec
+ Aero avec les cartes ATI (Vista et Windows 7)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un mauvais affichage lors du
+ déplacement d'applications 3D hors du bureau invité puis d'un retour sur
+ Aero (Vista et Windows 7)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'accrocs de l'invité quand
+on quitte le mode plein écran avec des
+ applications en mode texte (bogue #9636)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.2 (15-08-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de la gestion des invités 64 bits sur les
+ processeurs AMD Fusion (bogue #8824)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la gestion des instructions machine
+ <emphasis>sysenter/sysexit</emphasis> dans les invités 64 bits sur
+ des hôtes Intel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout du support de l'édition de liens entre clones</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la vérification d'erreurs lors du changement
+ des paraçtres du contrôleur de la VM (régression 4.1.0 ; bogue #9246)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de l'inclusion d'informations supplémentaires
+ (licence, distributeur, ...) sur l'export USB</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : lors de la prise d'un instantané à partir du sélecteur de
+ VM, ne fait pas d'instantanés en direct</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage subite au démarrage sur certains
+ environnements à cause d'un conflit de versions des bibliothèques</para>
+ </listitem>
+
+ <listitem>
+ <para>Exécution et contrôle de l'invité : implémentation de la copie
+ d'un seul fichier de l'invité vers l'hôte (les répertoires et les
+ filtres ne sont pas encore supportés)</para>
+ </listitem>
+
+ <listitem>
+ <para>Exécution et contrôle de l'invité : limitation par défaut du service
+ à 5 processus invités en même temps</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : renvoi du bon port RDP par défaut, corrigeant les
+ avertissements sur les paramètres dans la GUI si l'affichage distant a
+ été activé lors de l'exécution (bogue
+ #9368)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : le chemin de comparaison des OS est indépendant quand
+ des images sont enregistrées (bogue #9303)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : améliorations de plusieurs aspects/performances pour
+ cloner des VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction du maintien du drapeau "Solid-State drive"
+ lors de la création d'un instantané (bogue #9379)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : implémentation des outils de contrôle de l'invité
+ <emphasis>copyfrom</emphasis> and
+ <emphasis>stat</emphasis> pour copier des fichiers de l'invité vers
+ l'hôte et vérifier l'existence des fichiers sur l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>extpack install --replace</emphasis>
+ (bogue #9308)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : possibilité de démarrer plusieurs VMs avec
+ <emphasis>startvm</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : support expérimental du montage à chaud de lecteurs
+ CD/DVD SATA</para>
+ </listitem>
+
+ <listitem>
+ <para>Support souris : correction d'une erreur de positionnement du
+ pointeur off-by-one dans les invités Windows (bogues #7566, #9321)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un problème quand l'écran ne s'est pas bien
+ redessiné (bogue #9242)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : modification de l'établissement des connexion TCP en
+ fonction des exigences de l'API Winsock (hôtes Windows seulement ; bogue #8919)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de problèmes de reconnaissance de périphérique
+ (bogues #9299) et correction de plusieurs problèmes de captation du
+ périphérique (hôtes
+ Windows ; bogue #9299)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de problèmes quand certains filtres sont appliqués
+ à des périphériques USB locaux</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : conservation du compte utilisateur connecté
+ quand la mémoire est pleine et avertissement de ceci</para>
+ </listitem>
+
+ <listitem>
+ <para>OVA : correction de l'importation des fichiers OVA renommés
+ (bogue #9033)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôte Windows : correction de l'icône des fichiers .VDI (bogue #9393)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un bogue empêchant l'utilisation
+ conjointe de plusieurs NICs de l'hôte sur un réseau bridgé basé sur
+ Crossbow</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de kernel panics aléatoires lors de la
+ suspension/extinction de l'hôte (régression 4.1.0 ; bogue #9305)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction des dossiers partagés à cause
+ de symboles manquants dans le module vboxfs (régression 4.0.12 / 4.1.0 b
+ bogue #9264)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du troncage de fichiers sur un
+ dossier partagé avec certaines applications (bogues #9276, #9315)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de problèmes du dossier partagé
+ avec les logiciels antivirus et les invités Windows 64 bits (bogue #9318)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows Vista et 7 : correction du pilote WDDM et améliorations
+ des performances, correction de plantages de WinSAT (#9267)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de <emphasis>llseek</emphasis> pour
+ les noyaux Linux 2.6.37 et supérieur</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.1.0 (19-07-2011)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ majeures suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Support du clonage de VMs (bogue #5853, voir
+ <xref linkend="clone"/>) : on peut créer des clones complets par
+ la GUI et VBoxManage, les clones liés étant seulement avec VBoxManage</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : amélioration de l'assistant de création de nouveaux disques
+ virtuels</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : nouvel assistant de copie de disques virtuels</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : conservation du ratio d'affichage en mode écheloné (hôtes
+ Windows et OSX seulement ; bogue #7822)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : augmentation de la limite de mémoire pour les hôtes 64 bits
+ à 1To</para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental du passthrough PCI pour les hôtes Linux,
+ voir <xref linkend="pcipassthrough"/></para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : pilote graphique WDDM expérimental, supportant
+ Windows Aero (bogue #4607) et fourniture du support Direct3D utilisant
+ une approche plus propre (slus besoin d'installer les pilotes de
+ l'invité en mode sans échec)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : l'état des modules et des fonctions peut
+ être maintenant demandé séparément par chaque interface</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : nouveau mode de connexion réseau "Pilote générique", qui
+ offre une architecture de plugin ouverte pour implémenter un réseau
+ virtuel distribuable de manière séparée et selon votre choix</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only : correction du plantage de l'hôte avec des
+ noyaux inférieurs à 2.6.29
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Nouveau mode réseau <emphasis>UDP Tunnel</emphasis> : permet de
+ connecter facilement et de façon transparente des VMs en fonction sur
+ plusieurs hôtes, voir <xref linkend="networkingmodes" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental du montage à chaud d'un disque dur SATA
+ disponible avec VBoxManage</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : Nouveau pilote de réseau bridgé basé sur Crossbow
+ pour Solaris 11 build 159 et supérieure</para>
+ </listitem>
+
+
+ </itemizedlist>
+
+ <para>En outre, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : plus de corrections de l'horloge SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages sporadiques du recompilateur avec
+ les invités SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : plusieurs petites corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : lors de la restauration d'un instantané, on demande s'il
+ faut prendre un instantané de l'état actuel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un menu <emphasis>Vue</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un paramètre pour les règles du mode promiscuous
+ pour les réseaux interne, bridgé et host-only</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'une glissière pour régler le volume d'exécution du
+ processeur, permettant de limiter la quantité de temps processeur consacrée
+ à l'exécution de l'invité, voir
+ <xref linkend="settings-processor"/></para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : La description de la VM est modifiable pendant l'exécution
+ d'une VM (bogue #1551)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout des paramètres de proxy (bogue #2870)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : le nombre de slots SATA est configurable</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : réduction du temps avant d'afficher la boîte de dialogue de
+ configuration de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : configuration plus commode des connexions aux contrôleurs
+ de stockage en déterminant automatiquement les paramètres du port ou
+ du périphérique quand un contrôleur de stockage n'a qu'un port ou qu'un
+ périphérique par port</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : modification de la syntaxe du groupe de commande
+ <emphasis>guestcontrol</emphasis>, correction de divers bogues,
+ suppression d'options obsolètes</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxBalloonCtrl : nouveau service d'ajustement automatique et
+ dynamique de la taille du ballon pour y lancer des
+ VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : les noms de la machine et des instantanés ne peuvent
+ pas être un UUID valide</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : meilleurs diagnostiques si un seul média est utilisé
+ deux fois dans la configuration d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : meilleur diagnostique des erreurs des opérations de
+ création/synchronisation/clonage de médias et correction de fuites de
+ mémoire en cas d'erreur</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : les lecteurs ATA/SATA peuvent être marqués comme étant
+ non tournants, c'est-à-dire que l'OS invité les détectera comme des
+ SSD s'il le supporte, ce qui peut améliorer les
+ performances</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : les images de CD/DVD virtuels seront détachées si l'invité
+ éjecte le média, sauf si le lecteur est marqué pour n'éjecter que de
+ manière temporaire</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : on peut changer encore l'UUID d'un média lorsqu'on
+ connecte un média pour la première fois, ce qui permet d'utiliser des
+ images dupliquées exactes jusqu'à l'UUID</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une corruption possible des données dans
+ certaines circonstances avec VDE et les images parallèles
+ (bogue #9150)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une expansion inutile lors du clonage
+ d'images de différenciation au format VDI</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction du code de détection pour gérer des
+ fichiers vides pour le format VDI et VMDK</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de l'accès aux inages CD/DVD de plus de
+ 4Go lors de l'utilisation du contrôleur SATA
+ (bogue #8592)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : plusieurs bogues ont été corrigés</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : possibilité de démonter une disquette de l'hôte
+ (bogue #6651)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : les structures concernant le disque sont désormais vérifiables
+ correctement par la somme (bogue #8739)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : nombreuses corrections du pilote USB hôte de Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : réduction d'une footprint de mémoire</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du problème d'offloading de segmentation quand
+ plusieurs VMs envoient parallèlement</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : contournement d'un bogue dans wireshark lorsqu'on
+ travaille directement sur un fichier de capture créé par VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : annonce des périphériques série dans les tables ACPI pour
+ que les invités Windows trouvent le matériel virtuel (bogue #7411)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : support des connexions TLS (voir
+ <xref linkend="vrde-crypt"/>)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : support de configurations de clients à plusieurs écrans avec
+ les clients RDP de MSs</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'une corruption rare de l'écran</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de la chaîne
+ <emphasis>GL_VERSION</emphasis> pour avoir différentes locales (bogue #8916)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : correction de la gestion des timeout avec
+ HTTP 1.1 en vie, et le service est plus robuste quand des connexions
+ échouent</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSVC : correction d'une régression quand plusieurs clients
+ démarrent en décalé automatiquement et simultanément</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'une mauvaise gestion de l'emplacement des
+ médias pour les médias non basés sur des fichiers (comme des
+ iSCSI), qui créait des conflits de valeurs d'emplacement à de multiples
+ endroits</para>
+ </listitem>
+
+ <listitem>
+ <para>Bindings du client JAX-WS : correction d'une fuite des ressources</para>
+ </listitem>
+
+ <listitem>
+ <para>Sources : correction du support USB 2.0 utilisant les packs d'extension
+ pour les constructions non officielles</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction du mode non-VT-x sur les hôtes Lion</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction du copier-coller de la GUI et de la
+ fenêtre de la VM (bogue #4491)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows (64 bits seulement) : activation de la suppression
+ de tous les médias quand on supprime une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows (64 bits seulement) : activation de l'effacement en direct
+ des instantanés</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : utilisation des outils de contrôle natifs dans
+ l'installeur (bogue #5520)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un problème de préemption avec
+ les hôtes Solaris 11 (builds
+ 166 et supérieur)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : meilleur contrôle de l'accès aux périphériques USB
+ sur les hôtes Solaris 11</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : amélioration de l'installation du pilote sur
+ les invités Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'une forte utilisation du
+ processeur quand on exécute des programmes invités depuis l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction du montage automatique des
+ dossiers partagés (bogue #8014)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.14 (13-10-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction des invités 6 bits sur les processeurs AMD Fusion(bogue #8824)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la gestion des instructions machines
+ <emphasis>sysenter/sysexit</emphasis> sur les invités 64 bits et des
+ hôtes Intel</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de l'inclusion d'informations supplémentaires
+ (licence, distributeur, ...) lors de l'export OVF</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : lors de la prise d'un instantané dans le sélecteur de VM,
+ ne fait pas d'instantané de la situation actuelle</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'événements de touche Contrôle Gauche spurious
+ sur certains hôtes Windows (régression 4.0.6 ; bogue #5908)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>extpack install --replace</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'une corruption d'écran rare</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction d'accrocs rares sur l'invité Windows 7, soit
+ au démarrage soit lors de la reconfiguration du réseau, dans des
+ configurations exotiques
+ (bogue #6223)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support souris : correction d'une erreur de position off-by-one du
+ pointeur concernant les invités Windows (bogues #7566, #9321)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : modification de l'établissement des connexions TCP en
+ fonction des exigences de l'API Winsock API (hôtes Windows seulement ;
+ bogue #8919)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction de rebonds de blocs croisés en lecture
+ (bogue #8532)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction de la barre de progression lors de la création
+ d'images VKDK divisées</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : correction de la détection de la taille des médias
+ pour les médias physiques (hôtes Windows seulement)</para>
+ </listitem>
+ <listitem>
+ <para>VBoxSVC : la comparaison du chemin est indépendante de l'OS quand
+ les images sont enregistrées (bogue #9303)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : renvoi des bons avertissements sur les paramètres de
+ fixation du port RDP par défaut dans la GUI si l'affichage distant a été
+ activé lors de l'exécution (bogue #9368)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de l'initialisation de la VM si un
+ dossier partagé n'existe pas (bogue #7941)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de la prise d'impressions d'écran (comme
+ la fenêtre de prévisualisation) pour les VMs transparentes si les
+ suppléments invité sont actifs</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de deadlocks possibles entre la numérotation
+ des disques durs et le reparamétrage des disques immuables
+ (bogue #9549)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVA : correction de l'importation de fichiers OVA renommés (bogue #9033)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction d'un problème avec les paquets UDP qui
+ dépassaient le MTU (bogue #9370)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction du démarrage de certains invités EFI
+ à cause de fichiers ROM d'EFI manquants
+ (bogue #9535)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de problèmes d'installation lorsqu'on
+ installe en tant qu'administrateur
+ (bogue #1578)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de fichiers tronqués sur un
+ dossier partagé avec certaines applications (bogues #9276, #9315)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : suppression d'un mauvais message d'erreur et
+ on permet à un dossier partagé de se monter à plusieurs endroits
+ (bogue #9627)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support du serveur X.Org 1.11 (bogue #9519)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de <emphasis>llseek</emphasis> pour
+ les noyaux Linux 2.6.37 et supérieur</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : bon démarrage de VBoxService sur openSUSE 12.1
+ (bogue #6229)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : terminaison propre de l'installation même si
+ la compilation du module DRM échoue (ce qui n'est pas fatal)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.12 (15-07-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction pour Lion</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un problème de préemption avec les
+ hôtes Solaris 11 (builds 166 et supérieur)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : configuration plus pratique des connexions des
+ contrôleurs de stockage en déterminant automatiquement le paramètre du
+ port et du périphérique quand un contrôleur de stockage n'a qu'un port
+ ou qu'un périphérique par port
+ (bogue #9188)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de 'une corruption possible des données
+ dans certaines circonstances avec les images VHD et Parallels (bogue #9150)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de l'accès aux images de CD/DVD de plus de
+ 4Go en utilisant un contrôleur SATA (bogue #8592)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : possiblité de démonter un disque amovible de l'hôte
+ (bogue #6651)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du problème d'offloading de segmentation quand
+ plusieurs VMs sransmettaient en même temps</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de la chaîne <emphasis>GL_VERSION</emphasis>
+ pour des locales différentes (bogue #8916)</para>
+ </listitem>
+
+ <listitem>
+ <para>Sources : correction du support USB 2.0 en utilisant les packs
+ d'extension pour les constructions non officielles</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction du montage automatique des
+ dossiers partagés (bogue #8014)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+ <sect1>
+ <title>Version 4.0.10 (22-06-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : correction de la disparition d'objets de paramètres sur les
+ hôtes KDE (bogue #6809)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'accrocs dans de rares circonstances avec
+ des images VMDK plates</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : une VM sauvegardée ne pouvait pas être restaurée dans
+ certaines circonstances après la mise à jour du noyau de l'hôte
+ (bogue #8983)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : refus de créer un média ayant une variante invalide
+ (par exemple, Split2G avec VDI ; bogue #7227)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : mise en pause de la VM si une requête dure trop</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : aucune connexion de disque dur ne doit être rattachée
+ à une autre VM en mode normal lors de la création d'un instantané</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'accrocs occasionels de la VM avec des
+ invités SMP (bogue #4580)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : détection correcte de périphérique sur les invités RHEL/OEL/CentOS 5
+ (correction partielle du bogue #8978)</para>
+ </listitem>
+
+ <listitem>
+ <para>ACPI : on oblige l'horloge ACPI à renvoyer des valeurs monotones
+ pour améliorer le comportement avec les invités Linux SMP (bogue #8511
+ et autres)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de corruption d'écran dans de rares circonstances
+ (bogue #8977)</para>
+ </listitem>
+
+ <listitem>
+ <para>rdesktop-vrdp : passage à la version 1.7.0</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : dans de rares circonstances, certaines données en fin
+ de fichier VMDK ne s'écrivait pas à l'export</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction Lion</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : corrections GNOME 3</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de la détection de VT-x sur les hôtes
+ Linux 3.0 (bogue #9071)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction des bindings Python 2.7 dans les
+ binaires Linux universels</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'une fuite de thread and de gestion
+ du processus</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un bogue à la détermination
+ de la version étendue des supplçments invité (régression 4.0.8 ; bogue #8948)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de l'installation des
+ invités Solaris 10u9 64 bits (régression 4.0.8)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de compilation RHEL6.1/OL6.1</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une perte de mémoire pendant
+ <computeroutput>VBoxManage
+ guestcontrol execute</computeroutput> (bogue #9068)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.8 (16-05-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'une incompatibilité avec les versions
+ récentes de Mac OS X en mode 64 bits (bogue #8474)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'une incompatibilité avec des hôtes
+ ayant plus de 16 coeurs (bogue #8389)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de corruptions d'affichage sur un
+ deuxième moniteur en mode 64 bits (bogue #7606)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : rétablissement de la fonctionnalité pour définir un clé
+ d'hôte vide pour empêcher toute combinaison de clé de l'hôte (régression
+ 4.0.6 ; bogue #8793)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : messages d'erreur plus parlants pour des problèmes de droits
+ du proxy USB (poincipalement les hôtes Linux; ; bogue #8823)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout de la sous-commande <computeroutput>controlvm screenshotpng</computeroutput>
+ pour enregistrer l'impression d'écran d'une VM en fonction au format
+ PNG</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : correction d'un plantage potentiel lors de
+ l'extinction (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : les services intégrés utilisent les bonnes adresses Ethernet
+ dans l'en-tête Ethernet et dans les requêtes ARP</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only : correction du comptage de référence de l'adaptateur</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de rares plantages de l'invité avec des
+ invités Linux SMP (bogue #8755)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'une corruption du disque invité dans de rares
+ circonstances (pertinent seulement pour les invités ayant plus de 2Go
+ de RAM ; bogue #8826)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une corruption de données après la
+ prise d'un instantané avec l'E/S symehrnmisée activée (bogue #8498)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : plusieurs améliorations</para>
+ </listitem>
+
+ <listitem>
+ <para>HPET : une autre correction de sauts temporels (bogue #8707)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : utilisation des bons droits lors de la création de /dev/vboxusb
+ (hôtes Linux seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : suppression du présupposé que les descripteurs de chaînes
+ se terminent par null (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage potentiel lors du redimensionnement
+ de la fenêtre de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de l'affichage de GNOME 3 sous Ubuntu 11.04
+ et Fedora 15</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'un autre bogue qui pourrait perdre des
+ entrées dans le registre des médfs quand on restaure un instantané
+ (bogue #8363)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : n'arrête pas le montage des autres dossiers
+ valides si un dossier de l'hôte est inaccessible (régression 4.0.6)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : vérification si gcc et make sont installés
+ avant de construire les modules du noyau (bogue #8795)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout du support du serveur X.Org 1.10</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'une notification de mise à jour
+ des suppléments invité inappropriée lorsqu'on utilise des suffixes de
+ version spécifiques au distributeur (bogue #8844)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.6 (21-04-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une mauvaise gestion des pages mises en ballon
+ lors de la restauration d'une VMM d'un état sauvegardé</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ne plante pas sur les hôtes de plus de 64 coeurs / hyperthreads ;
+ implémentation du support d'hôtes jusqu'à 256 coeurs (sauf les hôtes
+ Windows ; bogue #8489)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation des invités PAE fonctionnant
+ sur les hôtes sans PAE (bogue #8006)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une lenteur des invités Linux en mode brut
+ et sur les neyaux invités récents (bogue #8726)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : support des combinaisons de touches hôtes (bogue #979)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la barre de progression (bogue #7814)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage du pointeur de souris quand la VM est en pause si
+ l'émulation souris de la tablette USB est utilisée (bogue #6799)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : adaptation du dossier d'instantané au renommage d'une VM
+ (bogue #8469)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : mémoire permanente des derniers dossiers des sélecteurs de
+ disque/DVD/disquette</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne permet jamais de démarrer une VM ayant l'USB-2.0 activé
+ si le bon pack d'extension manque (bogue #8182)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un accroc/plantage dans la boîte de dialogue
+ d'ouverture d fichiers dans un dossier inexistant
+ (bogue #8673)</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'un bogue pouvant perdre des entrées
+ dans le registre des médias lors de la restauration d'un instantané
+ (bogue #8363)</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : possibilité pour les instantanés de se stocker dans
+ le répertoire de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage si une VM a dû se terminer
+ brutalement (hôtes Windows seulement ; bogue #7133)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une fuite de mémoire (régression 4.0 ; bogue #7966)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de l'accès aux cibles iSCSI par le réseau
+ interne</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de la lecture de disques ayant plus d'un
+ instantané pour les images VHD et VMDK quand le cache de l'hôte est
+ désactivé (bogue #8408)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc possible quand la VM se
+ suspend après une erreur E/S</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc possible quand la VM se suspend
+ / réinitialise (bogue #8276, #8294)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : création automatique d'une image de diférenciation quand
+ on connecte une image VMDK streamOptimized à une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA/SATA : correction du montage automatique des CD/DVDs virtuels
+ avec des distributions Linux récentes en signalant correctement le
+ profil courant comme 'none' s'il n'y a pas de média</para>
+ </listitem>
+
+ <listitem>
+ <para>Buslogic : correction d'émulation de certains invités (comme jRockit VE)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-Only : correction d'un échec de la création d'interface
+ sur les hôtes Windows (régression 4.0.4 ; bogue #8362)</para>
+ </listitem>
+
+ <listitem>
+ <para>réseau Host-Only &amp; Bridged &amp; Interne : correction du
+ traitement de requêtes en mode promiscuous par les VMs, changeant par
+ défaut le comportement</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-Only : correction d'un problème de connectivité après
+ le réveil de l'hôte d'une veille prolongée (bogue #3625)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Bridgé : support du lien (bonding) d'interface sur les
+ hôtes Mac OS X (bogue #8731)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction du traitement des annonces ARP pour les invités
+ ayant des IPs affectées de façon statiques (bogue #8609)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : rétro-compatibilité avec la bibliothèque d'authentification
+ externe VRDPAuth (bogue #8063)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : n'échoue pas le démarrage d'une VM si un
+ chemin n'est pas absolu, par exemple lors de l'importation d'une OVF
+ d'un hôte différent (bogue #7941)</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : correction d'un plantage 4ans certaines conditions (bogue #8527)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage au branchement de certains périphériques
+ USB (bogue #8699)</para>
+ </listitem>
+
+ <listitem>
+ <para>HPET : correction de sauts temporels à la lecture du compteur (bogue #8707)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : ajustement automatique des chemins des disques si le nom
+ de la VM change lors de l'importation</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : correction de l'exportation sur des médias lents</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : réparation automatique d'applicatifs incohérents avec
+ plusieurs disques (bogue #8253)</para>
+ </listitem>
+
+ <listitem>
+ <para>rdesktop-vrdp : correction d'une déclaration décalée dans
+ certaines conditions
+ (bogue #8593)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'accrocs occasionnels à l'extinction de
+ la VM du fait que, parfois, COM n'était pas bien désinitialisé</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : on empêche la souris de quitter la fenêtre de la
+ VM lorsqu'elle est
+ capturée</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : conservation du ratio d'ffichage lors du
+ redimensionnement en mode échelonné (retour à l'ancien comportement
+ (en partie le bogue #7822)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes X11 : correction de du support de la touche Yen (bogue #8438)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes X11 : correction d'une régression où Hôte+F1 faisait
+ apparaître l'aide au lieu d'envoyer Ctrl+Alt+F1</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / Suppléments Linux : compression des symboles IPRT
+ pour permettre d'installer VirtualBox dans une VM où les suppléments
+ invité sont actifs (bogue #5686)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux / invités Linux : contournement d'un bogue de GLIBC
+ inférieure à la version 1.11, provoquant des plantages dans certaines
+ conditions (problème signé/non signé avec memchr sur des machines 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un deadlock dans les sémaphores
+ d'événements qui pourrait provoquer des processus de VM non tuables</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la gestion du paramètre
+ Sysprep</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de redémarrages spontanés de l'invité
+ dans certaines circonstances (régression 4.0.2 ; bogues #8406, #8429)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ajout du support de l'identification automatique
+ dans les stations de travail verrouillées sur des versions de Windows
+ primitives</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une erreur de vérification de
+ bogues du pilote en gérant des messages PnP (régression 4.0 ; bogue #8367)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une fuite de mémoire dans
+ VBoxVideo</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : ajout du support du serveur X.Org 1.10 final</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : corrections noyau Linux 2.6.39-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : amélioration du support de l'exécution automatique
+ (bogue #5509)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du support de la souris sur les
+ invités SUSE 11 SP 1 (bogue #7946)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : ajout du support du serveur X.Org 1.9</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : plusieurs corrections de bogues dans l'exécution
+ du contrôle invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : utilisation de son propre fichier journal avec la
+ rotation des logs pour limiter sa taille</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.4 (17-02-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de plantages du recompilateur sous certaines
+ conditions
+ (bogues #8255, #8319 et autres)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de l'exécution d'invités 64 bits sur les hôtes
+ 32 bits où la pagination nestées est activée sur les processeurs AMD
+ (régression 4.0 ; bogue #7938)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de problèmes / accrocs de temps pour certains
+ invités qui utilisent l'horloge à intervalles programmables (bogues #8033 et #8062)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction des grandes pages et de la supervision pour des
+ instantanés de la situation actuelle
+ (bogues #7910, #8059, #8125)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un message d'erreur lorsqu'on essaie de dépasser
+ le nombre maximum d'interfaces réseaux de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de l'enregistrement des modifications des
+ métadonnées d'un instantané existant
+ (bogue #8145)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage rare sur les hôtes X11 (bogue #8131)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : lors de la sélection d'un dossier partagé, démarrage de la
+ boîte de dialogue de fichiers dans le dossier personnel des utilisateurs
+ (bogue #8017)</para>
+ </listitem>
+
+ <listitem>
+ <para>ExtPack : renforcement des bons droits qu'il faudrait restreindre
+ par l'umask quand on crée des répertoires (hôtes non Windows seulement ;
+ bogue #7878)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSDL : correction d'un plantage quand on démarre en spécifiant
+ l'UUID de la VM (régression 4.0 ; bogue #8342)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : possibilité d'horodater même si la VM est déjà en
+ pause</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>modifyvm --synthcpu</emphasis>
+ (bogue #6577)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'un accroc quand on fait
+ <emphasis>guestcontrol execute
+ --wait-for exit</emphasis> et qu'on affiche l'état du processus en
+ quittant
+ (bogue #8235)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : diminution de la charge du processeur pendant
+ <emphasis>guestcontrol execute
+ --wait-for exit/stdout</emphasis> en attendant que le processus invité
+ se termine (bogue #7872)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>list hostdvds/hostfloppies</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: correction de <emphasis>storageattach</emphasis> pour
+ les lecteurs DVD de l'hôte et ses lecteurs amovibles</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesures : introduction de la mesure de base <emphasis>RAM/VMM</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : amélioration de la vérification de propreté lorsqu'on
+ prend une impression écran de la VM
+ (bogue #7966)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un plantage dans de rares circonstances
+ si une VM n'a pas pu démarrer</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de la connexion d'une image de disque
+ immuable (bogue #8105)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un plantage à l'extinction de la VM (bogue #6443)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'une mauvaise gestion des connexions par
+ références croisàes des médias (bogue #8129)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : correction du troncage de grandes valeurs d'entiers
+ (régression 4.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : stockage correct du type de chipset ICH9 (bogue #8123)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-Only &amp; Bridgé : correction d'un problème de démarrage
+ du serveur DHCP de VBox sur les hôtes Windows (régression 4.0 ; bogue #7905)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-Only : re-création des interfaces vboxnetX après le
+ rechargement du module vboxnetadp.ko sur Linux et Darwin (bogues #5934, #6341)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une fuite de mbuf dans de rares circonstances
+ (bogue #7459)</para>
+ </listitem>
+
+ <listitem>
+ <para>ACPI : impossibilité pour l'invité de rentrer par défaut en S4 et
+ pas d'indication sur S1 et S4 dans les tables ACPI s'ils sont désactivés
+ (bogue #8008)</para>
+ </listitem>
+
+ <listitem>
+ <para>Carte graphique : on a fait en sorte que le travail des écrans
+ désactivé se réactive correctement pour éviter des problèmes quand les
+ invités X11 passent en mode économiseur d'écran
+ (bogue #8122)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'erreurs d'écriture d'instantanés si le
+ cache de l'hôte est désactivé (régression 4.0 ;
+ bogue #8221)</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA/SATA : correction de la gestion du redémarrage après une
+ suspension/réveil d'ACPI</para>
+ </listitem>
+
+ <listitem>
+ <para>BusLogic : correction d'accrocs avec les VMs SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : nouvel essai pour empêcher la perte de caractères pendant
+ la transmission (bogue #1548)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : correction de compilation sur Linux 2.6.38-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un plantage de VBoxSVC lors du
+ listage des interfaces de l'hôte sans passerelle par défaut (hôte 64 bits
+ seulement, bogue #7955)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris/Darwin : correction d'un pic d'exécutiondu processeur
+ sur la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X.Org : correction d'un plantage au redémarrage du servur
+ X (bogue #8231)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X.Org : support du serveur X.Org 1.10 pré-publication et
+ d'Ubuntu 11.04 Alpha</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X.Org : Ajout de l'émulation d'EDID dans le pilote graphique
+ pour empêcher le démon des paramètres de GNOME de modifier le mode lors
+ de l'identification</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X.Org : aucun envoi des modes graphiques à un hôte, les
+ versions précédentes de VirtualBox ne peuvent pas le gérer</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une fuite de mémoire dans le code
+ des dossiers partagés si un lien vers l'hôte n'est pas lisible (bogue #8185)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la gestion de Security
+ Attention Sequence (SAS) avec VBoxGINA</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.2 (18-01-2011)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : ne plante pas si un lecteur amovible de l'hôte auquel se
+ réfère les paramètres de la VM a disparu</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage lorsqu'on utilise le thème
+ Oxygen de KDE4 et qu'on clique sur le bouton des paramètres (régression
+ 4.0 ; bogue #7875)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement correct si le dossier de la machine ne peut
+ pas être créé (bogue #8031)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : plusieurs corrections pour les invités X11 à plusieurs
+ écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>PackExt : l'application d'aide de l'installeur n'est plus réglée
+ avec l'UID root (.deb de Linux/paquets .rpm seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>PackExt : amélioration de l'expérience utilisateur sur Vista / Windows 7
+ lors de l'installation d'un pack d'extension</para>
+ </listitem>
+
+ <listitem>
+ <para>PackExt : correction d'un problème avec les caractères non ascii
+ dans des noms de chemins au moment de l'installation d'un pack
+ d'extension (bogue #9717)</para>
+ </listitem>
+
+ <listitem>
+ <para>PackExt : correction de problèmes SELinux sur les hôtes Linux 32
+ bits</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : la créatsion et la suppression de l'interface Host-only
+ est maintenant supportée pour toutes les plateformes, sauf Solaris (bogue #7741)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'une erreur de segmentation lors de la
+ suppression d'une interface host-only inexistante</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction de plantages possibles avec les images
+ VMDK/VHD avec des instantanés et des E/S asynchrones (régression 4.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : n'éjecte pas le média physique ss un lecteur DVD/CDROM/disquette
+ est débranché de la VM (bogue #5825)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : davantage de robustesse quand un invité erroné envoie
+ des commandes ATA à un périphérique ATAPI (bogue #6597)</para>
+ </listitem>
+
+ <listitem>
+ <para>Parallèle : correction de l'effacement de l'image pendant la
+ suspension, la mise en pause ou l'extinction (régression 4.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction d'un kernel panic de l'hôte lorsru'on
+ bridge vers des périphériques sans queue TX (régression 4.0 ; hôtes
+ Linux seulement ; bogue #7908)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : l'enregistrement des règles de redirection des ports respecte
+ les paramètres du protocole (bogue #8094)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de problèmes de démarrage PXE avec WDS (bogue #6330)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction du problème de performances TX dans certains
+ invités Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>ICH9 : correction d'un plantage de VM (virtualisation logicielle
+ seulement ; bogue #7885)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : correction d'un problème d'écran VESA (régression 4.0 ; bogue #7986)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de l'analyse des paramètres lors
+ de la création de liens symboliques, correction d'un problème de bits en
+ 32/64 bits (bogue #818)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un plantage dans de rares circonstances
+ du fait d'une chaîne de journalisation invalide (régression 4.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : amélioration de la diffusion des informations d'erreur
+ pour celles empêchant le démarrage d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction de problèmes avec les instantanés et les
+ caractères non ASCII dans les chemins de la
+ machine (bogue #8024)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : écoute désormais par défaut sur localhost comme
+ documenté (bogue #6067)</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : n'échoue pas pour charger les paramètres d'une machine
+ si on ne peut pas trouver de connexion à un disque amovible (lecteur
+ hôte ou image) ; avec la 4.0, cela arrivait le plus souvent quand les
+ machines étaient déplacés d'un hôte à l'autre</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : correction d'un problème où le changement de nom ou
+ de description des instantanés n'était pas enregistré dans le XML de
+ la machine</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : correction de l'importation de fichiers créés par
+ d'autres outils OVF (bogue
+ #7983)</para>
+ </listitem>
+
+ <listitem>
+ <para>rdesktop-vrdp : correction d'un plantage lors de l'énumeéation des
+ périphériques USB (bogue
+ #7981)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'un plantage pendant l'énumération des
+ périphériques USB</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : tentative de compliquer un peu l'affectation de
+ mémoire (bogue #8035 ;
+ régression 4.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de l'analyse des paramètres du
+ contrôle de l'invité dans
+ VBoxService (régression 4.0 ; bogue #8010)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité Windows : l'identification automatique sur
+ Windows Vista/Windows 7 supporte maintenant le déverrouillage avant les
+ stations de travail verrouillées
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 4.0.0 (22-12-2010)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Réorganisation de VirtualBox dans un paquet de base et des
+ packs d'Extension ; voir <xref linkend="intro-installing" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Nouvelle présentation des paramètres et des disques pour une portabilityé
+ des VMs ; voir <xref linkend="vboxconfigdata" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Revue majeure de la GUI (qui s'appelle maintenant le "gestionnaire
+ VirtualBox") :
+ <itemizedlist>
+ <listitem>
+ <para>Nouveau design de l'interface utilisateur avec une fenêtre de
+ visualisation de l'invité (et des impressions d'écran)</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouveau mode d'affichage "échelonné" avec l'affichage échelonné
+ de l'invité ; voir <xref linkend="intro-resize-window" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Support de la création et du démarrage des lanceurs de bureau
+ <computeroutput>.vbox</computeroutput> (bogue #1889)</para>
+ </listitem>
+
+ <listitem>
+ <para>On peut maintenant trier la liste des VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Les machines peuvent maintenant être facilement effacées
+ sans laisser de traces, même d'instantanés et d'états sauvegardés,
+ voire d'images de disque attachées (bogue #5511 ; de plus,
+ <computeroutput>VBoxManage unregistervm --delete</computeroutput>
+ peut maintenant faire la même chose)</para>
+ </listitem>
+
+ <listitem>
+ <para>Création d'un lanceur de bureau intégré pour démarrer des VMs
+ par un double clic (bogue #2322)</para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : support d'une RAM invité de plus d'1.5/2 Go sur les hôtes
+ 32 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouveau matériel virtuel :
+ <itemizedlist>
+ <listitem>
+ <para>Chipset Intel ICH9 avec trois bus PCI, PCI Express et Message Signaled Interrupts (MSI) ;
+ voir <xref linkend="settings-motherboard" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Intel HD Audio, pour un meilleur support des systèmes
+ d'exploitation modernes (comme Windows 64 bits ; bogue #2785)</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Améliorations du support OVF (voir <xref linkend="ovf" />) :
+ <itemizedlist>
+ <listitem>
+ <para>Support du format Open Virtualization Archive (OVA)</para>
+ </listitem>
+
+ <listitem>
+ <para>Améliorations significative des performances d'exportation
+ et d'importation</para>
+ </listitem>
+
+ <listitem>
+ <para>La création du fichier manifest lors de l'exportation est
+ maintenant facultative</para>
+ </listitem>
+
+ <listitem>
+ <para>L'importation des disques peut prendre d'autres formats que
+ VMDK</para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôle des ressources : ajout du support de la limitation du temps
+ processeur et de la bande passante E/S d'une VM ; voir
+ <xref linkend="storage-bandwidth-limit" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : support d'E/S asynchrone pour les images iSCSI, VMDK,
+ VHD et Parallels</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : support du redimensionnement des images VDI et VHD ;
+ voir <xref linkend="vboxmanage-modifyvdi" /></para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : support de plusieurs écrans virtuels sur les
+ invités Linux et Solaris qui utilisent le serveur X.Org et supérieur</para>
+ </listitem>
+
+ <listitem>
+ <para>Bindings de langage : bindings Java uniformes pour l'appel des
+ APIs locaux (COM/XPCOM) et distants (SOAP)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>Par ailleurs, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : Activation par défaut du support des grandes pages sur les
+ hôtes 64 bits (cela s'applique seulement à la pagination
+ imbriquée)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation lors de l'exécution de Minix
+ (VT-x seulement ; bogue #6557)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage dans certaines circonstances (hôtes
+ Linux seulement, mode non VT-x/AMD-V seulement ; bogues #4529 et #7819)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'une boîte de dialogue de configuration pour la
+ redirection de ports en mode NAT
+ (bogue #1657)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage du contenu de la fenêtre de l'invité sauvegardé et
+ restauré</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : certains avertissements de la GUI n'arrêtent plvm la sortie
+ de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un écran noir dans la mini-barre d'outils sur
+ les hôtes KDE4 (hôtes Linux seulement ; bogue #5449)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : implémentation de la lecture de plusieurs secteurs pour
+ accélérer le démarrage de certains invités (comme Solaris)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : amélioration de la throughput en filtrant les paquets
+ sortants et à destination de l'hôte avant qu'ils n'arrivent au réseau
+ physique (hôtes Linux seulement ;
+ bogue #7792)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : possibilité de nouveau d'utiliser <emphasis>CR_SYSTEM_GL_PATH</emphasis>
+ (bogue #6864)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plusieurs problèmes de coupure/visibilité
+ (bogues #5659,
+ #5794, #5848, #6018, #6187, #6570)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corruption de la pile d'application de l'invité
+ lors de l'utilisation de
+ glGetVertexAttrib[ifd]v (bogue #7395)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support OpenGL pour libMesa 7.9</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages d'Unity/Compiz sur natty</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : support de plusieurs écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de rares plantages dans une configuration à plusieurs
+ écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : support en amont du son</para>
+ </listitem>
+
+ <listitem>
+ <para>Affichage : correction d'un plantage occasionel du redimensionnement
+ de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : les règlet de redirection de ports peuvent s'appliquer lors
+ de l'exécution</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : possibilité de connecter des lecteurs CD/DVD-ROM, y compris
+ passthrough (bogue #7058)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : support des fichiers images en lecture seule, ce qui
+ est un critère pour rendre le média en lecture seule (bogue #5651)</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : correction d'une corruption de mémoire pendant la lecture
+ et dans de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : la fondation DirectSound permet maintenant aux VMs d'émettre
+ du son quand une autre application DirectSound est active, même sur une
+ autre VM (bogue
+ #5578)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : support des disques et des CDROMs SATA</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : réduction de l'utilisation de la pile de la fonction VESA BIOS
+ <emphasis>#4F01</emphasis> (correction de Quake)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF/OVA : correction de l'exportation de VMs avec des disques iSCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : support de l'image Apple DMG pour le CD/DVD virtuel (bogue
+ #6760)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support USB avec hôte Linux : introduction d'une manière moins
+ intrusive d'accéder aux périphériques USB en brut
+ (bogues #1093, #5345, #7759)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : support des noyaux Linux récents avec
+ <emphasis>CONFIG_DEbogue_SET_MODULE_RONX</emphasis> activé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : On peut désormais marquer les dossiers
+ partagés comme pouvant être montés automatiquement sur des invités
+ on Windows, Linux et Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : Les dossiers partagés supportent maintenant
+ les liens symboliques (bogue #818)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : combinaisoqs des suppléments 32 et 64 bits dans
+ un seul fichier</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : l'identification automatique sur Windows
+ Vista/Windows 7 est maintenant capable de gérer les comptes utilisateurs
+ renommés ; ajout de plusieurs corrections de bogues</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.12 (30-11-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de rares plantages de l'hôte lorsqu'on exécute des
+ invités 64 bits sur des hôtes 32 bits (bogue #7577)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de redémarrages de l'hôte dans de rares circonstances
+ du fait du retardement de NMIs par des mesureurs de performance actifs
+ (hôtes Linux en mode non-VT-x/AMD-V seulement ; bogue #4529)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation supérieure à la mémoire
+ pour les invités à grande mémoire (bogue #7586)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation liée aux grandes pages</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : utilisation de la nouvelle fonction VT-x pour empêcher l'invité
+ d'acaparer le processeur</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : implémentation de l'effacement des derniers instantanés
+ qui restent pendant qu'une VM est en fonction</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : application des vérifications de dépassement de la taille
+ limite du système de fichiers hôte et d'E/S asynchrones cassés sur les
+ anciens noyaux Linux ayant les systèmes de fichiers ext4 / xfs, non
+ seulement au démarrage à partir de 0 d'une VM, mais aussi au démarrage
+ à partir d'un état sauvegardé</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une fuite de mémoire (régression 3.2.0 ; bogues #6918, #7353)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un problème de la racine NFS sur Linux (bogues #7299)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de la gestion du redémarrage d'une VM avec
+ e1000</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de rares plantages dans une configuration à plusieurs
+ écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>Affichage : correction d'un plantage occasionel lors du
+ redimensionnement de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Souris : n'envoie pas d'événements de souris relatifs en même temps
+ que des çvénements absolus (régression 3.2.10 ; bogue #7571)</para>
+ </listitem>
+
+ <listitem>
+ <para>Clavier : corrections dans l'émulation du clavier USB ; corrections
+ pour les claviers coréens</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : ne bogue plus si le périphérique de l'hôte bloque
+ pendant son ouverture (bogues #5756, #5380)</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : correction des lignes d'état du modem (hôtes Linux seulement ;
+ bogue #812)</para>
+ </listitem>
+
+ <listitem>
+ <para>Affichage : Les résolutions Horizontales ne se limitent plus à
+ un multiple de 8 pixels (bogue #2047; il faut mettre à jour les
+ suppléments invité).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage avec les anciens noyaux Linux et les
+ caractères non ASCII dans les chaînes de périphériques (hôtes Linux
+ seulement ; bogue #6983, #7158, #7733 ; la version 3.2.8 comportait une
+ correction incomplète)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage dans de rares circonstances (bogue #7409 ;
+ hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>"iSCSI : réponse immédiate aux requêtes NOP-In de la cible afin
+ d'éviter une déconnexion si l'invité est en veille</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage dans certaines circonstances (bogue #7659)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages des ades applis basées
+ sur GLUT (bogue #6848)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout d'une fonctionnalité GLX 1.3 manquante (bogues #7652, #7195)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction d'un deadlock potentiel
+ lors de la sauvegarde de l'état d''une VM (bogue #4124)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : autre correction de BSODs dans certaines circonstances
+ dans VBoxNetFlt.sys (bogue #7601)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de la détection d'un lecteur DVD USB
+ de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction des touches d'échange pour certains
+ types de clavier ISO (bogue #2996)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ajout de la gestion de l'état d'un lien pour les
+ périphériques TAP, nécessaire pour ue bon fonctionnement avec le réseau
+ bridgé sur les noyaux 2.6.36 et supérieur (bogue #7649)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : corrections Linux 2.6.37 fixes</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : bonne compilation du module vboxvideo si
+ DKMS n'est pas installé (bogue #7572)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une fuite de mémoire lors d'un
+ accès à des fichiers inexistants sur des dossiers partagés (bogue #7705)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : on saute les comptes utilisateurs non
+ affectés lors de l'énumération des comptes utilisateur pour en informer
+ la VM</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.10 (08-10-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction du mode V8086 pour les invités DOS/Windows primitifs
+ avec EMM386 (régression 3.2.8)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de stabilité (bogue #7342)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru meditation liée à de grandes pages (bogue #7300)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du support des grandes pages sur les hôtes Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru meditation pour les grosses mémoires
+ des invités 64 bits sur les hôtes 32 bits ayant la pagination imbriquée
+ (bogue #7544)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : améliorations de performance des VMs ayant plus de
+ 2Go de RAM (bogue #6928)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la gestion de la touche hôte si elle est
+ définie comme Alt gauche (hôtes Linux/Solaris seulement ; régression
+ 3.2.0 ; bogue #6758)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la VM peut être minimisée à partir de la barre système
+ (bogue #4952)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : bonne gestion de Ctrl+Break sur les hôtes X11 (régression
+ 3.2.0 ; bogue #6122)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un souci où l'utilisateur tuait le sélecteur
+ de médias lors de la sélection du disque dur de démarrage dans l'assistant
+ de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'une vérification que les noyaux Linux sont les 2.6.36 ou
+ supérieurs, car ils sont connus pour avoir corrigé un bogue d'E/S asymchrone sur
+ les systèmes de fichiers ext4 / xfs (hôtes Linux seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités OpenSolaris : utilisation du contrôleur SATA par défaut</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'erreurs E/S dans l'invité après la création
+ d'images VDI (régression 3.2.6 ; bogue #7294)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : réparation automatique des images de disques de base
+ dont l'UUID parent n'est pas zéro, ce qui les rendait inaccessible (bogue #7289)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction des images corrompues si une synchronisation
+ a été annulée</para>
+ </listitem>
+
+ <listitem>
+ <para>IDE : ajout du support passthrough d'ATAPI pour les CDs audio</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'un accroc potentiel pendant le démarrage des
+ invités Solaris récents</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : meilleure gestion de l'espace disque et des conditions
+ équivalentes</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction d'accrocs sporadiques à la fermeture de la
+ connexion</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : correction du manque d'actualisation de l'affichage avec
+ plusieurs écrans, dans certaines circonstances (bogue #7291)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : plusieurs petites corrections des modes graphiques VGA de
+ base</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction d'un gel occasionnel de l'hôte pendant
+ l'extinction de la VM (hôtes Linux seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : pas de vérification de l'existence du préfixe TFTP lors
+ du dépôt d'un fichier par bootp (bogue #7384)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de la résolution des noms dans le résolveur de
+ l'hôte (bogue #7138)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : dans de rares conditions, le moteur NAT consommait 100%
+ de la charge processeur (hôtes non Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'une fuite de émoire sous certaines circonstances (bogue #5966)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de l'absence d'actualisation de l'affichage avec
+ les invités Windows dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : désactivation correcte du blocage des URBs fulk sortants,
+ corrige certaines imprimantes</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction pour Blackberry (bogue #6465)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : correction de problèmes de traitement de la queue
+ d'événements qui provoquait des accrocs si la VM ne réussissait pas à
+ démarrer</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ne plante pas si les paramètres comportant des
+ caractères invalides sont passés (bogue #7388)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : <computeroutput>clonehd</computeroutput> : correction
+ d'un bogue où la commande échouait avec un message d'erreur dans de rares
+ circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>metrics</computeroutput> : on a
+ fait en sorte que le démarrage direct des VMs fonctionne de nouveau
+ (régression 3.2.8 ; bogue #7482)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : on signale <emphasis>GLX_ARB_get_proc_address</emphasis>
+ comme étant une extension supportée</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corruption de la pile d'application de l'invité lors
+ d'une utilisation de
+ <emphasis>glGetVertexAttrib[ifd]v</emphasis> (bogue #7395)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support 3D cassé quand on bascule le mode
+ plein écran et le mode transparent (bogue #7314)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de des applis OpenGL 32 bits sur
+ Windows XP/Vista 64 bits (bogue #7066)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'un bogue lors de l'exportation d'une VM avec
+ plusieurs disques connectés
+ (bogue #7366)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'une exportation lente sur certains systèmes de
+ fichiers (bogue #3719)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : désactivation du support du manifest (fichier .mf) ; les
+ manifests ne sont plus vérifiés lors de l'importation, ni écrits pour
+ l'exportation</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier partagé/Windows : amélioration de la fiabilité du
+ presse-papier partagé sur les hôtes et les invités Windows (correction
+ partielle du bogue #5266)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : pas d'affichage des répertoires vides si des
+ noms des fichiers avec un encodage invalide sont présents sur l'hôte
+ (bogue #7349)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : renvoi du bon code d'erreur quand on essaie de
+ lister les fichiers d'un dossier inexistant (bogue #7004)</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : correction d'une corruption de mémoire de l'invité lors
+ d'une capture à partir de la fondation audio
+ NULL (bogue #6911)</para>
+ </listitem>
+
+ <listitem>
+ <para>Son : amélioration de la qualité de la lecture (moins variable)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : on évite la création inutile de threads inactifs</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments : correction d'un bogue dans la fonction d'exécution
+ de l'invité lorsqu'on passe plus d'une variable d'environnement</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments : mise à jour de toutes les propriétés invité qu'écrit
+ VBoxService après une restauration de la VM d'un état sauvegardé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments : correction d'un plantage <emphasis>division par zéro</emphasis>
+ de VBoxService dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments: resynchronisation immédiate de l'heure de l'invité avec
+ celle de l'hôte après la restauration de la VM d'un état sauvegardé
+ (bogue #4018)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments/Windows : correction d'une erreur
+ <emphasis>LsaEnumerate</emphasis> lors de l'énumération des utilisateurs
+ connectés</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments/X.Org : support du serveur X.Org 1.9 (bogue #7306)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments/X.Org : ne plante pas VBoxClient au redémarrage</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de l'énumération des lecteurs DVDs de
+ l'hôte sur Solaris 10</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : ajout d'un transfert de coeur personnalisé pour
+ offrir plus de données quand une VM plante</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : correction de la détection de l'inactivité de
+ l'utilisateur</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : correction d'un panic possible dans les
+ dossiers partagés lorsqu'on utilise le mauvais ID de groupe ou
+ d'utilisateur (bogue #7295)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : correction des dossiers partagés qui tronquaient
+ les fichiers à partir de 2Go sur les invités 32 bits (bogue #7324)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'un BSOD dans certaines circonstances
+ dans VBoxNetFlt.sys (bogue #7448)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : corrections pour Linux 2.6.36</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes/invités Linux : corrections pour DKMS (bogue #5817)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'entrées de menu système absentes
+ (bogue #7392)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.8 (05-08-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : fin correcte d'une VM avec une erreur si l'invité essaie de
+ passer en mode PAE et si PAE est désactivé dans les paramètres de la
+ VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : passage à des boîtes de dialogue de fichiers natives (hôtes
+ Windows seulement ; bogue #5459)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : n'utilise pas les boîtes de dialogue de fichier natives sur
+ les hôtes KDE (hôtes Linux seulement ;
+ bogue #6809)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support <emphasis>GL_EXT_texture_sRGB</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>PXE : correction d'une régression ZENworks PXE au démarrage</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'une exportation trop lente et trop lourde dans
+ certaines circonstances (régression 3.2.6 ; bogue #7073)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : signal correct d'une interruption si l'état suspendu du port
+ change</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : respect du filtre "distant seulement"</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : on évite un accroc de VM lors du changement de la configuration
+ de certains périphériques (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage avec les anciens noyaux Linux
+ et les caractères non ASCII dans les chaînes de périphériques (hôtes
+ Linux seulement ; bogue #6983)</para>
+ </listitem>
+
+ <listitem>
+ <para>PageFusion : correction d'un conflit avec les fonctions d'exécution
+ de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>PageFusion: correction de problèmes de stabilité avec un grand
+ nombre de VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>PageFusion : correction de plantages de l'hôte avec le SMP de
+ l'invité et les invités Win64</para>
+ </listitem>
+
+ <listitem>
+ <para>Ballon de mémoire : correction de problèmes de restauration des
+ VMs quand la pré-affectation est activée</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction de problèmes de performance quand GRO
+ est activé sur un périphérique bridgé (bogue #7059)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau hostonly : correction de problèmes de performance (régression
+ 3.2.6 ; bogue #7081)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disques durs : correction d'une réinitialisation automatique d'un
+ disque immuable au démarrage de la VM
+ (bogue #6832)</para>
+ </listitem>
+
+ <listitem>
+ <para>BusLogic : plusieurs corrections pour les invités Windows NT/2000
+ et SCO OpenServer</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : correction d'erreurs d'E/S dans de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Partage de disques : support de la connexion d'un disque à plusieurs
+ VMs sans outils ni bidouilles externes</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : plusieurs corrections et améliorations de
+ performance pour les invités Solaris guests (bogues #4154 et #6512)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Solaris : ajout du support des installations distantes</para>
+ </listitem>
+
+ <listitem>
+ <para>API des propriétés invité : support correct de l'énumération des
+ propriétés d'une VM en fonction avec un champ "modèles" vide (bogue #7171)</para>
+ </listitem>
+
+ <listitem>
+ <para>Propriétés invité : effacement correct des propriétés passagères
+ lors de l'extinction</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : amélioration des performances de la redirection d'image
+ et corrections de stabilité</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : correction discrète du pilote son de l'hôte lors
+ de la lecture du fichier XML des paramètres d'une machine ou d'OVF écrits
+ par VirtualBox sur un OS hôte différent, par exemple conversion de
+ DirectSound en PulseAudio (bogue #7209)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : stockage correct des paramètres du réseau NAT dans
+ un fichier de paramètres XML version 1.10 et supérieur (bogue #6176)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : gestion correcte des images de différenciation avec l'UUID
+ parent dans la sous-commande <emphasis>openmedium disk</emphasis> (bogue #6751)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : activation du maintien de HTTP pour une bien meilleure
+ performance
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : ajout de l'horodatage à la sortie des joornaux</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : traitement des chaînes 8 bits comme des UTF-8 non
+ ASCII</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction pour les invités Xorg 6.8 (comme
+ RHEL4)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.6 (25-06-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de l'hôte lors de l'exécution d'invités
+ 64 bits sur des hôtes 32 bits avec certains processeurs Intel (VT-x
+ seulement ; bogue #6166) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : possibilité d'avoir des invités SMP 64 bits sur des hôtes
+ 32 bits (VT-x and AMD-V seulement ;ne s'applique pas à Mac OS X, qui
+ le supporte déjà) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru mediation si les invités de plus de
+ 2Go démarrent sans VT-x/AMD-V activé (bogue #5740)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une limitation TR à la mise en corbeille (hôtes
+ VT-x et 64 bits seulement ; bogue #7052)</para>
+ </listitem>
+
+ <listitem>
+ <para>Fusion de page : plusieurs corrections de bogues des invités
+ SMP (y compris le bogue #6964) </para>
+ </listitem>
+
+ <listitem>
+ <para>Téléportation : plusieurs corrections et améliorations</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Mac OS X server : correction de compatibilité</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI : correction de la détection de mémoire pour les invités ayant
+ 2Go de RAM ou plus d'affectés</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un contournement d'un bogue du noyau Linux qui
+ concerne l'E/S asynchrone sur les systèmes de fichiers ext4 / xfs (hôtes
+ Linux seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un paramètre pour des connexions VRDP multiples ;
+ utile si on active plusieurs écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : autre correction du bogue de capture du clavier sous metacity (bogue #6727)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la boîte de dialogue quit lorsqu'on l'utilise
+ en mode transparent ou plein écran (hôtes Mac OS X seulement ; bogue #6938)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : gestion de nouveau de la touche en plus sur le clavier brésilien sur
+ les hôtes X11 (bogue #7022).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction de plantages lorsqu'on
+ quitte le mode plein écran (bogue #6768)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'une erreur de gestion de
+ <emphasis>storageattach</emphasis>
+ (bogue #6927)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>dhcpserver add</emphasis>
+ (régression 3.2.0 ; bogue #7031)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc avec des images qui se trouvent
+ sur des systèmes de fichiers ne supportant pas l'E/S (bogue #6905)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction des disques bruts sur les hôtes Windows
+ (régression 3.2.0 ; bogue #6987)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : correction d'un accroc avec les anciens invités Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>BusLogic : correction d'un accroc en E/S</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : paramétrage du nombre initial de ports sur 1 car certains
+ invités ne peuvent pas gérer 30 ports (comme CentOS 4 et FreeBSD ; bogue #6984)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : amélioration de performances</para>
+ </listitem>
+
+ <listitem>
+ <para>SCSI : correction d'une erreur lors de l'utilisation de l'option
+ format plein pendant l'installation des invités Windows (bogue #5101)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction de l'authentification (bogue #4031)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only/bridgé : correction d'avertissements excessifs du
+ noyau hôte dans certaines circonstances (hôtes Linux seulement ; régression
+ 3.2.0 ; bogue #6872)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de fuites potentielles de mémoire</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : augmentation de la taille de la mémoire pour les
+ cadres Jumbo 16K (bidouillage de performance)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : possibilité de brancher/débrancher le câble réseau même si
+ la VM est actuellement en pause</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : le débranchement du câble n'était pas bien géré si le NIC
+ n'était pas encore initialisé par l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : optimisation des performances de l'exportation</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : mise à jour des définitions des types d'OS vers CIM 2.25.0
+ pour que Windows 7 et d'autres OS soient marqués correctement lors de
+ l'exportation</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : le paramètre de désactivation du cache E/S de l'hôte
+ n'était parfois pas bien sauvegardé</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : sauvegarde correcte de l'état de la machine dans un
+ XML même quand le dossier des instantanés est allé à un autre endroit
+ que celui par défaut (bogue #5656)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : possibilité pour l'invité de désactiver un port EHCI</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : recherche d'un langage valide avant de chercher des chaînes
+ (bogue #7034)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes POSIX : correction de plusieurs pertes de mémoire (régression
+ 3.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un problème d'accès VDI dans
+ certaines circonstances (IDE/SATA ; régression 3.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de la VM qui n'arrive pas à démarrer
+ sur les hôtes 32 bits (régression 3.2.0 ; bogue #6899)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows (32 bits) : augmentation de la limite de RAM de
+ l'invité si le noyau hôte permet plus d'espace d'adresses virtuelles</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : relecture d'un répertoire après qu'un fichier
+ a été supprimé (bogue #5251)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : installation du pilote DRI au bon endroit des
+ invités ArchLinux (bogue #6937)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction d'événements de mouvements de souris
+ spurious (bogue #4260)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de la fonction d'exécution de
+ l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : l'identification automatique sur Windows Vista/Windows 7
+ est maintenant capable de gérer les comptes utilisateur renommés et
+ principaux ; ajout de diverses corrections de bogues</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : améliorations de l'analyse de la ligne de commandes
+ de l'installeur</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un bogue vérifié dans le
+ vérificateur du pilote dans VBoxMouse (bogue #6453)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support OpenGL pour les applications
+ 32 bits sous des invités Windows 64 bits</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.4 (07-06-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI : correction d'un événement de redimensionnement superflu lors
+ de l'allumage de la VM pour X11 (amélioration de la correction 3.2.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un bogue à la capture du clavier sur metacity (bogue #6727)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only/bridgé correction de la communication invité-vers-invité
+ en sans fil (régression 3.2.0 ; bogue #6855)</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'une corruption potentielle du disque invité
+ avec les images extensibles (régression 3.2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Fusion de page : correction de la détection de modules partagés
+ pour les invités Win64</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : possibilité de nouveau d'utiliser <emphasis>CR_SYSTEM_GL_PATH</emphasis>
+ (bogue #6864)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une déclaration de l'hôte pour certains
+ applications invitées multi-threaded (bogue #5236)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages de l'hôte avec le pilote
+ nVIDIA au démarrage de WDDM</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de l'importation des OVFs avec une description de
+ VM (annotation)
+ (régression 3.2.2 ; bogue #6914)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de problèmes avec les écrans secondaires (bogue #6759)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.2 (02-06-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de rares guru meditation de l'état invalide des
+ invités (VT-x seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une faible performance avec la pagination imbriquée
+ et l'exécution de ;'invité sans restriction (VT-x seulement ; bogue #6716)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation occasionnelle pendant le
+ démarrage de Windows 7 (bogue #6728)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : conservation de l'état pour le contrôle distant et synchronisé
+ avec l'état définitif</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne quitte pas après une mise à jour réussie d'une configuration
+ invalide de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un bogue à la capture du clavier sur metacity (bogue #6727)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage pendant la fin d'une VM si une boîte
+ de dialogue modale est ouverte</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les noms des contrôleurs par défaut dans l'assistant Nouvelle
+ VM sont synchronisés avec les paramètres de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'événements de redimensionnement superflu lors
+ de l'allumage de la VM pour X11</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la régression - absence de l'icône de
+ l'élément USB dans le menu des périphériques USB</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : Activation de la fenêtre de la VM place de la souris pour
+ les VMs à plusieurs écrans</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSDL/Hôtes Linux : détection automatique du type de clavier
+ (bogue #5764)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'un plantage lors de la suspension d'une VM dans
+ de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'un plantage pendant le redémarrage de la VM
+ après la prise d'un instantané</para>
+ </listitem>
+
+ <listitem>
+ <para>Stockage : correction d'un accroc sporadique des invités SMP
+ utilisant SATA ou LSI Logic SCSI et les E/S asynchrones</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction pour les invités de plus de 4Go de RAM
+ (bogue #6784)</para>
+ </listitem>
+
+ <listitem>
+ <para>Fusion de Page : correction d'un plantage du VBoxService quand la
+ fusion de page est activée sur les invités Win64</para>
+ </listitem>
+
+ <listitem>
+ <para>Fusion de Page : ajout du partage de module du noyau</para>
+ </listitem>
+
+ <listitem>
+ <para>HGCM : correction d'une fuite de mémoire qui intervenait si les
+ suppléments invité accédaient à un service GCM inexistant</para>
+ </listitem>
+
+ <listitem>
+ <para>Téléportation : plusieurs corrections</para>
+ </listitem>
+
+ <listitem>
+ <para>Disquette : ne désactive pas par défaut le cache E/S de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'une régression 3.1 avec certains pçriphériques
+ (comme l'iPhone) ; hôtes Windows seulement</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : mise à jour de l'émulation de périphérique de l'invité vers
+ 16550A et réduction de la probabilité de perte d'octets pendant la
+ transmission (bogue #1548)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : nouveau rapatriment des paramètres de nom du serveur de l'hôte
+ dès les requêtes DHCP de l'invité pour mieux gérer les paramètres du
+ réseau hôte (bogue #3847)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de l'analyse des adresses IPv4 en notation
+ CIDR (bogue #6797)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : limitation à quatre du nombre de serveurs de noms passés à
+ l'invité (hôtes non Windows seulement ; bogue #4098)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une mauvaise correspondance dans la transaction
+ DNS de l'ID (bogue #6833)</para>
+ </listitem>
+
+ <listitem>
+ <para>VDE : correction du changement de connexion pendant l'exécution</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction d'une fuite de mémoire dans le pilote
+ Réseau Bridgé pour les hôtes Windows (bogue #6824)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction pour les invités NT4 (bogue #6748)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ré-introduction des fonctions de préparation
+ du système</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : activation par défaut du PAE pour les invités RedHat</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : correction du support de la désactivation de l'intégration
+ de la souris (bogue #6714)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : correction d'un plantage rare quand on appelle les
+ méthodes IGuest du service web</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de mauvais UUIDs de disque dur lors de l'exportation
+ . (bogue #6802)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'une régression 3.2.0 dans l'importation de
+ fichiers OVF 0.9 primitifs</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du support d'OpenGL pour les applications
+ 64 bits sur les invités windows</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de divers plantages de l'hôte (bogues #2954, #5713, #6443)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.2.0 (18-05-2010)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ majeures suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Suite à l'acquisition de Sun Microsystems par Oracle Corporation,
+ le produit s'appelle désermais "Oracle VM VirtualBox" et toutes les
+ références ont été modifiées sans conséquences sur ses possibilités</para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental des invités Mac OS X Server (voir <xref linkend="intro-macosxguests" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Jeu de ballon de mémoire pour augmenter ou diminuer de façon
+ dynamique la RAM utilisée par une VM (hôtes 64 bits seulement) (voir
+ <xref linkend="guestadd-balloon" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>La fusion de Page dé-duplique automatiquement la RAM lors du
+ lancement de VMs identiques en y augmentant la capacité. Supporté
+ actuellement pour les invités Windows sur les hôtes 64 bits
+ (voir <xref linkend="guestadd-pagefusion" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Montage à chaud d'un processeur pour Linux (ajout et retrait à
+ chaud) et certains invités Windows (voir <xref linkend="cpuhotplug" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouvelles fonctions de l'Hyperviseur : avec VT-x/AMD-V sur les
+ hôtes 64 bits, l'utilisation de grandes pages peut améliorer les
+ performances (voir <xref linkend="imbriquéepaging"/>) ; en outre, sur
+ VT-x, l'exécution sans restriction de l'invité est maintenant supportée
+ (si la pagination imbriquée est activée avec VT-x, le mode réel et le mode
+ protégé sans code de pagination fonctionnent plus vite, ce qui accélère
+ considérablement le démarrage de l'OS invité)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support de l'effacement des instantanés pendant que la VM est en
+ fonction</para>
+ </listitem>
+
+ <listitem>
+ <para>Support des paramétrages de l'invité pour plusieurs écrans dans la
+ GUI pour les invités Windows (voir <xref linkend="settings-display" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Emulation de la tablette USB/clavier pour une meilleure expérience
+ utilisateur si aucun supplément invité n'est disponible (voir
+ <xref linkend="settings-motherboard" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Emulation du contrôleur SAS LsiLogic (voir <xref linkend="harddiskcontrollers" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique VRDP (voir <xref linkend="vrde-videochannel"/>)</para>
+ </listitem>
+
+ <listitem>
+ <para>Configuration du moteur NAT par l'API et VBoxManage</para>
+ </listitem>
+
+ <listitem>
+ <para>L'utilisation du cache E/S de l'hôte est maintenant configurable
+ (voir <xref linkend="iocaching" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : ajout du support de l'exécuting des applications
+ invitées depuis le système hôte (remplace la fonction de préparation
+ automatique du système ; voir
+ <xref linkend="guestadd-guestcontrol" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : amélioration du support d'OVF avec des noms personnalisés
+ pour préserver les paramètres ne faisant pas partie du standard OVF de
+ base</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>De plus, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'un plantage des invités Windows 2000 lorsqu'ils
+ sont configurés avec beaucoup de RAM (bogue #5800) </para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux/Solaris : ajout du module PAM pour l'identification
+ automatique</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on devine le type d'OS à partir du nom d'OS au moment de la
+ création d'un nouveau VM</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un paramètre de VM pour que le temps passe en UTC
+ et ne passe pas l'heure de l'hôte locale à l'invité
+ (bogue #1310)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du mode transparent sur les écrans secondaires
+ (bogues #1322 et #1669)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de télécharger le manuel de l'utilisateur dans
+ la version OSE (bogue #6442)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de définir une touche hôte vide pour interdire
+ toute combinaison de l'hôte (bogue #684)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de restreindre les actions possibles depuis
+ la GUI lors de l'extinction de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : possibilité de démarrer une VM même si un média
+ DVD ou amovible virtuel n'est pas accessible</para>
+ </listitem>
+
+ <listitem>
+ <para>Paramètres : plus de robustesse lors de l'enregistrement des
+ fichiers XML des paramètres</para>
+ </listitem>
+
+ <listitem>
+ <para>Mac OS X : réécriture du pilote CoreAudio et ajout du support
+ de l'entrée audio (bogue #5869)</para>
+ </listitem>
+
+ <listitem>
+ <para>Mac OS X : support du module 'authentification externe VRDP
+ (bogue #3106)</para>
+ </listitem>
+
+ <listitem>
+ <para>Mac OS X : déplacement des paramètres de prévisualisation du
+ bouton en temps réel dans les paramètres de la VM (plus d'option globale).
+ Utilisation du menu système pour le configurer</para>
+ </listitem>
+
+ <listitem>
+ <para>Mac OS X : ajout du menu système à la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de l'affichage de la surface corrompue
+ (bogue #5695)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages de la VM lors de l'utilisation
+ de <emphasis>ARB_IMAGING</emphasis> (bogue #6014)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une déclaration où les applications invitées
+ utilisent plusieurs fenêtres avec un seul contexte (bogue #4598)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout du support d GL_ARB_pixel_buffer_object</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout du support d'OpenGL 2.1</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction du cadre Final de l'animation Compiz qui
+ n'est pas à jour avec l'écran (Mac OS X seulement) (bogue #4653)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un écran noir après le chargement d'un
+ instantané de VM où Compiz est activé</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support de <emphasis>Virtual Distributed Ethernet</emphasis> (VDE)
+ (hôtes Linux seulement ; voir <xref linkend="networkingmodes" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support du high precision event timer (HPET) virtuel</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de l'association de deux canaux IDE en OVF et
+ le contrôleur IDE dans VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction des identifiants des chaînes VMDK et tri des
+ éléments XML de rasd : par nom et ordre alphabétique comme le prévoit le
+ standard</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxShell : extension du shell Python interactif pour avoir une GUI
+ complètement fonctionnelle dans VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support de Fedora 13 (bogue #6370)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction des vérifications strictes dépassées lors
+ de la création d'une partition VMDK brute (bogues #688, #4438)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 3.1.8 (10-05-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'un plantage avec OpenSUSE 11.3, noyau de base
+ très tôt au démarrage (virtualisation logicielle seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un état invalide pendant une téléportation</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de l'invité OS/2 quand la pagination
+ imbriquée activée</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une grosse perte des performances d'affichage
+ (AMD-V avec la pagination imbriquée seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un bogue off-by-one lors du passge de
+ coordinations absolues de la souris à l'invité (régression 3.1.6)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage de la vraie version des suppléments invité, pas de
+ la version de l'interfac</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : lors de l'ajout d'un slot DVD ou amovible dans la VM et
+ qu'une boîte de dialogue des paramètres des supports de stockage apparaît,
+ ne connecte pas de médium aléatoire mais le slot reste tout simplement
+ vide</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout des paramètres <computeroutput>--seamless</computeroutput> et
+ <computeroutput>--fullscreen</computeroutput> en ligne de commande
+ (bogue #4220)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'une erreur de segmentation dans de rares circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction de problèmes d'affichage
+ lorsqu'on travaille avec des modes non 32 bits (bogues #6094 &amp; #6208)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : correction de la détection des disques durs connectés
+ au port 0 lors de l'utilisation des pilotes de LSI</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : correction de plantages sporadiques avec les invités Linux
+ lorsqu'il y a un disque dur et un lecteur DVD sur le même canal
+ (bogue #6079)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : possibilité de démarrer une VM même si tous les adaptateurs
+ réseaux sont connectés</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : support du mode promiscuous pour e1000 et des adaptateurs
+ paravirtualisés (bogue #6519)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une latence ICMP (hôtes non Windows seulement ;
+ bogue #6427)</para>
+ </listitem>
+
+ <listitem>
+ <para>SCSI : correction de plantages de l'invité dans certaines circonstances
+ quand on démarre à partir de périphériques SCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de plusieurs bogues dans le clonage des
+ images (l'un d'eux est le bogue #6408)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <emphasis>modifyvm --natnet default</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un kernel panic quand le réseau
+ bridgé pourrait ne pas s'initialiser</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de la priorité des paquets VLAN marqués
+ en réseau bridgé</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction d'un problème dans la copie de
+ fichiers en lecture seule (invités Linux seulement ; bogue #4890)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : renommage du module du noyau invité de
+ <emphasis>vboxvfs</emphasis> en <emphasis>vboxsf</emphasis> pour qu'il
+ soit chargeable à la demande par le noyau Linux. Cela corrige le montage
+ dans /etc/fstab avec Ubuntu 10.04</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction des droits setuid des fichiers (invités
+ Solaris seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de l'effacement récursif des
+ répertoires (invités Solaris seulement ; bogue #6513)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : support du redimensionnement transparent
+ et dynamique sur certains anciens invités X11 (bogue #5840)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction des dépendances de la bibliothèque
+ OpenGL (bogue #6435)</para>
+ </listitem>
+
+ <listitem>
+ <para>Emulation clavier/souris : correction de la gestion des événements
+ clavier/souris simultanés dans certaines circonstances (bogue #5375)</para>
+ </listitem>
+
+ <listitem>
+ <para>Emulation souris : jamais de bascule direct de l'explorateur au
+ mode IntelliMouse car cela désoriente le pilote de souris de FreeBSD
+ (bogue #6488)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : correction d'une fuite de mémoire dans <emphasis>IDisplay::takeScreenShotSlow()</emphasis> (bogue #6549)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un cadre Final de l'animation Compiz
+ qui ne se met pas à jour sur l'écran (Mac OS X seulement) (bogue #4653)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : possibilité de sonder localhost seulement sur Mac OS X (bogue
+ #5227)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ajout du support USB de l'hôte pour Ubuntu 10.04 et
+ d'aut!es hôtes sans démon hal ou usbfs (bogue #6343)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : davantage de corrections de structs et d'échelle dans
+ les bindings PHP</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : on fait en sorte que le pilote du réseau bridgé
+ prévienne que le dll soit correctement désenregistré lors de la
+ désinstallation (bogue #5780)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 3.1.6 (25-03-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'un problème de temps sur des hôtes
+ avec des noyaux Linux 2.6.31 ou supérieur avec certains processeurs
+ (mode temporel asynchrone ; bogue #6250)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : bonne gestion des événements de suspension/réveil de
+ l'hôte sur les noyaux Linux 2.6.30 ou supérieur (bogue #5562)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un plantage VBoxSVC pendant
+ l'énumération des interfaces réseaux de l'hôte dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'une corruption d'image après la
+ synchronisation d'instantanés dans certaines circonstances (bogue #6023)</para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'un plantage avec VBoxHeadless / OSE</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation pendant le comptage des
+ référence (bogue #4940)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : amélioration de la stabilité SMP des invités</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de problèmes de débogage avec le maériel VT-x
+ (bogues #477 &amp; #5792)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation
+ <emphasis>PGMDynMapHCPage</emphasis>
+ (Mac OS X ; VT-x seulement ; bogue #6095)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation
+ <emphasis>pgmPoolTrackFlushGCPhysPTInt</emphasis>
+ (Mac OS X ; VT-x seulement ; bogues #6095 &amp; #6125)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de l'hôte lors de l'exécution d'invités
+ PAE en mode VT-X (Mac OS X seulement ; bogue #5771)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de l'affichage des messages d'erreur (bogue #4345)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de l'impossibilité d'entrer en mode transparent
+ (bogues #6185, #6188)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une déclaration et d'un clignottement quand
+ l'application invitée utilise plusieurs fenêtres avec un seul contexte
+ OpenGL (bogue #4598)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages de l'hôte lors de l'utilisation
+ des appels de l'élément <emphasis>GL_EXT_compiled_vertex_array</emphasis> et
+ de l'échelle (bogue #6165)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'erreurs de l'éditeur de liens lors de
+ l'exécution avec les bibliothèques OpenQL de l'invité
+ (bogue #5297)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage du visualiseur d'extension
+ OpenGL au démarrage (bogue #4962)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une régression 3.1.4 sur les hôtes Windows avec
+ laquelle la fin des bonnes connexions était cassée
+ (bogue #6237)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : les paramètres réseaux alternatifs ne se stockait pas d'un
+ démarrage à l'autre (bogue #6176)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une corruption de mémoire pendant le trafic
+ ICMP dans certaines circonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : possibilité de passer à l'interface hôte ou au réseau
+ interne pendant qu'une VM est en fonction (bogue #5781)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction des images dont la taille de bloc n'est pas de 2Mo</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'une régression dans la connexion des périphériques
+ filtrés (bogue #6251)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage avec OHCI dans de rares circonstances
+ (bogue #3571)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un accroc dans de rares circonstances lors
+ d'une connexion de périphériques USB</para>
+ </listitem>
+
+ <listitem>
+ <para>ACPI : on empêche l'invité de se geler lorsqu'il accède à
+ /proc/acpi pour déterminer l'état de la batterie de l'hôte à l'adaptateur
+ AC (hôtes Linux seulement ; bogue #2836)</para>
+ </listitem>
+
+ <listitem>
+ <para>PulseAudio : correction d'un gel de l'invité dans certaines
+ conditions (régression 3.1.4 ; bogue #6224)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : augmentation de l'espace des chaînes DMI</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction d'un problème de routine d'interruption pour
+ certaines configurations (quand l'E/S-APIC est activé, l'ACPI inusité ;
+ bogue #6098)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : plus de robustesse dans la gestion d'une réponse
+ <emphasis>INQUIRY</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : plus de robustesse dans la gestion du sens des données</para>
+ </listitem>
+
+ <listitem>
+ <para>BusLogic : correction pour les invités FreeBSD</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : vboxwebsrv est maintenant multithreadé</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : correction de la gestion des structs et des échelles
+ dans les bindings PHP</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Solaris: correction du masque réseau pour persister
+ entre les redémarrages pour l'interface Host-only (bogue #4590)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Linux : suppression de la dépendance externe de libpng12.so (bogue #6243)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction d'une journalisation du noyau
+ superflue (bogue #6181)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'un accroc au démarrage du serveur
+ X dans les invités Fedora12 et dans ceux ayant Linux 2.6.33 ou supérieur
+ (bogue #6198)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support du niveau speedboot (démarrage rapide)
+ de Mandriva (bogue #5484)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du contexte de sécurité SELinux de
+ mount.vboxsf (bogue #6362)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support d'Ubuntu 10.04 (bogue #5737)</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : mise à jour des bindings PHP pour corriger des
+ problèmes avec les enums and collections (énumérations et collections)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 3.1.4 (12-02-2010)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : corrections de stabilité de SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation dans certains cas rares (bogue #5968)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : activation de NXE pour les invités où PAE est activé (VT-x
+ et AMD-V sur les hôtes 32 bits seulement ; bogue #3578)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ajout d'un contournement pour les BIOS cassés, avec lequel
+ VirtualBox croit que l'AMD-V est utilisé (pour des détails, voir le bogue #5639)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un rare redémarrage de l'hôte lors de la
+ restauration d'un état sauvegardé (bogue #3945)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une incompatibilité avec les noyaux Linux
+ 2.6.32 (virtualisation logicielle seulement ; bogue #6100)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : activation de la pagination imbriquée par défaut sur les
+ nouvelles VMs (s'il est disponible ; VT-x et AMD-V seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : activation de VPID par défaut pour les nouvelles VMs (s'il
+ est disponible ; VT-x seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : stricts vérifications de compatibilité CPUID lors d'une
+ téléportation ; pour récupérer l'ancien paramétrage du comportement de
+ "VBoxInternal/CPUM/StrictCpuIdChecks" sur 0</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de la VM avec certaines applications
+ Windows 16 bits (virtualisation logicielle seulement ; bogue #5399) </para>
+ </listitem>
+
+ <listitem>
+ <para>Instantanés : correction d'une régression 3.1 qui cassait
+ l'effacement d'instantanés quand une machine était connecté à un support
+ de stockage immuable ou writethrough (bogue #5727)</para>
+ </listitem>
+
+ <listitem>
+ <para>État sauvegardé : correction d'une erreur
+ <emphasis>VERR_SSM_LOADED_TOO_MUCH</emphasis> lors du chargement de
+ <emphasis>DisplayScreenshot</emphasis>(bogue #6162)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout d'une opération <emphasis>restorecurrent</emphasis>
+ à la commande snapshots</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la recherche d'instantanés cassés par
+ noms (bogue #6070</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du bouton "Recharger" cassé qui recharge le XML
+ de la machine lorsqu'une machine est inaccessible</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du mode plein écran de l'invité après un
+ redémarrage (bogue #5372)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : prise en charge correcte de Ctrl+Break sur les hôtes X11
+ (bogue #6122)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction des LEDs d'état des périphériques de stockage</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : contournement de la désactivation du mode transparent sur
+ des hôtes KDE (bogue KWin)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un avertissement SELinux disant que
+ VBoxOGL.so exige la resituation du texte (bogue #5690)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un affichge corrompu (bogue #5695)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : affichages libres à la fin des applications invités (bogue #5206)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages
+ <emphasis>ubigraph_server</emphasis> (bogue #4674)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : corrections pour les invités Solaris 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>Transparent : désactivation du mode transparent lorsque l'invité
+ modifie la résolution de l'écran (bogue #5655)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une forte charge du processeur dans certaines
+ circonstances (hôtes Windows seulement ; bogue #5787)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de la gestion du drapeau <emphasis>broadcast</emphasis>
+ dans les requêtes DHCP</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de rares plantages à cause d'une déclaration
+ dans le code d'ICMP (bogue #3217)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : ne plante pas quand on accède aux ports au-delà de
+ la plage valide (bogue #5923)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : correction pour les invités Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : corrction d'une guru meditation lors de l'installation
+ d'invités Solaris 8 (bogue #5972)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'une incompatibilité avec Virtual PC (bogue #5990)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : mise à jour de la sauvegarde du pied de page après la
+ définition d'un nouvel UUID (bogue #5004)</para>
+ </listitem>
+
+ <listitem>
+ <para>DVD hôte : correction véritable du chargement du paramètre
+ "passthrough" du fichier de configuration (bogue #5681)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de la résolution de la cible
+ du lien symbolique sur Linux (régression 3.1.2)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de l'erreur <emphasis>VERR_NET_ADDRESS_IN_USE</emphasis>
+ au redémarrage d'une VM (régression 3.1 ; bogue #5902)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage sur Mac OS X lorsqu'on active
+ la 3D (régression 3.1)</para>
+ </listitem>
+
+ <listitem>
+ <para>PulseAudio : correction de l'enregistrement (bogue #4302)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un écran bleu à l'ex!inction (hôtes Windows
+ Seulement ; bogue #5885)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction des attributs pendant le défilement de texte (bogue #3407)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de messages d'erreur bizarres lors de l'importation
+ du disque errors</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : n'exige pas les droits d'écriture dans le fichier .ovf pour
+ une importation (régression 3.1 ; bogue #5762)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction de la prise d'instantanés d'une VM en fonction
+ (bogue #5849)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : plusieurs corrections de l'USB (y compris le support
+ de l'iPod d'Apple ; bogue #5873)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installur Solaris : correction de la suppression du module USB et
+ d'une incompatibilité du binaire "id" dans Solaris 10</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'un mauvais ajustement de l'heure
+ de l'invité si l'horloge de l'invité est en avance (régression 3.1 ;
+ invités non Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction des dossiers partagés pour les
+ invités Linux 2.6.32 (bogue #5891)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : le pilote de la souris fonctionne de nouveau
+ sur un invité Debian 5.0.3 (régression 3.1.2, bogue #5832)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un mauvais fonctionnement de
+ VBoxService qui cassait la synchronisation de temps (bogue #5872)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de problèmes de désinstallation
+ sur les invités 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de certains problèmes d'exécution
+ sysprep</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X.Org : ne rejette jamais le mode graphique sauvegardé
+ car il serait invalide (bogue #5731)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments XFree86 : réacceptation des suggestions de mode graphique
+ pour le mode de départ</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.1.2 (17-12-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une régression dans la stabilité de SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de plantages de l'hôte liés à l'USB sur les
+ hôtes Windows 64 bits (bogue #5237)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : mauvaise valeur par défaut de HWVirtExExclusive pour
+ les nouvelles VMs (bogue #5664)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : le paramètre passthrough DVD était perdu (bogue #5681)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : les disques iSCSI ne supportent pas l'ajout d'un
+ commentaire (bogue #4460)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout d'options <emphasis>--cpus</emphasis> et
+ <emphasis>--memory</emphasis> absentes à <emphasis>--import</emphasis>
+ OVF</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la boîte de dialogue de mise à jour de VBox URL
+ pour l'allemend et l'autrichien</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : mises à jour de NLS</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de l'exportation de noms de contrôleurs de stockage
+ non standards (bogue #5643)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : plusieurs corrections pour l'USB (y compris le
+ support de l'iPhone d'Apple)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : plusieurs corrections du support 3D</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : réactivation des combinaisons CMD+Touche même
+ si la touche hôte n'est pas CMD (bogue #5684)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction du défilement trop rapide si on utilise
+ la roulette de la souris dans l'invité (bogue #5672)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : le menu système &amp; la barre de menus ne
+ disparaissent pas en plein écran quand la VM n'est pas en fonction sur
+ le premier afficheur (bogue
+ #1762)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : ajout d'une option d'activation de "L'affichage
+ automatique du menu système &amp; de la barre de menus en plein écran"
+ (bogue #5636)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôtes Windows : correction du démarrage de VBox
+ avec de mauvais privilèges juste après l'installation (bogue #4162)</para>
+ </listitem>
+
+ <listitem>
+ <para>Interface hôte et réseau host-only : on empêche le pilote de se
+ décharger tant qu'une VM est active (hôtes Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau Host-only : correction de la création de l'interface
+ host-only (hôte Windows seulement) (bogue #5708)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : ne plante pas si aucun réseau n'est connecté</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtio-net : correction du problème de réseau intermitant dans une
+ VM ayant plusieurs coeurs de processeurs virtuels</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de régressions dans la redircds:on de ports (bogue #5666)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un plantage dans certaines conditions (bogue #5427)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de la résolution de noms de fichiers contenant
+ une barre oblique ou un soulignement lorsqu'on utilise le proxy DNS du
+ résolveur d'hôte (bogue #5698)</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : correction d'un plantage sporadique lors d'un réveil
+ après qu'une VM a été mise en pause de force (par exemple à cause d'une
+ cible iSCSI indisponible)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction des disques vmdk bruts (bogue #5724)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : augmentation de la mémoire par défaut pour les
+ invités Redhat et Fedora</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de l'installation sur bes
+ invités RHEL 3.9 et sur certains invités 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : on empêche les avertissements SELinux
+ sur le repositionnement de texte dans VBoxOGL.so (bogue #5690)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : correction du support de la souris pour certains
+ invités Xorg 1.4 (openSUSE 11.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : correction d'une modification de xorg.conf pour
+ certaines anciennes versions de Xorg (openSUSE 11.1)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : correction de certains problèmes à l'arrêt de
+ VBoxService</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : correction de problèmes de spinlock de VBoxVideo
+ sur NT4</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité Windows : correction de problèmes de
+ désinstallation de NT4</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de la résolution de la cible de
+ liens symboliques (bogue #5631)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : le mise en place d'un délai de chargement des dlls d'OpenGL
+ pour les hôtes Windows pour éviter des plantages de la GUI sur des
+ systèmes mal configurés</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D : correction de problèmes de non
+ affichage des images pendant la lecture</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.1.0 (30-11-2009)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ majeures suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Téléportation (migration d'une aka en fonction) ; migrer une session
+ de VM en fonction d'un hôte à l'autre (voir <xref linkend="teleporting" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Les états de la VM peuvent être maintenant restaurés à partir d'instantanés
+ de votre choix plutôt qu'au dernier, on peut aussi prendre de nouveaux
+ instantanés à partir d'autres instantanés ("instantanés en arborescence" ;
+ voir <xref linkend="snapshots" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération graphique 2D pour les invités Windows ; utilisation
+ du matériel graphique de l'hôte pour l'étendue de la palette et la conversion
+ de couleurs (voir <xref linkend="guestadd-2d" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Connexions de stockage plus flexible : les lecteurs CD/DVD peuvent
+ désormais être connectés aux contrôleurs de stockage de votre choix et
+ il peut y en avoir plusieurs (<xref linkend="storage" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>On peut changer de type de connexion réseau pendant qu'une VM est
+ en fonction</para>
+ </listitem>
+
+ <listitem>
+ <para>Réécriture complète du support USB expérimental pour les hôtes
+ OpenSolaris utilisant les dernières améliorations USB de Solaris Nevada
+ 124 et suérieur</para>
+ </listitem>
+
+ <listitem>
+ <para>Amélioration significative des performances des invités PAE et AMD64
+ (VT-x et AMD-V seulement ; pagination normale (non nestée)) </para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental de l'EFI (Extensible Firmware Interface ;
+ voir <xref linkend="efi" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support des adaptateurs réseaux paravirtualisés (virtio-net ;
+ voir <xref linkend="nichardware" />)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>Par ailleurs, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : corrections de SMP pour l'invité pour certains cas rares</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les instantanés incluent une impression d'écran</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : les supports de stockage verrouillés peuvent être démontés
+ de force</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la fenêtre de journal captait tous les événements de touches
+ des autres fenêtres graphiques (bogue #5291)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de désactiver les filtres USB (bogue #5426)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : amélioration de la courbe de mémoire dans les paramètres de
+ la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : amélioration majeure de performances dans le
+ traitement de VBO</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout du support <emphasis>GL_EXT_framebuffer_object</emphasis>,
+ <emphasis>GL_EXT_compiled_vertex_array</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages dans FarCry, SecondLife,
+ Call of Duty, Unreal Tournament, Eve Online (bogues #2801, #2791)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de corruptions graphiques dans World of Warcraft (bogue #2816)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de du cadre Final de l'animation Compiz
+ qui ne se rafraîchissait pas sur l'écran (bogue #4653)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un affichage incorrect des images
+ non ARGB sous compiz</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : support des cibles iSCSI de plus de 2Tio</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage occasionnel du serveur VRDP (bogue #5424)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de l'émulation E1000 pour les invités QNX
+ (et probablement d'autres) (bogue #3206)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : ajout du proxy DNS du résolveur de l'hôte
+ (voir <xref linkend="nat_host_resolver_proxy" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction du découpage incorrect de grosses images
+ rejetées en morceaux de 2G (bogue #5523, #2787)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction d'un problème de compatibilité avec des fichiers
+ VNDK à taille fixe ou bruts (bogue #2723)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'une incompatibilité avec Hyper-V</para>
+ </listitem>
+
+ <listitem>
+ <para>Support des fichiers images de disque en Parallels version 2 (HDD) ;
+ voir <xref linkend="vdidetails" /></para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : création de fichiers manifest lors de l'exportation et
+ vérification du contenu d'un fichier manifest facultatif lors de
+ l'importation</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction du paramètre de la mémoire lors de l'importation (bogue #4188)</para>
+ </listitem>
+
+ <listitem>
+ <para>Périphérique de souris : cinq boutons sont désormais passés à
+ l'invité (bogue #3773)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : correction d'une perte de l'état sauvegardé quand
+ une VM ne parvient pas à démarrer</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSDL : correction d'un plantage lors de l'extinction (hôtes
+ Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes basés sur X11 : possibilité pour les utilisateurs d'indiquer
+ leurs propres formes de code-barres (bogue #2302)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : n'affiche pas automatiquement le menu et le
+ menu système en plein écran (bogue #4866)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X (64 bits) : n'interprète pas les événements de la
+ roulette de la souris comme des clics gauches (bogue #5049)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'une mort de la VM au moment de
+ l'extinction dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : inclusion du paquet d'interface avec le noyau,
+ dans le paquet principal de VirtualBox</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : support de l'architecture OpenSolaris Boomer (avec
+ la fondation son OSS)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : VBOXSVR est visible dans le dossier Réseau
+ (invités Windows, bogue #4842)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : améliorations de performance (invités Windows,
+ bogue #1728)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows, Linux et Solaris : ajout d'une notification
+ de jeu de ballon si la version de VirtualBox sur l'hôte a été mise à
+ jour et si les suppléments sont obsolètes</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : correction de l'émulation du clavier (bogue #1589)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction des erreurs du champ
+ <emphasis>as_pagelock()</emphasis> touchant les propriétés (bogue #5337)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ajout du support de l'identification automatique
+ pour Windows Vista et Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : amélioration de la recherche pour la
+ version du fichier des informations sur l'OS invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la détection des informations
+ de session d'OS sur Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un plantage en mode transparent
+ (contribution de Huihong Luo)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout du support de la désinstallation des
+ suppléments invité Linux (bogue #4039)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés et invités Linux : possibilité de monter un
+ dossier partagé si un fichier du même nom que le dossier existe dans
+ le répertoire actuel (bogue #928)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : ajout de bindings pour le service Web orienté objet pour
+ PHP5</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.12 (10-11-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : réduction de la surcharge d'ES-APIC pour les invités 32 bits Windows NT/2000/XP/2003 ;
+ exige le support 64 bits (VT-x seulement ; bogue #4392) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une double interruption de l'horloge sur les
+ anciens noyaux Linux utilisant l'ES-APIC (ce qui aboutissait à ce que
+ l'heure de l'invité tournait à double vitesse ; bogue #3135)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : ré-initizalisation de VT-x et d'AMD-V après une
+ suspension ou une hibernation de l'hôte ; certains BIOS l'oublient
+ (hôtes Windows seulement ; bogue #5421)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du chargement de l'état sauvegardé quand la
+ pré-affectation de la RAM est activée</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : on ignore les codes d'extinction inconnus plutôt que de
+ provoquer une guru meditation (bogue #5389)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne démarre jamais une VM avec un seul clic dans la fenêtre
+ de sélection (bogue #2676)</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : réduction de la probabilité de perte d'octets si l'hôte
+ est connecté à un fichier brut</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction de la gestion des variantes de découpage d'images
+ et correction d'une régression 3.0.10 (bogue #5355)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un plantage occasionnel du serveur VRDP</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : même si le câble réseau virtuel est débranché, certains
+ invités pouvaient envoyer/recevoir des paquets (E1000 ; bogue #5366)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : même si le câble réseau virtuel est débranché, cla carte
+ PCNet recevait des paquets spurious qui pourraient perdre l'invité
+ (bogue #4496)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de la modification de la casse
+ dans les noms de fichiers (bogue #2520)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un plantage en mode transparent
+ (contribution de Huihong Luo)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de l'écriture dans des fichiers
+ ouverts en mode <emphasis>O_APPEND</emphasis> (bogue #3805)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction d'une régression dans le pilote
+ des suppléments invité qui provoquait, entre autres, la perte des mises
+ à jour des propriétés invité et des messages d'erreur périodiques dans
+ les journaux système</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.10 (29-10-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : corrections de stabilité pour les invités SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation en pagination imbriquée et
+ avec les invités SMP (bogue #5222) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : changement de l'utilisation de VT-x/AMD-V pour détecter
+ d'autres hyperviseurs actifs ; nécessaire par exemple pour le mode
+ compatibilité XP de Windows 7 (hôtes Windows &amp; Mac OS X seulement ; bogue #4239) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : guru meditation pendant l'installation et le redémarrage
+ de OpenServer SCO (VT-x seulement ; bogue #5164)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la gestion des bits d'accès dans certains cas
+ (bogue #5248)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un flash VPID (VT-x seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la pagination imbriquée cassée pour les invités
+ 64 bits sur les hôtes 32 bits (AMD-V seulement ; bogue #5285)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du chargement des anciens çtats états sauvegardé/instantané
+ (bogue #3984)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de fuites de mémoire (bogue #5084)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X (Snow Leopard) : correction d'un problème de
+ dessin dans une configuration à deux écrans (bogue #4942)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : mises à jour de l'installeur pour Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : la gestion des dépassements de mémoire était
+ incorrecte (bogue #5241)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : la correction précédente de #5077 cassait le
+ support du DVD de l'hôte sur Solaris 10 (régression VBox 3.0.8)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de la compilation du module dans
+ Linux 2.6.32rc4 et supérieur</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction d'un remplissage de mémoire possible
+ du noyau de l'OS invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de problèmes de stabilité avec
+ les invités SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un problème de profondeur de
+ couleurs avec les hôtes à faible résolution, les
+ netbooks, etc. (bogue #4935)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une erreur NO_MORE_FILES lors
+ de la sauvegarde dans des dossiers partagés (bogue #4106)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la création de sous-répertoires
+ dans les dossiers partagés (bogue #4299)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : <emphasis>sendfile()</emphasis> renvoyait
+ <emphasis>-EOVERFLOW</emphasis> lorsqu'il était exécuté sur un
+ dossier partagé (bogue #2921)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une mauvaise valeur d'utilisation
+ du disque (hôtes non Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>installeur Linux : enregistrement des sources du module dans DKMS
+ même si le paquet fournit les bons modules pour la version actuellement
+ utilisée du noyau</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : suppression d'une déclaration OpenGL invalide (bogue #5158)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de l'émulation d'Am79C973 PCNet pour les
+ invités QNX (et probablement d'autres) (bogue #3206)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction de la gestion des variantes d'iimages découpées</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : ne roporte pas la mise à jour du pied de page lors de
+ l'envoi d'une image pour empêcher des incohérences </para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de stabilité pour certains périphériques USB 2.0</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'un index de recherche au fichier d'aide .chm</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI/Hôtes Windows : correction de la gestion du verrouillage
+ Majuscule sur les claviers français (bogue #2025)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier partagé/hôtes X11 : correction d'un plantage quand
+ l'initialisation du presse-papier a échoué (bogue #4987)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.8 (02-10-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une régression sur les invités 64 bits sur
+ les hôtes 32 bits dans la 3.0.6 VT-x seulement ; bogue #4947)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation par une erreur triple du
+ recompilateur (VT-x &amp; AMD-V only seulement ; bogue #5058) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc après la restauration de l'état de
+ l'invité (AMD-V, invité Windows 32 bits où ES/APIC est activé seulement,
+ bogue #5059) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un problème de pagination avec les invités OS/2 </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation dans de rares cas (régression
+ 2.0 ; virtualisation logicielle seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une déclaration relâchée pendant la restauration
+ d'un état quand on utilise l'émulation Sound Blaster 16 (bogue #5042) </para>
+ </listitem>
+
+ <listitem>
+ <para>Sécurité : correction d'une vulnérabilité qui permettait d'exécuter
+ des commandes avec des privilèges administrateur</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'une déclaration lors de l'exécution dans
+ l'implémentation de semaphore qui était retardée dans certaines conditions (bogue #616)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : modification du mode d'accès USB par défaut sur
+ certaines distributions (bogues #3394 et #4291)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : sur les Gentoo endurcis, le démon VBoxSVC plantait
+ en ouvrant les paramètres réseaux de la VM (bogue #3732)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux, Hôtes Solaris : passage de la variable XAUTHORITY à
+ la variable DISPLAY au démarrage d'une VM avec VBoxManage ou le sélecteur
+ de VM (bogue #5063)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : utilisation de sysfs pour énumérer les lecteurs de
+ l'hôte si hal n'est pas disponible</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un bogue qui créerait un accroc de
+ l'hôte de façon sporadique car les interruptions n'étaient pas réactivées
+ à chaque fois</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un kernel panic avec le réseau
+ bridgé et host-only (bogue #4775)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de CD/DVD-ROMs qui persistent de manière
+ incorrecte après avoir été changés (bogue #5077)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes basés sur X11 : support de touches de fonction supplémentaires
+ sur les claviers Sun (bogue #4907)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X (Snow Leopard) : correction d'un problème au
+ démarrage des VMs sans affichage sans session graphique (bogue #5002)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction d'un problème dans le listage des noms
+ des adaptateurs host-only qui laissait des déchets (les VMs connectées ne
+ démarreront pas)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : fonctionnement désormais avec Vista 64 bits édition
+ familiale (bogue #3865)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une corruption d'écran avec
+ la loupe ZoomText</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un échec NPGetUniversalName
+ (bogue #4853)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une régression Windows NT (bogue #4946)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de VBoxService qui ne fonctionnait
+ pas si aucun dossier partagé n'était installé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : implémentation de <emphasis>ftrunctate</emphasis>
+ (bogue #4771)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : démarrage d'une VM même si le port VRDP configuré est
+ utilisé</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : le périphérique réseau PCnet arrêtait sa réception dans
+ de rares conditions (bogue #4870)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : implémentation de la commande <computeroutput>controlvm vrdpport</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction de'un problèm avec les cibles NetApp (bogue #5072)</para>
+ </listitem>
+
+ <listitem>
+ <para>SCSI : ajout du support des disques virtuels supérieurs à 2To </para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un plantage potentiel lorsqu'on débranche des
+ périphériques USB2 (bogue #5089)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : IPSEC ne fonctionnait pas bien avec les invités Linux
+ (bogue #4801)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.6 (09-09-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une surcharge ES-APIC pour les invités Windows
+ NT, 2000, XP et 2003 32 bits (AMD-V seulement ; bogue #4392)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru meditation dans certaines circonstances
+ lors de l'activation d'un périphérique désactivé (bogue #4510)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une Guru meditation au démarrage de certains
+ invités Arch Linux (virtualisation logicielle seulement ; bogue #2149)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs avec les invités Solaris &amp; OpenSolaris
+ 64 bits (bogue #2258)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une diminution des valeurs de <emphasis>rdtsc</emphasis>
+ (AMD-V &amp; VT-x seulement ; bogue #2869)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : petites améliorations de performances sur Solaris/OpenSolaris
+ (VT-x seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : passage de <emphasis>cpuid</emphasis> au bon ID de processeur
+ virtuel signalé dans Linux </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : accrocs du CD de NetBSD 5.0.1 lors du démarrage (VT-x
+ seulement ; bogue #3947) </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : contournement d'un problème qui entraînait un
+ accroc de l'hôte (bogue #4486)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un verrouillage rare du système hôte
+ lors de l'utilisation du réseau bridgé</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un verrouillage potentiel du système
+ hôte quand les processeurs sont montés ou démontés</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Solaris : ajout d'une dépendance manquante du
+ paquet UTF-8 (bogue #4899)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ne plante pas sur les noyaux Linux PAE &lt; 2.6.11 (en
+ particulier RHEL/CentOS 4) ; désactivation de VT-x sur les noyaux Linux
+ &lt; 2.6.13 (bogue #1842)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris/Linux : détection correcte des claviers de moins de
+ touches que d'habitude (bogue #4799)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : on empêche les boîtes de dialogue de mots de
+ passe dans Snow Leopard 32 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>Python WS : correction d'un problème avec certaines constantes
+ d'énumérations qui ont de mauvaises valeurs dans les bindings Python du
+ service Web</para>
+ </listitem>
+
+ <listitem>
+ <para>API Python : correction de plusieurs problèmes de threading et de
+ plateforme</para>
+ </listitem>
+
+ <listitem>
+ <para>Shell Python : ajout de la commande <emphasis>exportVM</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Shell Python : diverses améliorations et corrections de bogues</para>
+ </listitem>
+
+ <listitem>
+ <para>Shell Python : correction de la détection du dossier personnel
+ s'il est distant</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de la gestion d'un commentaire XML qui pourrait
+ mener à des erreurs de l'analyseur</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un problème rare d'analyse avec des
+ numéros de filtres de ports de périphériques USB dans le XML des
+ paramètres de la machine</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : restrictition de la taille de la RAM de l'invité à
+ 1.5 Go (hôtes Windows 32 bits seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : correction d'un accroc possible au redémarrage de
+ l'invité (bogue #3792)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage rare lors de la suppression du
+ dernier disque du gestionnaire de médias (bogue #4795)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de <computeroutput>guestproperty</computeroutput>
+ pour les hôtes Mac OS X (bogue #3806)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction des propriétés invité avec
+ <emphasis>--flags</emphasis> ou <emphasis>-flags</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : correction d'une fuite de mémoire sévère, au
+ moins sur des plateformes utilisant XPCOM</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : correction du mode hôte (hôtes Solaris, Linux et Mac OS X ; bogue #4672)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : Protocole USB distant version 3</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'accrocs et de BSODs apparus avec la 3.0.4 (bogues #4695, #4739, #4710)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'un bogue qui empêchait Windows 7 de détecter
+ plus d'un disque dur</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA/SCSI : correction de plantages rares et aléatoires de l'invité
+ et d'accrocs </para>
+ </listitem>
+
+ <listitem>
+ <para>SCSI : correction d'un problème où Fedora 11 refusait de démarrer
+ après une mise à jour du noyau</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction d'une déconnexion quand la cible a fermé la
+ connexion, correction de la négociation des paramètres, correction du
+ renvoi de la commande qk1nd la connexion a été fermée, correction du
+ traitement de l'état SCSI pour les cibles qui n'utilisent pas le
+ phase collapse</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : correction d'un bogue qui faisait échouer le gestionnaire de
+ démarrage d'OS/2 (régression 2.1.0, bogue #3911)</para>
+ </listitem>
+
+ <listitem>
+ <para>PulseAudio : pas d'accroc à l'extinction d'une VM si la connexion
+ au serveur a été fermée de façon inattendue (bogue #3100)</para>
+ </listitem>
+
+ <listitem>
+ <para>Souris : correction d'un comportement bizarre de la souris avec
+ les invités SMP (Solaris) (bogue #4538)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau HostOnly : correction d'un échec dans
+ <emphasis>CreateHostOnlyNetworkInterface()</emphasis> sur Linux (pas de
+ GUID)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau HostOnly : correction d'un mauvais démarrage du serveur DHCP
+ quand l'interface hostonly était activée sur Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau HostOnly : correction d'un nom de fabricant incorrect et de
+ l'adresse MAC par défaut sur Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau HostOnly : correction du problème de listage des
+ interfaces host-only sur Mac OS X quand toutes les interfaces physiques
+ sont inactives (bogues #4698, #4790)</para>
+ </listitem>
+
+ <listitem>
+ <para>DHCP : correction d'un bogue du serveur DHCP où il affectait une
+ adresse IP inférieure à la plage configurée</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de la réception des paquets multicast</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de la notification d'activation/désactivation de
+ la connexion après le réveil d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de corruptions de l'adresse Ethernet (bogue #4839)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'accrocs, rejet des paquets et de problèmes de
+ retransmissions (bogue #4343)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau bridgé : correction d'un problème dans la queue des paquets
+ qui pourrait causer des BSOD
+ DRIVER_POWER_STATE_FAILURE pour les hôtes Windows (bogue #4821)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un bogue dans VBoxGINA qui
+ empêchait de sélectionner le bon domaine lors de l'identification la
+ première fois</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Windows : devrait maintenant fonctionner sur
+ les systèmes unicode (comme en coréen, bogue #3707)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Windows : vérification qu'il y a assez
+ d'espace disque</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier partagé : n'envoie pas de texte qui finit par zéro
+ dans les invités et les hôtes X11 (bogue #4712)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier partagé : utilisation d'une façon moins consommatrice
+ en processeur de vérifier des nouvelles données dans les invités et les
+ hôtes X11 (bogue #4092)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : ne cache pas le curseur de la souris de l'hôte
+ lors de la restauration d'un état sauvegardé (bogue #4700)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : correction de problèmes d'affichage de l'image du
+ curseur de la souris (bogues #2603, #2660 et #4817)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités SUSE 11 : correction de l'installation des suppléments
+ invité (bogue #4506)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : support des invités Fedora 12 Alpha (bogues #4731, #4733 et #4734)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.4 (04-08-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : corrections de la stabilité des invités 64 bits (AMD-V
+ seulement ; bogues #3923 &amp; #3666)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : corrections de la stabilité SMP (AMD-V seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : amélioration des performances SMP (surtout pour les invités
+ Solaris)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : élimination de plusieurs bogues qui pourraient conduire à
+ un redémarrage de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc du démarrage d'OS/2 ACP2 sur disquette
+ (VT-x seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : petite amélioration de performances pour les invités
+ OpenSolaris (AMD-V seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un redémarrage de CentOS/Xen (virtualisation
+ logicielle seulement ; bogue #4509)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'accrocs / BSOD pendant l'installation de Windows
+ XP (bogue #4342)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : marquage des ports comme étant non branchables (bogue #3920)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de verrouillages et de poursuite ducontexte/fenêtre
+ pour les applications multithreaded (bogue #3922)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de fuites de mémoire à l'extinction des
+ applications invitées en OpenGL </para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un plantage avec Call of Duty</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : l'utilisation de deux ou plusieurs adaptateurs NAT dans une
+ VM était cassée (régression 3.0.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de corruptions dans la communication réseau (bogues #4499, #4540, #4591, #4604)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de l'accès ftp passif au servur hôte (bogue #4427)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction du clonage de depuis/vers des disques iSCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la gestion des séparateurs de chemin pour
+ l'exportation OVF sur Windows (bogue #4354)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la minibarre d'outils ne s'affichait que sur le premier
+ afficheur de l'hôte (bogue #4654)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'une option de VM pour afficher la minibarre d'outils
+ en haut</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ne plante pas à l'ajout et à la configuration d'interfaces
+ réseaux host-only</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de la sélection d'un répertoire
+ racine du lecteur comme chemin d'hôte du dossier partagé dans VirtualBox
+ (hôte Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'un bogue qui pourrait rendre les paramètres des
+ filtres des périphériques USB inactifs (régression 3.0.2, bogue #4668)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : affichage de la version des suppléments invité
+ dans les propriétés invité (bogue #3415)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de la création de fichiers VMDK donnant
+ un accès brut à la partition (bogue #1461)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : amélioration du support de Snow Leopard </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de problèmes créant de mauvaises couleurs
+ ou une transparence dans les fenêtres de l'hôte ayant des pilotes
+ graphiques (bogue #3095)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ratrapage de la détection du matériel si le service
+ hal ne parvient pas à trouver de lecteurs DVD</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris et Linux : contournement des problèmes de gestion
+ des couleurs dans Qt (bogue #4353)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de fuites de mémoire en réseau host-only</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Solaris : correction d'un mauvais masque réseau pour
+ l'interface Host-only (bogue #4590)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Solaris : ajout d'une dépendance du paquet pour Python
+ et Python-devel (bogue #4570)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : empêchement du passage des fenêtres quand on est en
+ mode transparent dans les invités KDE (bogues #1681 et #3574)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : correction d'une corruption d'écran dans les invités
+ X11 quand de grandes quantités de mémoire graphique était affectée
+ (bogue #4430)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : quelques corrections à la bascule entre l'hôte et
+ les pointeurs de souris affichés dans l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : correction d'un problème qui arrêtait le fonctionnement
+ normal du mode transparent (problème principal listé au bogue #2238)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+ <sect1>
+ <title>Version 3.0.2 (10-07-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction des régressions du réseau (accrocs de l'invité
+ pendant les ES réseaux) (bogue #4343)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : amélioration des performances de l'invité SMP</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs et de faibles performances avec Kaspersky Internet Security
+ (VT-x/AMD-V seulement ; bogue #1778)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages à l'exécution de certains invités
+ Linux (virtualisation logicielle seulement ; bogues #2696 &amp; #3868)</para>
+ </listitem>
+
+ <listitem>
+ <para>ACPI : correction d'accrocs des noyaux Windows 2000 quand ES-APIC
+ est activé (bogue #4348)</para>
+ </listitem>
+
+ <listitem>
+ <para>APIC : correction d'une forte charge d'activité pour certains
+ invités Linux (régression 3.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS : gestion correct de Ctrl-Alt-Supp en mode réel</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction de l'analyse de la configuration (bogue #4236)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'une confusion potentielle à l'exportation des
+ réseaux</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de compatibilité (bogue #4452)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : acceptation des indicateurs ovf:/disk/ avec une seule barre
+ oblique en plus d'ovf://disk/ (bogue #4452) </para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de plantages dans certaines circonstances (bogue #4330)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de l'édition de liens dynamiques sur
+ les invités Solaris/OpenSolaris (bogue #4399)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une la pourchasse incorrecte du contexte/fenêtre
+ pour les applis multithreadées</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction du chargement d'un état
+ sauvegardé (bogue #1595)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : droits du fichier hôte définis à 0400 avec
+ l'invité Windows (bogue #4381)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôte et invité X11 et presse-papier : correction d'un certain
+ nombre de problèmes y compris les bogues #4380 et #4344</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : correction de certains problèmes avec les
+ fenêtres transparentes dans les invités X11 (bogue #3727)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ajout de VBoxServiceNT aux invités NT4
+ (pour la synchronisation du temps et les propriétés invité)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la recherche de version</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeu rLinux : support de Linux Pardus</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : contournement des pilotes graphiques boggués qui
+ affichaient une fenêtre de VM en noir sur des distributions récentes
+ (bogue #4335)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'une coquille dans le script de
+ démarrage du module noyau (bogue #4388)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : plusieurs corrections de l'installeur</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un problème de préemption aboutissant
+ à ce que les VMs ne démarrent jamais sur Solaris 10 (bogue #4328)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : correction de l'intégration de la souris pour
+ OpenSolaris 2009.06 (bogue #4365) </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'une forte utilisation du processeur
+ après le réveil de l'hôte (bogue #2978)</para>
+ </listitem>
+
+ <listitem>
+ <para>correction d'un bogue de conversion du fichier des paramètres
+ qui activait parfois l'accélération matérielle pour les machines virtuelles
+ n'ayant pas de configuration explicite dans le XML</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 3.0.0 (30-06-2009)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions majeures
+ suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>SMP invité avec jusqu'à 32 processeurs virtuels (VT-x et AMD-V
+ seulement ; voir <xref linkend="settings-processor" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : possibilité d'utiliser des applications Direct3D
+ 8/9 / jeux (expérimental ; voir <xref linkend="guestadd-3d" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support d'OpenGL 2.0 pour les invités Windows, Linux et Solaris</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>De plus, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Solaris : possibilité de suspendre/réveiller sur l'hôte
+ quand une VM est en fonction (bogue #3826)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : perte de la restriction de la mémoire physique
+ contiguë dans certaines conditions</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de l'invité PAE</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : corrections de la compilation du module noyau pour
+ 2.6.31 (bogue #4264)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation occasionnelle lors du
+ chargement d'un état sauvegardé (VT-x seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : élimination d'une surcharge ES-APIC avec des invités 32
+ bits (VT-x seulement, certains processeurs Intel ne supportent pas cette
+ fonction (la plupart le font) ; bogue #638)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs de l'invité CentOS 64 bits au tout
+ début du démarrage (AMD-V seulement ; bogue #3927)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : améliorations des performances de certains invités PAE (comme
+ les noyaux Linux 2.6.29+) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : certains invités Windows détectent une fréquence de
+ processeur complètement fausse (bogue #2227)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc et de processus de VM non tuables
+ (bogue #4040)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages aléatoires de l'invité à cause
+ d'une corruption de l'état XMM (hôtes Win64 seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : améliorations des performances pour l'E/S réseau (VT-x/AMD-V
+ seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout d'une mini barre d'outils pour le mode plein écran et
+ transparent (Merci à Huihong Luo)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : réaménagement des boîtes de dialogue des paramètres</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : possibilité de créer/supprimer plus d'un adaptateur réseau
+ host-only (hôtes non Windows)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage du temps estimé des opérations qui durent (comme
+ l'importation/exportation d'OVF)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'accrocs rares à l'ouverture des assistants
+ d'importation/exportation d'OVF (bogue #4157))</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages d'une VM pour les applications
+ client qui utilisent de mauvais états OpenGL</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de la corruption de mémoire lors de
+ la recherche des formats de compression d'images supportés</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'un mauvais affichage de glDrawRangeElements</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une fuite de mémoire lors de
+ l'utilisation de VBOs</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de la détection de la bibliothèque glew</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'une corruption aléatoire des images</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : support du client RDP de Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction d'un autre problème de charge de la somme
+ de vérification TX avec des noyaux Linux jusqu'à la version 2.6.18</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de "ouvrir des ports sur le routeur virtuael
+ 10.0.2.2 - 513, 514" (forum)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : possibilité de configurer les paramètres de la socket et
+ internes</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : possibilité de sonder des sockets sur une interface spécifique</para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrage PXE : augmentation significative des performances (VT-x/AMD-V
+ seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : écriture correcte de secteurs vides lors du clonage de
+ d'images VHD (bogue #4080)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'un plantage lors de la désactivation d'instantanés
+ d'une image VHD</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'un accèss dépassant le bitmap du bloc, qui
+ pourrait provoquer des plantages aléatoires</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'une mauvaise destion de la table de
+ partitions lors de la création de fichiers VMDK, donnant un accès brut
+ aux partitions (bogue #3510)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : support du clonage dans un fichier image existant</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : plusieurs corrections de compatibilité avec OVF 1.0</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de l'exportation d'images de disques quand
+ plusieurs machines virtuelles sont exportées en une fois</para>
+ </listitem>
+
+ <listitem>
+ <para>Périphérique virtuel de souris : élimination des micro-mouvements
+ de la souris virtuelle qui perdaient certaines applications (bogue #3782)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : parfois, un fichier était créé avec les mauvais
+ droits (régression 2.2.0 ; bogue #3785)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : possibilité de modifier les attributs de
+ fichiers d'invités Linux et utilisation des bons droits sur les fichiers
+ lors de la création des fichiers</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : certains contenus n'étaient pas bien écrits
+ dans certaines conditions (bogue #1187)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de mauvais horodatages des fichiers
+ lorsqu'on utilise un invité Windows sur un hôte Linux (bogue #3404)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier X11 : correction de fins de lignes dupliquées (bogue #4270)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : un certain nombre de corrections du presse-papier
+ partagé</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : support des suppléments invité pour SUSE Linux
+ Enterprise Desktop 11</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : nouveau démon vboxadd-service pour gérer la
+ synchronisation de l'heure et la recherche des propriétés invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Linux : implémentation des propriétés invité (info d'OS,
+ utilisateurs connectés, informations réseaux de base)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Windows : l'API Python de VirtualBox peut
+ maintenant s'installer automatiquement (exige l'installation des extensions
+ Python et Win32)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : le support des endpoints isochrones à haute vitesse a été
+ ajouté. De plus, la mise en tampon
+ read-ahead se fait pour les endpoints en entrée (hôtes Linux actuels
+ seulement). Cela devrait permettre à de nouveaux périphériques supplémentaires
+ de fonctionner, en particulier les webcams (bogue #242)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction d'une erreur de gestion de certains dongles USB</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : correction d'une impossibilité de gérer les pointeurs
+ NULL pour les arguments objets, qui sont des valeurs valides pour
+ de nombreuses APIs, tant dans le service Web orienté objet que dans
+ le brut</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : les bindings t-orientés objet pour JAX-WS n'affichaient
+ pas bien l'interface héritée, cela est corrigé</para>
+ </listitem>
+
+ <listitem>
+ <para>Service Web : ajout du support des interfaces IDisplay et
+ IGuest, jusqu'ici indisponibles</para>
+ </listitem>
+
+ <listitem>
+ <para>La boîte de dialogue d'enregistrement utilise maintenant les comptes en
+ ligne de Sun</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.2.4 (29-05-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Installeur Windows : correction d'un accroc potentiel pendant
+ l'installation</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Windows : correction de plusieurs problèmes (bogue #3892)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : on a fait en sorte que cela fonctionne avec
+ Solaris build 114 ou supérieur (bogue #3981)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un bogue dans la gestion des
+ caractères du port série, qu'on a trouvé pendant la boucle (bogue #3120)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : adaptation de vboxdrv.sh aux récents changements dans
+ <computeroutput>VBoxManage list runningvms</computeroutput>
+ (bogue #4034)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'un plantage provoqué par le réseau
+ host-only/bridgé</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : correction de l'accès au DVD hôte avec le passthrough
+ désactivé (bogue #4077)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : correction de problèmes où KDE 4 ne reconnaissait
+ pas les clics de souris</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une mauvaise profondeur des
+ couleurs dans les invités 8 bits sous les invités Windows 7</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement si VT-x/AMD-V n'a pas pu être activé pour
+ les invités qui exigent ce paramètre (bogue #4055)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage occasionnel à cause d'une mémoire
+ insuffisante</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc dans les invités Solaris 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : la restauration d'un état sauvegardé échouait parfois
+ (bogues #3984 et #2742)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier : correction d'un plantage lors de l'extinction du
+ presse-papier partagé sur les hôtes X11 (bogue #4020)</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction d'un accroc potentiel pendant l'importation</para>
+ </listitem>
+
+ <listitem>
+ <para>OVF : correction de plantages potentiels pendant l'importation/exportation
+ sur les hôtes Win64</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>modifyhd --compact</computeroutput> :
+ correction d'un bogue pouvant provoquer des plantages et une corruption
+ d'image (bogue #3864)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>metrics collect</computeroutput> : on
+ flash maintenant le flux en sortie</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : on a fait en sorte que <computeroutput>VBoxManage internalcommands
+ sethduuid</computeroutput> fonctionne pour les fichiers .vhd (bogue
+ #3443)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : certains fichiers .vhd ne pouvaient pas être clonés (bogue
+ #4080)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : amélioration de l'établissement d'une connexion TCP (bogue #2987)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de l'ordre des serveurs DNS dans les essais
+ DHCP (bogue #4091)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'un essai DHCP pour plusieurs serveurs de noms
+ (bogue #3692)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une erreur de segmentation potentielle si
+ l'hôte a perdu sa connectivité
+ (bogue #3964)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : accès interdit aux répertoires parents sur
+ les hôtes Windows (bogue #4090)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : on a fait en sorte que rm/rmdir fonctionne avec
+ les invités Solaris sur des hôtes Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du problème d'un thread de réception bloqué
+ quand un paquet acheminé arrive trop tôt pour être pris en charge par
+ l'adaptateur e1000 désinitialisé</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du problème provoquant des gels/plantages de
+ l'hôte lors de l'utilisation du mode bridgé quand l'interface de l'hôte
+ a une somme de contrôle RX offloading on (bogue #3926 et liés). Cela
+ corrige également les problèmes de charge TX (bogue #3870)</para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrage PXE : Ajout du support de l'adaptateur PRO/1000 MT Server</para>
+ </listitem>
+
+ <listitem>
+ <para>Bindings Python : correction d'un conflit de mots-clés</para>
+ </listitem>
+
+ <listitem>
+ <para>SCSI : correction de plantages occasionnels sur Win64</para>
+ </listitem>
+
+ <listitem>
+ <para>Série : possibilité de rediriger le port série sur un fichier brut (bogue #1023)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'une mauvaise mise à jour rare de l'écran</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : correction de la création des instantanés</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.2.2 (27-04-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Presse-papier hôte et invité : correction d'un certain nombre de
+ problèmes concernant les hôtes et les invités fonctionnant avec le
+ système X window</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : assurance que la détection automatique de la
+ souris virtuelle fonctionne au premier redémarrage après avoir installé
+ les suppléments invité sur le serveur X.Org 1.5 et supérieur</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : affichage correct du numéro d'identification
+ du processus des services en fonction</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments invité : nettoyage adéquat si le serveur X Window se
+ termine</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du chemin d'installation des
+ bibliothèques OpenGL sur certains invités 64 bits (bogue #3693)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction de l'installation pour qu'elle
+ fonctionne quand X.Org n'est pas installée sur l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : correction d'un bogue qui pourrait
+ planter l'invité au démontage d'un dossier partagé occupé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de l'intégration du pointeur de
+ souris de certains invités Windows (régression 2.2.0, bogue #3734)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de l'installation sur Windows
+ Server 2008 Core (bogue #2628)</para>
+ </listitem>
+
+ <listitem>
+ <para>Principal : n'essaie pas d'utiliser d'anciennes versions de D-Bus (hôtes
+ Linux seulement, bogue #3732)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de conditions hors-mémoire sur les hôtes Windows
+ (bogue #3657)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs occasionnels lors de la connexion de
+ périphériques USB au démarrage de la VM (régression 2.2.0 ; bogues #3787)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation liée à la gestion de la
+ mémoire
+ (virtualisation logicielle seulement)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Disques virtuels : correction d'une corruption possible des données
+ lors de l'écriture dans des images de différenciation, mauvaise détection
+ des écritures redondantes</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : on a retravaillé la boîte de dialogue des paramètres réseaux</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage correct de la boîte de dialogue détaillée des
+ paramètres des réseaux NAT (bogue #3702)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la touche hôte ne pouvait pas être modifiée (régression 2.2.0,
+ bogue #3689)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du champ de texte de la taille de la mémoire
+ (hôtes Windows seulement ;
+ bogue #3679)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage lors de la sélection du chemin d'un
+ dossier partagé (hôtes Windows seulement ;
+ bogues #3694, #3751, #3756)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>modifyhd --compact</computeroutput> :
+ implémentation de nouveau des fichiers VDI et support désormais des
+ chemins relatifs (bogue #2180, #2833)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>snapshot discard</computeroutput> :
+ on a fait de nouveau en sorte que cela fonctionne (régression 2.1.0 ; bogue #3714)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : sur certains hôtes Windows, l'invité ne recevait pas de
+ tentative DHCP (bogue #3655)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction d'une déclaration de version pendant
+ <emphasis>poll()</emphasis>
+ (bogue #3667)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction d'un verrou à cause de l'émulation d'un
+ périphérique réseau PCnet (régression 2.2.0, bogue #3676)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier : correction de plantages aléatoires (hôtes X11
+ seulement, bogue #3723)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de mauvais droits pour les invités
+ Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction de wrong file sizes with Solaris guests</para>
+ </listitem>
+
+ <listitem>
+ <para>Bindings C : correction d'une fuite de mémoire possible pendant
+ la relâche de IVirtualBox et ISession Objects</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une incompatibilité d'une interface
+ réseau host-only avec nwam/dhcpagent (bogue #3754)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Windows : correction de plusieurs problèmes d'installation
+ et de désinstallation (bogues #3659, #3686, #1730, #3711, #3373, #3382, #3701, #3685, #3710)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : support préliminaire de Snow Leopard</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.2.0 (08-04-2009)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions majeures
+ suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Applicatif OVF (Open Virtualization Format) pour l'importation et
+ l'exportation (voir <xref linkend="ovf" />) </para>
+ </listitem>
+
+ <listitem>
+ <para>Mode réseau host-only (voir <xref linkend="network_hostonly" />) </para>
+ </listitem>
+
+ <listitem>
+ <para>Optimisations de l'hyperviseur a des gains significatifs de
+ performances pour de hauts débits de changement de contexte</para>
+ </listitem>
+
+ <listitem>
+ <para>Passage de la limite de la mémoire des VMs sur les hôtes 64 bits
+ à 16Go</para>
+ </listitem>
+
+ <listitem>
+ <para>VT-x/AMD-V sont activés par défaut pour les machines virtuelles
+ nouvellement créées</para>
+ </listitem>
+
+ <listitem>
+ <para>L'USB (OHCI &amp; EHCI) est activé par défaut pour les machines
+ virtuelles nouvellement créées (GUI Qt seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental de l'USB pour les hôtes OpenSolaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés pour les invités Solaris et OpenSolaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélération OpenGL 3D pour les invités Linux et Solaris (voir
+ <xref linkend="guestadd-3d" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout d'une API en plus de celle C++, Java, Python et services
+ Web</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>De plus, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction liée aux invités FreeBSD pour les drapeaux V86 (bogue #2342) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation au démarrage d'une VM Linux
+ AsteriskNow (bogue #2342) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation PGMPOOLKIND_FREE (bogues #3356, #3431) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc au démarrage de Windows XP (invité
+ PAE + pagination imbriquée seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : possibilité de mélanger VT-x/AMD-V et la virtualisation
+ logicielle </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction du démarrage en mode sans échec extrêmement lent
+ dans, par exemple, Windows 2008 (VT-x/AMD-V seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : accélération significative de certains chargeurs d'amorçages
+ GRUB (comme Solaris) (VT-x/AMD-V seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction IOPL en mode réel pour des invités DOS (VT-x
+ seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la détection VT-x avec certains BIOS qui
+ activent le VT-x, mais pas de définition du bit de verrouillage sur
+ MSR_IA32_FEATURE_CONTROL </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de problèmes d'hibernation sur les hôtes Windows
+ XP (VT-x seulement ; bogue #1794) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : émulation correcte de <emphasis>RDMSR</emphasis> du MSR
+ TSC, cela devrait corriger certains invités NetBSD</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : émulation de <emphasis>RDPMC</emphasis> ; correction des
+ plantages des invités Windows lors de l'utilisation de l'antivirus
+ Kaspersky (bogue #1778) </para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de téléchargements tronqués (FTP) (bogue #3257)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : bloquage des paquets UDP provoqués par un plantage (bogue #3426)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : possibilité de configurer le <emphasis>prochain serveur</emphasis>
+ et le <emphasis>fichier de démarrage</emphasis> avec VBoxManage (bogue #2759)</para>
+ </listitem>
+
+ <listitem>
+ <para>IDE : correction de la mise à jour du disque dur des paramètres
+ XML-1.2 (bogue #1518)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disque dur : support de davantage de variantes de fichiers VMDK
+ (y compris les images de serveur ESX à taille fixe)</para>
+ </listitem>
+
+ <listitem>
+ <para>Disques durs : refus de démarrer la VM si une image de disque n'est
+ pas inscriptible</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : nouvelle réduction de l'utilisation de l'USB pour OHCI et
+ EHCI ; la clé de CFG "VBoxInternal/Devices/usb-ohci/0/Config/FrameRate"
+ n'est plus nécessaire ni supportée</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction de BSOD sur l'hôte avec certains périphériques USB
+ (hôtes Windows seulement ; bogue #1654)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : gestion correcte des déconnexions de câble (bogue #3421)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction des accrocs quand le serveur VRDP est activé
+ ou désactivé pendant l'exécution</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : respect des paramètres d'umask sur les hôtes
+ Linux, OSX et Solaris lors de la création de fichiers</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : on empêche de définir la locale dans vboxmouse, car
+ cela posait des problèmes avec les locales turques (bogue #3563)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités X11 : affichage du pointeur de souris de l'invité à
+ droite si le bureau virtuel est plus grand que la résolution de
+ l'invité (bogue
+ #2306)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une coquille lors de la détection
+ de Xorg 1.6 (bogue #3555)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Solaris : ajout de la dépendance xpg4/xcu4 à l'installeur
+ des suppléments invité (bogue #3524)</para>
+ </listitem>
+
+ <listitem>
+ <para>Invités Windows : sondage du pilote de filtre VBoxMouse.sys au
+ bon périphérique de pointage de l'invité (bogue #1324)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction du BSOD au démarrage d'une VM quand
+ l'interface hôte est activée (bogue #3414)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : comptage correct des références pour empêcher le
+ déchargement du module vboxnetflt tant que ce code est utilisé (bogue #3104)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ne laisse pas de zombies de VBoxSysInfo.sh
+ (bogue #3586)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeurs Linux : corrections pour les systèmes Slackware, Arch Linux et
+ Linux from Scratch</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeurs Windows : combinaison de l'exécutable de l'installeur
+ qui contient à la fois les architectures 32 et 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : moins de messages d'erreur chiffrés sur la ligne de
+ commandes</para>
+ </listitem>
+
+ <listitem>
+ <para>Les commandes VBoxManage <computeroutput>list vms</computeroutput>
+ sont par défaut dans un format emballé</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>controlvm dvdattach</computeroutput> ne
+ fonctionnait pas si l'image était connecté auparavant</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : possibilité de créer toutes les variantes d'images de
+ disques supportées</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>showvminfo</computeroutput> : ne spamme
+ pas le journal des versions si les suppléments invité ne supportent pas
+ les informations de statistiques(bogue #3457)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : nettoyage du traitement de grandes lignes de commandes,
+ les options primitives d'un seul tiret sont obsolètes et seront
+ supprimées dans la prochaine version majeure, donc passez dès maintenant
+ aux nouvelles options</para>
+ </listitem>
+
+ <listitem>
+ <para>Disques durs : amélioration du support des disques immuables pour
+ réinitialiser automatiquement le fichier de différenciation au démarrage
+ de la VM (lié au bogue #2772)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : activation de l'adaptateur audio par défaut pour les
+ nouvelles VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement si VT-x/AMD-V n'est pas opérationnel au
+ démarrage d'un invité 64 bits</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : désactivation du support des invités 64 bits quand le processeur
+ de l'hôte ne supporte pas VT-x/AMD-V</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : suppression de l'icône de la disquette de la barre d'état</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : affichage de la révision build dans une boîte de dialogue
+ A propos</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction du texte sticky de la barre d'état</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : amélioration des boîtes de dialogue d'erreur</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : échec avec un message d'erreur adéquat lors d'une tentative
+ de démarrage d'une image de disque en lecture seule (bogue #1745)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI/Mac OS X : correction d'un bouton Fermer désactivé</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI/Windows : ré-activation du support du copier-coller (régression 2.0 ;
+ hôtes Windows ; bogue #2065)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout du support de la sélection/retour d'OpenGL
+ (bogue #2920)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : fermeture du sous-système OpenGL pour la fin
+ des applications invitées (bogue #3243)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction d'accrocs de la VM au démarrage des
+ invités ayant activé l'accélération 3D (bogue #3437)</para>
+ </listitem>
+
+ <listitem>
+ <para>PXE : correction d'accrocs au démarrage quand la virtualisation
+ matérielle est utilisée (bogue #2536)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : correction de problèmes avec les invités Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>API principal : fermeture du fichier XML des paramètres de la
+ machine lorsqu'on désenregistre une machine
+ (bogue #3548)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.1.4 (16-02-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Hôtes Windows : correction de plantages/accrocs de l'hôte sur
+ certains systèmes Windows 32 bits lorsqu'on exécute des invités Linux
+ (bogues #1606, #2269, #2763)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction d'un problème BSOD du composant
+ réseau (bogues #3168, #2916)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : correction de problèmes d'installation (bogues #2517, #1730, #3130)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de bizarreries occasionnelles du noyau
+ (bogue #2556)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'une dépendance du module pour les
+ modules intégrés (bogue #3115)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : déplacement des règles udev de redirection USB
+ pour qu'elles n'écrasent pas celles existantes sur le système (bogue #3143)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction du problème des invités incapables de
+ communiquer entre eux lorsqu'ils sont reliés par des interfaces TAP
+ (bogue #3215)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : on arrête de chercher l'USB en permanence si DBus ou
+ hal ne sont pas disponibles (bogue #3136)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'avertissements dans l'installeur quand
+ SELinux est désactivé (bogue #3098)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : VirtualBox ne parvenait parfois pas à démarrer s'il
+ était lancé en utilisant au préalable sudo (bogue #3270)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une forte charge du processeur
+ pendant le fonctionnement de nombreux invités en parallèle</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de l'impossibilité de démarrer plus de
+ 128 VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une régression de performances des invités
+ Windows (bogue #3172) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : on ignore les stepping du processeur lors de la restauration
+ d'un état sauvegardé/instantané</para>
+ </listitem>
+
+ <listitem>
+ <para>REM : correction d'une impossibilité d'utiliser gdb pour déboquer
+ les programmes dans les invités Linux avec la virtualisation logicielle
+ (bogue #3245)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction de la gestion des touches mortes sur les hôtes
+ Solaris (bogue #3256)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : dans la boîte de dialogue d'arrêt, désactivation de l'action
+ <emphasis>envoi du signal Arrêt</emphasis> si l'invité n'utilise pas
+ ACPI</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : suppress,on des événements de relâche des touches
+ supplémentaires envoyés par les hôtes X11 quand les touches se répètent
+ automatiquement (bogue #1296)</para>
+ </listitem>
+
+ <listitem>
+ <para>API : restauration de la sensibilité à la casse de la recherche
+ du nom du type d'OS (bogue #3087)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : ne démarre vraiment plus les services X11 (service
+ presse-papier, accélération 3D ; hôtes Solaris &amp; Darwin seulement ; bogue #3199)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de plantages occasioneels quand l'invité fait un
+ traceroute (hôtes non Windows ; bogue #3200)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de plantages en cas de charge élevée (bogue #3110)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de téléchargements tronqués (hôtes Windows
+ seulement, bogue #3257)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : pas d'interception des paquets TFTP dont l'adresse de
+ destination est différente de celle du serveur TFTP intégré (bogue #3112)</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : plusieurs corrections du passthrough USB sur les hôtes Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : réduction de l'utilisation du processeur de l'hôte si
+ EHCI est actif</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un écran noir du serveur VRDP après la
+ reconnexion d'un client (bogue #1989)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : modification du client rdesktop (rdesktop-vrdp) qui utilise
+ maintenant la synchronisation de l'état du verrouillage numérique (bogue #3253)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : on a fait en sorte que les invités FreeBSD fonctionnent
+ (bogue #3174)</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : correction d'un verrouillage lorsqu'on met en pause une VM
+ à cause de problèmes de disque virtuel (retrait du disque, indisponibilité
+ de la cible iSCSI)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction d'un plantage possible lors de la mise en pause
+ de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : ajout d'un GL_MAX_TEXTURE_COORDS_ARB manquant (bogue #3246)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'une erreur <emphasis>ERROR (e0000101)</emphasis>
+ pendant l'installation (bogue #1923)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un accroc de l'explorateur
+ Windows pendant la navigation dans des dossiers partagés avec les invités
+ 64 bits (bogue #2225)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de distortions de l'écran invité
+ lors du changement de mode graphique</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un message <emphasis>Périphérique réseau
+ non connecté</emphasis> pour les dossiers partagés associés après le
+ démarrage de l'invité (bogue #3157)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une corruption occasionnelle de
+ fichiers quand on écrit des fichiers en mode
+ <emphasis>O_APPEND</emphasis> dans un dossier partagé (bogue #2844)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : le pilote de souris n'était pas bien paramétré
+ sur les versions candidates de X.Org (bogue #3212)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction pour que l'installeur fonctionne
+ avec openSUSE 11.1 (bogue #3213)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : désactivation du redimensionnement dynamique
+ si le serveur X est configuré pour des résolutions fixes</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris/Linux : bonne gestion des résolutions virtuelles
+ pupérieures à la résolution actuelle de l'invité (bogue #3096)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.1.2 (21-01-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>USB : corrections du support de l'hôte Linux (bogue #3136)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation sur les invités PAE sur
+ des hôtes non PAE (AMD-V)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation sur les hôtes Mac OS X lorsqu'on
+ utilise VT-x</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : possibilité de lancer jusqu'à 1023 VMs sur les hôtes 64
+ bits (on était à 127)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : plusieurs corrections liées aux invités FreeBSD (bogues #2342, #2341, #2761) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation à l'installation de
+ Suse Enterprise Server 10U2 (VT-x seulement ; bogue #3039)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation au démarrage de Novell Netware 4.11
+ (VT-x seulement ; bogue #2898) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un erreur VERR_ADDRESS_TOO_BIG sur certains
+ systèmes Mac OS X au démarrage d'une VM </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : vidage de MSR_K6_EFER_SVME après le sondage pour AMD-V (bogue #3058) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation pendant le démarrage de
+ Windows 7 avec plus de 2 Go de RAM sur l'invité (VT-x, pagination nestée
+ seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un accroc pendant le démarrage d'OS/2 MCP2 (AMD-V et VT-x
+ seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une boucle pendant le démarrage d'OpenBSD 4.0
+ (VT-x seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages aléatoires liés à FPU/XMM avec des
+ invités 64 bits sur des hôtes 32 bits </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une corruption occasionnelle de l'état XMM
+ avec les invités 64 bits </para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : augmentation de la limite de RAM pour les nouvelles VMs à
+ 75% de la mémoire de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : ajout deWindows 7 comme type de système d'exploitation</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSDL : correction du paramètre <computeroutput>-fixes fixedmode</computeroutput>
+ (bogue #3067)</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier : corrections de stabilité (hôtes Linux et Solaris
+ seulement, bogue #2675 and #3003)</para>
+ </listitem>
+
+ <listitem>
+ <para>Support 3D : correction de plantages de la VM avec certaines applications
+ invitées (bogues #2781, #2797, #2972, #3089)</para>
+ </listitem>
+
+ <listitem>
+ <para>LsiLogic : amélioration du support des invités Windows (encore
+ expérimental)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : correction d'une régression de la 2.1.0 avec laquelle les
+ événements de redimensionnement de l'écran invité n'étaient pas bien
+ gérés (bogue #2783)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : améliorations significatives de performances lors de
+ l'utilisation de VT-x/AMD-V sur les hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : meilleure gestion des changements offset de la mémoire
+ graphique (corrige les problèmes d'affichage de GRUB2 et de Dos DOOM)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA : les modes VESA personnalisés aux largeurs invalides sont
+ maintenant arrondies aux bonnes valeurs juste au-dessus (bogue #2895)</para>
+ </listitem>
+
+ <listitem>
+ <para>IDE : correction du support passthrough ATAPI (hôtes Linux
+ seulement ; bogue #2795)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de kernel panics à cuse d'un déréférencement
+ du pointeur NULL dans les noyaux Linux kernels &lt; 2.6.20 (hôtes Linux seulement ; bogue #2827)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de BSODs intermitants lors de l'utilisation d'une
+ nouvelle interface de l'hôte (hôtes Windows seulement ; bogues #2832, #2937, #2929)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction de plusieurs problèmes d'affichage des NICs
+ de l'hôte dans l'interface graphique (hôtes Windows seulement ; bogues 2814, #2842)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du problème d'affichage des NICs hôtes sans
+ adresse IP affectée (hôtes Linux seulement ; bogue #2780)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction du probçme de paquets envoyés qui reviennent
+ dans le réseau interne lors de l'utilisation de hosting (hôtes Linux
+ seulement ; bogue #3056).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de la redirection de ports (hôtes Windows seulement ;
+ bogue #2808)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction du démarrage à partir du serveur TFTP intégré
+ (bogue #1959)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT : correction de plantages occasionnels (bogue #2709)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : données du distributeur du produit (VPD) sont maintenant
+ configurables</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : les partitions de disques brutes n'étaient pas reconnues
+ (régression 2.1.0, hôte Windows seulement, bogue #2778)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'un timeouts dans l'invité lors de l'utilisation
+ de fichiers VNDK bruts (hôtes Linux seulement, bogue #2796)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : forte accélération pendant certaines opérations d'E/S comme
+ le formattage d'un disque</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA/IDE : correction de plantages/erreurs possibles pendant
+ l'extinction d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction du chargement de <computeroutput>libpam.so.1</computeroutput>
+ sur l'hôte (hôtes Solaris seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de déconqexions du client RDP</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction de mauvais comportements du serveur VRDP après la
+ rupture d'une connexion</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>showvminfo</computeroutput> :
+ correction de la déclaration des VMs en fonction (bogue #2773)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>convertfromraw</computeroutput>: ajout
+ de la vérification des paramètres et utilisation de cela par défaut
+ pour créer les fichiers VDI, documentation et correction du paramètre
+ de format (bogue #2776)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>clonehd</computeroutput>: correction
+ d'une image de sortie en morceaux lorsqu'on crée des fichiers VDI
+ (bogue #2813)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage <computeroutput>guestproperty</computeroutput>:
+ correction de l'énumération des propriétés (mauvais paramètres/exception)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'une erreur lorsqu'on connecte certains fichiers
+ conteneurs (bogue #2768)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : ajout du support des ports série (bogue #1849)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction des claviers japonais (bogue #2847)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : les versions 32 bits et 64 bits sont maintenant
+ disponibles en un seul paquet unifié</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ne dépend plus de <computeroutput>libcap1</computeroutput>
+ (bogue #2859)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : corrections de compilation du module noyau pour
+ 2.6.29-rc1</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : n'oublie pas les popsibilités si la VM a été démarrée
+ par l'administrateur (régression 2.1.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : sauvegarde de l'état des VMs en fonction ou en
+ pause quand la batterie de la machine de l'hôte atteint un niveau
+ critique</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : amélioration du redimensionnement de la fenêtre
+ de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : ajout d'une option graphique pour désactiver
+ l'icône système de la vue du temps réel dans l'interface graphique, afin
+ de diminuer la charge du processeur de vhôte quand l'invité fait de la 3D</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : peaufinement de l'icône système d'aperçu du temps
+ réel</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la propriété invité et de la
+ détection du type d'OS pour Windows 2008 et Windows 7 Beta</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ajout du support de Windows 7 Beta (bogues #2995, #3015)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un gel des invités Windows 2000
+ lors de l'accès aux fichiers dans des dossiers partagés (bogue #2764)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de la gestion de CTRL-ALT-Supp
+ lors de l'utilisation de VBoxGINA</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur des suppléments Windows : ajout de l'option /extract
+ pour n'extraire (sans installer) que les fichiers dans un répertoire (on
+ peut la spécifier avec /D=chemin)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Linux des suppléments : ajout du support de la
+ distribution Linux From Scratch (bogue #1587) et des versions récentes
+ de Gentoo (bogue #2938)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments : ajout du support expérimental du serveur X.Org 1.6
+ RC sur les invités Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'un bogue qui empêchait de
+ régler correctement <computeroutput>fmode</computeroutput> dans les
+ dossiers partagés associés (bogue #1776)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de l'envoi de fichiers dans les
+ dossiers partagés (bogue #1612)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : on ignore l'option <computeroutput>noauto</computeroutput>
+ au montage d'un dossier partagé (bogue #2498)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'un problème de pilote qui empêchait
+ X11 de compiler les plans de clavier (bogue #2793 et #2905)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments X11 : contournement dans le pilote de la souris
+ pour un plantage du serveur quand le pilote est chargé à la main (bogue #2397)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.1.0 (17-12-2008)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ majeures suivantes ont été ajoutées :</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Support de la virtualisation matérielle (VT-x et AMD-V) sur les
+ hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>Support des invités 64 bits sur les systèmes d'exploitation hôtes
+ 32 bits (expérimental ; voir <xref linkend="intro-64bitguests" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout du support des améliorations de virtualisation d'Intel
+ Nehalem (EPT et VPID ; voir <xref linkend="hwvirt" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Accélératio 3D expérimentale avec OpenGL (voir <xref linkend="guestadd-3d" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Contrôleurs SCSI expérimentaux LsiLogic et BusLogic (voir <xref linkend="harddiskcontrollers" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppor complet de VMDK/VHD, y compris les instantanés (voir <xref linkend="vdidetails" />)</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouveau moteur NAT avec des performances beaucoup plus appréciables,
+ une meilleure fiabilité et le support de l'écho (ping) ICMP
+ (bogues #1046, #2438, #2223, #1247)</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouvelles implémentations de Host Interface Networking (réseau
+ interface hôte) pour les hôtes Windows et
+ Linux avec un paramétrage plus facile (remplace TUN/TAP sur Linux et
+ l'activation à la main sur Windows)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>De plus, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>VMM : améliorations significative des performances pour VT-x
+ (exécution en mode réel) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : support des verrous (breakpoints) matériels (VT-x et AMD-V
+ seulement ; bogue #477)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : améliorations des performances de VGA pour VT-x et AMD-V </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : améliorations des performances des invités Solaris et OpenSolaris
+ pour AMD-V (Famille de processeurs Barcelona seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation pendant l'exécution de
+ l'antivirus Dr. Web (virtualisation logicielle seulement ; bogue #1439)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : désactivation de VT-x et de AMD-V quand la machine de l'hôte
+ passe en mode veille ; réactivation quand la machine hôte se réveille
+ (hôtes Windows, Mac OS X &amp; Linux ; bogue #1660)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs de l'invité lors de la restauration des
+ états sauvegardés/instantanés VT-x or AMD-V </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation à l'exécution d'une instruction
+ de débogage par octet (VT-x seulement ; bogue #2617)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'une guru meditation pour les invités PAE sur
+ des hôtes non PAE (VT-x) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : impossibilité de mélanger la l'exécution de la virtualisation
+ matérielle et logicielle en général (bogue #2404)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un écran noir au démarrage d'OS/2 1.x (AMD-V
+ seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : pause à l'exécution des VMs quand la machine hôte se met en
+ veille (hôtes Windows &amp; Mac OS X)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : réveil des VMs en pause quand la machine hôte se réveille
+ après une veille (hôtes Windows &amp; Mac OS X)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : sauvegarde de l'état en fonction ou en pause des VMs quand
+ la batterie de la machine hôte atteint un niveau critique (hôtes Windows)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : restauration correcte de la position de la fenêtre du
+ sélecteur lors d'une exécution sur un gestionnaire de fenêtre compiz</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : restauration correcte de la VM en mode transparent (régression
+ 2.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : avertissement de l'utilisateur quand il n'y a pas de réglage
+ optimal de la mémoire</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : structuration de la liste des systèmes d'exploitation selon
+ leur famille et leur version pour une commodité améliorée</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : prédéfinition de paramètres pour les invités QNX</para>
+ </listitem>
+
+ <listitem>
+ <para>IDE : amélioration du support passthrough d'ATAPI </para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : ajout du support de jusqu'à 8 adaptateurs Ethernet par VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction d'un problème où une VM pourrait perdre la
+ connectivité après un redémarrage</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : possibilité de créer des instantanés/différenciations en
+ utilisant un fichier VDI local</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : amélioration de l'interopérabilité avec des cibles iSCSI</para>
+ </listitem>
+
+ <listitem>
+ <para>Graphique : correction de la gestion d'une mémoire graphique de
+ l'invité n'étant pas une puissance de deux (bogue #2724)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'un bogue qui eopêchait de paramétrer
+ le port série pour un accès direct au périphérique</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout du support de la création d'images VMDK et VHD</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : ajout du support de la conversion d'images (VDI/VMDK/VHD/RAW)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : ajout du support IPv6 entre vhôte et l'invité quand
+ on utilise le réseau de l'interface de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : ajout du signalement de l'état ACPI de l'alimentation
+ de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>API : révision de la forme de stockage avec une meilleure
+ généralisation</para>
+ </listitem>
+
+ <listitem>
+ <para>API : possibilité de connecter un disque dur à plus d'une VM à la
+ fois</para>
+ </listitem>
+
+ <listitem>
+ <para>API : ajout de méthodes pour renvoyer les informations sur la
+ configuration réseau du système hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : corrections de performances et de stabilité
+ pour les invités Windows (Applications Microsoft Office)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.0.8 (10-03-2009)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'accrocs de l'invité lors de la restauration des
+ états sauvegardés/instantanés en VT-x ou AMD-V</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de problèmes d'affectation de mémoire pouvant
+ provoquer des échecs de démarrage d'une VM avec une erreur
+ VERR_PGM_MAPPING_CONFLICT</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs/plantages de l'hôte sur certains
+ systèmes Windows 32 bits lors de l'exécution d'invités Linux
+ (bogues #1606, #2269, #2763)</para>
+ </listitem>
+
+ <listitem>
+ <para>XPCOM/Principal : correction d'un bogue de synchronisation causé
+ par des conflits de touches semaphore SYSV</para>
+ </listitem>
+
+ <listitem>
+ <para>ATA : correction d'un verrou quand on met une VM en pause, à cause
+ de problèmes de disque virtuel (comme le disque plein, cible iSCSI
+ indisponilable)</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction d'un plantage possible lors de la mise en pause
+ d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>iSCSI : correction de lavérification de la validité PDU et de
+ la détection de la fiabilité PDU en définitive</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxHeadless : ne démarre véritablement pas les services X11
+ (service presse-papier, accélération 3D ; hôtes Solaris &amp; Darwin
+ seulement ; bogue #3199)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : correction d'un problème où une VM pourrait perdre sa
+ connectivité après un redémarrage</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction de bizarreries occasionnelles du noyau
+ (bogue #2556)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un forte charge du processeur pendant
+ le fonctionnement de nombreux invités en parallèle</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une impossibilité de démarrer plus de
+ 128 VMs</para>
+ </listitem>
+
+ <listitem>
+ <para>Solaris/Services Web : correction du script SMF pour définir correctement
+ le dossier personnel</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction d'une occasionnelle de
+ fichier lorsqu'on écrit des fichiers en mode <emphasis>O_APPEND</emphasis>
+ dans un dossier partagé (bogue #2844)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.0.6 (21-11-2008)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction d'une Guru meditation lors de l'exécution des
+ invités Windows 64 bits (bogue #2220)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs au démarrage de Solaris 10U6
+ (VT-x et AMD-V) bogue #2565)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'accrocs au redémarrage de Solaris 10U6 (AMD-V
+ seulement ; bogue #2565)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : la touche hôte n'était pas toujours bien affichée (hôtes
+ Windows seulement, bogue #1996)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : le focus du clavier était perdu après avoir minimisé et restauré
+ la fenêtre de la VM avec la barre des tâches de Windows (bogue #784)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : affichage correct des disques SATA lors de l'affichage
+ des informations sur la VM (bogue #2624)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction de l'accès si la taille du tampon n'est pas
+ alignée sur les secteurs (bogue #2024)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : amélioration des performances</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction de la fonction des instantanés avec ports&gt;1 (bogue #2510)</para>
+ </listitem>
+
+ <listitem>
+ <para>E1000 : correction de plantages dans de rares circuonstances</para>
+ </listitem>
+
+ <listitem>
+ <para>USB : correction du support des périphériques iPhone et Nokia (hôtes
+ Linux : bogues #470 &amp; #491)</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Windows : ajout d'une bonne gestion des applications
+ VirtualBox libres lors de la mise à jour de l'installation</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur sur hôte Windows : correction du répertoire d'installation
+ par défaut en 64 bits sur les nouvelles installations (bogue #2501)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux/Solaris/Darwin : vérification des droits dans
+ <computeroutput>/tmp/vbox-$USER-ipc</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'une déclaration assertion sur les
+ fortes charges réseaux (hôtes AMD64 correction pour les distributions
+ Linux ayant glibc 2.6 et supérieur (bogue #616)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : ne plante pas à l'extinction avec des ports sçrie
+ connectés à un périphérique de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une incompatibilité entre IPSEC et
+ le réseau d'interface de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une race condition rare lors de
+ l'extinction des VMs avec les interfaces réseaux de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de VBoxSDL sur Solaris 10 en incluant
+ la bibliothèque SDL requise (bogue #2475)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de l'affichage des utilisateurs
+ identifiés avec les propriétés invité lorsqu'on utilise une connexion
+ native RDP</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de plantages de Vista quand
+ on accède à des dossiers partagés dans certaines circonstances (bogue #2461)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction de l'accès aux dossiers partagés
+ avec MS-Office (bogue #2591)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de la compilation ode vboxvfs.ko
+ pour les invités 64 bits (bogue #2550)</para>
+ </listitem>
+
+ <listitem>
+ <para>SDK : ajout de la mise en cache du port JAX-WS pour accélérer
+ les connexions</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 2.0.4 (24-10-2008)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>VMM : meilleur affichage des erreurs de VT-x</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : pas d'encombrement du journal par des messages PATM (bogue #1775)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de la restauration d'un état sauvegardé en
+ mode réel (virtualisation logicielle seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : contournement d'un bogue de Qt sur Mac OS X (bogue #2321)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : installation correcte du greffon accessible de Qt4 (bogue #629)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : message d'erreur au démarrage d'une VM où le VMDK est connecté
+ à un port SATA (bogue #2182)</para>
+ </listitem>
+
+ <listitem>
+ <para>SATA : correction d'une Guru mediation au démarrage d'OpenSolaris/64 ;
+ s'applique très probablement également aux autres invités (bogue #2292)</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : ne plante pas quand on change d'état de la connexion
+ de l'adaptateur si aucun pilote de l'hôte n'est connecté (bogue #2333)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'un bogue qui empêche de démarrer à partir d'images
+ VHD supérieures à 4Go (bogue #2085)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un problème d'affichage quand la résolution de
+ l'invité n'était pas égale à celle du client</para>
+ </listitem>
+
+ <listitem>
+ <para>Presse-papier : ne plante pas quand l'initialisation du service de
+ l'hôte met plus de temps que prévu (hôtes Linux seulement ; bogue #2001)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : plantage de VBoxSVC.exe (bogue #2212)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : fuite de mémoire de VBoxSVC.exe à cause d'une fuite
+ de mémoire de Windows WMI (Vista seulement) (bogue #2242)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Windows : VBoxSVC.exe rallonge le démarrage de la GUI</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : gestion du dépassement du compteur de temps (la VM
+ plante après 300 secondes de fonctionnement de l'hôte ; bogue #2247)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction de l'immobilisation réseau côté hôte et
+ invité quand on utilise l'interface réseau de l'hôte (bogue #2474)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : ajout du support de l'utilisation d'interfaces
+ réseaux non actives et des Crossbow Virtual
+ Network Interfaces (VNICs) avec l'interface réseau de l'hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : un nouveau travail du modèle de threading améliore
+ les performances de l'interface réseau hôte</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un plantage lors de l'accès
+ aux structures profondes d'un répertoire dans un dossier partagé</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : amélioration de la résolution des noms de
+ dossiers partagés (bogue #1728)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction d'un plantage à l'extinction de
+ Windows 2000 (bogue #2254)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : correction du code d'erreur de
+ <computeroutput>MoveFile()</computeroutput> si la cible existe (bogue #2350)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de <computeroutput>seek()</computeroutput>
+ pour des fichiers de plus de 2Go (bogue #2379)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support d'Ubuntu 8.10</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction du presse-papier (bogue #2015)</para>
+ </listitem>
+
+ <listitem>
+ <para>Services Web : amélioration de la documentation et correction des
+ examples (bogue #1642)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 2.0.2 (12-09-2008)</title>
+
+ <para>C'est une version de maintenance. Les éléments suivants ont été corrigés et/ou
+ ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : correction de l'impossibilité de lancer plus d'une VM en
+ parallèle (AMD-V sur des processeurs avec l'erratum 170 seulement ; bogue #2167)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : corrections de stabilité de VT-x (bogue #2179 and others)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages du noyau Linux 2.6.26+ (utilisé par
+ Ubuntu 8.10 Alpha, Fedora 10 Alpha ; bogue #1875) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages du noyau Linux 2.6.26 64 bits (Debian) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction d'un plantage de l'invité Vista (32 bits) pendant
+ le démarrage quand PAE et NX sont activés (s'applique seulement aux hôtes 64 bits
+ où VT-x est activé) </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM : correction de plantages des invités OS/2 au démarrage (AMD-V ; bogue #2132) </para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage quand on essaie de libçrer une
+ image inaccessible dans le gestionnaire de disques virtuels</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un message d'erreur invalide disant que le
+ chemin d'instantané a changé, même si ce chemin n'a pas changé (bogue #2064)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage à la création d'une nouvelle image
+ de disque dur (bogue #2060)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un plantage à l'ajout d'un disque dur dans les
+ paramètres d'une VM (bogue #2081)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'un bogue où VirtualBox ne fonctionne pas avec
+ le nouveau greffon QGtkStyle (bogue #2066)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction d'une boîte de dialogue de fermeture de la VM en
+ mode transparent (hôtes Mac OS X seulement ; bogue #2067)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : correction des entrées de menu standards pour les versions
+ NLS (hôtes Mac OS X seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : désactivation du paramètre de VT-x/AMD-V quand il n'est pas
+ supporté par le processeur (ou sur les hôtes Mac OS X) </para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction d'un plantage pendant
+ <computeroutput>internalcommands createrawvmdk</computeroutput>
+ (bogue #2184)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage : correction de la sortie de
+ <computeroutput>snapshot showvminfo</computeroutput> (bogue #698)</para>
+ </listitem>
+
+ <listitem>
+ <para>Propriétés invité : ajout d'informations sur les interfaces
+ réseaux de l'invité (invités Windows seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction d'une régression faisant planter
+ les invités Windows</para>
+ </listitem>
+
+ <listitem>
+ <para>API : correction du nombre de processeurs installés (hôtes Solaris
+ seulement)</para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : possibilité pour un client de se reconnecter à une session
+ existante sur le serveur VRDP en repoussant la connexion existante
+ (configurable et désactivé par défaut ; pertinent seulement quand
+ le mode multiconnexions est désactivé) </para>
+ </listitem>
+
+ <listitem>
+ <para>VRDP : correction d'un problème de réaffichage de l'image</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : correction d'un bogue dans vboxdrv.ko qui
+ pourrait corrompre la mémoire du noyau et entraîner un kernel panic
+ (bogue #2078)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Linux : corrections de compilation du module du noyau sur
+ Linux 2.6.27</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : ajout du support de Python</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments : correction d'un accroc possible dans la communication
+ HGCM après le redémarrage d'une VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Windows : ajout du support de Windows XP 64 bits (bogue #2117)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : désactivation du redimensionnement dynamique
+ sur les invités Linux où le serveur X est bogué</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : support des invités Ubuntu 8.10 et des invités
+ Fedora 9 (désactivation du redimensionnement dynamique pour la toute dernière)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : ajout de la vérification par l'installeur de
+ l'architecture du système</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : correction de chemin des modules Xorg pour
+ certaines distributions Linux (bogue #2128)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMDK : plus de libéralisme avec les parties ambigues de la spécification
+ du format et acceptation de plus de variantes de format (bogue #2062)</para>
+ </listitem>
+
+ <listitem>
+ <para>VHD : correction d'un bogue de la fondation VHD qui lui faisait
+ lire de fausses données (bogue #2085)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un kernel panic sur certaines machines
+ au démarrage des VMs avec les interfaces réseaux de l'hôte (bogue #2183)</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'une impossibilité d'accéder aux
+ partages NFS de l'hôte quand l'interface réseau de l'hôte est activée</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : l'installeur détecte et signale maintenant s'il
+ s'installe dans la mauvaise architecture</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Solaris : correction d'un renforcement de la sécurité qui
+ empêchait de démarrer des VMs à partir de zones non globales même en
+ tant qu'administrateur (bogue #1948)</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Solaris : combinaison de l'installeur des suppléments
+ 32 bits et 64 bits dans un seul paquet</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes Mac OS X : support expérimental de la connexion d'un vrai
+ port série à l'invité </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Version 2.0.0 (04-09-2008)</title>
+
+ <para>Cette version est une mise à jour majeure. Les nouvelles fonctions
+ majeures suivantes ont été ajoutées :<itemizedlist>
+
+ <listitem>
+ <para>Support des invités 64 bits (hôtes 64 bits seulement) </para>
+ </listitem>
+
+ <listitem>
+ <para>Nouvel interface utilisateur natif Leopard sur les hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>L'interface graphique a été convertie de Qt3 à Qt4 avec de
+ nombreuses améliorations d'affichage</para>
+ </listitem>
+
+ <listitem>
+ <para>Notification des nouvelles versions</para>
+ </listitem>
+
+ <listitem>
+ <para>Interface d'informations des propriétés invité</para>
+ </listitem>
+
+ <listitem>
+ <para>Host Interface Networking (interface réseau de l'hôte) sur les
+ hôtes Mac OS X</para>
+ </listitem>
+
+ <listitem>
+ <para>Nouvelle Host Interface Networking sur les hôtes Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Support de la pagination imbriquée sur les processeurs AMD modernes
+ (amélioration majeure des performance)</para>
+ </listitem>
+
+ <listitem>
+ <para>Environnement pour récupérer les données de performances et d'utilisation
+ des ressources (mesures)</para>
+ </listitem>
+
+ <listitem>
+ <para>Ajout de l'E/S asynchrone SATA (NCQ: Native Command Queuing)
+ lors de l'accès à des disques/partitions bruts (gain majeur de
+ performances)</para>
+ </listitem>
+
+ <listitem>
+ <para>Intégration du presse-papier aux invités OS/2</para>
+ </listitem>
+
+ <listitem>
+ <para>Création d'un composant SDK séparé intégrant une nouvelle interface
+ de programmation pour Python sur les hôtes Linux et Solaris</para>
+ </listitem>
+
+ <listitem>
+ <para>Support des images de disque VHD</para>
+ </listitem>
+
+ </itemizedlist></para>
+
+ <para>De plus, les éléments suivants ont été corrigés et/ou ajoutés :</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM : corrections VT-x</para>
+ </listitem>
+
+ <listitem>
+ <para>AHCI : amélioration des performances</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI : corrections pour le clavier</para>
+ </listitem>
+
+ <listitem>
+ <para>Installeur Linux : désinstallation correcte du paquet même si le
+ désenregistrement du module DKMS échoue</para>
+ </listitem>
+
+ <listitem>
+ <para>Suppléments Linux : la résolution de l'écran de l'invité est
+ restaurée correctement</para>
+ </listitem>
+
+ <listitem>
+ <para>Réseau : ajout du support des cadres jumbo (> 1536 octets)</para>
+ </listitem>
+
+ <listitem>
+ <para>Dossiers partagés : correction d'un plantage de l'invité avec
+ Windows Media Player 11</para>
+ </listitem>
+
+ <listitem>
+ <para>Mac OS X : Ctrl+bouton gauche de la souris ne simule plus un clic
+ droit de souris dans l'invité. La touche hôte+clic gauche fait l'émulation
+ d'un clic gauche de souris. (bogue #1766)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Détails du anciennes changements</title>
+ <para>Avec VirtualBox 3.2, les informations d'historique des changements
+ pour les versions inférieures à la 2.0 ont été supprimées pour gagner de la
+ place. Pour accéder à ces informations, merci de consulter le manuel de
+ l'utilisateur de VirtualBox version 3.1 ou inférieur.</para>
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/fr_FR/user_Frontends.xml b/doc/manual/fr_FR/user_Frontends.xml
new file mode 100644
index 00000000..982f398c
--- /dev/null
+++ b/doc/manual/fr_FR/user_Frontends.xml
@@ -0,0 +1,824 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter>
+ <title>Machines virtuelles distantes</title>
+
+ <sect1 id="vrde">
+ <title>Affichage distant (VRDP support)</title>
+
+ <para>VirtualBox peut afficher les machines virtuelles à distance, ce qui
+ signifie qu'une machine virtuelle peut s'exécuter sur un ordinateur alors que
+ la machine sera affichée sur un deuxième ordinateur, et la machine sera
+ contrôlée également à partir de là, comme si la machine virtuelle fonctionnait
+ sur ce deuxième ordinateur.</para>
+
+ <para>Pour une flexibilité maximum, à partir de VirtualBox 4.0, VirtualBox
+ implémente l'affichage distant d'une machine par une interface d'extension
+ générique, le VirtualBox Remote Desktop Extension (VRDE). Le paquet libre
+ de base VirtualBox ne fournit pas cette interface, tandis que les implémentations
+ peuvent être offerts par des tiers avec les paquets d'extension de VirtualBox
+ qui doivent être installés séparément du paquet. Voir <xref
+ linkend="intro-installing" /> pour plus d'informations.</para>
+
+ <para>Oracle fournit un support pour le <emphasis role="bold">VirtualBox
+ Remote Display Protocol (VRDP)</emphasis> dans ce paquet d'extension de
+ VirtualBox. Quand on installe ce paquet, les versions de VirtualBox et
+ 4.0 et supérieur supportent VRDP de la même façon que les versions binaires
+ (non libre)) de VirtualBox avant 4.0.</para>
+
+ <para>VRDP est une extension rétro-compatible au Remote
+ Desktop Protocol (RDP) de Microsoft. Dès lors, vous pouvez utiliser n'importe
+ quel client RDP standard pour contrôler la VM distante.</para>
+
+ <para>Même quand l'extension est installée, le serveur VRDP est désactivé par
+ défaut. On peut l'activer facilement pour chaque VM, soit dans le gestionnaire
+ VirtualBox des paramètres d'"Affichage" (voir <xref
+ linkend="settings-display" />), soit avec
+ )s <computeroutput>VBoxManage</computeroutput>:<screen>VBoxManage modifyvm "nom VM" --vrde on</screen></para>
+
+ <para>Si vous utilisez <computeroutput>VBoxHeadless</computeroutput> (décrit
+ plus loin en détails), le support VRDP sera automatiquement activé puisque
+ VBoxHeadless n'a aucun autre moyen de sortie.</para>
+
+ <para>Par défaut, le serveur VRDP utilise le port TCP
+ <computeroutput>3389</computeroutput>. Vous devrez modifier le port par
+ défaut si vous exécutez plus d'un serveur VRDP, vu que le port ne peut être
+ utilisé que par un serveur à la fois. Il se pourrait aussi que vous deviez
+ le modifier sur les hôtes Windows car le port par défaut pourrait être
+ déjà utilisé par le serveur RDP
+ intégré à Windows lui-même. Les ports 5000 à 5050 sont le plus souvent
+ inusités et pourraient être un bon choix.</para>
+
+ <para>Vous pouvez modifier le port soit dans les paramètres "Affichage" de
+ l'interface graphique, soit via l'option <computeroutput>--vrdeport</computeroutput>
+ de la commande <computeroutput>VBoxManage modifyvm</computeroutput>. Vous
+ pouvez indiquer une liste séparée par des virgules de ports ou de plages de
+ ports. Utilisez un tiret entre deux numéros de ports pour indiquer une plage.
+ Le serveur VRDP s'appuiera sur <emphasis role="bold">un</emphasis> des
+ ports disponibles au sein de la liste spécifiée. Par exemple, <computeroutput>VBoxManage modifyvm "nom
+ VM" --vrdeport 5000,5010-5012</computeroutput> configurera le
+ serveur pour s'appuyer sur un des ports parmi le 5000, 5010, 5011 ou 5012.
+ Voir <xref
+ linkend="vboxmanage-modifyvm-vrde" /> pour des détails.</para>
+
+ <para>Vous pouvez savoir le port utilisé au final par une VM en fonction
+ avec la commande <computeroutput>VBoxManage showvminfo</computeroutput>,
+ vous pouvez aussi le voir dans l'interface graphique sous l'onglet "En cours
+ d'exécution" de la "Boîte de dialogue d'informations sur la session", accessible
+ depuis le menu "Machine" de la fenêtre de la VM.</para>
+
+ <para>Le support d'IPv6 a été implémenté dans VirtualBox 4.3. Si l'OS hôte
+ supporte l'IPv6, le serveur VRDP écoutera automatiquement les connexions IPv6
+ en plus de celles IPv4.</para>
+
+ <sect2 id="rdp-viewers">
+ <title>Visualiseurs RDP tiers classiques</title>
+
+ <para>Comme VRDP est rétro-compatible avec RDP, vous pouvez utiliser n'importe
+ quel visualiseur RDP standard pour vous connecter à une machine virtuelle
+ distante (des exemples figurent ci-dessous). Pour que cela fonctionne, vous
+ devez spécifier <emphasis role="bold">l'adresse IP</emphasis> de votre
+ système <emphasis>hôte</emphasis> (pas celle de la machine virtuelle&#xA0;!)
+ l'adresse du serveur auquel se connecter, ainsi que le
+ <emphasis role="bold">numéro du port</emphasis> qu'utilise le serveur RDP.</para>
+
+ <para>Voici des exemples de visualiseurs RDP les plus courants&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur Windows, vous pouvez utiliser le Microsoft Terminal Services
+ Connector (<computeroutput>mstsc.exe</computeroutput>) inclu dans
+ Windows. Vous pouvez le lancer depuis la boîte de dialogue "Exécuter"
+ (appuyez sur la touche Windows et "R") en tapant "mstsc". Vous pouvez
+ également le trouver dans "Démarrer" -&gt; "Tous les Programmes" -&gt; "Accessoires"
+ -&gt; "Connexion bureau distant". Si vous utilisez la boîte de dialogue
+ "Exécuter", vous pouvez y entrer des options directement&#xA0;:<screen>mstsc 1.2.3.4:3389</screen></para>
+
+ <para>Remplacez <computeroutput>1.2.3.4</computeroutput> par l'adresse IP de l'hôte et
+ <computeroutput>3389</computeroutput> par un
+ autre port si nécessaire.</para>
+
+ <note>
+ <para>Il faut entourer les adresses IPv6 de crochets pour spécifier
+ un port. Par exemple, <computeroutput>mstsc [fe80::1:2:3:4]:3389</computeroutput></para>
+ </note>
+
+ <note>
+ <para>Lors d'une connexion à localhost pour tester la connexion, les
+ adresses <computeroutput>localhost</computeroutput> et
+ <computeroutput>127.0.0.1</computeroutput> pourraient ne pas
+ fonctionner en utilisant
+ <computeroutput>mstsc.exe</computeroutput>. L'adresse
+ <computeroutput>127.0.0.2[:3389]</computeroutput> doit être utilisée à la place.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>Sur les autres systèmes, vous pouvez utiliser le programme
+ libre standard <computeroutput>rdesktop</computeroutput>. Celui-ci
+ est inclu avec la plupart des distributions Linux, mais VirtualBox
+ est fourni avec une variante modifiée de rdesktop pour un support de
+ l'USB à distance (voir <xref
+ linkend="usb-over-rdp" /> ci-dessous).</para>
+
+ <para>Avec rdesktop, utilisez une ligne telle que celle-ci&#xA0;:<screen>rdesktop -a 16 -N 1.2.3.4:3389</screen></para>
+
+ <para>Comme indiqué pour le visualiseur Microsoft ci-dessus, remplacez <computeroutput>1.2.3.4</computeroutput>
+ par l'adresse IP de l'hôte et <computeroutput>3389</computeroutput> par un autre port si nécessaire.
+ L'option <computeroutput>-a 16</computeroutput> demande que la résolution
+ soit de 16 bits par pixel, ce qui est recommandé.
+ (Pour de meilleures performances, après l'installation du système
+ d'exploitation invité, vous devriez définir sa profondeur d'affichage
+ des couleurs à la même valeur).
+ L'option <computeroutput>-N</computeroutput> permet d'utiliser
+ les touches du pavé numérique.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous lancez le bureau KDE, vous pourriez préférer
+ <computeroutput>krdc</computeroutput>, le visualiseur RDP de KDE.
+ La ligne de commande ressemblerait à ceci&#xA0;:<screen>krdc rdp://1.2.3.4:3389</screen></para>
+
+ <para>De nouveau, remplacez <computeroutput>1.2.3.4</computeroutput>
+ par l'adresse IP de l'hôte et <computeroutput>3389</computeroutput> par un port différent si nécessaire. Le champ "rdp://" est
+ requis avec krdc pour qu'il passe en mode RDP.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec les clients Sun Ray thin, vous pouvez utiliser
+ <computeroutput>uttsc</computeroutput>, qui fait partie du paquet
+ Sun Ray Windows Connector. Voir la documentation correspondante pour
+ des détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2 id="vboxheadless">
+ <title>VBoxHeadless, le serveur de bureau distant</title>
+
+ <para>Si toutes les VM lancées dans le gestionnaire VirtualBox sont capables
+ de lancer des machines virtuelles à distance, ce n'est pas pratique de
+ lancer l'interface graphique full-fledged si vous ne voulez jamais avoir
+ de VMs affichées en local au premier plan. En particulier, si vous lancez
+ un serveur matériel dont le seul objectif est d'héberger des VMs et où
+ toutes les VMs sont supposées se lancer à distance via VRDP, il est inutile
+ d'avoir une interface graphique quelconque sur le serveur -- surtout
+ que sur un hôte Linux ou Solaris, le gestionnaire VirtualBox est fourni
+ avec les dépendances des bibliothèques Qt et SDL. C'est un inconvénient si
+ ne voulez pas du tout avoir de système X Window sur votre serveur.</para>
+
+ <para>VirtualBox est donc fourni avec une autre interface appelée
+ <computeroutput>VBoxHeadless</computeroutput>, qui ne produit aucune
+ sortie visible sur l'hôte, mais qui produit des données VRDP. Cette interface
+ n'a aucune dépendance du système X Window sur Linux et des hôtes
+ Solaris.<footnote>
+ <para>Avant VirtualBox 1.6, le serveur headless s'appelait
+ <computeroutput>VBoxVRDP</computeroutput>. Toujours pour des raisons de
+ rétro-compatibilité, l'installation de VirtualBox installe toujours un
+ exécutable avec ce nom.</para>
+ </footnote></para>
+
+ <para>Pour démarrer une machine virtuelle avec <computeroutput>VBoxHeadless</computeroutput>,
+ vous avez trois options&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Vous pouvez utiliser <screen>VBoxManage startvm "nom VM" --type headless</screen>L'option
+ supplémentaire <computeroutput>--type</computeroutput> amène VirtualBox
+ à utiliser <computeroutput>VBoxHeadless</computeroutput> en tant qu'interface
+ avec le moteur de virtualisation interne plutôt que l'interface Qt.</para>
+ </listitem>
+
+ <listitem>
+ <para>Une alternative est d'utiliser
+ <computeroutput>VBoxHeadless</computeroutput> directement, comme
+ suit&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt;</screen></para>
+
+ <para>Cette manière de démarrer la VM aide au dépannage des problèmes
+ signalés par <computeroutput>VBoxManage startvm ...</computeroutput>
+ car vous pouvez voir parfois des messages d'erreur plus détaillés,
+ surtout pour les échecs imtervenant avant que l'exécution de la VM
+ ne commence. Dans des situations normales, on préfère
+ <computeroutput>VBoxManage startvm</computeroutput> car il lance la VM
+ directement comme tâche de fond, ce qui doit se faire explicitement lors
+ du démarrage direct de
+ <computeroutput>VBoxHeadless</computeroutput>.</para>
+ </listitem>
+ <listitem>
+ <para>L'autre alternative est de démarrer <computeroutput>VBoxHeadless</computeroutput>
+ à partir de l'interface graphique du gestionnaire de VirtualBox, en
+ maintenant appuyée la touche Majuscule au démarrage de la machine.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Remarquez que quand vous utilisez
+ <computeroutput>VBoxHeadless</computeroutput> pour démarrer une VM, comme
+ le serveur headless n'a aucun autre moyen d'affichage, le serveur VRDP
+ sera <emphasis>toujours</emphasis> activé, indépendamment du fait que vous
+ ayez activé le serveur VRDP dans les paramètres de la VM ou pas. Si vous
+ n'en voulez pas (par exemple parce que vous voulez accéder à la VM via
+ <computeroutput>ssh</computeroutput> only), démarrez la VM comme
+ ceci&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt; --vrde off</screen>Pour
+ activer le serveur VRDP en fonction de la configuration de la VM, comme le
+ feraient les autres interfaces, utilisez ceci&#xA0;:<screen>VBoxHeadless --startvm &lt;uuid|name&gt; --vrde config</screen></para>
+
+ <para>Si vous démarrez la VM avec <computeroutput>VBoxManage startvm ...</computeroutput>,
+ les paramètres de configuration de la VM sont toujours utilisés.</para>
+ </sect2>
+
+ <sect2>
+ <title>Pas à pas&#xA0;: créer une machine virtuelle sur un serveur headless</title>
+
+ <para>Les instructions suivantes peuvent vous donner une idée de la façon
+ de créer une machine virtuelle sur un serveur headless via une connexion
+ réseau. Nous allons créer une machine virtuelle, établir une connexion RDP
+ et installer un système d'exploitation invité -- tout ceci sans devoir
+ toucher au serveur headless. Tout ce dont vous avez besoin est ce qui suit&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>VirtualBox sur une machine serveur avec un système d'exploitation
+ hôte supporté. La pack d'extension de VirtualBox du serveur VRDP doit
+ être installé (voir la section précédente). Pour l'exemple suivant,
+ nous supposerons un serveur Linux.</para>
+ </listitem>
+
+ <listitem>
+ <para>Un fichier ISO accessible depuis le serveur, contenant les
+ données d'installation du système invité pour installer (nous supposons
+ que c'est Windows XP dans l'exemple suivant).</para>
+ </listitem>
+
+ <listitem>
+ <para>Une connexion en terminal à l'hôte par lequel vous pouvez accéder
+ à une ligne de commande (par exemple via
+ <computeroutput>ssh</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para>Un visualiseur RDP sur le client distant&#xA0;; voir <xref
+ linkend="rdp-viewers" /> ci-dessus pour des exemples.</para>
+ </listitem>
+ </orderedlist>Remarquez encore que sur la machine serveur, comme nous
+ n'allons utiliser que le serveur headless, ni Qt ni SDL ni le système
+ X Window ne seront nécessaires.</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Sur le serveur headless, créez une nouvelle machine virtuelle&#xA0;:</para>
+
+ <screen>VBoxManage createvm --name "Windows XP" --ostype WindowsXP --register</screen>
+
+ <para>Remarquez que si vous ne spécifiez pas
+ <computeroutput>--register</computeroutput>, vous devrez utiliser
+ manuellement la commande <computeroutput>registervm</computeroutput>
+ plus tard.</para>
+
+ <para>Remarquez aussi que vous n'avez pas besoin de spécifier
+ <computeroutput>--ostype</computeroutput>, mais en le faisant, cela
+ sélectionne des valeurs par défaut apropriées pour certains paramètres
+ de la VM, par exemple la taille de la RAM et le type de périphérique
+ réseau virtuel. Pour avoir la liste complète des systèmes d'exploitation
+ supportés, vous pouvez utiliser</para>
+
+ <screen>VBoxManage list ostypes</screen>
+ </listitem>
+
+ <listitem>
+ <para>Assurez-vous que les paramètres de la VM sont adaptés au système
+ d'exploitation invité que nous allons installer. Par exemple&#xA0;:<screen>VBoxManage modifyvm "Windows XP" --memory 256 --acpi on --boot1 dvd --nic1 nat</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Créez un disque dur virtuel pour la VM (dans ce cas, 10Go de
+ taille)&#xA0;:<screen>VBoxManage createhd --filename "WinXP.vdi" --size 10000</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Ajoutez un contrôleur IDE à la nouvelle VM&#xA0;:<screen>VBoxManage storagectl "Windows XP" --name "IDE Controller"
+ --add ide --controller PIIX4</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Mettez le fichier VDI créé ci-dessus comme premier disque dur
+ virtuel de la nouvelle VM&#xA0;:<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
+ --port 0 --device 0 --type hdd --medium "WinXP.vdi"</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Attachez le fichier ISO contenant l'installeur du système
+ d'exploitation que vous voudrez installer plus tard sur la
+ machine virtuelle, pour que la machine puisse démarrer dessus&#xA0;:<screen>VBoxManage storageattach "Windows XP" --storagectl "IDE Controller"
+ --port 0 --device 1 --type dvddrive --medium /full/path/to/iso.iso</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrez la machine virtuelle en utilisant VBoxHeadless:<screen>VBoxHeadless --startvm "Windows XP"</screen></para>
+
+ <para>Si tout s'est bien passé, vous devriez voir un message de
+ copyright. Si vous êtes renvoyé en ligne de commande, quelque chose
+ n'a pas fonctionné.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur la machine client, ouvrez le visualiseur RDP et essayez
+ de vous connecter au serveur (voir <xref linkend="rdp-viewers" />
+ ci-dessus pour voir comment utiliser les divers visualiseurs RDP
+ classiques).</para>
+
+ <para>Vous devriez voir maintenant le processus d'installation
+ de votre système d'exploitation invité, à distance dans le visualiseur RDP.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2 id="usb-over-rdp">
+ <title>USB distant</title>
+
+ <para>Une fonction très spéciale du support VRDP de VirtualBox est qu'il
+ supporte les périphériques USB distants également via le réseau. C'est-à-dire que
+ l'invité de VirtualBox en fonction sur l'ordinateur peut accéder à des
+ périphériques USB de l'ordinateur distant sur lequel sont affichées les données
+ VRDP de la même manière que des périphériques USB connectés à l'hôte actuel.
+ Cela permet d'exécuter des machines virtuelles sur un hôte VirtualBox qui
+ agit comme serveur, où un client peut se connecter de n'importe où avec
+ simplement un adaptateur réseau et un dispositif d'affichage capable de
+ lancer un visualiseur RDP. Quand on branche des périphériques USB
+ dans le client, le serveur VirtualBox distant peut y accéder.</para>
+
+ <para>Pour ces périphériques USB distants, les mêmes règles de filtres
+ s'appliquent, comme pour d'autres périphériques USB, comme décrit au
+ <xref linkend="settings-usb" />. Tout ce que vous devez faire est de spécifier
+ "Remote" (ou "Any") en définissant ces règles.</para>
+
+ <para>L'accès à des périphériques USB n'est possible que si le client RDP
+ supporte cette extension. Sur les hôtes Linux et Solaris, l'installation
+ de VirtualBox fournit un client VRDP convenable appelé
+ <computeroutput>rdesktop-vrdp</computeroutput>. Les versions récentes de
+ <computeroutput>uttsc</computeroutput>, un client taillé pour être utilisé
+ avec des clients Sun Ray thin et qui supporte l'accès aux périphériques
+ USB distants. Les clients RDP pour d'autres plateformes seront fournis dans de
+ futures versions de VirtualBox.</para>
+
+ <para>Pour rendre disponible un périphérique USB distant pour une VM, vous
+ devriez démarrer <computeroutput>rdesktop-vrdp</computeroutput> comme
+ suit :<screen>rdesktop-vrdp -r usb -a 16 -N my.host.address</screen>
+ Merci de vous reporter au <xref linkend="ts_usb-linux" /> pour des
+ détails supplémentaires sur la manière de régler correctement les droits
+ des périphériques USB. De plus, il est conseillé de désactiver le chargement automatique d'un pilote
+ de l'hôte, depuis l'hôte distant qui serait lu sur des périphériques
+ USB, pour vous assurer que les périphériques seront accessibles au client
+ RDP. Si vous avez bien fait le paramétrage sur l'hôte distant, les
+ événements de branchement/débranchement sont visibles dans le fichier
+ VBox.log de la VM.</para>
+ </sect2>
+
+ <sect2 id="vbox-auth">
+ <title>Authentification RDP</title>
+
+ <para>Pour chaque machine virtuelle accessible à distance via RDP, vous
+ pouvez déterminer individuellement si les connexions du client sont
+ authentifiées et comment. Pour cela, utilisez la commande
+ <computeroutput>VBoxManage modifyvm</computeroutput> avec l'option
+ <computeroutput>--vrdeauthtype</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm" /> pour une présentation générale. Trois
+ méthodes d'authentification sont disponibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para>La méthode "null" signifie qu'il n'y a pas d'authentification
+ du tout&#xA0;; n'importe quel client peut se connecter au serveur
+ VRDP et, ainsi, à la machine virtuelle. C'est, bien sûr, très peu
+ sécurisé et cela ne doit être recommandé que sur des réseaux privés.</para>
+ </listitem>
+
+ <listitem>
+ <para>La méthode "external" fournit une authentification externe via
+ une bibliothèque d'authentification spéciale. VirtualBox inclut
+ deux bibliothèques d'authentification&#xA0;:<orderedlist>
+ <listitem>
+ <para>La bibliothèque d'authentification par défaut,
+ <computeroutput>VBoxAuth</computeroutput>, authentifie en fonction
+ des droits de l'utilisateur sur l'hôte. Selon la plateforme hôte,
+ cela signifie&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur les hôtes Linux,
+ <computeroutput>VBoxAuth.so</computeroutput>
+ authentifie les utilisateurs à partir du système PAM de
+ l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes Windows,
+ <computeroutput>VBoxAuth.dll</computeroutput>
+ authentifie les utilisateurs à partir du système WinLogon
+ de l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes Mac OS X,
+ <computeroutput>VBoxAuth.dylib</computeroutput>
+ authentifie les utilisateurs à partir du service répertoire
+ de l'hôte.<footnote>
+ <para>Le support pour Mac OS X a été ajouté dans
+ la version
+ 3.2.</para>
+ </footnote></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>En d'autres termes, la méthode "external" par défaut
+ réalise l'authentification par les comptes utilisateurs existant
+ sur le système hôte. Tout utilisateur ayant des autorisations
+ d'authentification valides est accepté, c'est-à-dire que le nom
+ d'utilisateur n'a pas besoin de correspondre à l'utilisateur
+ qui lance la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Une bibliothèque supplémentaire qui s'appelle
+ <computeroutput>VBoxAuthSimple</computeroutput> réalise
+ l'authentification à partir des autorisations configurées
+ dans la section "extradata" du fichier XML des paramètres d'une machine
+ virtuelle. C'est probablement la méthode la plus simple pour
+ s'authentifier, qui ne dépend pas d'un invité en fonction et
+ supporté (voir ci-dessous). Les étapes suivantes sont
+ nécessaires&#xA0;:<orderedlist>
+ <listitem>
+ <para>Activer
+ <computeroutput>VBoxAuthSimple</computeroutput> avec la
+ commande suivante&#xA0;:</para>
+
+ <para><screen>VBoxManage setproperty vrdeauthlibrary "VBoxAuthSimple"</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Pour activer la bibliothèque pour une VM en particulier,
+ vous devez passer en authentification externe&#xA0;:<screen>VBoxManage modifyvm "nom VM" --vrdeauthtype external</screen></para>
+
+ <para>Remplacez
+ <computeroutput>"nom VM"</computeroutput> par le nom
+ ou l'UUID de la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous devrez alors configurer les utilisateurs et
+ les mots de passe en écrivant ces éléments dans les
+ extradata de la machine. Comme le fichier XML des paramètres
+ de la machine, dans lequel il faut écrire le mot de
+ passe à la section "extradata", est un fichier en texte
+ brut, VirtualBox utilise le hachage pour chiffrer les
+ mots de passe. Il faut utiliser la commande suivante&#xA0;:<screen>VBoxManage setextradata "nom VM" "VBoxAuthSimple/users/&lt;utilisateur&gt;" &lt;hash&gt;</screen></para>
+
+ <para>Remplacez
+ <computeroutput>&lt;vm&gt;</computeroutput> par le nom
+ ou l'UUID de la VM,
+ <computeroutput>&lt;utilisateur&gt;</computeroutput> par
+ le nom d'utilisateur qui devrait être autorisé à se connecter
+ et
+ <computeroutput>&lt;hash&gt;</computeroutput> par le mot
+ de passe chiffré. Par exemple, pour avoir la valeur
+ hachée du mot de passe "secret", vous pouvez utiliser la
+ commande suivante&#xA0;:<screen>VBoxManage internalcommands passwordhash "secret"</screen></para>
+
+ <para>Ceci affichera
+ <screen>2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen>
+ Vous pouvez alors utiliser VBoxManage setextradata pour
+ stocker cette valeur dans la section "extradata" de la
+ machine.</para>
+
+ <para>Un exemple des deux ensemble, pour définir le mot
+ de passe de l'utilisateur "john" sur la machine "Ma VM"
+ en "secret", utilisez cette commande&#xA0;:<screen>VBoxManage setextradata "Ma VM" "VBoxAuthSimple/users/john"
+ 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b</screen></para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+ </orderedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Enfin, la méthode d'authentification "guest" réalise
+ l'authentification par un composant spécial fourni avec les suppléments
+ invité&#xA0;; il s'en suit que l'authentification ne s'effectue pas
+ sur l'hôte mais via les comptes utilisateurs
+ <emphasis>de l'invité</emphasis>.</para>
+
+ <para>Cette méthode est actuellement en test et pas encore
+ supportée.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Outre les méthodes décrites ci-dessus, vous pouvez remplacer la méthode
+ d'authentification "external" par défaut par n'importe quel autre module.
+ Pour cela, VirtualBox offre une interface claire qui vous permet d'écrire
+ votre propre module d'authentification. Ceci est décrit en détails dans
+ le manuel de référence du Kit de développement logiciel de VirtualBox&#xA0;;
+ merci de voir <xref
+ linkend="VirtualBoxAPI" /> pour des détails.</para>
+ </sect2>
+
+ <sect2 id="vrde-crypt">
+ <title>Chiffrement RDP</title>
+
+ <para>Le chiffrement du flux de données des fonctions RDP se base sur le
+ chiffrage symétrique RC4 (avec des clés jusqu'à 128bit). Les clés RC4
+ sont remplacées à intervalles réguliers (tous les 4096 paquets).</para>
+
+ <para>RDP fournit différentes méthodes d'authentification&#xA0;:<orderedlist>
+ <listitem>
+ <para>Historiquement, on utilisait l'authentification RDP4, avec
+ laquelle le client RDP ne réalise aucun contrôle pour vérifier
+ l'identité du serveur auquel il se connecte. Comme on peut obtenir les
+ autorisations de l'utilisateur en utilisant une attaque "man in the
+ middle" (MITM) (personne initiée), l'authentification RDP4 n'est pas
+ sécurisée et vous ne devriez en général pas l'utiliser.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'authentification RDP5.1 utilise un certificat serveur pour
+ lequel le client possède la clé publique. De cette façon, vous avez la
+ garantie que le serveur possède la clé privée correspondante. Cependant,
+ comme cette clé privée codée en dur a été publiée il y a quelques
+ années, l'authentification RDP5.1 n'est pas sécurisée.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'authentification RDP5.2 utilise la sécurité RDP améliorée,
+ ce qui veut dire qu'un protocole de sécurité externe est utilisé pour
+ sécuriser la connexion. RDP4 et RDP5.1 utilisent la sécurité RDP
+ Standard. Le serveur VRDP supporte la sécurité renforcée RDP avec
+ le protocole TLS et, faisant partie du handshake TLS, il envoie
+ le certificat du serveur au client.</para>
+
+ <para>La propriété VRDE <computeroutput>Security/Method</computeroutput>
+ définit la méthode de sécurité souhaitée qui est utilisée pour une
+ connexion. Les valeurs valides sont&#xA0;:<itemizedlist>
+ <listitem>
+ <para>
+ <computeroutput>Negotiate</computeroutput> - les connexions
+ sécurisées améliorées (TLS) et RDP standards sont autorisées.
+ La méthode de sécurité se négocie avec le client. C'est le réglage
+ par défaut.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>RDP</computeroutput> - seule la sécurité QDP
+ Standard est acceptée.</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <computeroutput>TLS</computeroutput> - seule la sécurité RDP
+ améliorée est acceptée. Le client doit supporter TLS.</para>
+ </listitem>
+ </itemizedlist>
+ Par exemple la commande suivante autorise un client à utiliser une
+ connexion sécurisée soit par RDP Standard, soit par RDP améliorée&#xA0;:
+ <screen>vboxmanage modifyvm "nom VM" --vrdeproperty "Security/Method=negotiate"</screen>
+ </para>
+
+ <para>Si la propriété <computeroutput>Security/Method</computeroutput>
+ est réglée sur <computeroutput>Negotiate</computeroutput> ou
+ <computeroutput>TLS</computeroutput>, le protocole TLS sera automatiquement
+ utilisé par le serveur si le client supporte TLS. Cependant, pour
+ utiliser TLS, le serveur doit posséder le certificat du serveur, la
+ clé privée du serveur et l'autorité du certificat (Certificate
+ Authority (CA)). L'exemple suivant montre comment générer un
+ certificat de serveur.<orderedlist>
+ <listitem>
+ <para>Créez un certificat CA auto-signé&#xA0;:
+ <screen>openssl req -new -x509 -days 365 -extensions v3_ca \
+ -keyout ca_key_private.pem -out ca_cert.pem</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Générez une clé privée du serveur et une demande de signature&#xA0;:
+ <screen>openssl genrsa -out server_key_private.pem
+openssl req -new -key server_key_private.pem -out server_req.pem</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Générez le certificat du serveur&#xA0;:
+ <screen>openssl x509 -req -days 365 -in server_req.pem \
+ -CA ca_cert.pem -CAkey ca_key_private.pem -set_serial 01 -out server_cert.pem</screen></para>
+ </listitem>
+ </orderedlist>
+ Le serveur doit être configuré pour accéder aux fichiers requis&#xA0;:
+ <screen>vboxmanage modifyvm "nom VM" \
+ --vrdeproperty "Security/CACertificate=path/ca_cert.pem"</screen>
+ <screen>vboxmanage modifyvm "nom VM" \
+ --vrdeproperty "Security/ServerCertificate=path/server_cert.pem"</screen>
+ <screen>vboxmanage modifyvm "nom VM" \
+ --vrdeproperty "Security/ServerPrivateKey=path/server_key_private.pem"</screen>
+ </para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Comme le client qui se connecte au serveur détermine le type de chiffrement
+ qui sera utilisé, avec rdesktop, le visualiseur RDP de Linux, utilisez
+ les options <computeroutput>-4</computeroutput> ou
+ <computeroutput>-5</computeroutput>.</para>
+ </sect2>
+
+ <sect2 id="vrde-multiconnection">
+ <title>Connexions multiples au serveur VRDP</title>
+
+ <para>Le serveur VRDP de VirtualBox supporte plusieurs connexions simultanées
+ à une VM en fonction à partir de différents clients. Tous les clients
+ connectés voient la même sortie d'écran et partagent le pointeur de souris
+ et le focus du clavier. Cela revient à ce que plusieurs personnes utilisent
+ le même ordinateur en même temps, chacun leur tour devant le clavier.</para>
+
+ <para>La commande suivante active le mode connexions multiples&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdemulticon on</screen></para>
+ </sect2>
+
+ <sect2 id="vrde-multimonitor">
+ <title>Avoir plusieurs moniteurs distants</title>
+
+ <para>Pour accéder à deux ou plusieurs moniteurs de VM distants, vous
+ devez activer le mode multiconnexion VRDP (voir la <xref
+ linkend="vrde-multiconnection" />).</para>
+
+ <para>Le client RDP peut sélectionner le numéro du moniteur virtuel auquel
+ se connecter en utilisant le paramètre d'identification <computeroutput>domain</computeroutput>
+ (<computeroutput>-d</computeroutput>). Si le paramètre se termine par
+ <computeroutput>@</computeroutput> suivi d'un numéro, VirtualBox
+ interprète ce numéro comme l'index des écrans. On sélectionne l'écran invité
+ primaire avec <computeroutput>@1</computeroutput>, le premier écran secondaire
+ avec <computeroutput>@2</computeroutput>, etc.</para>
+
+ <para>Le client Microsoft RDP6 ne pous permet pas de sécifier un nom de
+ domaine distinct. Utilisez plutôt
+ <computeroutput>domaine\nom_utilisateur</computeroutput> dans le champ
+ <computeroutput>Nom d'utilisateur :</computeroutput> -- par exemple,
+ <computeroutput>@2\name</computeroutput>.
+ <computeroutput>nom</computeroutput> doit être renseigné et il doit être
+ le nom utilisé pour vous identifier si le serveur VRDP est configuré pour
+ demander une autorisation. Sinon, vous pouvez utiliser n'importe quel texte
+ comme nom d'utilisateur.</para>
+ </sect2>
+
+ <sect2 id="vrde-videochannel">
+ <title>Redirection graphique VRDP</title>
+
+ <para>À partir de VirtualBox 3.2, le serveur VRDP peut rediriger les flux
+ graphiques de l'hôte vers le client RDP. Les frames graphiques sont
+ compressés en utilisant l'algorithme JPEG, ce qui permet un ratio de compression
+ plus fort que les méthodes de compression bitmap RDP standards. Il est
+ possible d'augmenter le ratio de compression en diminuant la qualité de l'image.</para>
+
+ <para>Le serveur VRDP détecte automatiquement les flux vidéos dans un
+ invité au fur et à mesure que les zones rectangulaires se mettent à jour
+ fréquemment. Il s'en suit que cette méthode fonctionne avec n'importe quel
+ système d'exploitation invité, sans devoir installer de logiciels supplémentaires
+ dans l'invité&#xA0;; en particulier, les suppléments invité ne sont pas
+ requis.</para>
+
+ <para>Par contre, côté client, seul le client de connexion Connexion bureau
+ à distance de Windows 7 supporte actuellement cette fonctionnalité. Si un
+ client ne supporte pas la redirection graphique, le serveur VRDP se rabat
+ sur le rafraîchissement régulier des bitmap.</para>
+
+ <para>La commande suivante active la redirection graphique&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdevideochannel on</screen></para>
+
+ <para>La qualité de l'image se définit par une valeur entre 10 et 100
+ pour cent, ce qui représente un niveau de compression JPEG (où les nombres
+ les plus bas signifient une qualité plus faibles mais une compression plus
+ forte). Vous pouvez modifier la qualité en utilisant la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --vrdevideochannelquality 75</screen></para>
+ </sect2>
+
+ <sect2 id="vrde-customization">
+ <title>Personnalisation du VRDP</title>
+
+ <para>Avec VirtualBox 4.0, il est possible de désactiver l'affichage,
+ l'entrée souris et clavier, le son, l'USB distant ou le presse-papier,
+ de façon individuelle dans le serveur VRDP.</para>
+
+ <para>Les commandes suivantes modifient les paramètres correspondant du
+ serveur&#xA0;:</para>
+
+ <screen>VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableDisplay=1
+VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableInput=1
+VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableUSB=1
+VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableAudio=1
+VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableClipboard=1
+VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableUpstreamAudio=1</screen>
+
+ <para>Pour réactiver une fonction, utilisez une commande identique sans
+ l'argument 1. Par example&#xA0;: <screen>VBoxManage modifyvm "nom VM" --vrdeproperty Client/DisableDisplay=</screen></para>
+
+ <para>Ces propriétés ont été ajoutées avec VirtualBox 3.2.10. Cependant,
+ dans la série 3.2.x, il était nécessaire d'utiliser les commandes
+ suivantes pour modifier les paramètres&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableDisplay" 1
+VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableInput" 1
+VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableUSB" 1
+VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableAudio" 1
+VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableClipboard" 1</screen>
+
+ <para>Pour réactiver une fonction, utilisez une commande identique
+ sans l'argument 1. Par exemple&#xA0;: <screen>VBoxManage setextradata "nom VM" "VRDP/Feature/Client/DisableDisplay"</screen></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="teleporting">
+ <title>Téléportation</title>
+
+ <para>À partir de la version 3.1, VirtualBox supporte la "téléportation" --
+ à savoir qu'il peut déplacer une machine sur un réseau d'un hôte VirtualBox
+ à l'autre, pendant que la machine est en fonction. Cela fonctionne indépendamment
+ du système d'exploitation hôte&#xA0;: vous pouvez téléporter des machines
+ virtuelles entre, par exemple, des hôtes Solaris et Mac.</para>
+
+ <para>La téléportation exige qu'une machine soit en fonction sur un
+ hôte, qu'on appelle alors la <emphasis role="bold">"source"</emphasis>.
+ L'hôte sur lequel la machine virtuelle sera téléportée s'appellera alors la
+ <emphasis role="bold">"cible"</emphasis>&#xA0;; la machine sur la cible est
+ alors configurée pour attendre que la source la contacte.
+ L'état en fonction de la machine sera transféré de la source à la cible en
+ un temps nimimum.</para>
+
+ <para>La téléportation est possible sur n'importe quel réseau TCP/IP&#xA0;;
+ la source et la cible n'ont besoin que de s'entendre sur un port TCP/IP
+ spécifié dans les paramètres de téléportation.</para>
+
+ <para>Cependant, pour l'instant, il y a quelques prérequis pour que cela
+ fonctionne&#xA0;:<orderedlist>
+ <listitem>
+ <para>Sur l'hôte cible, vous devez configurer une machine virtuelle dans
+ VirtualBox avec exactement les mêmes paramètres matériels que la machine
+ sur la source que vous voulez téléporter. Cela ne s'applique pas aux
+ paramètres purement descriptifs tels que le nom de la VM, mais bien sûr,
+ pour que la téléportation fonctionne, la machine cible doit avoir la
+ même quantité de mémoire et les autres paramètres matériels. Sans cela,
+ la téléportation échouera avec un message d'erreur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les deux machines virtuelles sur la source et la cible doivent
+ partager le même stockage (images de disques durs et de lecteur amovible
+ et CD/DVD). Cel signifie qu'elles utilisent soit la même cible iSCSI,
+ soit le stockage se trouve quelque part sur le réseau et les deux hôtes
+ y ont accès via NFS ou SMB/CIFS.</para>
+
+ <para>Cela veut dire aussi que ni la machine source ni la machine
+ cible ne peuvent avoir d'instantanés.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Puis, suivez les étapes suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Sur l'hôte <emphasis>cible</emphasis>, configurez la machine
+ virtuelle pour attendre qu'une demande de téléportation arrive quand
+ elle sera démarrée, plutôt que d'essayer de démarrer réellement la machine.
+ Cela se fait avec la commande VBoxManage suivante&#xA0;:<screen>VBoxManage modifyvm &lt;nomvmcible&gt; --teleporter on --teleporterport &lt;port&gt;</screen></para>
+
+ <para>où <computeroutput>&lt;nomvmcible&gt;</computeroutput> est le
+ nom de la machine virtuelle de l'hôte cible et
+ <computeroutput>&lt;port&gt;</computeroutput> est un numéro de port
+ TCP/IP à utiliser sur les hôtes source et cible. Par
+ exemple, utilisez le 6000. Pour les détails, voir <xref
+ linkend="vboxmanage-modifyvm-teleport" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrez la VM sur l'hôte cible. Vous verrez qu'au lieu de démarrer,
+ elle affichera une boîte de dialogue de progression indiquant qu'elle
+ attend une demande de téléportation.</para>
+ </listitem>
+
+ <listitem>
+ <para>Démarrez la machine sur l'hôte <emphasis>source</emphasis> comme
+ d'habitude. Quand elle est en fonction et quand vous voulez la téléporter, lancez
+ la commande suivante sur l'hôte source&#xA0;:<screen>VBoxManage controlvm &lt;nomvmsource&gt; teleport --host &lt;hôtecible&gt; --port &lt;port&gt;</screen></para>
+
+ <para>où <computeroutput>&lt;nomvmsource&gt;</computeroutput> est le
+ nom de la machine (irtuelle sur l'hôte source (la machine actuellement en
+ fonction) et <computeroutput>&lt;hôtecible&gt;</computeroutput> est
+ le nom ou l'IP de l'hôte cible où une demande de téléportation par la
+ machine est attendue, et <computeroutput>&lt;port&gt;</computeroutput>
+ doit être le même numéro que celui spécifié dans la commande sur l'hôte
+ cible. Pour les détails, voir <xref
+ linkend="vboxmanage-controlvm" />.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Pour tester, vous pouvez aussi téléporter des machines sur le même hôte&#xA0;;
+ dans ce cas, utilisez "localhost" comme nom d'hôte sur l'hôte source et
+ cible.<note>
+ <para>Dans de rares cas, si les processeurs de la source et de la cible
+ sont très différents, la téléportation peut échouer avec un message d'erreur
+ ou la cible peut planter. Cela peut arriver surtout si la VM exécute des
+ logiciels très optimisés pour fonctionner sur un processeur particulier
+ sans vérifier correctement que certaines fonctions du processeur sont
+ bien présentes. VirtualBox filtre les capacités du processeur présenté
+ au système d'exploitation invité. Les utilisateurs avancés peuvent essayer de
+ restreindre les possibilités de ces processeurs virtuels avec la commande
+ <computeroutput>VBoxManage --modifyvm
+ --cpuid</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm-teleport" />.</para>
+ </note></para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_Glossary.xml b/doc/manual/fr_FR/user_Glossary.xml
new file mode 100644
index 00000000..f698b8c8
--- /dev/null
+++ b/doc/manual/fr_FR/user_Glossary.xml
@@ -0,0 +1,494 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<glossary id="Glossary">
+ <glossdiv>
+ <title>A</title>
+
+ <glossentry>
+ <glossterm>ACPI</glossterm>
+
+ <glossdef>
+ <para>Advanced Configuration and Power Interface, une
+ spécification de l'industrie pour BIOS et extensions matérielles pour configurer
+ le matériel PC et gérer l'alimentation. Windows 2000 et ultérieur ainsi que
+ Linux 2.4 et ultérieur supportent ACPI. Windows ne peut activer/désactiver
+ le support ACPI qu'à l'installation.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>AHCI</glossterm>
+
+ <glossdef>
+ <para>Advanced Host Controller Interface, l'interface qui supporte
+ les périphériques SATA tel que les disques durs. Voir <xref
+ linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>AMD-V</glossterm>
+
+ <glossdef>
+ <para>La capacité de virtualisation matérielle implémentée dans les
+ processeurs AMD récents. Voir <xref linkend="hwvirt" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>API</glossterm>
+
+ <glossdef>
+ <para>Application Programming Interface.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>APIC</glossterm>
+
+ <glossdef>
+ <para>Advanced Programmable Interrupt Controller, une version plus récente
+ de l'ancienne PIC (programmable interrupt controller). La plupart des
+ CPUs récents incorporent un APIC ("local APIC"). Beaucoup de systèmes intègrent
+ aussi un I/O APIC (input output APIC) dans une puce à part qui fournit plus de
+ 16 IRQs. Windows 2000 et ultérieur utilise un noyau différent si il est
+ détecté un I/O APIC à l'installation. De ce fait un I/O APIC ne doit pas être
+ supprimé après l'installation.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>ATA</glossterm>
+
+ <glossdef>
+ <para>Advanced Technology Attachment, un standard de l'industrie pour les
+ interfaces de disques durs (synonyme de IDE). Voir <xref
+ linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>B</title>
+
+ <glossentry>
+ <glossterm>BIOS</glossterm>
+
+ <glossdef>
+ <para>Basic Input/Output System, le firmware intégré à la plupart des ordinateurs
+ personnels qui est chargé d'initialiser le matériel après que la machine
+ ait été allumée et qui alors démarre le système d'exploitation.
+ VirtualBox est livré avec son propre BIOS virtuel qui se lance quand une
+ machine est démarrée.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>C</title>
+
+ <glossentry>
+ <glossterm>COM</glossterm>
+
+ <glossdef>
+ <para>Microsoft Component Object Model, une infrastructure de programmation
+ pour logiciels modulaires. COM permet aux applications de fournir une interface
+ de programmation qui peut être accédée depuis divers autres langages de
+ programmation et applications. VirtualBox utilise COM en interne et
+ en externe pour fournir une API complète aux développeurs externes
+ .</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>D</title>
+
+ <glossentry>
+ <glossterm>DHCP</glossterm>
+
+ <glossdef>
+ <para>Dynamic Host Configuration Protocol. Ceci donne la faculté à un périphérique
+ de réseau d'obtenir automatiquement son adresse IP (et autres informations du réseau)
+ , afin d'éviter d'avoir à configurer tous les périphériques
+ d'un réseau avec des adresses IP fixes. VirtualBox a un serveur
+ DHCP incorporé qui octroie une adresse IP à une machine virtuelle
+ quand le réseau est configuré en mode NAT&#xA0;; voir <xref
+ linkend="networkingdetails" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>DKMS</glossterm>
+
+ <glossdef>
+ <para>Dynamic Kernel Module Support. Un environnement qui simplifie
+ l'installation et la mise à jour des modules externes de noyau sur les machines Linux&#xA0;; voir
+ <xref linkend="externalkernelmodules" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>E</title>
+
+ <glossentry>
+ <glossterm>EFI</glossterm>
+
+ <glossdef>
+ <para>Extensible Firmware Interface, un firmware intégré aux ordinateurs
+ qui a pour but de remplacer le BIOS dépassé. À l'origine conçu par
+ Intel, la plupart des systèmes peuvent maintenant démarrer une machine qui
+ a EFI au lieu de BIOS&#xA0;; voir <xref
+ linkend="efi" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>EHCI</glossterm>
+
+ <glossdef>
+ <para>Enhanced Host Controller Interface, l'interface qui
+ implémente l'USB 2.0 standard.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>G</title>
+
+ <glossentry>
+ <glossterm>GUI</glossterm>
+
+ <glossdef>
+ <para>Graphical User Interface. Communément employé en opposition à
+ "interface en ligne de commande", dans le contexte VirtualBox, nous nous
+ référons au programme graphique principal de
+ <computeroutput>VirtualBox</computeroutput> en tant que "GUI", pour le
+ différencier de l'interface <computeroutput>VBoxManage</computeroutput>
+ .</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>GUID</glossterm>
+
+ <glossdef>
+ <para>Voir UUID.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>I</title>
+
+ <glossentry>
+ <glossterm>IDE</glossterm>
+
+ <glossdef>
+ <para>Integrated Drive Electronics, un standard de l'industrie pour une interface
+ de disque dur. Voir <xref linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>I/O APIC</glossterm>
+
+ <glossdef>
+ <para>Voir APIC.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>iSCSI</glossterm>
+
+ <glossdef>
+ <para>Internet SCSI; voir <xref linkend="storage-iscsi" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>M</title>
+
+ <glossentry>
+ <glossterm>MAC</glossterm>
+
+ <glossdef>
+ <para>Media Access Control, un élément d'une carte Ethernet. Une adresse MAC
+ est un nombre de 6 octets qui identifie une carte réseau. C'est typiquement
+ écrit en héxadecimal où les octets sont séparés par ":", tel que
+ <computeroutput>00:17:3A:5E:CB:08</computeroutput>.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>MSI</glossterm>
+
+ <glossdef>
+ <para>Message Signaled Interrupts, supporté par les circuits récents
+ tel que le ICH9; voir <xref linkend="settings-motherboard" />.
+ Contrairement aux traditionnelles interruptions pin-based, avec MSI, une petite
+ quantité de données peut accompagner le véritable message d'interruption. Ceci réduit la
+ quantité requise de broches sur le matériel, permet plus d'interruptions avec de
+ meilleures performances.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>N</title>
+
+ <glossentry>
+ <glossterm>NAT</glossterm>
+
+ <glossdef>
+ <para>Network Address Translation. Une technique pour partager les interfaces
+ réseau par laquelle une interface modifie l'adresse IP source et/ou cible
+ des paquets réseau selon des règles spécifiques. Couramment
+ employé par routeurs et pare-feux pour séparer un réseau interne
+ de l'Internet, VirtualBox peut utiliser NAT pour facilement partager un équipement réseau
+ physique de l'hôte avec ses machines virtuelles. Voir <xref
+ linkend="network_nat" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>O</title>
+
+ <glossentry>
+ <glossterm>OVF</glossterm>
+
+ <glossdef>
+ <para>Open Virtualization Format, un standard de l'industrie inter-platforme
+ pour échanger des briques logicielles virtuelles entre produits de virtualisation; voir
+ <xref linkend="ovf" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>P</title>
+
+ <glossentry>
+ <glossterm>PAE</glossterm>
+
+ <glossdef>
+ <para>Physical Address Extension. Ceci permet l'accès à plus de 4 GB
+ de RAM même en environnement 32-bit&#xA0;; voir <xref
+ linkend="settings-general-advanced" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>PIC</glossterm>
+
+ <glossdef>
+ <para>Voir APIC.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>PXE</glossterm>
+
+ <glossdef>
+ <para>Preboot Execution Environment, un standard de l'industrie pour démarrer
+ des systèmes PC à distance. Cela inclue DHCP pour la configuration IP
+ et TFTP pour le transfert de fichier. Avec UNDI, est disponible une pile de pilote de matériel
+ indépendant pour accéder la carte réseau par le code d'amorce
+ .</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>R</title>
+
+ <glossentry>
+ <glossterm>RDP</glossterm>
+
+ <glossdef>
+ <para>Remote Desktop Protocol, un protocole développé par Microsoft en
+ extension des protocoles ITU T.128 et T.124 de vidéo conference. Avec
+ RDP, un système PC peut être contrôllé à distance en utilisant une connection
+ réseau à travers laquelle les données sont transférées dans les 2 directions.
+ Typiquement les événements graphiques et audio sont envoyés depuis la machine à distance
+ et les événements clavier et souris sont envoyés depuis le client. Un paquet d'extension
+ VirtualBox d'Oracle fournit VRDP, une implementation améliorée du standard approprié qui est
+ largement compatible avec le RDP Microsoft. Voir <xref linkend="vrde" /> pour le
+ detail.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>S</title>
+
+ <glossentry>
+ <glossterm>SAS</glossterm>
+
+ <glossdef>
+ <para>Serial Attached SCSI, un standard de l'industrie pour les interfaces
+ de disques durs. Voir <xref linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>SATA</glossterm>
+
+ <glossdef>
+ <para>Serial ATA, un standard de l'industrie pour les interfaces de disques durs. Voir
+ <xref linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>SCSI</glossterm>
+
+ <glossdef>
+ <para>Small Computer System Interface. Un standard de l'industrie pour
+ le transfer de données entre périphériques, de stockage particulièrement. Voir <xref
+ linkend="harddiskcontrollers" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>SMP</glossterm>
+
+ <glossdef>
+ <para>Symmetrical Multiprocessing, indique que les ressources d'une
+ machine sont partagées entre différents processeurs. Ceci peut être soit
+ plusieurs puces processeur ou, le plus courant dans le matériel récent,
+ plusieurs coeurs CPU dans le processeur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>SSD</glossterm>
+
+ <glossdef>
+ <para>Solid-state drive, utilise des micropuces pour stocker les données système d'une
+ machine. Comparé aux classiquex disques durs ils n'ont pas de composants mécaniques
+ comme les plateaux tournants.
+ </para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>T</title>
+
+ <glossentry>
+ <glossterm>TAR</glossterm>
+
+ <glossdef>
+ <para>Un format de fichier largement répandu pour l'archivage. À l'origine
+ pour "Tape ARchive", était déjà supporté par les premières versions d'Unix
+ pour sauvegarder les données sur bande. Le format de fichier est toujours largement
+ utilisé, par exemple, avec les archives OVF (avec l'extension de fichier
+ <computeroutput>.ova</computeroutput>)&#xA0;; voir <xref
+ linkend="ovf" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>U</title>
+
+ <glossentry>
+ <glossterm>UUID</glossterm>
+
+ <glossdef>
+ <para>Un identifiant unique universel (Universally Unique Identifier) -- souvent aussi appelé GUID
+ (Globally Unique Identifier) -- est une chaîne de nombres et lettres
+ qui peut être calculée dynamiquement et qui garantie son unicité.
+ En général, c'est utilisé comme un identifiant global d'un composant.
+ VirtualBox emploie les UUIDs pour identifier les VMs, les images de disque virtuel
+ (fichiers VDI) et autres composants.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>V</title>
+
+ <glossentry>
+ <glossterm>VM</glossterm>
+
+ <glossdef>
+ <para>Machine virtuelle -- un ordinateur virtuel que VirtualBox fait tourner
+ dans la véritable machine. Voir <xref
+ linkend="virtintro" /> pour le detail.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VMM</glossterm>
+
+ <glossdef>
+ <para>Virtual Machine Manager -- le composant de VirtualBox qui
+ contrôle l'exécution des VMs. Voir <xref linkend="technical-components" /> pour
+ une liste de composants VirtualBox.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VRDE</glossterm>
+
+ <glossdef>
+ <para>VirtualBox Remote Desktop Extension. Cette interface est intégrée
+ à VirtualBox pour permettre aux paquets d'extension VirtualBox de fournir
+ aux machines virtuelles un accès à distance. Un paquet d'extension de VirtualBox
+ d'Oracle implémente VRDP; voir <xref linkend="vrde" /> pour le
+ detail.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VRDP</glossterm>
+
+ <glossdef>
+ <para>Voir RDP.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VT-x</glossterm>
+
+ <glossdef>
+ <para>La capacité de virtualisation matérielle implémentée dans les processeurs Intel
+ récents. Voir <xref linkend="hwvirt" />.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+
+ <glossdiv>
+ <title>X</title>
+
+ <glossentry>
+ <glossterm>XML</glossterm>
+
+ <glossdef>
+ <para>eXtensible Markup Language, un métastandard pour toute sorte
+ d'information textuelle. XML spécifie seulement comment les données dans un document sont
+ organisées en général et ne préscrit pas la manière d'organiser
+ le contenu sémantiquement.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>XPCOM</glossterm>
+
+ <glossdef>
+ <para>Mozilla Cross Platform Component Object Model, un environnement
+ de programmation développé par le projet de navigateur Mozilla qui est
+ similaire au COM de Microsoft et permet aux applications de fournir une interface
+ de programmation modulaire. VirtualBox emploie XPCOM sur Linux à la fois
+ en interne et en externe pour fournir une API complète aux développeurs
+ externes.</para>
+ </glossdef>
+ </glossentry>
+ </glossdiv>
+</glossary>
diff --git a/doc/manual/fr_FR/user_GuestAdditions.xml b/doc/manual/fr_FR/user_GuestAdditions.xml
new file mode 100644
index 00000000..f1d21ebd
--- /dev/null
+++ b/doc/manual/fr_FR/user_GuestAdditions.xml
@@ -0,0 +1,1915 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="guestadditions">
+ <title>Les suppléments invité</title>
+
+ <para>Le chapitre précédent traitait de la manière de commencer avec VirtualBox
+ et d'installer des systèmes d'exploitation dans une machine virtuelle. Pour une
+ utilisation interactive et sérieuse, les suppléments invité de VirtualBox vous
+ faciliteront beaucoup la vie, en offrant une intégration approfondie entre
+ l'hôte et l'invité et en améliorant la performance d'interactivité des systèmes
+ invités. Ce chapitre décrit en détail les suppléments invité.</para>
+
+ <sect1>
+ <title>Introduction</title>
+
+ <para>Comme indiqué au <xref linkend="virtintro" />, les suppléments invité
+ sont conçus pour s'installer <emphasis>à l'intérieur</emphasis> d'une
+ machine virtuelle après qu'un système d'exploitation ait été installé. Il s'agit
+ de pilotes de périphériques et d'applications système qui optimisent le
+ système d'exploitation invité pour une meilleure performance et plus
+ d'utilisabilité. Merci de voir <xref
+ linkend="guestossupport" /> pour des détails sur les systèmes d'exploitation
+ entièrement supportés avec les suppléments invité par VirtualBox.</para>
+
+ <para>Les suppléments invité de VirtualBox pour tous les systèmes d'exploitation
+ invités supportés sont fournis sous forme d'un fichier unique d'image de
+ CD-ROM qui s'appelle
+ <computeroutput>VBoxGuestAdditions.iso</computeroutput>. Ce fichier image se
+ trouve dans le répertoire d'installation de VirtualBox. Pour installer les
+ suppléments invité sur une VM en particulier, vous montez ce fichier ISO dans
+ votre VM comme un CD-ROM virtuel et vous installez à partir de là.</para>
+
+ <para>Les suppléments invité offrent les fonctions suivantes&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>Intégration du pointeur de souris</glossterm>
+
+ <glossdef>
+ <para>Pour dépasser la limite du support de la souris décrite au
+ <xref linkend="keyb_mouse_normal" />, ceci vous offre un support
+ de la souris transparent. Vous n'aurez qu'un pointeur de souris et
+ l'appui sur la touche hôte n'est plus nécessaire pour "libérer" la
+ souris de sa capture par l'OS invité. Pour que cela fonctionne, un
+ pilote de souris spécial est installé dans l'invité pour communiquer
+ avec le pilote de la "vraie" souris de votre hôte et il déplace le
+ pointeur de la souris de l'invité en conséquence.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Dossiers partagés</glossterm>
+
+ <glossdef>
+ <para>Ceci fournit une manière facile d'échanger des fichiers entre
+ l'hôte et l'invité. Tout comme le voisinage réseau Windows ordinaire,
+ vous pouvez dire à VirtualBox de traiter un répertoire particulier
+ de l'hôte comme un dossier partagé et VirtualBox le rendra disponible
+ pour le système d'exploitation invité en tant que partage réseau,
+ que l'invité ait ou non un réseau. Pour les détails, merci de vous
+ reporter à <xref
+ linkend="sharedfolders" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Meilleur support graphique</glossterm>
+
+ <glossdef>
+ <para>Si la carte graphique virtuelle émulée par VirtualBox pour tous
+ les systèmes d'exploitation invités offre toutes les fonctions de
+ base, les pilotes graphiques personnalisés installés avec les suppléments
+ invité vous offrent ces modes graphiques supplémentaires élevés et
+ non standards ainsi qu'une performance graphique accélérée.</para>
+
+ <para>De plus, avec les invités Windows, Linux et Solaris, vous
+ pouvez redimensionner la fenêtre de la machine virtuelle si les suppléments
+ invité sont installés. La résolution graphique de l'invité sera
+ automatiquement ajustée (comme si vous aviez entré à la main une
+ résolution de votre choix dans les paramètres d'affichage de
+ l'invité). Merci de voir aussi <xref
+ linkend="intro-resize-window" />.</para>
+
+ <para>Enfin, si les suppléments invité sont installés, les graphismes
+ 3D et 2D des applications invités peuvent être accélérés&#xA0;; voir
+ <xref linkend="guestadd-video" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Fenêtres transparentes</glossterm>
+
+ <glossdef>
+ <para>Avec cette fonctionnalité, les fenêtres individuelles affichées
+ sur le bureau de la machine virtuelle peuvent se placer sur le bureau
+ de l'hôte comme si l'application à leur origine fonctionnait vraiment
+ sur l'hôte. Voir <xref linkend="seamlesswindows" /> pour les
+ détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Canaux de communication hôte/invité génériques</glossterm>
+
+ <glossdef>
+ <para>Les suppléments invité vous permettent de contrôler et de surveiller
+ l'exécution de l'invité autrement que comme indiqué ci-dessus. Ce
+ qu'on appelle les "propriétés invité" fournit un mécanisme générique
+ à base de chaînes pour échanger des bits de données entre un invité
+ et un hôte, certains d'entre eux ayant des significations spéciales
+ pour contrôler et surveiller l'invité&#xA0;; voir
+ <xref linkend="guestadd-guestprops" /> pour les détails.</para>
+
+ <para>En outre, des applications peuvent être démarrées dans l'invité
+ à partir de l'hôte&#xA0;; voir <xref linkend="guestadd-guestcontrol" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Synchronisation du temps</glossterm>
+
+ <glossdef>
+ <para>Quand les suppléments invité sont installés, VirtualBox peut
+ s'assurer que l'horloge système de l'invité est mieux synchronisée avec
+ celle de l'hôte.</para>
+
+ <para>Pour plusieurs raisons, il se peut que l'horloge de l'invité
+ tourne à un rythme légèrement plus lent que celle de l'hôte. L'hôte
+ pourrait recevoir des mises à jour par NTP et sa propre horloge
+ pourrait ne pas tourner de manière rectiligne. Une VM pourrait aussi
+ être mise en pause, ce qui arrête le cours du temps dans l'invité
+ pendant une durée plus ou moins longue. Quand le temps des horloges
+ séparées entre l'invité et l'hôte ne diffère que légèrement, le service de
+ synchronisation du temps essaie d'ajuster progressivement et
+ doucement l'heure de l'invité, par petites accélérations, soit pour
+ "rattraper", soit pour "perdre" du temps. Quand la différence est trop
+ importante (par exemple si la VM a été mise en pause pendant des
+ heures puis restaurée d'un état sauvegardé), l'heure de l'invité est
+ modifiée immédiatement sans ajustement progressif.</para>
+
+ <para>Les suppléments invité resynchroniseront l'heure régulièrement.
+ Voir <xref linkend="changetimesync" /> pour savoir comment configurer
+ les paramètres du mécanisme de synchronisation du temps.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Presse-papier partagé</glossterm>
+
+ <glossdef>
+ <para>Quand les suppléments invité sont installés, le presse-papier
+ du système d'exploitation invité peut être éventuellement partagé
+ avec votre système d'exploitation hôte&#xA0;; voir
+ <xref linkend="generalsettings" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Connexions automatiques (passer des droits)</glossterm>
+
+ <glossdef>
+ <para>Pour les détails, merci de voir <xref linkend="autologon" />.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Chaque version de VirtualBox, même celles mineures, inclut sa propre
+ version des suppléments invité. Si les interfaces par lesquelles le c&#x153;ur
+ de VirtualBox communique avec les suppléments invité sont stables pour que
+ les suppléments invité déjà installés dans une VM continuent de fonctionner,
+ quand VirtualBox est mis à jour sur l'hôte, pour de meilleurs résultats, il
+ est recommandé d'avoir des suppléments invité de la même version.</para>
+
+ <para>À partir de VirtualBox 3.1, les suppléments invité pour Windows et Linux
+ vérifient donc automatiquement s'ils doivent être mis à jour. Si l'hôte fait
+ tourner une version plus récente de VirtualBox que celle des suppléments
+ invité, une notification avec des instructions complémentaires s'affiche dans
+ l'invité.</para>
+
+ <para>Pour désactiver cette vérification des mises à jour des suppléments invité
+ dans une machine virtuelle donnée, définissez la valeur de la propriété
+ invité
+ <computeroutput>/VirtualBox/GuestAdd/CheckHostVersion</computeroutput>
+ à <computeroutput>0</computeroutput>&#xA0;; voir <xref
+ linkend="guestadd-guestprops" /> pour des détails.</para>
+ </sect1>
+
+ <sect1>
+ <title>Installer et maintenir les suppléments invité</title>
+
+ <para>Les suppléments invité sont disponibles pour les machines virtuelles
+ faisant fonctionner Windows, Linux, Solaris ou OS/2. Les sections suivantes
+ décrivent en détail les spécificités de chaque variante.</para>
+
+ <sect2 id="additions-windows">
+ <title>Suppléments invité pour Windows</title>
+
+ <para>Les suppléments invité de VirtualBox pour Windows sont conçus
+ pour s'installer dans une machine virtuelle exécutant un système d'exploitation
+ Windows. Les versions suivantes des invités Windows sont supportées&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Microsoft Windows NT 4.0 (tous les packs service)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows 2000 (tous les packs service)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows XP (tous les packs service)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows Server 2003 (tous les packs service)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows Server 2008</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows Vista (toutes les éditions)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows 7 (toutes les éditions)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows 8 (toutes les éditions)</para>
+ </listitem>
+
+ <listitem>
+ <para>Microsoft Windows Server 2012</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <sect3 id="mountingadditionsiso">
+ <title>Installation</title>
+
+ <para>Dans le menu "Périphériques" de la barre de menu de la machine
+ virtuelle, VirtualBox a un élément de menu tout prêt nommé "Insérer l'image
+ du CD des suppléments invité", qui monte le fichier ISO des suppléments invité
+ dans votre machine virtuelle. L'invité Windows devrait alors démarrer
+ automatiquement l'installeur des suppléments invité qui installe les
+ suppléments invité dans votre invité Windows. Les autres systèmes
+ d'exploitation invités (ou si le démarrage automatique d'un logiciel sur
+ CD est désactivé) exigent un démarrage manuel de l'installeur.</para>
+
+ <note>
+ <para>Pour que l'accélération Direct3D de base fonctionne dans un
+ invité Windows, vous devez installer les suppléments invité en "Mode
+ sans échec". Cela <emphasis role="bold">ne vaut pas</emphasis> pour
+ le pilote graphique expérimental WDDM Direct3D disponible pour les invités
+ Vista and Windows 7, voir <xref linkend="KnownIssues" /> pour les
+ détails.<footnote><para>Le pilote expérimental WDDM a été ajouté avec
+ VirtualBox 4.1.</para></footnote></para>
+ </note>
+
+ <para>Si vous préférez monter les suppléments à la main, vous pouvez
+ suivre les étapes suivantes&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Démarrez la machine virtuelle dans laquelle vous avez installé
+ Windows.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sélectionnez "Monter un CD/DVD-ROM" dans le menu "Périphériques"
+ de la barre de menus de la machine virtuelle, puis "image CD/DVD-ROM".
+ Ceci ouvre le gestionnaire de médias virtuels décrit au <xref
+ linkend="vdis" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Dans le gestionnaire de médias virtuels, appuyez sur le bouton
+ "Ajouter" et parcourez le système de fichiers de votre hôte pour
+ trouver le fichier
+ <computeroutput>VBoxGuestAdditions.iso</computeroutput>&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur un hôte Windows, vous pouvez trouver ce fichier
+ dans le répertoire d'installation de VirtualBox (en général
+ sous <computeroutput>C:\Program
+ files\Oracle\VirtualBox</computeroutput> ).</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes Mac OS X, vous pouvez trouver ce fichier
+ dans le groupe de l'application VirtualBox. (Effectuez un clic
+ droit sur l'icône de VirtualBox dans Finder et choisissez
+ <emphasis>Afficher le contenu du paquet</emphasis>. S'y trouve
+ le fichier, dans le dossier
+ <computeroutput>Contents/MacOS</computeroutput>.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur un hôte Linux, vous pouvez trouver ce fichier dans
+ le dossier
+ <computeroutput>additions</computeroutput> sous lequel vous avez
+ installé VirtualBox (normalement,
+ <computeroutput>/opt/VirtualBox/</computeroutput>).</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes Solaris, vous pouvez trouver ce fichier
+ dans le dossier
+ <computeroutput>additions</computeroutput> sous lequel vous avez
+ installé VirtualBox (normalement
+ <computeroutput>/opt/VirtualBox</computeroutput>).</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>De retour dans le gestionnaire de médias virtuels, sélectionnez
+ ce fichier ISO et appuyez sur le bouton "Sélectionner". Ceci montera
+ le fichier ISO et le présentera à votre invité Windows comme un
+ CD-ROM.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Sauf si vous avez désactivé la fonction "Exécution automatique" de
+ votre invité Windows, Windows démarrera automatiquement le programme
+ d'installation des suppléments invité de VirtualBox depuis l'ISO
+ Additions. Si vous avez désactivé la fonction d'exécution automatique,
+ choisissez
+ <computeroutput>VBoxWindowsAdditions.exe</computeroutput> dans le lecteur
+ CD/DVD dans l'invité pour démarrer l'installeur.</para>
+
+ <para>L'installeur ajoutera plusieurs pilotes de périphériques à la base
+ de données des pilotes Windows puis appellera l'assistant Nouveau matériel
+ détecté.</para>
+
+ <para>Selon votre configuration, il pourrait afficher des avertissements
+ selon lequel les pilotes n'ont pas de signature numérique. Vous devez
+ les confirmer afin qde continuer l'installation et d'installer correctement
+ les suppléments.</para>
+
+ <para>Après l'installation, redémarrez votre système d'exploitation
+ invité pour activer les suppléments.</para>
+ </sect3>
+
+ <sect3>
+ <title>Mettre à jour les suppléments invité Windows</title>
+
+ <para>Les suppléments invité Windows peuvent être mis à jour en lançant
+ de nouveau le programme d'installation comme décrit précédemment.
+ Ceci remplacera les pilotes des suppléments précédents par des versions
+ mises à jour.</para>
+
+ <para>Vous pouvez aussi ouvrir le gestionnaire de périphériques de Windows
+ et sélectionner "Mettre à jour le pilote..." pour deux périphériques&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>l'adaptateur graphique de VirtualBox et</para>
+ </listitem>
+
+ <listitem>
+ <para>le périphérique système VirtualBox.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Pour chacun d'eux, choisissez de fournir votre propre pilote et
+ utilisez "Vous avez un disque" pour orienter l'assistant sur le lecteur
+ de CD-ROM contenant les suppléments invité.</para>
+ </sect3>
+
+ <sect3>
+ <title>Installation silencieuse</title>
+
+ <para>Avant d'effectuer une installation sans efforts des suppléments
+ invité de VirtualBox sur un invité Windows, il doit y avoir absolument
+ des Oracle CA (Certificate Authority) installés, pour empêcher des
+ fenêtres d'intervention de l'utilisateur qui contrarieront une
+ installation silencieuse.</para>
+
+ <para><note><para>Sur certaines versions de Windows comme Windows 2000
+ et Windows XP les fenêtres d'intervention de l'utilisateur mentionnées
+ ci-dessus s'afficheront toujours, même après avoir importé les
+ certificats d'Oracle.</para></note></para>
+
+ <para>Depuis VirtualBox 4.2, vous pouvez installer ces certificats CA
+ sur un invité Windows de façon automatisée en utilisant l'outil
+ <computeroutput>VBoxCertUtil.exe</computeroutput> qui se trouve sur
+ le CD d'installation des suppléments invité dans le dossier
+ <computeroutput>cert</computeroutput>&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Connectez-vous en tant qu'administrateur sur l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>Montez le .ISO des suppléments invité de VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ouvrez une fenêtre de ligne de commande sur l'invité et rendez-vous
+ dans le dossier <computeroutput>cert</computeroutput> du CD des
+ suppléments invité de VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para>Faites <screen>VBoxCertUtil add-trusted-publisher oracle-vbox.cer --root oracle-vbox.cer</screen></para>
+ <para>Cela installera les certificats dans le stockage des certificats.
+ Si on installe les mêmes certificats plus d'une fois, une erreur
+ circonstanciée s'affichera.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Avant VirtualBox 4.2, il faut importer les certificats CA d'Oracle
+ de manière plus manuelle en utilisant l'outil
+ <computeroutput>certutil.exe</computeroutput> inclu depuis Windows
+ Vista. Pour des versions de Windows antérieures à Vista, vous devez
+ télécharger et installer <computeroutput>certutil.exe</computeroutput>
+ à la main. Les certificats n'étant pas sur le CD-ROM des suppléments
+ invité de VirtualBox précédant la 4.2, vous devez les extraire préalablement
+ d'un exécutable de VirtualBox signé.</para>
+
+ <para>Dans l'exemple suivant, les ertificats nécessaires seront extraits
+ de l'installeur des suppléments invité pour Windows sur le CD-ROM&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>VeriSign Code Signing CA</glossterm>
+ <glossdef>
+ <para>Dans l'explorateur Windows, faites un clic droit sur
+ VBoxWindowsAdditions-&lt;Architecture&gt;.exe, cliquez sur
+ "Propriétés"</para>
+ <itemizedlist>
+ <listitem>
+ <para>Allez sur l'onglet "Signatures numériques", choisissez
+ "Oracle Corporation" et cliquez sur "Détails"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'onglet "Général" cliquez sur "Afficher le Certificat"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'onglet "Chemin de Certification", sélectionnez
+ "VeriSign Class 3 Public Primary CA"</para>
+ </listitem>
+ <listitem>
+ <para>Cliquez sur "Afficher le certificat"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'onglet "Détails" cliquez sur "Copier vers le fichier..."</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'assistant qui apparaît, choisissez "DER encoded binary (binaire
+ encodé DER X.509 (.CER)" et enregistrez le fichier du certificat
+ dans un chemin local, puis terminez l'assistant</para>
+ </listitem>
+ <listitem>
+ <para>Fermez la boîte de dialogue du certificat "Verisign Class 3 Code Signing
+ 2010 CA"</para>
+ </listitem>
+ </itemizedlist>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Oracle Corporation</glossterm>
+ <glossdef>
+ <para>Dans l'explorateur Windows, effectuez un clic droit sur
+ VBoxWindowsAdditions-&lt;Architecture&gt;.exe, cliquez sur
+ "Propriétés"</para>
+ <itemizedlist>
+ <listitem>
+ <para>Allez sur l'onglet "Signatures numériques", choisissez
+ "Oracle Corporation" et cliquez sur "Détails"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'onglet "Général", cliquez sur "Afficher le Certificat"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'onglet "Détails" cliquez sur "Copier vers le fichier ..."</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'assistant qui apparaît, choisissez "DER encoded binary X.509 (.CER)"
+ et enregistrez le fichier du certificat dans un chemin local, terminez
+ l'assistant</para>
+ </listitem>
+ <listitem>
+ <para>Fermez la boîte du dialogue du certificat "Oracle Corporation"</para>
+ </listitem>
+ </itemizedlist>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>Après avoir exporté les deux certificats ci-dessus, vous pouvez
+ les importer dans le trousseau des certificats en utilisant l'outil
+ <computeroutput>certutil.exe</computeroutput>&#xA0;:</para>
+
+ <para><computeroutput>certutil -addstore -f Root "&lt;Chemin du fichier
+ du certificat exporté&gt;"</computeroutput></para>
+
+ <para>Afin de permettre des installations invité entièrement sans efforts,
+ vous pouvez spécifier un paramètre en ligne de commande au lanceur de
+ l'installation&#xA0;:</para>
+
+ <screen>VBoxWindowsAdditions.exe /S</screen>
+
+ <para>Ceci installe automatiquement les bons fichiers et les bons pilotes
+ pour la plateforme correspondante (32 ou 64 bits).</para>
+
+ <para><note><para>Par défaut, sur une installation sans efforts sur un invité
+ Windows 7 ou 8, un pilote graphique XPDM va s'installer. Ce pilote
+ graphique ne supporte pas Windows Aero / Direct3D de l'invité - il faut
+ donc installer à la place le pilote graphique expérimental WDDM. Pour
+ sélectionner ce pilote par défaut, ajoutez le paramètre
+ <computeroutput>/with_wddm</computeroutput> de la ligne de commande quand
+ vous appelez l'installeur des suppléments invité Windows.</para></note></para>
+
+ <para><note><para>Pour que Windows Aero fonctionne correctement sur un invité,
+ la taille de la mémoire graphique de l'invité doit être configurée pour
+ être d'au moins 128 Mo.</para></note></para>
+
+ <para>Pour plus d'options concernant les installations d'invité sans efforts,
+ consultez l'aide en ligne de commande en utilisant la commande&#xA0;:</para>
+
+ <screen>VBoxWindowsAdditions.exe /?</screen>
+ </sect3>
+
+ <sect3 id="windows-guest-file-extraction">
+ <title>Extraction manuelle du fichier</title>
+
+ <para>Si vous souhaitez installer les fichiers et les pilotes à la main,
+ vous pouvez extraire les fichiers des suppléments invité Windows en
+ tapant&#xA0;:</para>
+
+ <screen>VBoxWindowsAdditions.exe /extract</screen>
+
+ <para>Pour extraire explicitement les suppléments invité Windows pour
+ une autre plateforme que celle où vous êtes (par exemple des fichiers 64
+ bits sur une plateforme 32 bits), vous devez exécuter l'installeur pour
+ la plateforme adéquate
+ (<computeroutput>VBoxWindowsAdditions-x86.exe</computeroutput> ou
+ <computeroutput>VBoxWindowsAdditions-amd64.exe</computeroutput>) avec
+ le paramètre <computeroutput>/extract</computeroutput>.</para>
+ </sect3>
+
+ </sect2>
+
+ <sect2>
+ <title>Suppléments invité pour Linux</title>
+
+ <para>Comme les suppléments invité Windows, les suppléments invité de
+ VirtualBox pour Linux sont un ensemble de pilotes de périphérique et
+ d'applications système qui s'installent dans le système d'exploitation invité.</para>
+
+ <para>Les distributions Linux suivantes sont supportées officiellement&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Oracle Linux à partir de la version 5, y compris les noyaux UEK ;</para>
+ </listitem>
+ <listitem>
+ <para>Fedora à partir de Fedora Core 4;</para>
+ </listitem>
+
+ <listitem>
+ <para>Redhat Enterprise Linux à partir de la version 3;</para>
+ </listitem>
+
+ <listitem>
+ <para>SUSE et openSUSE Linux à partir de la version 9;</para>
+ </listitem>
+
+ <listitem>
+ <para>Ubuntu à partir de la version 5.10.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Beaucoup d'autres distributions sont connues pour fonctionner avec
+ les suppléments invité.</para>
+
+ <para>La version du noyau Linux fournie par défaut dans SUSE et
+ openSUSE 10.2, dans Ubuntu 6.10 (toutes les versions) et Ubuntu 6.06
+ (édition serveur) contient un bogue qui peut le faire planter au démarrage
+ quand il tourne sur une machine virtuelle. Les suppléments invité fonctionnent
+ dans ces distributions.</para>
+
+ <para>Remarquez que certaines distributions Linux sont déjà fournies avec
+ tout ou partie des suppléments invité VirtualBox. Vous pouvez choisir
+ de garder la version des suppléments invité de votre distribution, mais
+ ils sont souvent obsolètes et limités dans leurs fonctionnalités, donc nous
+ recommandons de les remplacer par les
+ suppléments invité fournis avec VirtualBox. L'installeur des suppléments
+ invité de VirtualBox pour Linux essaie de détecter l'installation existante
+ et de les remplacer, mais selon la façon dont votre distribution intègre
+ les suppléments invité, cela peut exiger un peu d'intervention manuelle.
+ Il est fortement
+ recommandé de prendre un instantané de la machine virtuelle avant de
+ remplacer les suppléments invité préinstallés.</para>
+
+ <sect3>
+ <title>Installer les suppléments invité pour Linux</title>
+
+ <para>Les suppléments invité VirtualBox pour Linux sont fournis sur
+ le même fichier de CD-ROM virtuel que les suppléments invité pour Windows
+ décrits ci-dessus. Ils sont également fournis avec un programme d'installation
+ qui vous guide à travers le processus de paramétrage bien que du fait des
+ différences significatives entre les distributions Linux, l'installation
+ peut être légèrement plus complexe.</para>
+
+ <para>L'nstallation implique généralement les étapes suivantes&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Avant d'installer les suppléments invité, vous devrez
+ préparer votre système invité à construire les modules externes du
+ noyau. Ceci fonctionne comme décrit au <xref
+ linkend="externalkernelmodules" />, sauf que cette étape doit être
+ maintenant effectuée dans votre <emphasis>invité</emphasis> Linux
+ et non sur un système hôte Linux&#xA0;, comme décrit ici.</para>
+
+ <para>De nouveau, comme avec les hôtes Linux, nous recommandons
+ d'utiliser DKMS s'il est disponible pour le système invité. S'il n'est
+ pas installé, utilisez cette commande pour les systèmes Ubuntu/Debian&#xA0;:
+ <screen>sudo apt-get install dkms</screen>
+ ou, pour les systèmes Fedora&#xA0;: <screen>yum install dkms</screen></para>
+
+ <para>Assurez-vous d'installer DKMS <emphasis>avant</emphasis>
+ d'installer les suppléments invité Linux. Si DKMS n'est pas disponible
+ ou pas installé, il faudra recréer à la main les modules noyau de
+ l'invité à chaque fois que le noyau invité sera mis à jour en utilisant
+ la commande <screen>/etc/init.d/vboxadd setup</screen> en tant
+ qu'administrateur.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Insérez le fichier de CD
+ <computeroutput>VBoxGuestAdditions.iso</computeroutput> dans le lecteur
+ CD-ROM virtuel de votre système invité, exactement de la même façon
+ que ce qui est décrit pour un invité Windows dans <xref
+ linkend="mountingadditionsiso" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Rendez-vous dans le répertoire où est monté votre lecteur CD-ROM
+ et exécutez, en tant qu'administrateur&#xA0;:</para>
+
+ <screen>sh ./VBoxLinuxAdditions.run</screen>
+
+ </listitem>
+ </orderedlist>
+
+ <para>Pour votre confort, nous fournissons les
+ instructions pas à pas suivantes pour les copies fraîchement installées
+ des versions récentes des distributions Linux les plus populaires.
+ Après ces étapes préparatoires, vous pouvez
+ exécuter l'installeur des suppléments invité VirtualBox comme décrit
+ ci-dessus.</para>
+
+ <sect4>
+ <title>Ubuntu</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>apt-get update</screen> en tant qu'administrateur
+ suivi de <screen>apt-get upgrade</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Installez DKMS en utilisant <screen>apt-get install dkms</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les mises à
+ jour puis poursuivez comme décrit ci-dessus.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>Fedora</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>yum update</screen> en tant qu'administrateur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installez DKMS et le compilateur GNU C en utilisant
+ <screen>yum install dkms</screen> suivi de
+ <screen>yum install gcc</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les
+ mises à jour puis poursuivez comme décrit ci-dessus.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>openSUSE</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>zypper update</screen> en tant
+ qu'administrateur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installez l'outil make et le compilateur GNU C en utilisant
+ <screen>zypper install make gcc</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les
+ mises à jour.</para>
+ </listitem>
+
+ <listitem>
+ <para>Cherchez le noyau que vous exécutez en utilisant <screen>uname -a</screen>
+ Un exemple serait
+ <computeroutput>2.6.31.12-0.2-default</computeroutput> qui renvoie
+ au noyau "par défaut". Puis installez le bon paquet de
+ développement du noyau. Dans l'exemple ci-dessus, il s'agirait de
+ <screen>zypper install kernel-default-devel</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Assurez-vous que votre noyau actuel
+ (<computeroutput>uname -a</computeroutput>) et les paquets du
+ noyau que vous avez installés (<computeroutput>rpm -qa
+ kernel\*</computeroutput>) ont exactement le même numéro de version.
+ Continuez l'installation comme décrit ci-dessus.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>SuSE Linux Enterprise Desktop (SLED)</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>zypper update</screen> en tant
+ qu'administrateur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installez le compilateur the GNU C en utilisant
+ <screen>zypper install gcc</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les
+ mises à jour.</para>
+ </listitem>
+
+ <listitem>
+ <para>Cherchez le noyau que vous exécutez en utilisant <screen>uname -a</screen>
+ Un exemple serait
+ <computeroutput>2.6.27.19-5.1-default</computeroutput> qui renvoie
+ au noyau "par défaut". Puis installez le bon paquet de
+ développement du noyau. Dans l'exemple ci-dessus, il s'agirait de
+ <screen>zypper install kernel-syms kernel-source</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Assurez-vous que votre noyau actuel
+ (<computeroutput>uname -a</computeroutput>) et les paquets du
+ noyau que vous avez installés (<computeroutput>rpm -qa
+ kernel\*</computeroutput>) ont exactement le même numéro de version.
+ Continuez l'installation comme décrit ci-dessus.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>Mandrake</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Mandrake inclut des suppléments invité VirtualBox qui seront
+ remplacés si vous suivez ces étapes.</para>
+ </listitem>
+
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>urpmi --auto-update</screen>
+ en tant qu'administrateur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez le système afin d'activer les mises à jour.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installez DKMS en utilisant <screen>urpmi dkms</screen>
+ et assurez-vous de choisir le bon paquet kernel-devel quand
+ l'installeur vous le demande (utilisez <computeroutput>uname -a</computeroutput>
+ pour comparer).</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>Oracle Linux, Red Hat Enterprise Linux et CentOS</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Pour les versions antérieures à 6, ajoutez
+ <computeroutput>divider=10</computeroutput> aux options de démarrage
+ du noyau dans
+ <computeroutput>/etc/grub.conf</computeroutput> pour réduire la
+ charge du processeur actif.</para>
+ </listitem>
+
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>yum update</screen> en tant
+ qu'administrateur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Installez le compilateur GNU C et les paquets de développement
+ du noyau en utilisant <screen>yum install gcc</screen> suivi de
+ <screen>yum install kernel-devel</screen> Pour les noyaux
+ Oracle UEK, utilisez <screen>yum install kernel-uek-devel</screen>
+ pour installer les en-têtes du noyau UEK.</para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les
+ mises à jour puis poursuivez comme décrit ci-dessus.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si Oracle Linux ne trouve pas les paquets requis,
+ soit vous devez les installer à partir d'une autre source (comme
+ un DVD), soit utilisez le serveur public Yum d'Oracle
+ qui se troupe sur <ulink
+ url="http://public-yum.oracle.com/">http://public-yum.oracle.com</ulink>.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+
+ <sect4>
+ <title>Debian</title>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Afin de mettre à jour complètement votre système invité, ouvrez un
+ terminal et lancez <screen>apt-get update</screen> en tant qu'administrateur
+ suivi de <screen>apt-get upgrade</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Installez l'outil make et le compilateur GNU C en utilisant
+ <screen>apt-get install make gcc</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez votre système invité afin d'activer les
+ mises à jour.</para>
+ </listitem>
+
+ <listitem>
+ <para>Déterminez la version exacte de votre noyau en utilisant
+ <computeroutput>uname -a</computeroutput> et installez la bonne
+ version du paquete linux-headers, par exemple en utilisant
+ <screen>apt-get install linux-headers-2.6.26-2-686</screen></para>
+ </listitem>
+ </orderedlist></para>
+ </sect4>
+ </sect3>
+
+ <sect3>
+ <title>Intégration graphique de la souris</title>
+
+ <para>Dans les invités Linux et Solaris, l'intégration graphique de la
+ souris de VirtualBox passe par le système X Window. VirtualBox peut
+ utiliser la variante X.Org du système (ou XFree86 version 4.3 qui est
+ identique à la première version de X.Org). Au cours du processus
+ d'installation, le serveur d'affichage X.Org sera paramétré pour utiliser
+ les pilotes graphiques et de souris fournis avec les suppléments invité.</para>
+
+ <para>Après l'installation des suppléments invité dans une installation
+ neuve d'une distribution Linux ou d'un système Solaris supportés, (beaucoup
+ de systèmes non supportés fonctionneront correctement aussi), le mode
+ graphique de l'invité changera pour s'adapter à la taille de la fenêtre
+ VirtualBox et de l'hôte lorsqu'elle est redimensionnée. Vous pouvez aussi
+ demander au système invité de passer à une résolution en particulier en
+ envoyant une "suggestion de mode graphique" en utilisant l'outil
+ <computeroutput>VBoxManage</computeroutput>.</para>
+
+ <para>Plusieurs écrans invités sont supportés dans les invités utilisant
+ le serveur X.Org version 1.3 (qui fait partie de la version 7.3 du
+ système X Window version 11) ou une version supérieure. La présentation
+ des écrans invités peut être ajustée au besoin en utilisant les outils
+ fournis avec le système d'exploitation invité.</para>
+
+ <para>Si vous voulez mieux comprendre les détails de la manière dont les pilotes
+ X.Org sont paramétrés (en particulier si vous souhaitez les utiliser dans
+ un réglage non géré correctement par notre installeur), vous devriez lire
+ <xref linkend="guestxorgsetup" />.</para>
+ </sect3>
+
+ <sect3>
+ <title>Metter à jour les suppléments invité Linux</title>
+
+ <para>Les suppléments invité peuvent être mis à jour simplement en refaisant
+ la procédure d'installation avec une image de CD-ROM mise à jour. Ceci
+ remplacera les pilotes par des versions mises à jour. Vous devriez
+ redémarrer après avoir mis à jour les suppléments invité.</para>
+ </sect3>
+
+ <sect3>
+ <title>Désinstaller les suppléments invité Linux</title>
+
+ <para>Si vous avez une version des suppléments invité installée sur
+ votre machine virtuelle et si vous souhaitez l'enlever sans en installer
+ d'autres, vous pouvez le faire en insérant l'image CD des suppléments
+ invité dans le lecteur de CD-ROM virtuel comme décrit ci-dessus et en
+ lançant l'installeur des suppléments invité actuels avec le paramètre
+ "uninstall" à partir de l'endroit où est monté l'image du CD sur
+ l'invité&#xA0;: <screen>sh ./VBoxLinuxAdditions.run uninstall</screen></para>
+
+ <para>Si cela fonctionnera en principe sans problème, il se peut que vous
+ deviez faire certains nettoyages à la main sur l'invité (en particulier
+ du fichier XFree86Config ou xorg.conf) dans certains cas, surtout si la
+ version installée des suppléments ou le système d'exploitation invité
+ étaient très anciens ou si vous avez fait vos propres modifications du
+ paramétrage des suppléments invité après les avoir installé.</para>
+
+ <para>À partir de la version 3.1.0, vous pouvez désinstaller les
+ suppléments en appelant <screen>/opt/VBoxGuestAdditions-@VBOX_VERSION_STRING@/uninstall.sh</screen>Merci
+ de remplacer
+ <computeroutput>/opt/VBoxGuestAdditions-@VBOX_VERSION_STRING@</computeroutput>
+ par le bon répertoire d'installation des suppléments invité.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Suppléments invité pour Solaris</title>
+
+ <para>Comme les suppléments invité pour Windows, les suppléments invité
+ de VirtualBox pour Solaris incluent un ensemble de pilotes de périphériques
+ et d'applications système qui peuvent s'installer dans le système d'exploitation
+ invité.</para>
+
+ <para>Les distributions Solaris suivantes sont officiellement
+ supportées&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Solaris 11 y compris Solaris 11 Express;</para>
+ </listitem>
+
+ <listitem>
+ <para>Solaris 10 (u5 et supérieur);</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Il se peut que d'autres distributions fonctionnent si elles se basent
+ sur des versions des logiciels comparables.</para>
+
+ <sect3>
+ <title>Installer les suppléments invité Solaris</title>
+
+ <para>Les suppléments invité de VirtualBox pour Solaris sont fournis
+ sur le même ISO de CD-ROM que les suppléments pour Windows et Linux
+ décrits ci-dessus. Ils sont aussi fournis avec un programme d'installation
+ qui vous guide à travers le processus d'initialisation.</para>
+
+ <para>L'installation implique les étapes suivantes&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Monter le fichier
+ <computeroutput>VBoxGuestAdditions.iso</computeroutput> comme votre
+ lecteur de CD-ROM virtuel de votre invité Solaris, exactement comme
+ expliqué pour un invité Windows au <xref
+ linkend="mountingadditionsiso" />.</para>
+
+ <para>Au cas où le lecteur de CD-ROM de l'invité ne se monte pas
+ (ce qu'on a constaté avec certaines versions de Solaris 10), exécutez
+ en tant qu'administrateur&#xA0;:</para>
+
+ <screen>svcadm restart volfs</screen>
+ </listitem>
+
+ <listitem>
+ <para>Rendez-vous dans le répertoire où votre lecteur de CD-ROM est
+ monté et exécutez en tant qu'administrateur&#xA0;:</para>
+
+ <screen>pkgadd -G -d ./VBoxSolarisAdditions.pkg</screen>
+ </listitem>
+
+ <listitem>
+ <para>Choisissez "1" et confirmez l'installation du paquet des
+ suppléments invité. Après la fin de l'installation, reconnectez-vous
+ au serveur X de votre invité pour activer suppléments invité de X11.</para>
+ </listitem>
+ </orderedlist>
+ </sect3>
+
+ <sect3>
+ <title>Désinstaller les suppléments invité Solaris</title>
+
+ <para>Les suppléments invité Solaris peuvent être supprimés en toute
+ sécurité en retirant de l'invité le paquet. Ouvrez une session de terminal
+ administrateur et exécutez&#xA0;:</para>
+
+ <para><screen>pkgrm SUNWvboxguest</screen></para>
+ </sect3>
+
+ <sect3>
+ <title>Mettre à jour les suppléments invité</title>
+
+ <para>Les suppléments invité devraient être mis à jour en désinstallant
+ d'abord les suppléments invité existants puis en installant les nouveaux.
+ Essayer d'installer de nouveaux suppléments invité sans supprimer ceux
+ existant n'est pas possible.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Suppléments invité pour OS/2</title>
+
+ <para>VirtualBox inclut aussi un jeu de pilotes qui améliore l'exécution
+ d'OS/2 dans une machine virtuelle. À cause de restrictions d'OS/2 lui-même,
+ cette variante des suppléments invité a un jeu de fonctionnalités limité&#xA0;; voir <xref
+ linkend="KnownIssues" /> pour les détails.</para>
+
+ <para>Les suppléments invité OS/2 sont fournis sur la même ISO de CD-ROM
+ que ceux des autres plateformes. Donc, montez l'ISO dans OS/2 comme décrit
+ précédemment. Les suppléments invité OS/2 se trouvent dans
+ directory <computeroutput>\32bit\OS2</computeroutput>.</para>
+
+ <para>Comme on ne fournit pas pour le moment d'installeur automatique,
+ merci de vous reporter au fichier <computeroutput>readme.txt</computeroutput>
+ de ce répertoire, qui décrit la façon d'installer les suppléments invité
+ OS/2 à la main.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="sharedfolders">
+ <title>Dossiers partagés</title>
+
+ <para>Avec la fonction "dossiers partagés", de VirtualBox, vous pouvez
+ accéder à des fichiers de votre système hôte depuis votre système invité.
+ Cela est identique à utiliser des partages réseau dans des réseaux Windows --
+ sauf que les dossiers partagés ne nécessitent pas de réseau mais seulement
+ les suppléments invité. Les dossiers partagés sont supportés avec les invités
+ Windows (2000 ou plus récent), Linux et Solaris.</para>
+
+ <para>Les dossiers partagés doivent être présents physiquement sur
+ <emphasis>l'hôte</emphasis> et sont alors partagés avec l'invité qui utilise
+ un pilote de système de fichiers spécial des suppléments invité pour dialoguer
+ avec l'hôte. Pour les invités Windows, les dossiers partagés sont implémentés
+ comme un redirecteur pseudo-réseau&#xA0;; pour les invités Linux et Solaris,
+ les suppléments invité fournissent un système de fichiers virtuel.</para>
+
+ <para>Pour partager un dossier hôte avec une machine virtuelle de VirtualBox,
+ indiquer le chemin vers ce dossier et choisir pour lui un "nom partagé"
+ que l'invité peut utiliser pour y accéder. D'où: créez tout d'abord le dossier
+ partagé sur l'hôte, puis dans l'invité, connectez-vous-y.</para>
+
+ <para>Il existe plusieurs façons de paramétrer des dossiers partagés pour
+ une machine virtuelle en particulier&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Dans la fenêtre d'une VM en fonction, vous pouvez sélectionner
+ "Dossiers partagés" du menu "Périphériques" ou cliquer sur l'icône de
+ dossier dans la barre d'état dans le coin en bas à droite.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si une VM est en fonction, vous pouvez configurer des dossiers
+ partagés dans chaque boîte de dialogue "Paramètres" d'une machine virtuelle.</para>
+ </listitem>
+
+ <listitem>
+ <para>En ligne de commande, vous pouvez créer des dossiers partagés en
+ utilisant VBoxManage, comme suit&#xA0;: <screen>VBoxManage sharedfolder add "nom VM" --name "sharename" --hostpath "C:\test"</screen></para>
+
+ <para>Voir <xref linkend="vboxmanage-sharedfolder" /> pour les
+ détails.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Il existe deux types de partages&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Les partages de VM disponibles seulement pour la VM pour laquelle
+ ils ont été définis&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Partages inter-VM, qui peuvent être ajoutés et supprimés pendant
+ l'exécution et qui ne durent pas après l'arrêt d'une VM&#xA0;; ajoutez
+ pour eux l'option <computeroutput>--transient</computeroutput> à la ligne
+ de commande ci-dessus.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Les dossiers partagés donnent par défaut un accès en lecture/écriture
+ aux fichiers de l'emplacement de l'hôte. Pour restreindre l'invité à un
+ accès en lecture seule, créez un dossier partagé en lecture seule. Cela peut
+ se faire soit en interface graphique, soit mettant l'option
+ <computeroutput>--readonly</computeroutput> lors de la création du dossier
+ partagé avec VBoxManage.</para>
+
+ <para>À partir de la version 4.0, les dossiers partagés de VirtualBox supportent
+ aussi les liens symboliques (<emphasis role="bold">symlinks</emphasis>), dans
+ les conditions suivamtes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Le système d'exploitation hôte doit supporter les liens symboliques
+ (donc, un hôte Mac, Linux ou Solaris est requis).</para>
+ </listitem>
+
+ <listitem>
+ <para>Actuellement, seuls les suppléments invité pour Linux et Solaris
+ supportent les liens symboliques.</para>
+ </listitem>
+ <listitem>
+ <para>Pour des raisons de sécurité, l'OS invité n'est pas autorisé par
+ défaut à créer des liens symboliques. Si vous faites confiance à l'OS
+ invité pour ne pas abuser de la fonction, vous pouvez autoriser la
+ création de liens symboliques pour "nomdupartage" avec :
+ <screen>VBoxManage setextradata "VM name" VBoxInternal2/SharedFoldersEnableSymlinksCreate/sharename 1</screen></para>
+ </listitem>
+ </orderedlist></para>
+
+ <sect2 id="sf_mount_manual">
+ <title>Montage manuel</title>
+
+ <para>Vous pouvez monter des dossiers partagés depuis l'intérieur d'une VM
+ de la même façon que vous monteriez un partage réseau ordinaire&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Dans un invité Windows, on peut naviguer dans les dossiers
+ partagés qui apparaissent donc dans l'explorateur Windows. Donc,
+ pour connecter un dossier partagé à votre invité Windows, ouvrez
+ l'explorateur Windows et cherchez-le dans "Favoris réseaux" -&gt;
+ "Tout le réseau" -&gt; "Dossier partagé VirtualBox". En effectuant
+ un clic droit sur un dossier partagé et en sélectionnant "Connecter
+ un lecteur réseau" dans le menu qui apparaît, vous pouvez affecter
+ une lettre de lecteur à ce dossier partagé.</para>
+
+ <para>Sinon, sur la ligne de commande Windows, utilisez ce qui suit&#xA0;:</para>
+
+ <screen>net use x: \\vboxsvr\sharename</screen>
+
+ <para>Si <computeroutput>vboxsvr</computeroutput> est un nom figé
+ (remarquez que <computeroutput>vboxsrv</computeroutput> fonctionnerait
+ aussi), remplacez "x:" par la lettre de lecteur que vous voulez utiliser
+ pour le partage, et <computeroutput>sharename</computeroutput> par le
+ nom du partage spécifié avec <computeroutput>VBoxManage</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Dans un invité Linux, utilisez la commande suivante&#xA0;:</para>
+
+ <screen>mount -t vboxsf [-o OPTIONS] sharename mountpoint</screen>
+
+ <para>Pour monter un dossier partagé au moment du démarrage, ajoutez
+ l'entrée suivante à /etc/fstab&#xA0;:</para>
+
+ <screen>sharename pointmontage vboxsf defaults 0 0</screen>
+ </listitem>
+
+ <listitem>
+ <para>Dans un invité Solaris, utilisez la commande suivante&#xA0;:</para>
+
+ <screen>mount -F vboxfs [-o OPTIONS] nompartage mountpoint</screen>
+
+ <para>Remplacez <computeroutput>nompartage</computeroutput> (utilisez
+ des minuscules) par le nom du partage spécifié avec
+ <computeroutput>VBoxManage</computeroutput> ou par l'interface graphique,
+ et <computeroutput>pointmontage</computeroutput> par l'endroit de l'invité où
+ vous voulez monter le partage (par exemple
+ <computeroutput>/mnt/share</computeroutput>). Les règles habituelles
+ de montage s'appliquent, c'ept-à-dire créer d'abord un répertoire s'il
+ n'existe pas déjà.</para>
+
+ <para>Voici un exemple de montage d'un dossier partagé pour l'utilisateur
+ "jack" sur Solaris&#xA0;:</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>Par-delà les options standard fournies par la commande
+ <computeroutput>mount</computeroutput>, celles suivantes sont
+ disponibles&#xA0;:</para>
+
+ <screen>iocharset CHARSET</screen>
+
+ <para>pour définir l'encodage utilisé pour les opérations d'E/S.
+ Remarquez que sur les invités Linux, si vous ne spécifiez pas l'option
+ "iocharset", le pilote des suppléments invité essaiera d'utiliser
+ l'encodage spécifié par l'option CONFIG_NLS_DEFAULT du noyau.
+ Si cette option n'est pas définie, UTF-8 sera utilisé. En outre,</para>
+
+ <screen>convertcp CHARSET</screen>
+
+ <para>est disponible pour définir l'encodage utilisé pour le nom du dossier partagé
+ (utf8 par défaut) et</para>
+
+ <para>Les options de montage génériques (documentées dans la page de
+ manuel de mount) s'appliquent aussi. Celles particulièrement utiles
+ sont <computeroutput>uid</computeroutput>,
+ <computeroutput>gid</computeroutput> et
+ <computeroutput>mode</computeroutput>, car elles permettent un accès
+ par des utilisateurs ordinaires (en mode lecture/écriture selon les réglages)
+ même si l'administrateur a monté le système de fichiers.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2 id="sf_mount_auto">
+ <title>Montage automatique</title>
+
+ <para>À partir de la version 4.0, VirtualBox peut monter automatiquement
+ des dossiers partagés avec vos options. Si le montage automatique est activé
+ pour un dossier partagé spécifique, les suppléments invité monteront
+ automatiquement ce dossier dès qu'un utilisateur se connecte à l'OS invité. Les
+ détails dépendent du type d'OS invité&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Avec des <emphasis role="bold">invités Windows,</emphasis>,
+ tout dossier monté automatiquement aura sa propre lettre de lecteur
+ (comme <computeroutput>E:</computeroutput>) selon les lettres de
+ lecteur disponibles dans l'invité.</para>
+
+ <para>Si aucune lettre de lecteur n'est libre, le montage automatique
+ échouera&#xA0;; donc le nombre de lecteurs montés automatiquement est
+ limité en général à 22 ou moins avec des invités Windows.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec des <emphasis role="bold">invités Linux,</emphasis>, les
+ dossiers partagés montés automatiquement sont montés dans
+ le répertoire <computeroutput>/media</computeroutput>, avec le préfixe
+ <computeroutput>sf_</computeroutput>. Par exemple, le dossier partagé
+ <computeroutput>myfiles</computeroutput> serait monté dans
+ <computeroutput>/media/sf_myfiles</computeroutput> sur
+ Linux et dans <computeroutput>/mnt/sf_myfiles</computeroutput> sur
+ Solaris.</para>
+
+ <para>La propriété invité
+ <computeroutput>/VirtualBox/GuestAdd/SharedFolders/MountPrefix</computeroutput>
+ détermine le préfixe utilisé. Modifiez cette propriété invité en une
+ valeur différente de "sf" pour changer ce préfixe&#xA0;; voir <xref
+ linkend="guestadd-guestprops" /> pour les détails.<note>
+ <para>L'accès aux dossiers partagés montés automatiquement n'est
+ autorisé que pour le groupe utilisateur
+ <computeroutput>vboxsf</computeroutput>, créé par l'installeur des
+ suppléments invité de VirtualBox. Donc les utilisateurs de l'invité
+ doivent être membres de ce groupe pour avoir un accès en lecture/écriture
+ ou en lecture seule si le dossier n'est pas inscriptible.</para>
+ </note></para>
+
+ <para>Pour modifier le répertoire de montage en autre chose que
+ <computeroutput>/media</computeroutput>, vous pouvez régler la propriété
+ invité <computeroutput>/VirtualBox/GuestAdd/SharedFolders/MountDir</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les <emphasis role="bold">invités Solaris</emphasis> se comportent
+ comme les invités Linux, sauf que <computeroutput>/mnt</computeroutput>
+ est utilisé comme répertoire de montage par défaut au lieu de
+ <computeroutput>/media</computeroutput>.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Pour effectuer des changements sur les dossiers partagés montés
+ automatiquement pendant qu'une VM est en fonction, l'OS invité doit être
+ relancé. (Cela ne vaut que pour les dossiers partagés montés automatiquement,
+ pas pour coux montés à la main.)</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="guestadd-dnd">
+ <title>Glisser/Déplacer</title>
+
+ <para>À partir de la version 4.4, VirtualBox supporte le glisser/déplacer
+ d'un contenu de l'hôte à l'invité et vice versa. Pour que cela fonctionne
+ les derniers suppléments invité doivent être installés sur l'invité.</para>
+
+ <para>Le glisser/déplacer vous permet de façon transparente de copier ou
+ d'ouvrir des fichiers, des répertoires, et même certains formats de presse-papiers
+ entre eux (de l'hôte à l'invité ou de l'invité à l'hôte). Vous pouvez
+ ainsi effectuer des opérations de glisser/déplacer entre vhôte et une VM
+ comme si c'était un glisser/déplacer ordinaire sur l'OS de l'hôte.</para>
+
+ <para>Pour le moment, le glisser/déplacer est implémenté sur les systèmes Windows
+ et X-Windows, tant côté invité que côté hôtes. Comme X-Windows supporte
+ différents protocoles de glisser/déplacer, seul celui le plus utilisé, XDND,,
+ est supporté actuellement. Les applications qui utilisent d'autres protocoles
+ (telles que Motif ou OffiX) ne seront pas reconnues par VirtualBox.</para>
+
+ <para>Dans un contexte d'utilisation de glisser/déplacer, l'origine des
+ données s'appelle <emphasis role="bold">source</emphasis>, c'est-à-dire, le
+ point spécifié d'où viennent les données. De l'autre côté, il y a la
+ <emphasis role="bold">cible</emphasis>, qui désigne là où devraient aller les
+ données de la source. Le transfert de données de la source à la cible peut
+ se faire de plusieurs manières, comme en copiant, déplaçant ou créant des
+ liens.<footnote><para>Pour le
+ moment, seule la copie de données est supportée. Le déplacement ou la création
+ de liens n'est pas encore implémenté.</para></footnote></para>
+
+ <para>Quand on transfère des données de l'hôte à l'OS invité, l'hôte est
+ dans ce cas la source, alors que l'OS invité est la cible. En revanche, quand
+ dans l'autre sens, à savoir lors d'un transfert de données de l'OS invité
+ vers l'hôte, l'OS invité devient cette fois la source et l'hôte est la cible.</para>
+
+ <para>Pour des raisons de sécurité, le glisser/déplacer peut se configurer
+ lors de l'exécution, individuellement pour chaque VM, en utilisant soit
+ l'élément "Glisser/déplacer" du menu "Périphériques" de la machine virtuelle
+ ou VBoxManage. Les quatre modes suivants sont disponibles :</para>
+
+<para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/dnd-modes.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Disabled</emphasis> désactive complètement
+ le glisser/déplacer. C'est le réglage par défaut à la création de
+ nouvelles VMs.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Host To Guest</emphasis> active le
+ glisser/déplacer de vhôte vers l'invité seulement.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Guest To Host</emphasis> active le
+ glisser/déplacer de l'invité à l'hôte seulement.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Bidirectional</emphasis> active le
+ glisser/déplacer dans les deux sens, de l'hôte vers l'invité et
+ vice versa.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note><para>Le support du glisser/déplacer dépend de l'interface
+ utilisée ; pour le moment, seule celle du gestionnaire VirtualBox offre
+ cette fonctionnalité.</para></note>
+
+ <para>Pour utiliser VBoxManage pour contrôler le mode actuel du glisser/déplacer,
+ voir <xref
+ linkend="vboxmanage" />. Les commandes <computeroutput>modifyvm</computeroutput>
+ et <computeroutput>controlvm</computeroutput> permettent de définir le mode
+ glisser/déplacer d'une VM en ligne de commande.</para>
+
+ <sect2 id="guestadd-dnd-formats">
+ <title>Formats supportés</title>
+
+ <para>Comme VirtualBox peut fonctionner sur divers OS hôtes et il supporte
+ une large gamme d'invités, certains formats de données doivent être
+ traduits après un transfert pour que l'OS cible (c'est-à-dire la partie qui
+ reçoit les données) puisse les gérer de la bonne manière.</para>
+
+ <note><para>Cependant, quand vous glissez des fichiers, on ne fait aucune
+ conversion de données, ainsi quand vous transférez un fichier d'un invité
+ Linux vers un hôte Windows, les ajouts spécifiques à Linux ne seront pas
+ convertis en ajouts Linux.</para></note>
+
+ <para>Les formats suivants sont gérés par le service glisser/déplacer de
+ VirtualBox :
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Text brut</emphasis>, issu d'applications
+ telles un éditeur de texte, des navigateurs internet et des fenêtres
+ de terminal</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Fichiers</emphasis>, issus de gestionnaires
+ de fichiers comme l'explorateur Windows, Nautilus et Finder</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Répertoires</emphasis>, où la même
+ chose que pour les fichiers s'applique</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="guestadd-video">
+ <title>L'accélération graphique matérielle</title>
+
+ <sect2 id="guestadd-3d">
+ <title>Accélération 3D matérielle (OpenGL and Direct3D 8/9)</title>
+
+ <para>Les suppléments invité de VirtualBox contiennent un support 3D
+ matériel expérimental pour les invités Windows, Linux et Solaris.<footnote>
+ <para>Le support OpenGL pour les invités Windows a été ajouté avec
+ VirtualBox 2.1&#xA0;; le support pour Linux et Solaris a suivi avec
+ VirtualBox 2.2. Avec VirtualBox 3.0, le support Direct3D 8/9 a été
+ ajouté pour les invités Windows. OpenGL 2.0 est maintenant supporté
+ aussi. Avec VirtualBox 4.1, le support du thème Windows Aero a été ajouté
+ pour les invités Windows Vista et Windows 7 (expérimental)</para>
+ </footnote></para>
+
+ <para>Avec cette fonction, si une application de votre machine virtuelle
+ utilise des fonctions 3D via les interfaces de programmation OpenGL ou
+ Direct3D 8/9, plutôt qu'une émulation logicielle (qui serait lente),
+ VirtualBox essaiera d'utiliser le matériel 3D de votre hôte. Cela fonctionne
+ pour toutes les plateformes hôtes supportées (Windows, Mac, Linux, Solaris),
+ pourvu que votre système d'exploitation hôte puisse utiliser votre accélération
+ 3D matérielle au premier plan.</para>
+
+ <para>L'accélération 3D suppose actuellement les conditions suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>elle n'est disponible que pour certains invités Windows, Linux
+ et Solaris. En particulier&#xA0;:<itemizedlist>
+ <listitem>
+ <para>L'accélération 3D des invités Windows exige Windows
+ 2000, Windows XP, Vista ou Windows 7. OpenGL et Direct3D 8/9
+ (pas avec Windows 2000) sont supportés
+ (expérimental).</para>
+ </listitem>
+
+ <listitem>
+ <para>OpenGL sur Linux exige un noyau 2.6.27 et supérieur et
+ le serveur X.org version 1.5 et supérieur. Ubuntu 10.10
+ et Fedora 14 ont été testées et confirmées comme opérationnelles.</para>
+ </listitem>
+
+ <listitem>
+ <para>OpenGL sur les invités Solaris exige le serveur X.org
+ version 1.5 et supérieur.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Les suppléments invité doivent être installés.<note>
+ <para>Pour l'accélération Direct3D de base fonctionne avec
+ les invités Windows, VirtualBox a besoin de remplacer des
+ fichiers système de Windows dans la machine virtuelle. Donc, le
+ programme d'installation suppléments invité offre l'accélération
+ Direct3D en option que vous devez activer explicitement. De plus,
+ vous devez installer les suppléments invité en mode "Sans échec".
+ Cela <emphasis role="bold">ne s'applique pas</emphasis> au pilote
+ graphique expérimental WDDM Direct3D disponible pour les invités
+ Vista et Windows 7, voir <xref linkend="KnownIssues" />
+ pour les détails.</para></note>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Le support 3D étant pour l'instant expérimental, il est désactivé par
+ défaut et il faut <emphasis role="bold">l'activer à la main</emphasis>
+ dans les paramètres de la VM (voir <xref
+ linkend="generalsettings" />).<note>
+ <para>
+ Les systèmes invité douteux ne devraient pas être autorisés à utiliser
+ les fonctions d'accélération 3D de VirtualBox tout comme les logiciels
+ douteux de l'hôte ne devraient pas être autorisés à utiliser
+ l'accélération 3D. Les pilotes du matériel 3D sont en général trop
+ complexes pour être parfaitement sécurisés et tout logiciel
+ autorisé à y accéder peut être en mesure de compromettre le système
+ d'exploitation qui les exécute. En outre, l'activation de l'accélération
+ 3D donne à l'invité un accès direct à une grande étendue de code
+ informatique supplémentaire du processus hôte de VirtualBox, donc
+ il pourrait être concevable de l'utiliser pour planter la machine
+ virtuelle.
+ </para>
+ </note></para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Avec VirtualBox 4.1, le support du thème Windows Aero est ajouté pour
+ les invités Windows Vista et Windows. Pour activer le support du thème
+ Aero, le pilote graphique expérimental WDDM de VirtualBox doit être installé,
+ il est disponible avec l'installation des suppléments invité. Comme le pilote
+ graphique WDDM est pour l'instant expérimental, il n'est pas installé par
+ défaut et il faut <emphasis role="bold">le sélectionner à la main</emphasis>
+ dans l'installeur des suppléments invité en répondant "Non" dans la boîte
+ de dialogue "Voulez-vous installer le support Direct3D de base" qui s'affiche
+ quand la fonction Direct3D est sélectionnée.</para>
+
+ <para><note><para>Contrairement au support Direct3D de base actuel, l'installation
+ du pilote graphique WDDM <emphasis role="bold">n'exige pas</emphasis>
+ le "Mode sans échec".</para></note></para>
+
+ <para>Le thème Aero n'est pas activé par défaut. Pour l'activer
+ <itemizedlist>
+ <listitem>
+ <para>Dans l'invité Windows Vista, effectuez un clic droit sur le
+ bureau, dans le menu contextuel, sélectionnez "Personnaliser" et sélectionnez
+ "Couleur de fenêtre et Apparance" dans la fenêtre "Personnalisation",
+ dans la boîte de dialogue "Paramètres de l'apparence", sélectionnez
+ "Windows Aero" et appuyez sur "OK"</para>
+ </listitem>
+ <listitem>
+ <para>Dans l'invité Windows 7, effectuez un clic droit sur le bureau,
+ dans le menu contextuel, sélectionnez "Personnaliser" et sélectionnez
+ un thème Aero dans la fenêtre "Personnalisation"</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <para>Techniquement, VirtualBox implémente cela en installant un pilote 3D
+ matériel supplémentaire dans votre invité quand les suppléments invité sont
+ installés. Ce pilote agit comme un pilote 3D matériel et signale au
+ système d'exploitation invité que le matériel (virtuel) est capable de faire
+ de l'accélération matérielle 3D. Quand une application de l'invité demande
+ alors l'accélération matérielle via les interfaces de programmation OpenGL ou
+ Direct3D, elles sont envoyées vers l'hôte par un tunnel de communication
+ spécial fourni par VirtualBox, puis <emphasis>l'hôte</emphasis> effectue
+ l'opération 3D demandée via les interfaces de programmation de l'hôte.</para>
+ </sect2>
+
+ <sect2 id="guestadd-2d">
+ <title>L'accélération matérielle 2D pour les invités Windows</title>
+
+ <para>À partir de la version 3.1, les suppléments invité de VirtualBox
+ contiennent le support expérimental de l'accélération graphique 2D matériel
+ pour les invités Windows.</para>
+
+ <para>Avec cette fonctionnalité, si une application (comme un lecteur de
+ vidéos) de votre VM Windows utilise les couches graphiques 2D pour lire un clip
+ vidéo, VirtualBox essaiera d'utiliser l'accélération graphique matérielle de
+ votre hôte plutôt que de faire de l'interprétation de couches ni conversion
+ de couleurs dans le logiciel (ce qui serait lent). Cela fonctionne actuellement
+ avec les plateformes hôtes Windows, Linux et Mac, pourvu que votre système
+ d'exploitation hôte puisse utiliser l'accélération graphique 2D au premier plan.</para>
+
+ <para>L'accélération graphique 2D est possible aujourd'hui sous les
+ conditions suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Elle n'est disponible que pour des invités Windows (XP ou
+ supérieur).</para>
+ </listitem>
+
+ <listitem>
+ <para>Les suppléments invité doivent être installés.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le support 2D étant pour l'instant expérimental, il est désactivé
+ par défaut et il faut <emphasis role="bold">l'activer à la main</emphasis>
+ dans les paramètres de la VM (voir <xref
+ linkend="generalsettings" />).</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Techniquement, VirtualBox implémente ceci en montrant les possibilités
+ DirectDraw de la couche vidéo dans le pilote graphique des suppléments invité.
+ Le pilote envoie toutes les commandes de la couche à l'hôte via un tunnel
+ de communication spécial implémenté par VirtualBox. Côté hôte, OpenGL est
+ alors utilisé pour implémenter la transformation des couleurs et l'échelonage</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="seamlesswindows">
+ <title>Fenêtres transparentes</title>
+
+ <para>Avec la fonction "fenêtres transparentes", de VirtualBox, vous pouvez
+ afficher vos fenêtres d'une machine virtuelle côte à côte près des fenêtres
+ de votre hôte. Cette fonctionnalité est supportée pour les systèmes d'exploitation
+ invités suivants (si les suppléments invité sont installés)&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Les invités Windows (support ajouté à VirtualBox 1.5);</para>
+ </listitem>
+
+ <listitem>
+ <para>Les invités supportés Linux ou Solaris exécutant le système X
+ Window (ajouté avec VirtualBox 1.6).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Après que les fenêtres transparentes ait été activées (voir ci-dessous), VirtualBox
+ supprime l'affichage de l'arrière-plan du bureau de votre invité, ce qui
+ vous permet de lancer les fenêtres de votre système d'exploitation invité
+ de manière transparente à côté des fenêtres de votre hôte&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/seamless.png" width="14cm" />
+ </imageobject>
+ </mediaobject>Pour activer le mode transparent, après avoir démarré la
+ machine virtuelle, appuyez sur Touche hôte (en principe contrôle droit) et
+ "L" simultanément. Ceci agrandira la taille de l'affichage de la VM jusqu'à
+ la taille de l'écran hôte et masquera l'arrière-plan du système d'exploitation
+ invité. Pour revenir à l'affichage normal de la VM (donc pour désactiver les
+ fenêtres transparentes), appuyez de nouveau sur Touche hôte et "L".</para>
+ </sect1>
+
+ <sect1 id="guestadd-guestprops">
+ <title>Propriétés invité</title>
+
+ <para>À partir de la version 2.1, VirtualBox permet de demander certaines
+ propriétés depuis un invité existant, si les suppléments invité de VirtualBox
+ sont installés et si la VM est en fonction. C'est intéressant pour deux
+ choses&#xA0;:<orderedlist>
+ <listitem>
+ <para>Un certain nombre de caractéristiques prédéfinies de la VM sont maintenues
+ automatiquement par VirtualBox et peuvent être répercutées sur l'hôte,
+ par exemple, pour gérer les performances de la VM et les statistiques.</para>
+ </listitem>
+
+ <listitem>
+ <para>De plus, des chaînes de données peuvent être échangées entre l'invité
+ et l'hôte. Cela fonctionne dans les deux sens.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Pour faire cela, VirtualBox établit un canal de communication privé
+ entre les suppléments invité de VirtualBox et l'hôte, et les logiciels des
+ deux côtés peuvent utiliser ce canal pour échanger des chaînes de données pour
+ des objectifs de votre choix. Les propriétés invité ne sont que des clés de
+ chaîne auxquelles est rattachée une valeur. Elles peuvent être définies (donc
+ éditées) soit par l'hôte, soit par l'invité, et on peut les lire des deux
+ côtés.</para>
+
+ <para>En plus d'établir le mécanisme général de lecture et d'écriture de
+ valeurs, un ensemble de propriétés invité prédéfinies est maintenu automatiquement
+ par les suppléments invité de VirtualBox pour permettre de récupérer des données
+ intéressantes de l'invité telles que le système exact de l'invité et le niveau
+ du service pack, la version installée des suppléments invité, les utilisateurs
+ connectés à l'OS invité, les statistiques réseau et davantage. Ces propriétés
+ prédéfinies ont toutes pour préfixe
+ <computeroutput>/VirtualBox/</computeroutput> et sont organisées en arborescence
+ hiérarchique de clés.</para>
+
+ <para>Certaines informations de l'exécution s'affichent quand vous sélectionnez
+ "Boîte de dialogue d'informations sur la session" du menu "Machine" de la
+ machine virtuelle.</para>
+
+ <para>Une manière plus flexible d'utiliser ce canal est de passer par la commande
+ <computeroutput>VBoxManage guestproperty</computeroutput>&#xA0;; voir
+ <xref linkend="vboxmanage-guestproperty" /> pour les détails. Par exemple,
+ pour voir <emphasis>toutes</emphasis> les propriétés invité disponible pour
+ une Vm donnée en fonction, listées avec leurs valeurs respectives, utilisez
+ ceci&#xA0;:<screen>$ VBoxManage guestproperty enumerate "Windows Vista III"
+VirtualBox Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2005-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+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
+ suppléments invité, timestamp: 1229098279269739000, flags:
+Name: /VirtualBox/GuestAdd/Revision, value: 40720,
+ timestamp: 1229098279345664000, flags:
+Name: /VirtualBox/GuestAdd/Version, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@,
+ timestamp: 1229098279479515000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxControl.exe, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279651731000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxHook.dll, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279804835000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxDisp.dll, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279880611000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxMRXNP.dll, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279882618000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxService.exe, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279883195000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxTray.exe, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279885027000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxGuest.sys, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279886838000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxMouse.sys, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279890600000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxSF.sys, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@r40720,
+ timestamp: 1229098279893056000, flags:
+Name: /VirtualBox/GuestAdd/Components/VBoxVideo.sys, value: @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@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>
+
+ <para>To query the value of a single property, use the "get" subcommand
+ like this:<screen>$ VBoxManage guestproperty get "Windows Vista III"
+ "/VirtualBox/GuestInfo/OS/Product"
+VirtualBox Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2005-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+Value: Windows Vista Business Edition</screen></para>
+
+ <para>Pour ajouter ou modifier des propriétés invité depuis l'invité, utilisez l'outil
+ <computeroutput>VBoxControl</computeroutput>. Cet outil est inclu dans les
+ suppléments invité de VirtualBox 2.2 ou supérieur. S'il est lancé avec un
+ invité Linux, cet outil exige les privilèges administrateur pour des raisons
+ de sécurité&#xA0;:<screen>$ sudo VBoxControl guestproperty enumerate
+VirtualBox suppléments invité Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2009-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+Name: /VirtualBox/GuestInfo/OS/Release, value: 2.6.28-18-generic,
+ timestamp: 1265813265835667000, flags: &lt;NULL&gt;
+Name: /VirtualBox/GuestInfo/OS/Version, value: #59-Ubuntu SMP Thu Jan 28 01:23:03 UTC 2010,
+ timestamp: 1265813265836305000, flags: &lt;NULL&gt;
+ ...</screen></para>
+
+ <para>Pour des besoins plus complexes, vous pouvez utiliser l'interface de
+ programmation de VirtualBox&#xA0;; voir <xref linkend="VirtualBoxAPI" />.</para>
+ </sect1>
+
+ <sect1 id="guestadd-guestcontrol">
+ <title>Contrôle de l'invité</title>
+
+ <para>À partir de la version 3.2, les suppléments invité de VirtualBox
+ permettent de démarrer les applications d'une VM à partir du système hôte.</para>
+
+ <para>Pour que cela fonctionne, l'application doit être installée dans l'invité&#xA0;;
+ pas besoin de logiciels supplémentaires sur l'hôte. De plus, une sortie en
+ mode texte (sur stdout et stderr) peut s'afficher sur l'hôte pour un traitement
+ ultérieur avec des options pour spécifier les droits des utilisateurs et
+ une valeur de timeout (en millisecondes) pour limiter le temps où l'application
+ peut s'exécuter.</para>
+
+ <para>Cette fonctionnalité peut être utilisée pour automatiser le déploiement
+ d'un logiciel dans l'invité.</para>
+
+ <para>À partir de la version 4.0, les suppléments invité pour Windows permettent
+ une mise à jour automatique (seulement si les suppléments invité 4.0 ou
+ supérieurs sont déjà installés). En outre, la copie de fichiers de l'hôte vers
+ l'invité ainsi que la création à distance de répertoires invités est disponible.</para>
+
+ <para>Pour utiliser ces fonctionnalités, utilisez la ligne de commande de
+ VirtualBox, voir <xref
+ linkend="vboxmanage-guestcontrol" />.</para>
+ </sect1>
+
+ <sect1>
+ <title>Transfert de mémoire</title>
+
+ <para>Dans des environnements serveur ayant beaucoup de VMs&#xA0;; les suppléments invité
+ peuvent être utilisés pour partager de la mémoire physique de l'hôte entre
+ plusieurs VMs, réduisant la quantité totale de mémoire utilisée par les VMs.
+ Si l'utilisation de la mémoire est le facteur limitatif et que des ressources
+ processeur sont encore disponibles, cela peut aider à empaqueter davantage
+ de VMs sur chaque hôte.</para>
+
+ <sect2 id="guestadd-balloon">
+ <title>Faire du ballon avec la mémoire</title>
+
+ <para>À partir de la version 3.2, les suppléments invité de VirtualBox
+ peuvent changer la quantité de mémoire hôte utilisée par une VM pendant
+ que la machine est en fonction. Vu comme cette fonction est implémentée,
+ elle s'appelle le "jeu de ballon de mémoire".</para>
+
+ <note>
+ <para>VirtualBox ne supporte le jeu de ballons avec la mémoire que sur
+ les hôtes 64 bits et il n'est pas supporté sur les hôtes Mac OS X.</para>
+ </note>
+
+ <para>En principe, pour changer la quantité de mémoire affectée à une
+ machine virtuelle, il faut éteindre la machine virtuelle complètement
+ et modifier ses paramètres. Avec le jeu de ballon de mémoire, la mémoire
+ affectée à une machine virtuelle peut être donnée à une autre machine
+ virtuelle sans devoir arrêter la machine.</para>
+
+ <para>Quand on veut faire du ballon avec la mémoire, les suppléments invité
+ de VirtualBox (qui tournent dans l'invité) affectent de la mémoire physique
+ du système d'exploitation invité au niveau noyau et il verrouille cette
+ mémoire dans l'invité. Cela garantit que l'invité n'utilisera plus cette
+ mémoire&#xA0;: aucune application de l'invité ne peut l'affecter, et le
+ noyau invité ne l'utilisera pas non plus. VirtualBox peut alors réutiliser
+ cette mémoire et la donner à une autre machine virtuelle.</para>
+
+ <para>La mémoire rendue disponible par ce jeu de ballon n'est pas disponible
+ pour être réutilisée par VirtualBox. Elle <emphasis>n'est pas</emphasis>
+ rendue sous forme de mémoire libre à l'hôte. Jouer au ballon avec la mémoire
+ à partir d'un invité en fonction n'augmentera pas la taille de la mémoire
+ libre non affectée de l'hôte. En effet, le jeu de ballon avec la mémoire
+ est donc un mécanisme de transfert de mémoire entre plusieurs machines virtuelles
+ pendant leur fonctionnement. Cela peut servir pour démarrer temporairement
+ une autre machine, ou, dans des environnements plus compliqués, pour une
+ gestion sophistiquée de la mémoire de nombreuses machines virtuelles en fonction
+ en parallèle, selon la façon dont la mémoire est utilisée par les invités.</para>
+
+ <para>Pour l'instant, le jeu de ballon avec la mémoire n'est supporté
+ que via VBoxManage. Utilisez la commande suivante pour agrandir ou réduire
+ la taille du ballon de mémoire dans une machine virtuelle en fonction où
+ les suppléments invité sont installés: <screen>VBoxManage controlvm "nom VM" guestmemoryballoon &lt;n&gt;</screen>où
+ <computeroutput>"nom VM"</computeroutput> est le nom ou l'UUID de la machine
+ virtuelle en question et <computeroutput>&lt;n&gt;</computeroutput> est
+ la quantité de mémoire à affecté à partir de l'invité, en mégaoctets. Voir <xref
+ linkend="vboxmanage-controlvm" /> pour plus d'informations.</para>
+
+ <para>Vous pouvez aussi définir un ballon par défaut qui sera automatiquement
+ récupéré sur la VM à chaque fois qu'elle démarrera avec la commande
+ suivante&#xA0;: <screen>VBoxManage modifyvm "nom VM" --guestmemoryballoon &lt;n&gt;</screen></para>
+
+ <para>Par défaut, aucun ballon de mémoire n'est affecté. C'est un paramètre
+ de VM comme les autres paramètres de <computeroutput>modifyvm</computeroutput>
+ et donc, on ne peut les définir que quand la machine est éteinte&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm" />.</para>
+ </sect2>
+
+ <sect2 id="guestadd-pagefusion">
+ <title>Fusion de page</title>
+
+ <para>Alors que le jeu de ballon avec la mémoire réduit simplement la
+ quantité de RAM disponible pour une VM, la fusion de page fonctionne différemment&#xA0;:
+ elle évite les doublons de mémoire entre plusieurs VMs identiques et en
+ fonction.</para>
+
+ <para>Dans un environnement serveur qui exécute plusieurs VMs identiques
+ (comme avec des systèmes d'exploitation identiques) sur le même hôte,
+ beaucoup de pages de mémoire sont identiques. La technologie de fusion
+ de page de VirtualBox, introduite avec VirtualBox 3.2, est une technique
+ pour identifier efficacement ces pages de mémoire identiques et les
+ nouvelle de partage entre plusieurs VMs.<note>
+ <para>VirtualBox ne supporte la fusion de page que sur des hôtes 64 bits
+ et il n'est pas supporté sur les hôtes Mac OS X. La fusion de page
+ ne fonctionne aujourd'hui qu'avec des invités Windows (2000 et
+ supérieur).</para>
+ </note></para>
+
+ <para>Plus les VMs se ressemblent sur un hôte donné, plus la fusion de page
+ peut réduire efficacement la quantité de mémoire hôte utilisée. Il fonctionne
+ donc mieux si toutes les VMs d'un hôte exécutent des systèmes d'exploitation
+ identiques (par exemple Windows XP Pack Service 2). Plutôt que d'avoir une
+ copie complète de chaque système d'exploitation dans chaque VM, la fusion de
+ page identifie les pages mémoire identiques utilisées par les systèmes
+ d'exploitation et elle élimine les doublons, partageant la mémoire de l'hôte
+ entre plusieurs machines ("deduplication"). Si une VM essaie de modifier
+ une page partagée avec d'autres VMs, une nouvelle page est de nouveau affectée
+ pour cette VM avec une copie de la page partagée ("copie à l'écriture").
+ Tout ceci est entièrement transparent pour la machine virtuelle.</para>
+
+ <para>Il se peut que vous soyez familier de ce genre de transfert de mémire
+ via d'autres produits d'hypervision qui appellent cette fonction le "partage
+ de page" ou le "fusion d'une même page". Cependant, la fusion de page est
+ très différente des autres solutions, dont les approches ont plusieurs
+ inconvénients&#xA0;:<orderedlist>
+ <listitem>
+ <para>Les hyperviseurs traditionnels analysent <emphasis>toute</emphasis>
+ la mémoire invité et calculent les sommes de contrôle (hachages) pour
+ chaque page de mémoire individuelle. Puis ils cherchent des endroits
+ avec des hachages identiques et comparent tout le contenu
+ de ces pages&#xA0;; si deux pages donnent le même hachage, il est très
+ probable que les pages soient identiques par leur contenu. Cela peut,
+ bien sûr, prendre du temps, surtout si le système n'est pas inactif.
+ La mémoire supplémentaire ne devient donc disponibles qu'après une
+ durée importante (cela peut prendre des heures voire des jours&#xA0;!). Pire,
+ ce genre d'algorithme de partage de page consomme en général beaucoup
+ de ressources et augmente la consommation par la
+ virtualisation jusqu'à 20%.</para>
+
+ <para>La fusion de page dans VirtualBox utilise une logique des
+ suppléments invité de VirtualBox pour identifier rapidement les cellules
+ mémoire les plus vraisemblablement identiques dans les VMs. Elle peut
+ faire la plupart des sauvegardes possibles des partages de pages
+ presqu'immédiatement et avec pratiquement aucune charge.</para>
+ </listitem>
+
+ <listitem>
+ <para>La fusion de page a aussi beaucoup moins de chances d'être
+ perdue avec de la mémoire identique qu'elle éliminera, pour apprendre
+ seulement quelques secondes plus tard que la mémoire va maintenant
+ changer, devant effectuer une réaffectation très gourmande et gênant
+ souvent le service.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Pour l'instant, la fusion de page ne peut être contrôlée qu'avec
+ VBoxManage et pendant qu'une VM est éteinte. Pour activer la fusion de page
+ pour une VM, utilisez
+ la commande suivante:<screen>VBoxManage modifyvm "nom VM" --pagefusion on</screen></para>
+
+ <para>Vous pouvez voir l'opération de fusion de page en utilisant des
+ métriques.
+ <computeroutput>RAM/VMM/Shared</computeroutput> affiche la quantité totale
+ de pages fusionnées, tandis que la métrique par VM
+ <computeroutput>Guest/RAM/Usage/Shared</computeroutput> renverra la quantité
+ de mémoire fusionnée d'une VM donnée. Merci de vous reporter à <xref
+ linkend="metrics" /> pour des informations sur la manière de demander des
+ métriques.</para>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_Installation.xml b/doc/manual/fr_FR/user_Installation.xml
new file mode 100644
index 00000000..c8998bf8
--- /dev/null
+++ b/doc/manual/fr_FR/user_Installation.xml
@@ -0,0 +1,868 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="installation">
+ <title>Détails sur l'installation</title>
+
+ <para>Comme l'installation de VirtualBox varie selon votre système d'exploitation
+ hôte, nous fournissons des instructions d'installation dans quatre chapitres
+ distincts, respectivement pour Windows, Mac OS X, Linux et Solaris.</para>
+
+ <sect1 id="installation_windows">
+ <title>Installation sur des hôtes Windows</title>
+
+ <sect2>
+ <title>Prérequis</title>
+
+ <para>Pour les différentes versions de Windows que nous supportons en tant
+ que systèmes d'exploitation hôtes, merci de vous reporter au <xref
+ linkend="hostossupport" />.</para>
+
+ <para>En outre, l'installeur Windows 1.1 ou supérieur doit être présent sur
+ votre système. Cela devrait être le cas si vous avez installé les mises
+ à jour récentes de Windows.</para>
+ </sect2>
+
+ <sect2>
+ <title>Effectuer l'installation</title>
+
+ <para>L'installation de VirtualBox peut se lancer <itemizedlist>
+ <listitem>
+ <para>soit en cliquant deux fois sur son fichier exécutable (contenant
+ les architectures 32 et 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>soit en entrant <screen>VirtualBox.exe -extract</screen></para>
+
+ <para>sur la ligne de commande. Cela va extraire les deux installeurs
+ dans un répertoire temporaire où vous trouverez ensuite les fichiers
+ .MSI habituels. Puis vous pouvez faire un
+ <screen>msiexec /i VirtualBox-&lt;version&gt;-MultiArch_&lt;x86|amd64&gt;.msi</screen>
+ pour lancer l'installation.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Dans tous les cas, ceci affichera la boîte de dialogue de bienvenue
+ dans l'installation et vous permet de choisir où installer VirtualBox et
+ les composants à installer. Outre l'application VirtualBox, les composants
+ suivants sont disponibles&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>Support USB</glossterm>
+
+ <glossdef>
+ <para>Ce paquet contient des pilotes spéciaux pour votre hôte Windows
+ dont a besoin VirtualBox pour supporter pleinement les périphériques
+ USB dans vos machines virtuelles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau</glossterm>
+
+ <glossdef>
+ <para>Ce paquet contient les pilotes réseaux supplémentaires pour
+ votre hôte Windows, dont a besoin VirtualBox pour supporter le
+ réseau bridge (pour que les cartes réseaux de votre VM soient
+ accessibles depuis d'autres machines de votre réseau physique).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Support Python</glossterm>
+
+ <glossdef>
+ <para>Ce paquet contient le support de scriptage Python pour l'API
+ de VirtualBox (voir <xref linkend="VirtualBoxAPI" />). Pour qu'ils
+ fonctionnent, une installation de Python sur Windows opérationnelle
+ est requise sur le système.<footnote>
+ <para>Voir, par exemple, <ulink
+ url="http://www.python.org/download/windows/">http://www.python.org/download/windows/</ulink>.</para>
+ </footnote></para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Selon votre configuration de Windows, il se peut que vous voyez des
+ avertissements de "pilotes non signés" ou équivalent. Merci d sélectionner
+ "Continuer" sur ces avertissements, sans quoi VirtualBox pourrait ne pas
+ fonctionner correctement après l'installation.</para>
+
+ <para>L'installeur va créer un groupe "VirtualBox" dans le menu "Démarrer"
+ de Windows qui vous permet de lancer l'application et d'accéder à sa
+ documentation.</para>
+
+ <para>Avec des paramètres standards, VirtualBox sera installé pour tous
+ les utilisateurs du système local. Si ce n'est pas ce que vous voulez,
+ vous devez appeler l'installeur en l'extrayant d'abord via <screen>VirtualBox.exe -extract</screen>
+ puis en faisant comme suit&#xA0;: <screen>VirtualBox.exe -msiparams ALLUSERS=2</screen>
+ ou <screen>msiexec /i VirtualBox-&lt;version&gt;-MultiArch_&lt;x86|amd64&gt;.msi ALLUSERS=2</screen>
+ sur les fichiers .MSI extraits. Ceci n'installera VirtualBox que pour
+ l'utilisateur actuel.</para>
+
+ <para>Si vous ne voulez pas installer toutes les fonctionnalités de VirtualBox,
+ vous pouvez régler le paramètre <computeroutput>ADDLOCAL</computeroutput>
+ en option pour nommer explicitement les fonctionnalités à installer. Les
+ fonctionnalités suivantes sont disponibles&#xA0;: <glosslist>
+ <glossentry>
+ <glossterm>VBoxApplication</glossterm>
+
+ <glossdef>
+ <para>Binaires principaux de VirtualBox.<note>
+ <para>Il ne faut pas que cette fonctionnalité soit absente car
+ elle contient l'ensemble de fichiers minimum pour que
+ l'installation de VirtualBox fonctionne.</para>
+ </note></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VBoxUSB</glossterm>
+
+ <glossdef>
+ <para>Support USB.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VBoxNetwork</glossterm>
+
+ <glossdef>
+ <para>Tout le support réseau&#xA0;; y compris les fonctionnalités
+ VBoxNetworkFlt et VBoxNetworkAdp (voir ci-dessous).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VBoxNetworkFlt</glossterm>
+
+ <glossdef>
+ <para>Support du réseau bridgé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VBoxNetworkAdp</glossterm>
+
+ <glossdef>
+ <para>Support du réseau Host-only.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>VBoxPython</glossterm>
+
+ <glossdef>
+ <para>Support Python.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>Par exemple, pour n'installer que le support USB avec les
+ binaires principaux, faites un&#xA0;: <screen>VirtualBox.exe -msiparams ADDLOCAL=VBoxApplication,VBoxUSB</screen>
+ ou un <screen>msiexec /i VirtualBox-&lt;version&gt;-MultiArch_&lt;x86|amd64&gt;.msi ADDLOCAL=VBoxApplication,VBoxUSB</screen></para>
+ </sect2>
+
+ <sect2>
+ <title>Désinstallation</title>
+
+ <para>Comme VirtualBox utilise l'installeur standard de Microsoft Windows,
+ vous pouvez désinstaller VirtualBox en sécurité n'importe quand en choisissant
+ l'entrée du programme dans le menu "Ajouter/supprimer des programmes" du
+ panneau de configuration de Windows.</para>
+ </sect2>
+
+ <sect2>
+ <title>Installation sans efforts</title>
+
+ <para>Vous pouvez effectuer des installations sans efforts en utilisant
+ le support MSI standard.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Installation sur des hôtes Mac OS X</title>
+
+ <sect2>
+ <title>Effectuer l'installation</title>
+
+ <para>Pour les hôtes Mac OS X, VirtualBox est dans un fichier image de
+ disque (<computeroutput>dmg</computeroutput>). Effectuez les étapes
+ suivantes&#xA0;: <orderedlist>
+ <listitem>
+ <para>Cliquez deux fois sur ce fichier pour monter son contenu.</para>
+ </listitem>
+
+ <listitem>
+ <para>Une fenêtre s'ouvrira, vous disant de cliquer deux fois
+ sur le fichier de l'installeur
+ <computeroutput>VirtualBox.mpkg</computeroutput> affiché dans cette
+ fenêtre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ceci démarrera l'installeur, qui vous permettra de
+ sélectionner où installer VirtualBox.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Après l'installation, vous pouvez voir une icône VirtualBox dans le
+ dossier "Applications" du Finder.</para>
+ </sect2>
+
+ <sect2>
+ <title>Désinstallation</title>
+
+ <para>Pour désinstaller VirtualBox, réouvrez le fichier image de disque (dmg)
+ et cliquez deux fois sur l'icône Désinstaller dedans.</para>
+ </sect2>
+
+ <sect2>
+ <title>Installation non interactive</title>
+
+ <para>Pour effectuer une installation non interactive de VirtualBox, vous
+ pouvez utiliser la version en ligne de commande de l'installeur.</para>
+
+ <para>Montez le fichier image du disque (dmg) comme décrit dans
+ l'installation normale. Ouvrez ensuite une session de terminal et exécutez&#xA0;:</para>
+
+ <screen>sudo installer -pkg /Volumes/VirtualBox/VirtualBox.mpkg \
+ -target /Volumes/Macintosh\ HD</screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="install-linux-host">
+ <title>Installing sur des hôtes Linux</title>
+
+ <sect2>
+ <title>Prérequis</title>
+
+ <para>Pour les diverses versions de Linux que nous supportons comme systèmes
+ d'exploitation hôtes, merci de vous reporter au <xref
+ linkend="hostossupport" />.</para>
+
+ <para>Vous devrez installer les paquets suivants sur votre système Linux
+ avant de commencer l'installation (certains systèmes feront cela pour
+ vous automatiquement quand vous installerez VirtualBox)&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Qt 4.6.2 ou supérieur&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>SDL 1.2.7 ou supérieur (cette bibliothèque graphique s'appelle
+ en général <computeroutput>libsdl</computeroutput> ou équivalent).</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Pour être précis, ces paquets ne sont requis que si voulez lancer
+ les interfaces graphiques de VirtualBox. En particulier,
+ <computeroutput>VirtualBox</computeroutput>, le gestionnaire graphique
+ de VirtualBox, a besoin de Qt et de SDL&#xA0;;
+ <computeroutput>VBoxSDL</computeroutput>, notre interface graphique
+ simplifiée, exige seulement SDL. Inversement, si vous ne voulez que
+ <computeroutput>VBoxHeadless</computeroutput>, ni Qt ni SDL ne sont
+ requis.</para>
+ </note>
+ </sect2>
+
+ <sect2 id="externalkernelmodules">
+ <title>Le module noyau de VirtualBox</title>
+
+ <para>VirtualBox utilise un module spécial du noyau appelé
+ <computeroutput>vboxdrv</computeroutput> pour effectuer des affectations de
+ mémoire physique et contrôler le processeur pour exécuter les systèmes
+ invités. Sans ce module du noyau, vous pouvez utiliser le gestionnaire
+ de VirtualBox pour configurer des machines virtuelles mais elles ne démarreront
+ pas. En outre, il existe des modules noyau
+ <computeroutput>vboxnetflt</computeroutput> et
+ <computeroutput>vboxnetadp</computeroutput> requis pour les fonctionnalités
+ réseau plus avancées de VirtualBox.</para>
+
+ <para>Le module noyau de VirtualBox est automatiquement installé sur votre
+ système quand vous installez VirtualBox. Pour le maintenir avec les futures
+ mises à jour du noyau, pour les distributions Linux qui le permettent --
+ la plupart de celles actuelles -- nous recommandons d'installer
+ Dynamic Kernel Module Support
+ (DKMS)<footnote>
+ <para>Voir <ulink
+ url="http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support</ulink>
+ pour une introduction.</para>
+ </footnote>. Cet environnement vous aide à construire et à mettre à jour
+ les modules du noyau.</para>
+
+ <para>Si DKMS n'est pas déjà installé, exécutez une des procédures suivantes&#xA0;:
+ <itemizedlist>
+ <listitem>
+ <para>Sur un système Ubuntu&#xA0;:</para>
+
+ <screen>sudo apt-get install dkms</screen>
+ </listitem>
+
+ <listitem>
+ <para>Sur un système Fedora&#xA0;:<screen>yum install dkms</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Sur un système Mandriva ou Mageia&#xA0;:<screen>urpmi dkms</screen></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Si DKMS est disponible et installé, le module du noyau VirtualBox
+ devrait toujours fonctionner automatiquement et il sera automatiquement
+ reconstruit si vous mettez à jour le noyau de votre hôte.</para>
+
+ <para>Sinon, il n'y a que deux situations où vous devrez vous préoccuper
+ du module noyau&#xA0;:<orderedlist>
+ <listitem>
+ <para>L'installation échoue dès le départ. Cela signifie probablement
+ que votre système Linux n'est pas prêt à construire des modules noyau
+ externes.</para>
+
+ <para>La plupart des distributions Linux peuvent être paramétrées
+ simplement en installant les bons paquets - en principe il s'agit
+ du compilateur GNU (GCC), GNU Make (make) et des paquets contenant
+ les fichiers d'en-tête de votre noyau - et en s'assurant que toutes
+ les mises à jour du système sont installées et que le système
+ exécute le noyau le plus récent proposé par la distribution.
+ <emphasis>Les numéros de version des paquets des fichiers d'en-tête
+ doivent être les mêmes que celui du noyau que vous utilisez.</emphasis></para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Avec les versions Debian et Ubuntu, vous devez installer
+ la bonne version de
+ <computeroutput>linux-headers</computeroutput> et s'il existe,
+ le paquet <computeroutput>linux-kbuild</computeroutput>. Les
+ versions actuelles d'Ubuntu devraient avoir installé les bons
+ paquets par défaut.</para>
+ </listitem>
+
+ <listitem>
+ <para>Dans les versions de Debian et d'Ubuntu encore plus anciennes,
+ vous devez installer la bonne version du paquet
+ <computeroutput>kernel-headers</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les systèmes Fedora et Redhat, le paquet est
+ <computeroutput>kernel-devel</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur SUSE et openSUSE Linux, vous devez installer les bonnes
+ versions des paquets <computeroutput>kernel-source</computeroutput>
+ et <computeroutput>kernel-syms</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez construit votre propre noyau, vous devrez
+ vous assurer d'avoir installé toutes les en-têtes requises et
+ d'autres fichiers au bon endroit pour construire les modules externes.
+ Les détails sur la manière de faire cela dépendent de la façon
+ dont vous avez construit votre noyau et si vous n'êtes pas sûr,
+ vous devriez consulter la documentation que vous avez suivie pour
+ le construire.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>Le noyau de votre hôte Linux a été mis à jour et DKMS n'est
+ pas installé. Dans ce cas, le module du noyau devra être
+ réinstallé en exécutant (en tant qu'administrateur)&#xA0;:</para>
+
+ <screen>/etc/init.d/vboxdrv setup</screen>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Effectuer l'installation</title>
+
+ <para>VirtualBox est disponible de base dans un certain nombre de formats
+ de paquet pour diverses distributions Linux classiques (voir <xref linkend="hostossupport" />
+ pour les détails). En outre, un installeur générique alternatif
+ (.run) devrait fonctionner sur la plupart des distributions Linux.</para>
+
+ <sect3>
+ <title>Installer VirtualBox à partir d'un paquet Debian/Ubuntu</title>
+
+ <para>Tout d'abord, téléchargez le paquet adapté à votre distribution.
+ Les exemples suivants supposent que vous installez sur un système
+ Ubuntu Raring 32 bits. Utilisez <computeroutput>dpkg</computeroutput>
+ pour installer le paquet Debian&#xA0;:</para>
+
+ <screen>sudo dpkg -i VirtualBox-4.3_@VBOX_VERSION_STRING@_Ubuntu_raring_i386.deb</screen>
+
+ <para>On vous demandera d'accepter la licence d'utilisation Personelle
+ et d'évaluation de VirtualBox. Sauf si vous répondez "oui" l'installation
+ sera annulée.</para>
+
+ <para>L'installeur cherchera aussi un module noyau VirtualBox adapté à
+ votre noyau. Le paquet comprend des modules précompilés pour la plupart
+ des configurations de noyau classiques. Si aucun module noyau adapté
+ n'est trouvé, le script d'installation essaie de construire un module
+ lui-même. Si le processus de construction ne réussit pas, on vous affichera
+ un avertissement et le paquet ne sera pas configuré. Merci de jeter un
+ &#x153;il sur <computeroutput>/var/log/vbox-install.log</computeroutput>
+ pour voir pourquoi la compilation a échoué. Il se peut que vous deviez installer
+ les en-têtes de Linux appropriées (voir <xref
+ linkend="externalkernelmodules" />). Après avoir corrigé les problèmes,
+ faites <screen>sudo /etc/init.d/vboxdrv setup</screen>Ceci
+ démarrera un nouvel essai de construction du module.</para>
+
+ <para>Si un module de noyau convenable a été trouvé dans le paquet, ou
+ si le module a été construit avec succès, le script d'installation
+ essaiera de charger ce module. Si ceci échoue, merci de voir <xref
+ linkend="ts_linux-kernelmodule-fails-to-load" /> pour plus
+ d'informations.</para>
+
+ <para>Une fois que VirtualBox s'est installé et configuré avec succès,
+ vous pouvez le démarrer en sélectionnant "VirtualBox" dans votre menu
+ démarrer ou en ligne de commande (voir <xref linkend="startingvboxonlinux" />).</para>
+ </sect3>
+
+ <sect3>
+ <title>Utiliser l'installeur alternatif (VirtualBox.run)</title>
+
+ <para>L'installeur alternatif effectue les étapes suivantes&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Il déballe les fichiers de l'application dans le répertoire
+ cible, <screen>/opt/VirtualBox/</screen> qu'on ne peut pas modifier.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il construit les modules noyau de VirtualBox
+ (<computeroutput>vboxdrv</computeroutput>,
+ <computeroutput>vboxnetflt</computeroutput> et
+ <computeroutput>vboxnetadp</computeroutput>) et il les installe.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il crée
+ <computeroutput>/etc/init.d/vboxdrv</computeroutput>, un script
+ d'installation pour démarrer le module noyau de VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il crée un nouveau groupe système appelé
+ <computeroutput>vboxusers</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il crée des liens symboliques
+ <computeroutput>/usr/bin</computeroutput> vers un script shell
+ (<computeroutput>/opt/VirtualBox/VBox</computeroutput>) qui fait
+ des vérifications de propreté et qui répartit les exécutables finaux,
+ <computeroutput>VirtualBox</computeroutput>,
+ <computeroutput>VBoxSDL</computeroutput>,
+ <computeroutput>VBoxVRDP</computeroutput>,
+ <computeroutput>VBoxHeadless</computeroutput> et
+ <computeroutput>VBoxManage</computeroutput></para>
+ </listitem>
+
+ <listitem>
+ <para>Il crée
+ <computeroutput>/etc/udev/rules.d/60-vboxdrv.rules</computeroutput>,
+ un fichier de description pour udev, s'il est présent, pour rendre les
+ périphériques USB accessibles par tous les utilisateurs du groupe
+ <computeroutput>vboxusers</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il écrit le répertoire d'installation
+ <computeroutput>/etc/vbox/vbox.cfg</computeroutput>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>L'installeur doit être exécuté en tant qu'administrateur, soit avec
+ <computeroutput>install</computeroutput> soit avec
+ <computeroutput>uninstall</computeroutput>, en premier
+ paramètre.</para>
+
+ <screen>sudo ./VirtualBox.run install</screen>
+
+ <para>Ou si vous n'avez pas de commande "sudo" disponible, lancez ceci plutôt
+ en tant qu'administrateur&#xA0;:<screen>./VirtualBox.run install</screen></para>
+
+ <para>Après cela, vous devez mettre tous les utilisateurs qui devraient
+ pouvoir accéder à des périphériques USB depuis des invités VirtualBox
+ dans le groupe <computeroutput>vboxusers</computeroutput>, soit
+ via les outils de gestion graphiques, soit en lançant la commande
+ suivante en tant qu'administrateur&#xA0;:</para>
+
+ <screen>sudo usermod -a -G vboxusers username</screen>
+
+ <para><note>
+ <para>La commande <computeroutput>usermod</computeroutput> de
+ certaines anciennes distributions Linux ne supporte pas l'option
+ <computeroutput>-a</computeroutput> (qui ajoute l'utilisateur au groupe
+ donné sans affecter l'appartenance aux autres groupes). Dans ce cas, cherchez
+ les groupes actuels du user avec la commande
+ <computeroutput>groups</computeroutput> et ajoutez tous ces
+ groupes dans une liste séparée par des virgules à la ligne de
+ commande dans l'option
+ <computeroutput>-G</computeroutput>, comme ceci&#xA0;:
+ <computeroutput>usermod -G group1,group2,vboxusers
+ username</computeroutput>.</para>
+ </note></para>
+ </sect3>
+
+ <sect3>
+ <title>Effectuer une installation manuelle</title>
+
+ <para>Si, pour une raison quelconque, vous ne pouvez pas utiliser l'installeur
+ en script shell décrit précédemment, vous pouvez aussi effectuer une
+ installation manuelle. Appelez l'installeur comme ceci&#xA0;:</para>
+
+ <screen>./VirtualBox.run --keep --noexec</screen>
+
+ <para>Ceci déballera tous les fichiers nécessaires à l'installation dans le
+ répertoire <computeroutput>install</computeroutput> sous le répertoire
+ actuel. Les fichiers de l'application VirtualBox sont contenus dans
+ <computeroutput>VirtualBox.tar.bz2</computeroutput> que vous pouvez
+ déballer dans n'importe quel répertoire de votre système. Par exemple&#xA0;:</para>
+
+ <screen>sudo mkdir /opt/VirtualBox
+sudo tar jxf ./install/VirtualBox.tar.bz2 -C /opt/VirtualBox</screen>
+
+ <para>ou en tant qu'administrateur&#xA0;:<screen>mkdir /opt/VirtualBox
+tar jxf ./install/VirtualBox.tar.bz2 -C /opt/VirtualBox</screen></para>
+
+ <para>Les sources du module noyau de VirtualBox sont fournies dans le
+ répertoire <computeroutput>src</computeroutput>. Pour construire le
+ module, allez dans le répertoire et lancez</para>
+
+ <screen>make</screen>
+
+ <para>Si tout se construit correctement, lancez la commande suivante pour
+ installer le module dans le bon répertoire de modules&#xA0;:</para>
+
+ <screen>sudo make install</screen>
+
+ <para>Si vous m'avez pas sudo, passez en compte administrateur et lancez
+ <screen>make install</screen></para>
+
+ <para>Le module de noyau VirtualBox a besoin d'un n&#x153;ud de périphérique
+ pour fonctionner. La commande make ci-dessus vous dira comment créer
+ le n&#x153;ud de périphérique selon votre système Linux. La procédure
+ est légèrement différente pour une installation Linux classique avec le
+ répertoire <computeroutput>/dev</computeroutput>, un système avec
+ <computeroutput>devfs</computeroutput>, maintenant obsolète, et un
+ système Linux moderne avec <computeroutput>udev</computeroutput>.</para>
+
+ <para>Sur certaines distributions Linux, vous pourriez rencontrer des
+ difficultés pour construire le module. Vous devrez analyser les messages
+ d'erreur du système de construction pour trouver la cause des problèmes.
+ En général, assurez-vous que les sources du noyau Linux actuel sont
+ utilisées pour le processus de construction.</para>
+
+ <para>Remarquez que le n&#x153;ud de périphérique
+ <computeroutput>/dev/vboxdrv</computeroutput> du module noyau doit appartenir
+ à root:root et n'être autorisé en lecture/écriture que pour l'utilisateur.</para>
+
+ <para>Ensuite, vous devrez installer le script d'initialisation du système
+ pour le module du noyau&#xA0;:<screen>cp /opt/VirtualBox/vboxdrv.sh /etc/init.d/vboxdrv</screen>(en supposant que
+ vous avez installé VirtualBox dans le répertoire
+ <computeroutput>/opt/VirtualBox</computeroutput>) et activé le script
+ d'initialisation en utilisant la méthode adaptée à votre distribution.
+ Vous devriez créer un fichier de configuration pour VirtualBox&#xA0;:<screen>mkdir /etc/vbox
+echo INSTALL_DIR=/opt/VirtualBox &gt; /etc/vbox/vbox.cfg</screen>et, par commodité,
+créer les liens symboliques suivants&#xA0;:</para>
+
+ <screen>ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VirtualBox
+ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VBoxManage
+ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VBoxHeadless
+ln -sf /opt/VirtualBox/VBox.sh /usr/bin/VBoxSDL</screen>
+ </sect3>
+
+ <sect3>
+ <title>Mettre à jour et désinstaller VirtualBox</title>
+
+ <para>Avant de mettre à jour ou de désinstaller VirtualBox, vous devez
+ fermer toutes les machines virtuelles actuellement en fonction et quitter
+ les applications VirtualBox ou VBoxSVC. Pour mettre à jour VirtualBox,
+ lancez simplement l'installeur de la version à jour. Pour désinstaller
+ VirtualBox, appelez l'installeur comme ceci&#xA0;: <screen>sudo ./VirtualBox.run uninstall</screen>
+ ou, en tant qu'administrateur<screen>./VirtualBox.run uninstall</screen>.
+ À partir de la version 2.2.2, vous pouvez désinstaller le paquet .run en
+ appelant <screen>/opt/VirtualBox/uninstall.sh</screen>Pour désinstaller
+ VirtualBox à la main, inversez simplement les étapes de l'installation
+ manuelle.</para>
+ </sect3>
+
+ <sect3>
+ <title>Installation automatique des paquets Debian</title>
+
+ <para>Les paquets Debian solliciteront une intervention de l'utilisateur
+ lors de la première installation. On utilise le système debconf pour
+ effectuer cette tâche. Pour empêcher toute intervention de l'utilisateur
+ pendant l'installation, vous pouvez définir des valeurs par défaut. Un
+ fichier <computeroutput>vboxconf</computeroutput> peut contenir les
+ paramètres de debconf suivants&#xA0;: <screen>virtualbox virtualbox/module-compilation-allowed boolean true
+virtualbox virtualbox/delete-old-modules boolean true</screen>La première ligne
+
+ permet la compilation du module noyau vboxdrv si aucun module n'a été trouvé
+ pour le noyau actuel. La deuxième ligne permet au paquet d'effacer
+ les anciens modules vboxdrv compilés par des installations précédentes.</para>
+
+ <para>Ces paramètres par défaut peuvent être appliqués avec
+ <screen>debconf-set-selections vboxconf</screen> avant l'installation du
+ paquet Debian VirtualBox.</para>
+
+ <para>De plus, il existe des options de configuration classiques que vous
+ pouvez définir avant l'installation, décrites au <xref
+ linkend="linux_install_opts" />.</para>
+ </sect3>
+
+ <sect3>
+ <title>Installation automatique des paquets .rpm</title>
+
+ <para>Le format .rpm n'offre pas de système de configuration comparable
+ au système debconf. Voir <xref
+ linkend="linux_install_opts" /> pour savoir comment définir cartaines
+ options d'installation classiques fournies par VirtualBox.</para>
+ </sect3>
+
+ <sect3 id="linux_install_opts">
+ <title>Options d'installation automatique</title>
+
+ <para>Pour configurer le processus d'installation de nos paquets .deb et
+ .rpm, vous pouvez créer un fichier de réponses appelé
+ <computeroutput>/etc/default/virtualbox</computeroutput>. La génération
+ automatique de la règle udev peut être empêchée par le paramètre suivant&#xA0;:
+ <screen>INSTALL_NO_UDEV=1</screen> La création du groupe vboxusers peut
+ être empêchée avec <screen>INSTALL_NO_GROUP=1</screen>
+ Si la ligne <screen>INSTALL_NO_VBOXDRV=1</screen> est spécifiée, l'installeur
+ du paquet n'essaiera pas de construire le module noyau
+ <computeroutput>vboxdrv</computeroutput> si aucun module adapté au noyau
+ actuel n'a été trouvé.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Le groupe vboxusers</title>
+
+ <para>Les installeurs pour Linux créent le groupe d'utilisateurs système
+ <computeroutput>vboxusers</computeroutput> pendant l'installation. Tous les
+ utilisateurs du szstème qui vont utiliser les périphériques USB depuis des
+ invités VirtualBox doivent être membres de ce groupe. Un utilisateur peut
+ devenir membre du groupe
+ <computeroutput>vboxusers</computeroutput> via l'outil graphique de gestion
+ des utilisateurs/groupes ou en ligne de commande avec</para>
+
+ <screen>sudo usermod -a -G vboxusers nomutilisateur</screen>
+
+ </sect2>
+ <sect2 id="startingvboxonlinux">
+ <title>Démarrer VirtualBox sur Linux</title>
+
+ <para>La façon la plus simple de démarrer un programme VirtualBox est de
+ lancer le programme de votre choix (<computeroutput>VirtualBox</computeroutput>,
+ <computeroutput>VBoxManage</computeroutput>,
+ <computeroutput>VBoxSDL</computeroutput> ou
+ <computeroutput>VBoxHeadless</computeroutput>) à partir d'un terminal. Ce
+ sont des liens symboliques vers <computeroutput>VBox.sh</computeroutput>
+ qui démarrent pour vous le programme nécessaire.</para>
+
+ <para>Les instructions détaillées suivantes ne devraient vous intéresser que
+ si vous souhaitez exécuter VirtualBox sans l'installer préalablement. Vous
+ devriez commencer par compiler le module noyau
+ <computeroutput>vboxdrv</computeroutput> (voir ci-d:ssus) et l'insérer dans
+ le noyau Linux. VirtualBox consiste en un démon de service (<computeroutput>VBoxSVC</computeroutput>)
+ et plusieurs applications. Le démon est démarré automatiquement si nécessaire.
+ Toutes les applications VirtualBox communiqueront avec le démon par les
+ sockets du démon local d'Unix. Il peut y avoir plusieurs
+ instances de démon sous différents comptes utilisateurs et les applications
+ peuvent ne communiquer qu'avec le démon en fonction sous le compte utilisateur
+ en tant qu'application. La socket de domaine locale réside dans un
+ sous-répertoire du répertoire des fichiers temporaires de votre ystème,
+ appelé <computeroutput>.vbox-&lt;username&gt;-ipc</computeroutput>. En cas
+ de problèmes de communication ou de problèmes au démarrage du serveur, vous
+ pouvez essayer de supprimer ce répertoire.</para>
+
+ <para>Toutes les applications de VirtualBox
+ (<computeroutput>VirtualBox</computeroutput>,
+ <computeroutput>VBoxSDL</computeroutput>,
+ <computeroutput>VBoxManage</computeroutput> et
+ <computeroutput>VBoxHeadless</computeroutput>) exigent que le répertoire
+ de VirtualBox soit dans le chemin de la bibliothèque&#xA0;:</para>
+
+ <screen>LD_LIBRARY_PATH=. ./VBoxManage showvminfo "Windows XP"</screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="install-solaris-host">
+ <title>Installation sur les hôtes Solaris</title>
+
+ <para>Pour les versions spécifiques de Solaris que nous supportons comme
+ systèmes d'exploitation hôtes, merci de vous reporter au <xref
+ linkend="hostossupport" />.</para>
+
+ <para>Si vous avez déjà une instance installée de VirtualBox sur votre hôte
+ Solaris, merci de la désinstaller avant d'installer une nouvelle instance.
+ Reportez-vous à <xref linkend="uninstall-solaris-host" /> pour les
+ instructions de désinstallation.</para>
+
+ <sect2>
+ <title>Effectuer l'installation</title>
+
+ <para>VirtualBox est disponible en paquet Solaris standard. Téléchargez
+ le paquet SunOS VirtualBox qui comprend les versions 32 et 64 bits de
+ VirtualBox. <emphasis>L'installation dojt se faire en tant qu'administrateur
+ et depuis l'espace global</emphasis> car l'installeur de VirtualBox charge
+ des pilotes noyau qui ne peuvent pas l'être depuis des espaces non globaux.
+ Pour vérifier là où vous êtes actuellement, lancez la commande
+ <computeroutput>zonename</computeroutput>. Exécutez les
+ commandes suivantes&#xA0;:</para>
+
+ <screen>gunzip -cd VirtualBox-@VBOX_VERSION_STRING@-SunOS.tar.gz | tar xvf -</screen>
+
+ <para>À partir de VirtualBox 3.1, le paquet noyau de VirtualBox n'est plus
+ distinct et il a été intégré au paquet principal.
+ Installez le paquet VirtualBox en utilisant&#xA0;:</para>
+
+ <screen>pkgadd -d VirtualBox-@VBOX_VERSION_STRING@-SunOS.pkg</screen>
+
+ <note>
+ <para>Si vous utilisez les Espaces Solaris, pour n'installer VirtualBox
+ que dans celui actuel et pas dans une autre, utilisez
+ <computeroutput>pkgadd -G</computeroutput>. Pour plus d'informations,
+ reportez-vous au manuel de <computeroutput>pkgadd</computeroutput>&#xA0;;
+ voir aussi <xref linkend="solaris-zones" />.</para>
+ </note>
+
+ <para>L'installeur vous demandera alors d'entrer le paquet que vous voulez
+ installer. Choisissez "1" ou "tous" et poursuivez. Ensuite, l'installeur
+ vous demandera si vous voulez autoriser l'exécution du script postinstall.
+ Choisissez "y" et poursuivez, car il est fondamental d'exécuter ce script
+ qui installe le module noyau de VirtualBox. Suite à cette confirmation,
+ l'installeur installra VirtualBox et exécutera le script de paramétrage
+ postinstall.</para>
+
+ <para>Une fois que le script postinstall a été exécuté, votre installation
+ est maintenant terminée. Vous pouvez maintenant effacer en toute sécurité
+ de votre système le paquet décompressé et les fichiers
+ <computeroutput>autoresponse</computeroutput>.
+ VirtualBox devrait être installé dans
+ <computeroutput>/opt/VirtualBox</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Le groupe vboxuser</title>
+
+ <para>À partir de VirtualBox 4.1, l'installeur crée un groupe d'utilisateurs
+ système <computeroutput>vboxuser</computeroutput> pendant l'installation
+ sur les hôtes Solaris qui supportent les fonctionnalités USB exigées par
+ VirtualBox. Tous les utilisateurs système qui vont utiliser des périphériques
+ USB à partir des invités dans VirtualBox doivent faire partie de ce groupe.
+ Un utilisateur peut devenir membre de ce
+ groupe avec les outils de gestion graphiques des utilisateurs/groupes ou,
+ en ligne de commande, en exécutant en tant qu'administrateur&#xA0;:</para>
+
+ <screen>usermod -G vboxuser username</screen>
+
+ <para>Remarquez que l'ajout d'un utilisateur actif à ce groupe exigera que
+ l'utilisateur se déconnecte et se reconnecte. Vous devriez faire cela à la
+ main après avoir installé avec succès le paquet.</para>
+ </sect2>
+
+ <sect2>
+ <title>Démarrer VirtualBox sur Solaris</title>
+
+ <para>La façon la plus simple de démarrer un programme VirtualBox est de
+ lancer le programme de votre choix (<computeroutput>VirtualBox</computeroutput>,
+ <computeroutput>VBoxManage</computeroutput>,
+ <computeroutput>VBoxSDL</computeroutput> ou
+ <computeroutput>VBoxHeadless</computeroutput>) à partir d'un terminal. Ce
+ sont des liens symboliques vers <computeroutput>VBox.sh</computeroutput>
+ qui démarre pour vous le programme requis.</para>
+
+ <para>Vous pouvez aussi appeler directement les programmes souhaités depuis
+ <computeroutput>/opt/VirtualBox</computeroutput>. L'utilisation des liens
+ fournis est plus facile car vous n'êtes pas obligé de taper le chemin complet.</para>
+
+ <para>Vous pouvez configurer certains éléments de l'interface graphique
+ <computeroutput>VirtualBox</computeroutput> en Qt tels que la police et
+ les couleurs en exécutant <computeroutput>VBoxQtconfig</computeroutput>
+ à partir du terminal.</para>
+ </sect2>
+
+ <sect2 id="uninstall-solaris-host">
+ <title>Désinstallation</title>
+
+ <para>La désinstallation de VirtualBox sur Solaris qécessite les droits
+ d'administrateur. Pour effectuer la désinstallation, démarrez une session
+ administrateur en terminal et exécutez&#xA0;:</para>
+
+ <screen>pkgrm SUNWvbox</screen>
+
+ <para>Après confirmation, ceci supprimera VirtualBox de votre système.</para>
+
+ <para>Si vous désinstallez VirtualBox version 3.0 ou inférieur, vous devez
+ supprimer le paquet d'interface noyau VirtualBox, exécutez&#xA0;:</para>
+
+ <para><screen>pkgrm SUNWvboxkern</screen></para>
+ </sect2>
+
+ <sect2>
+ <title>Installation sans efforts</title>
+
+ <para>Pour effectuer une installation non interactive de VirtualBox,
+ nous avons créé un fichier de réponses appelé
+ <computeroutput>autoresponse</computeroutput> qu'utilisera l'installeur pour
+ répondre à ses questions plutôt que de vous les poser.</para>
+
+ <para>Extrayez le paquet tar.gz comme décrit dans l'installation normale.
+ Puis ouvrez une session administrateur en terminal et exécutez&#xA0;:</para>
+
+ <screen>pkgadd -d VirtualBox-@VBOX_VERSION_STRING@-SunOS-x86 -n -a autoresponse SUNWvbox</screen>
+
+ <para>Pour effectuer une désinstallation non interactive, ouvrez une session
+ administrateur en terminal et exécutez&#xA0;:</para>
+
+ <screen>pkgrm -n -a /opt/VirtualBox/autoresponse SUNWvbox</screen>
+ </sect2>
+
+ <sect2 id="solaris-zones">
+ <title>Configurer un espace pour exécuter VirtualBox</title>
+
+ <para>En supposant que VirtualBox a déjà été installé dans votre espace,
+ vous devez donner au n&#x153;ud de périphérique de VirtualBox un accès à la
+ zone. Ceci se fait en effectuant les étapes suivantes. Démarrez une
+ session administrateur en terminal et exécutez&#xA0;:</para>
+
+ <screen>zonecfg -z vboxzone</screen>
+
+ <para>Remplacez "vboxzone" par le nom de la zone où vous souhaitez lancer
+ VirtualBox.</para>
+
+ <para>Dans l'invite <computeroutput>zonecfg</computeroutput>, ajoutez la
+ ressource <computeroutput>device</computeroutput> et les propriétés
+ <computeroutput>match</computeroutput> à l'espace. Voici comment on peut
+ faire&#xA0;:</para>
+
+ <screen>zonecfg:vboxzone&gt;add device
+zonecfg:vboxzone:device&gt;set match=/dev/vboxdrv
+zonecfg:vboxzone:device&gt;end
+zonecfg:vboxzone&gt;add device
+zonecfg:vboxzone:device&gt;set match=/dev/vboxdrvu
+zonecfg:vboxzone:device&gt;end
+zonecfg:vboxzone&gt;verify
+zonecfg:vboxzone&gt;exit</screen>
+
+ <para>Si vous exécutez VirtualBox 2.2.0 ou supérieur sur des hôtes Solaris
+ 11 ou supérieur, vous pouvez aussi ajouter un périphérique pour
+ <computeroutput>/dev/vboxusbmon</computeroutput>, identique à ce qui est
+ indiqué ci-dessus. Cela ne s'applique pas aux hôtes Solaris 10 à cause de
+ l'absence du support USB.</para>
+
+ <para>Ensuite, redémarrez l'espace en utilisant
+ <computeroutput>zoneadm</computeroutput> et vous devriez pouvoir lancer
+ VirtualBox depuis l'espace configuré.</para>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_Introduction.xml b/doc/manual/fr_FR/user_Introduction.xml
new file mode 100644
index 00000000..285dc040
--- /dev/null
+++ b/doc/manual/fr_FR/user_Introduction.xml
@@ -0,0 +1,1906 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="Introduction">
+ <title>Premiers pas</title>
+
+ <para>Bienvenue à @VBOX_PRODUCT@!</para>
+
+ <para>VirtualBox est une application de virtualisation de plateformes croisées.
+ Qu'est-ce que cela veut dire&#xA0;? D'une part, il s'installe sur vos ordinateurs
+ ordinateurs existant basés sur Intel ou AMD, qu'ils soient sous les systèmes
+ d'exploitation Windows, Mac, Linux ou Solaris. D'autre part, il augmente la
+ capacité de votre ordinateur existant pour qu'il puisse lancer plusieurs
+ systèmes d'exploitation en même temps (dans plusieurs machines virtuelles).
+ Donc, vous pouvez par exemple lancer Windows et Linux sur votre Mac,
+ lancer Windows Server 2008 sur votre serveur Linux, lancer Linux sur votre
+ PC Windows et ainsi de suite pour toutes vos applications. Vous pouvez
+ installer et lancer autant de machines virtuaelles que vous voulez -- la seule
+ limite pratique étant votre espace disque et la mémoire.</para>
+
+ <para>VirtualBox est résolument simple bien que très puissant. Il peut se lancer
+ partout, depuis de petits systèmes embarqués jusqu'aux machines de bureau en
+ passant par des déploiements en datacenter ou même des environnements en nuages.</para>
+
+ <para>L'impression d'écran suivante vous montre la manière dont VirtualBox lance
+ Windows 7 dans la fenêtre d'une machine virtuelle en étant installé sur un Mac&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-vista-running.png"
+ width="14cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>Dans ce manuel de l'utilisateur, nous allons simplement commencer par une
+ introduction rapide à la virtualisation et sur la façon de lancer votre première
+ machine virtuelle avec l'interface graphique de VirtualBox, facile à utiliser.
+ Les chapitres suivants entreront beaucoup plus dans le détail en traitant
+ d'outils et de fonctionnalités plus puissants, mais heureusement, il n'est pas
+ nécessaire de lire tout le manuel de l'utilisateur avant de pouvoir utiliser
+ VirtualBox.</para>
+
+ <para>Vous pouvez trouver un résumé des possibilités de VirtualBox au <xref
+ linkend="features-overview" />. Pour ceux qui utilisent déjà VirtualBox et qui
+ voudraient seulement voir les nouveautés de cette version, une liste détaillée
+ existe au <xref
+ linkend="ChangeLog" />.</para>
+
+ <sect1>
+ <title>À quoi sert la virtualisation&#xA0;?</title>
+
+ <para>Les techniques et les fonctionnalités offertes par VirtualBox servent dans
+ plusieurs scenarii&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Lancer plusieurs systèmes d'exploitation en
+ même temps.</emphasis> VirtualBox vous permet d'exécuter plus d'un
+ système d'exploitation en même temps. De cette façon, vous pouvez
+ lancer des logiciels écrits pour un système d'exploitation dans un autre
+ (par exemple un logiciel Windows sur Linux ou Mac) sans devoir
+ redémarrer pour l'utiliser. Comme vous pouvez
+ configurer les types de matériels "virtuels" connectés à chaque système
+ d'exploitation, vous pouvez installer un vieux système d'exploitation tel que
+ DOS ou OS/2 même si le matériel de votre machine physique n'est plus
+ supporté par ce système d'exploitation.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Installation plus facile de logiciels.</emphasis>
+ Les éditeurs de logiciels peuvent utiliser des machines virtuelles pour
+ y mettre des configurations de logiciels. Par exemple, installation d'une
+ solution complète de serveur de messagerie sur une vraie machine peut
+ être une tâche très fastidieuse. Avec VirtualBox, vous pouvez emballer
+ une configuration aussi complexe (appelé alors souvent un environnement
+ applicatif) dans une machine virtuelle. L'installation et l'exécution
+ d'un serveur de messagerie devient aussi facile que d'importer un
+ environnement applicatif dans VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Tester et réparer en cas d'accident.</emphasis>
+ Une fois installés, on peut considérer une machine virtuelle et ses
+ disques durs virtuels comme un "conteneur" qu'on peut, au choix, geler,
+ réveiller, copier, sauvegarder et transporter entre hôtes.</para>
+
+ <para>Au-delà de cela, en utilisant une autre fonctionnalité de VirtualBox
+ appelé les "instantanés", vous pouvez sauvegarder un état en particulier
+ d'une machine virtuelle et revenir à cet état si nécessaire. De cette
+ manière, vous pouvez librement essayer un environnement informatique. Si
+ quelque chose ne va pas (par exemple, si un logiciel ne se comporte pas
+ bien après l'installation ou si un invité a un virus), on peut facilement
+ revenir à un instantané récent et éviter de sauvegarder et de
+ restaurer fréquemment.</para>
+
+ <para>On peut créer autant d'instantanés que vous voulez, ce qui permet
+ de voyager dans le temps des machines virtuelles en arrière et en avant.
+ Vous pouvez effacer des instantanés alors qu'une machine virtuelle est
+ en fonction pour gagner de l'espace disque.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Consolider une infrastructure.</emphasis>
+ La virtualisation peut réduire significativement les coûts en matériel
+ et électricité. La plupart du temps, les ordinateurs actuels n'utilisent
+ qu'une partie de leur puissance potentielle et tournent avec une faible
+ charge système moyenne. On gaspille donc beaucoup de ressources
+ matérielles et énergétiques. Au lieu de lancer autant d'ordinateurs physiques,
+ qui ne sont que partiellement utilisés, on peut emballer de nombreuses
+ machines virtuelles sur quelques hôtes puissants et équilibrer les
+ charges entre elles.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="virtintro">
+ <title>Un peu de terminologie</title>
+
+ <para>Quand on parle de virtualisation (mais aussi pour comprendre les
+ chapitres suivants de cette documentation), acquérir un peu de terminologie
+ fondamentale aide, en particulier les termes suivants&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>Système d'exploitation hôte (OS hôte).</glossterm>
+
+ <glossdef>
+ <para>C'est le système d'exploitation de l'ordinateur physique sur
+ lequel VirtualBox a été installé. Il existe des versions de VirtualBox
+ pour des hôtes Windows, Mac OS X, Linux et Solaris&#xA0;; pour des
+ détails, merci de voir le
+ <xref linkend="hostossupport" />.</para>
+
+ <para>La plupart du temps, ce manuel de l'utilisateur traite de toutes
+ les versions de VirtualBox ensemble. Il peut y avoir des différences
+ entre les plateformes, nous les soulignerons là où il faut.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Système d'exploitation invité (OS invité).</glossterm>
+
+ <glossdef>
+ <para>C'est le système d'exploitation en fonction dans la machine
+ virtuelle. En théorie, VirtualBox peut lancer tous les systèmes
+ d'exploitation x86 (DOS, Windows, OS/2, FreeBSD, OpenBSD), mais
+ pour s'approcher le plus possible de la performance d'origine du code
+ invité sur votre machine, nous avons dû faire beaucoup d'optimisations
+ qui sont spécifiques à certains systèmes d'exploitation. Donc si votre
+ système d'exploitation favori
+ <emphasis>peut</emphasis> être un invité, nous en supportons et optimisons
+ officiellement quelques-uns sélectionnés (cependant, cela inclut ceux
+ les plus courants).</para>
+
+ <para>Voir le <xref linkend="guestossupport" /> pour des détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Machine virtuelle (VM).</glossterm>
+
+ <glossdef>
+ <para>C'est l'environnement spécial créé par VirtualBox pour votre
+ système d'exploitation invité qui s'exécute. Autrement dit, vous
+ lancer votre système d'exploitation invité "dans" une VM. Normalement,
+ une VM apparaîtra sur le bureau de votre ordinateur comme une fenêtre,
+ mais elle peut être affichée en mode plein écran, ou à distance sur un
+ autre ordinateur, selon les interfaces de VirtualBox que vous utilisez.</para>
+
+ <para>De manière plus abstraite, en interne, VirtualBox conçoit une VM
+ comme un ensemble de paramètres qui déterminent son comportement.
+ Parmi eux, on a les paramètres matériels (combien de mémoire devrait
+ avoir la VM, quels disques durs devrait virtualiser VirtualBox via
+ quels fichiers conteneurs, quels CDs, lesquels sont montés, etc.)
+ ainsi que des informations d'état (si la machine est en fonction,
+ sauvegardée, ses instantanés, etc.). Ces paramètres apparaissent dans
+ la fenêtre du gestionnaire de VirtualBox ainsi que par le programme
+ en ligne de commande
+ <computeroutput>VBoxManage</computeroutput>&#xA0;;
+ voir le <xref linkend="vboxmanage" />. Autrement dit, une VM est
+ aussi ce que vous pouvez voir dans la boîte de dialogue de ses paramètres.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Suppléments Invité.</glossterm>
+
+ <glossdef>
+ <para>Ceci renvoie aux paquets logiciels spéciaux qui sont inclus
+ avec VirtualBox mais conçus pour être installés
+ <emphasis>à l'intérieur</emphasis> d'une VM pour améliorer les
+ performances de l'OS invité et pour ajouter des fonctionnalités
+ supplémentaires. C'est décrit en détails au <xref
+ linkend="guestadditions" />.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ </sect1>
+
+ <sect1 id="features-overview">
+ <title>Aperçu des fonctionnalités</title>
+
+ <para>Voici un bref résumé des principales fonctionnalités de VirtualBox&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Portabilité.</emphasis> VirtualBox se
+ lance sur un grand nombre de systèmes d'exploitation hôtes 32 et 64 bits
+ (de nouveau, voir
+ <xref linkend="hostossupport" /> pour les détails).</para>
+
+ <para>VirtualBox est ce qu'on appelle un hyperviseur "hébergé"
+ (parfois désigné comme un hyperviseur de "type 2"). Alors qu'un hyperviseur
+ "bare-metal" ou de "type 1" se lancerait directement sur le matériel,
+ VirtualBox exige l'installation d'un système d'exploitation. Il peut alors
+ lancer toutes les applications sur cet hôte.</para>
+
+ <para>Dans une très large mesure, VirtualBox est fonctionellement
+ identique sur toutes les plateformes hôtes et on peut utiliser les mêmes
+ formats de fichiers et d'images. Ceci vous permet de lancer des machines
+ virtuelles créées sur un hôte sur un autre hôte ayant un système
+ d'exploitation hôte différent&#xA0;; par exemple, vous pouvez créer une
+ machine virtuelle sur Windows puis la lancer sous Linux.</para>
+
+ <para>En outre, on peut facilement importer et exporter des machines
+ virtuelles en utilisant le format ouvert de virtualisation (OVF, voir
+ <xref
+ linkend="ovf" />), un standard industriel créé dans ce but. Vous pouvez
+ même importer des OVFs qui ont été créés avec un logiciel de virtualisation
+ différent.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Aucune virtualisation matérielle requise.
+ </emphasis> Pour de nombreux scenarii, VirtualBox n'exige pas la construction,
+ dans le processeur, des fonctionnalités récentes du matériel telles que
+ Intel VT-x ou AMD-V. Contrairement à beaucoup d'autres solutions de
+ virtualisation, vous pouvez donc utiliser VirtualBox même sur du vieux
+ matériel où ces fonctionnalités ne sont pas présentes. Les détails techniques
+ sont expliqués a <xref
+ linkend="hwvirt" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Suppléments invité&#xA0;: dossiers partagés,
+ fenêtres transparentes (seamless), virtualisation 3D.</emphasis> Les
+ suppléments invité de VirtualBox sont des paquets logiciels qu'on peut
+ installer
+ <emphasis>à l'intérieur</emphasis> des systèmes invités supportés pour
+ améliorer leurs performances et effectuer une intégration et une
+ communication accrues avec le système hôte. Après avoir installé les
+ suppléments invité, une machine virtuelle supportera l'ajustement
+ automatique des résolutions graphiques, les fenêtres transparentes,
+ la vidéo 3D accélérée et davantage. Les suppléments invité sont décrits
+ en détails au <xref
+ linkend="guestadditions" />.</para>
+
+ <para>Notamment, les suppléments invité offrent les "dossiers partagés",
+ ce qui vous permet d'accéder aux fichiers depuis l'intérieur d'une
+ machine invitée. Les dossiers partagés sont décrits au <xref
+ linkend="sharedfolders" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Bon support matériel.</emphasis> Entre autres,
+ VirtualBox supporte&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Le multiprocesseur invité
+ (SMP).</emphasis> VirtualBox peut montrer jusqu'à 32 processeurs
+ virtuels à chaque machine virtuelle, indépendamment du nombre de
+ c&#x153;urs présents sur votre hôte physiquement.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Support des périphériques USB.</emphasis>
+ VirtualBox implémente un contrôleur USB virtuel et vous permet de
+ connecter des périphériques USB de votre choix à vos machines
+ virtuelles sans devoir installer de pilotes spécifiques sur l'hôte.
+ Le support USB n'est pas limité à certaines catégories de périphériques.
+ Pour des détails, voir
+ <xref linkend="settings-usb" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">compatibilité matérielle.</emphasis>
+ VirtualBox virtualise une vaste gamme de périphériques virtuels,
+ parmi lesquels beaucoup sont en général fournis par d'autres
+ plateformes de virtualisation. Ceci inclut les contrôleurs de disques
+ IDE, SCSI et SATA, plusieurs cartes son et réseau virtuelles, les
+ ports série et parallèle virtuels, ainsi qu'un contrôleur d'interruptions
+ entrée/sortie programmable avancé (I/O APIC), ce qu'on trouve dans
+ de nombreux systèmes PC modernes. Cela facilite le clonage d'images
+ de PC depuis des machines réelles et l'importation de machines virtuelles
+ tierces dans VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Support complet de l'ACPI.</emphasis>
+ L'Advanced Configuration and Power Interface (ACPI) est complètement
+ supportée par VirtualBox. Cela facilite le clonage d'images
+ de PC depuis des machines réelles et l'importation de machines virtuelles
+ tierces dans VirtualBox. Avec son
+ <emphasis role="bold">support d'état d'énergie de l'ACPI</emphasis>
+ unique, VirtualBox peut même signaler aux systèmes d'exploitation
+ supportant l'ACPI l'état de l'alimentation de l'hôte. Pour les
+ systèmes mobiles sur batterie, le système invité peut ainsi activer
+ l'économie d'énergie et signaler à l'utilisateur le temps restant
+ (par exemple en mode plein écran).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">résolutions sur plusieurs écrans.</emphasis>
+ Les machines virtuelles VirtualBox supportent les résolutions d'écran
+ sur autant d'écrans que d'écrans physiques, ce qui leur permet de
+ s'étaler sur une grande variété d'écrans reliés au système hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Support iSCSI construit en dur.</emphasis>
+ Cette fonctionnalité unique vous permet de connecter une machine
+ virtuelle directement à un serveur de stockage iSCSI sans passer par
+ le système hôte. La VM accède à la cible iSCSI directement, sans
+ l'intermédiaire requis pour virtualiser des disques virtuels dans
+ les fichiers conteneurs. Pour des détails, voir le <xref
+ linkend="storage-iscsi" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Amorçage par le réseau PXE.</emphasis>
+ Les cartes réseaux virtuelles intégrées de VirtualBox supportent
+ complètement l'amorçage à distance via Preboot Execution Environment (PXE).</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Multigénération d'instantanés en branches.
+ </emphasis> VirtualBox peut sauvegarder des instantanés de votre choix de
+ l'état de la machine virtuelle. Vous pouvez revenir dans le passé et
+ rétablir l'état de la machine virtuelle à n'importe quel instantané, puis
+ démarrer une autre configuration de VM à partir de là, ce qui crée de fait
+ une arborescence d'instantanés complète. Pour les
+ détails, voir le <xref linkend="snapshots" />. Vous pouvez créer et
+ effacer des instantanés alors que la machine virtuelle est en fonction.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Groupes de VMs.</emphasis> VirtualBox offre
+ une fonction de groupes permettant à l'utilisateur d'organiser les
+ machines virtuelles en groupe ou individuellement. Outre les groupes
+ classiques, il est également possible pour une VM d'être dans plus d'un
+ groupe et pour des groupes d'être classés dans une hiérarchie - c'est-à-dire
+ des groupes de groupes. Les opérations faisables sur les groupes sont
+ généralement les mêmes que celles applicables aux VMs individuelles,
+ à savoir le démarrage, la pause, la réinitialisation, la fermeture (état sauvegardé, envoyer une extinction,
+ couper), désactiver l'état sauvegardé, afficher dans le système de
+ fichiers, trier.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Architecture propre&#xA0;; une modularité
+ sans précédent.</emphasis> VirtualBox a un aspect extrêmement modulaire
+ avec des interfaces de programmation internes bien définies et une
+ séparation propre du code client et serveur. Cela facilite son contrôle
+ par plusieurs interfaces à la fois&#xA0;: par exemple, vous pouvez
+ démarrer une VM en cliquant simplement sur un bouton de l'interface
+ graphique de VirtualBox, puis contrôler cette machine à partir de la ligne
+ de commande, voire même à distance. Voir le
+ <xref linkend="frontends" /> pour les détails.</para>
+
+ <para>Du fait de son architecture modulaire, VirtualBox peut également
+ présenter toutes ses fonctionnalités et sa flexibilité de configuration
+ dans un
+ <emphasis role="bold">kit de développement logiciel (SDK),</emphasis>
+ cohérent qui permet d'intégrer tous les aspects de VirtualBox à d'autres
+ logiciels. Merci de voir le <xref linkend="VirtualBoxAPI" /> pour les
+ détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Affichage de machines à distance.</emphasis> La
+ VirtualBox Remote Desktop Extension (VRDE) permet un accès distant et
+ en haute performance à une machine virtuelle en fonction. Cette
+ extension supporte le protocole de bureau distant (VRDP), construit au
+ départ dans Microsoft Windows, avec des suppléments spéciaux pour
+ un support complet de l'USB sur le client.</para>
+
+ <para>Le VRDE ne se base pas sur le serveur RDP construit dans
+ Microsoft Windows&#xA0;; mais il est inclu directement dans la couche de
+ virtualisation. Il s'en suit qu'il fonctionne avec les systèmes
+ d'exploitation hôte différents de Windows (même en mode texte) et il
+ n'a pas besoin non plus d'un support applicatif dans la machine
+ virtuelle. Le VRDE est décrit en détail au <xref linkend="vrde" />.</para>
+
+ <para>En plus de cette possibilité, VirtualBox vous
+ offre les fonctionnalités uniques&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Authentification RDP Extensible.</emphasis>
+ VirtualBox supporte déjà Winlogon
+ sur Windows et PAM sur Linux pour l'anthentification RDP.
+ En outre, il inclut un SDK facile à utiliser qui vous permet de
+ créer des interfaces de votre choix pour d'autres méthodes
+ d'authentification&#xA0;; voir
+ <xref linkend="vbox-auth" /> pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">USB via RDP.</emphasis> Via le support
+ RDP de canaux virtuels, VirtualBox vous permet aussi de connecter
+ des périphériques USB de votre choix en local sur une machine
+ virtuelle en fonction à distance sur un serveur RDP VirtualBox&#xA0;;
+ voir le <xref
+ linkend="usb-over-rdp" /> pour les détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="hostossupport">
+ <title>Systèmes d'exploitation hôtes supportés</title>
+
+ <para>Actuellement, VirtualBox fonctionne sur les systèmes d'exploitation
+ hôtes suivants&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Hôtes <emphasis role="bold">Windows</emphasis>&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Windows XP, tous les packs service (32 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Server 2003 (32 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Vista (32 bits et 64 bits<footnote>
+ <para>Le support pour Windows 64 bits a été ajouté avec VirtualBox
+ 1.5.</para>
+ </footnote>).</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Server 2008 (32 bits et 64 bits)</para>
+ </listitem>
+ <listitem>
+ <para>Windows Server 2008 R2 (64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows 8 (32 bits et 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows 8.1 (32 bits et 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Server 2012 (64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows Server 2012 R2 (64 bits)</para>
+ </listitem>
+
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes <emphasis role="bold">Mac OS X</emphasis>&#xA0;:<footnote>
+ <para>Le support préliminaire de Mac OS X (étape beta) a été ajouté
+ avec VirtualBox 1.4, le support complet avec 1.6. Le support pour
+ Mac OS X 10.4 (Tiger) a été supprimé avec VirtualBox 3.1.</para>
+ </footnote></para>
+
+ <itemizedlist>
+ <listitem>
+ <para>10.6 (Snow Leopard, 32 bits et 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>10.7 (Lion, 32 bits et 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>10.8 (Mountain Lion, 64 bits)</para>
+ </listitem>
+ <listitem>
+ <para>10.9 (Mavericks, 64 bits)</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>Du matériel Intel est requis&#xA0;; merci de voir aussi le <xref
+ linkend="KnownIssues" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Hôtes <emphasis role="bold">Linux</emphasis> (32 bits et
+ 64 bits<footnote>
+ <para>Le support pour Linux 64 bits a été ajouté avec VirtualBox
+ 1.4.</para>
+ </footnote>). Cela inclut entre autres&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Ubuntu 10.04 ("Lucid Lynx"), 10.10 ("Maverick Meerkat),
+ 11.04 ("Natty Narwhal"), 11.10 ("Oneiric Oncelot"),
+ 12.04 ("Precise Pangolin"), 12.10 ("Quantal Quetzal"),
+ 13.04 ("Raring Ringtail"), 13.10 ("Saucy Salamander"),
+ 14.04 ("Trusty Tahr")</para>
+ </listitem>
+
+ <listitem>
+ <para>Debian GNU/Linux 6.0 ("squeeze") et 7.0 ("wheezy")</para>
+ </listitem>
+
+ <listitem>
+ <para>Oracle Enterprise Linux 5, Oracle Linux 6</para>
+ </listitem>
+
+ <listitem>
+ <para>Redhat Enterprise Linux 5 et 6</para>
+ </listitem>
+
+ <listitem>
+ <para>Fedora Core 6 à 20</para>
+ </listitem>
+
+ <listitem>
+ <para>Gentoo Linux</para>
+ </listitem>
+
+ <listitem>
+ <para>openSUSE 11.0, 11.1, 11.2, 11.3, 11.4, 12.1, 12.2, 13.1</para>
+ </listitem>
+
+ <listitem>
+ <para>Mandriva 2011</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>On devrait pouvoir utiliser VirtualBox sur la plupart des systèmes
+ basés sur un noyau Linux 2.6 ou 3.x, soit en utilisant l'installeur de
+ VirtualBox, soit en faisant une installation manuelle&#xA0;; voir
+ le <xref linkend="install-linux-host" />. Cependant, les distributions
+ Linux formellement testées et supportées sont celles pour lesquelles
+ nous offrons un paquet dédié.</para>
+
+ <para>Remarquez qu'à partir de VirtualBox 2.1, les systèmes d'exploitation
+ hôtes Linux basés sur le noyau 2.4 ne sont plus supportés.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les hôtes <emphasis role="bold">Solaris</emphasis> (64 bits seulement)
+ sont supportés avec les restrictions listées au <xref
+ linkend="KnownIssues" />&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Solaris 11 y compris Solaris 11 Express</para>
+ </listitem>
+
+ <listitem>
+ <para>Solaris 10 (u8 et supérieur)</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ <para>Remarquez que la liste ci-dessus est informelle. Le support Oracle
+ pour les clients ayant un contrat d'assistance est limité aux systèmes d'exploitation
+ hôtes précités. En outre, les fonctionnalités marquées comme <emphasis
+ role="bold">experimental</emphasis> ne sont pas supportées. Les retours et les
+ suggestions sur ces fonctionnalités sont bienvenues.</para>
+ </sect1>
+
+ <sect1 id="intro-installing">
+ <title>Installer VirtualBox et les packs d'extension</title>
+
+ <para>VirtualBox est fourni dans de nombreux paquets et son installation
+ dépend de votre système d'exploitation hôte. Si vous avez déjà installé ce
+ logiciel, l'installation devrait être facile&#xA0;: pour chaque plateforme hôte,
+ VirtualBox utilise la méthode d'installation la plus facile possible.
+ Si vous avez un problème ou des besoins particuliers, reportez vous à la
+ <xref linkend="installation" /> pour des détails sur les différentes
+ méthodes d'installation.</para>
+
+ <para>À partir de la version 4.0, VirtualBox est divisé en plusieurs
+ composants.<orderedlist>
+ <listitem>
+ <para>Le paquet de base contient tous les composants libres et il est
+ sous licence GNU General Public License V2.</para>
+ </listitem>
+
+ <listitem>
+ <para>Des packs d'extension supplémentaires peuvent être téléchargés,
+ qui rajoutent des fonctionnalités au paquet de base de VirtualBox.
+ Pour l'instant, Oracle fournit un seul pack d'extension, qu'on peut
+ trouver sur <ulink
+ url="http://www.virtualbox.org">http://www.virtualbox.org</ulink> et
+ qui offre les fonctionnalités supplémentaires suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Périphériques virtuels USB 2.0 (EHCI)&#xA0;; voir le <xref
+ linkend="settings-usb" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Support de VirtualBox Remote Desktop Protocol (VRDP)&#xA0;;
+ voir le
+ <xref linkend="vrde" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Webcam hôte passthrough; voir le chapitre <xref
+ linkend="webcam-passthrough" />.</para>
+ </listitem>
+ <listitem>
+ <para>Amorçage Intel PXE ROM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Support expérimental pour passthrough PCI sur les hôtes
+ Linux&#xA0;;
+ voir le <xref linkend="pcipassthrough" />.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Les packs d'extension VirtualBox ont une extension de nom de fichiers
+ <computeroutput>.vbox-extpack</computeroutput>.
+ Pour installer une extension, double-cliquez simplement sur le fichier
+ du paquet et une fenêtre de gestion des opérations réseaux apparaîtra,
+ vous guidant à travers les étapes nécessaires.</para>
+
+ <para>Pour voir les paquets d'extension actuellement installés,
+ merci de démarrer le gestionnaire VirtualBox (voir la prochaine section).
+ Dans le menu "Fichier", merci de sélectionner "Paramètres". Dans
+ la fenêtre qui apparaît, allez à la catégorie "Extensions" qui
+ affiche les extensions actuellement installées et vous permet de
+ supprimer un paquet ou d'en ajouter un.</para>
+
+ <para>Vous pouvez aussi utiliser VBoxManage en ligne de commande&#xA0;:
+ voir le
+ <xref linkend="vboxmanage-extpack" /> pour des détails.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <note><para>Quand vous serez familier de l'utilisation des assistants,
+ songez à utiliser le mode expert disponible dans certains assistants. Quand
+ il est disponible, on peut le sélectionner en cliquant sur un bouton et cela
+ accélère les processus de l'utilisateur pour utiliser l'assistant.</para>
+ </note>
+
+ </sect1>
+
+ <sect1>
+ <title>Démarrer VirtualBox</title>
+
+ <para>Après l'installation, vous pouvez démarrer VirtualBox comme suit&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur un hôte Windows, dans le menu standard "Programmes", cliquez
+ sur l'élément du groupe "VirtualBox". Sur Vista ou Windows 7, vous
+ pouvez aussi taper "VirtualBox" dans la zone de recherche du menu
+ "Démarrer".</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur un hôte Mac OS X, dans la zone de recherche, cliquez deux
+ fois sur l'élément "VirtualBox" du dossier "Applications". (Il se
+ peut que vous vouliez mettre cet élément sur votre Dock.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur un hôte Linux ou Solaris, selon votre environnement de
+ bureau, une icône "VirtualBox" peut avoir été mise soit dans le groupe
+ "Système" soit dans "Outils système" de votre menu "Applications". Sinon
+ vous pouvez taper
+ <computeroutput>VirtualBox</computeroutput> dans un terminal.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Quand vous démarrez VirtualBox pour la première fois, une fenêtre comme
+ celle suivante devrait apparaître&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtualbox-main-empty.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>Cette fenêtre s'appelle le <emphasis
+ role="bold">"gestionnaire VirtualBox".</emphasis>. À gauche, vous pouvez voir
+ un panneau qui listera, plus tard, toutes vos machines virtuelles. Comme vous
+ n'en avez pas créées, la liste est vide. Une ligne de boutons au-dessus
+ vous permet de créer de nouvelles VMs et de travailler sur celles existantes,
+ lorsque vous en avez. Le panneau à droite affiche les propriétés de la
+ machine virtuelle actuellement sélectionnée s'il y en a une. De nouveau,
+ comme vous n'avez pas encore de machine, le panneau affiche un message de
+ bienvenue.</para>
+
+ <para>Pour vous donner une idée de ce à quoi pourrait ressembler VirtualBox
+ plus tard, après que vous avez créé des machines, voici un autre exemple&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtualbox-main.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+ </sect1>
+
+ <sect1 id="gui-createvm">
+ <title>Créer votre première machine virtuelle</title>
+
+ <para>Cliquez sur le bouton "Nouveau" en haut de la fenêtre du gestionnaire
+ VirtualBox. Un assistant apparaîtra pour vous guider à travers le paramétrage
+ d'une nouvelle machine virtuelle (VM)&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vm-1.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>Sur les écrans suivants, l'assistant vous demandera le
+ minimum d'informations dont il a besoin pour créer une VM, en
+ particulier&#xA0;:<orderedlist>
+ <listitem>
+ <para>Le <emphasis role="bold">nom de la VM</emphasis> sera plus
+ tard affiché dans la liste des VMs de la fenêtre du gestionnaire
+ VirtualBox, et il sera utilisé pour les fichiers de la VM sur le disque.
+ Si vous pouvez utiliser n'importe quel nom, gardez en tête qu'après
+ avoir créé quelques VMs, vous apprécierez d'avoir donné à vos VMs des
+ noms parlants&#xA0;; ainsi "Ma VM" serait moins utile que "Windows XP
+ SP2 avec OpenOffice".</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour le <emphasis role="bold">"Type de système d'exploitation",</emphasis>
+ sélectionnez le système d'exploitation que vous voudrez installer plus
+ tard. Les systèmes d'exploitation supportés sont ici regroupés&#xA0;;
+ si vous voulez installer une chose très rare et non listé, sélectionnez
+ "Autre". Selon votre sélection, VirtualBox activera ou désactivera
+ certains paramètres de VM dont peut avoir besoin votre système d'exploitation invité.
+ C'est particulièrement important pour les invités 64 bits (voir le <xref
+ linkend="intro-64bitguests" />). Il est donc recommandé de toujours
+ paramétrer la bonne valeur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur la page suivante, sélectionnez la <emphasis role="bold">mémoire
+ (RAM)</emphasis> que VirtualBox devra affecter à chaque fois que la
+ machine virtuelle sera démarrée. La quantité de mémoire indiquée ici sera
+ soustraite de celle de votre machine hôte et attribuée au système d'exploitation invité,
+ lequel verra cette mémoire comme RAM installée sur l'ordinateur (virtuel).</para>
+
+ <para><note>
+ <para>Choisissez avec prudence ce paramètre&#xA0;! La mémoire
+ donnée à la VM ne sera pas disponible pour votre OS hôte pendant
+ que la VM sera en fonction, donc ne spécifiez pas plus que vous ne
+ pouvez donner. Par exemple, si votre machine hôte a 1 Go de RAM
+ et si vous entrez 512 Mo de RAM pour une machine virtuelle en
+ particulier, pendant l'exécution de cette VM, vous n'aurez plus
+ que 512 Mo pour tous les autres logiciels de votre hôte. Si vous
+ lancez deux VMs en même temps, encore plus de mémoire sera affectée
+ à la deuxième VM (qui peut même ne pas démarrer si la mémoire n'est
+ pas disponible). D'un autre côté, vous devriez spécifier autant que
+ votre système d'exploitation invité (et vos applications) ont besoin
+ pour s'exécuter correctement.</para>
+ </note></para>
+
+ <para>Un invité Windows XP exigera au moins quelques centaines de Mo
+ de RAM pour fonctionner correctement, et Windows Vista refusera même de
+ s'installer avec moins de 512 Mo. Bien sûr, si vous voulez lancer des
+ applications gourmandes en ressources graphiques dans votre VM, vous
+ pouvez avoir besoin de plus de RAM.</para>
+
+ <para>La règle d'or est donc que si vous avez 1 Go de RAM voire plus
+ dans votre ordinateur hôte, il est sûr d'affecter 512 Mo à chaque
+ VM. Mais dans tous les cas, assurez-vous d'avoir au moins 256 à 512
+ Mo de RAM sur votre système d'exploitation hôte. Sinon, il se peut que
+ l'OS hôte fasse un usage excessif de l'espace d'échange sur votre disque
+ dur, ce qui peut conduire à un plantage de votre système hôte.</para>
+
+ <para>Comme avec les autres paramètres, vous pourrez modifier ce
+ réglage plus tard après avoir créé la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ensuite vous devez spécifier un <emphasis role="bold">disque dur
+ virtuel</emphasis> pour votre VM.</para>
+
+ <para>Il existe de nombreuses façons, potentiellement compliquées, de
+ fournir de l'espace de disque dur à une VM avec
+ VirtualBox (voir le <xref
+ linkend="storage" /> pour les détails), mais la manière la plus
+ courante est d'utiliser un gros fichier image sur votre "vrai" disque
+ dur, dont VirtualBox présente le contenu à votre VM comme si c'était un
+ disque dur normal. Ce fichier représente un disque dur complet donc vous
+ pouvez même le copier vers un autre hôte et l'utiliser avec une autre
+ installation VirtualBox.</para>
+
+ <para>L'assistant affiche la fenêtre suivante&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vm-2.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>Vous avez alors les choix suivants&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Pour créer un nouveau disque dur virtuel vierge, appuyez
+ sur le bouton <emphasis role="bold">"Nouveau"</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez utiliser un fichier image de disque <emphasis
+ role="bold">existant</emphasis>.</para>
+
+ <para>La <emphasis role="bold">boîte à liste déroulante</emphasis>
+ affichée dans la fenêtre contient toutes les images de disque
+ dont se souvient VirtualBox, probablement parce qu'elles sont
+ actuellement attachées à une machine virtuelle (ou elles l'ont
+ jadis été).</para>
+
+ <para>Vous pouvez aussi cliquer sur le petit bouton<emphasis
+ role="bold">dossier</emphasis> à côté de la boîte à liste
+ déroulante pour ouvrir une boîte de dialogue de fichier standard
+ qui vous permet de choisir un fichier image de disque sur le
+ disque de votre hôte.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Vraisemblablement, si vous utilisez VirtualBox pour la première
+ fois, vous voudrez créer une nouvelle image de disque. Appuyez donc
+ sur le bouton "Nouveau".</para>
+
+ <para>Ceci ouvre une nouvelle fenêtre, celle <emphasis
+ role="bold">"Assistant Créer un nouveau disque virtuel",</emphasis>
+ qui vous aide à créer un nouveau fichier image de disque dans le
+ dossier de la nouvelle machine virtuelle.</para>
+
+ <para>VirtualBox supporte deux types de fichiers image&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Un <emphasis role="bold">fichier rempli dynamiquement
+ </emphasis> ne grossira que lorsque l'invité stockera des données
+ sur son disque dur virtuel. Il sera donc petit au départ sur le
+ disque dur hôte et ne grossira que plus tard jusqu'à la taille indiquée,
+ au fur et à mesure que des données le rempliront.</para>
+ </listitem>
+
+ <listitem>
+ <para>Un <emphasis role="bold">fichier à taille fixe</emphasis>
+ occupera immédiatement l'espace spécifié même si seule une partie
+ de l'espace disque virtuel est en réalité utilisée. Si il occupe
+ beaucoup plus de place, un fichier à taille fixe connaît moins de
+ latence et il va donc légèrement plus vite qu'un fichier rempli
+ dynamiquement.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Pour des détails sur les différences, merci de vous reporter au
+ <xref
+ linkend="vdidetails" />.</para>
+
+ <para>Pour empêcher votre disque dur physique de tourner à plein,
+ VirtualBox limite la taille du fichier image. Là encore il doit y avoir
+ assez de place pour le contenu de votre système d'exploitation et les
+ applications que vous voulez installer - pour un invité Windows ou
+ Linux modernes, vous aurez probablement besoin de plusieurs gigaoctets pour
+ une utilisation sérieuse&#xA0;:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/create-vdi-1.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+
+ <para>Après avoir sélectionné ou créé votre fichier image, appuyez de
+ nouveau sur <emphasis role="bold">"Suivant"</emphasis> pour passer à
+ la page suivante.</para>
+ </listitem>
+
+ <listitem>
+ <para>Après avoir cliqué sur <emphasis role="bold">"Créer"</emphasis>,
+ votre nouvelle machine virtuelle sera créée. Vous la verrez alors
+ dans la liste à gauche de la fenêtre du gestionnaire, avec le nom
+ que vous avez entré au départ.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1>
+ <title>Lancer votre machine virtuelle</title>
+
+ <para>Pour démarrer une machine virtuelle, vous avez plusieurs choix&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Cliquez deux fois sur son entrée dans la liste dans la fenêtre du
+ gestionnaire ou</para>
+ </listitem>
+
+ <listitem>
+ <para>sélectionnez son entrée dans la liste de la fenêtre
+ du gestionnaire et appuyez sur le bouton "Démarrer" en bas ou</para>
+ </listitem>
+
+ <listitem>
+ <para>pour les machines virtuelles créées avec VirtualBox 4.0 ou
+ supérieur, allez au dossier "VirtualBox VMs" dans le dossier personnel
+ de votre système, cherchez le sous-répertoire de la machine que vous
+ voulez démarrer et cliquez deux fois sur le fichier de paramètres de la
+ machine (ayant une extension de fichier
+ <computeroutput>.vbox</computeroutput>).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Ceci ouvre une nouvelle fenêtre et la machine virtuelle que vous avez
+ sélectionnée va démarrer. Tout ce que vous verriez sur l'écran d'un système
+ normal apparaît dans la fenêtre, comme vous pouvez le voir sur l'image du
+ <xref linkend="virtintro" />.</para>
+
+ <para>En général, vous pouvez utiliser la machine virtuelle presqu'exactement
+ comme vous utiliseriez un vrai ordinateur. Deux points gagnent à être
+ mentionnés quand même.</para>
+
+ <sect2>
+ <title>Démarrage d'une nouvelle VM pour la première fois</title>
+
+ <para>Quand on démarre une VM pour la première fois, un autre assistant
+ <emphasis role="bold">"Assistant premier démarrage"</emphasis> -- apparaîtra
+ pour vous aider à sélectionner un
+ <emphasis role="bold">média d'installation</emphasis>. Comme la VM est
+ créée vierge, agissant exactement comme un vrai ordinateur sans système
+ d'exploitation installé, elle ne fera rien et affichera un message d'erreur
+ selon lequel aucun système d'exploitation n'a été trouvé.</para>
+
+ <para>C'est pourquoi l'assistant vous aide à sélectionner un média à
+ partir duquel vous pouvez installer un système d'exploitation.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Si vous avez un CD ou un DVD physique à partir duquel vous voulez
+ installer votre système d'exploitation invité (par exemple un CD ou un
+ DVD d'installation de Windows), mettez-le dans le lecteur CD ou DVD de
+ votre hôte.</para>
+
+ <para>Puis dans la liste déroulante des médias d'installation de
+ l'assistant,
+ sélectionnez <emphasis role="bold">"Lecteur hôte"</emphasis> avec
+ la bonne lettre de lecteur (ou, en cas d'hôte Linux, le fichier de
+ périphérique). Ceci permettra à votre VM d'accéder au média dans votre
+ lecteur hôte et vous pouvez poursuivre l'installation à partir de là.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez téléchargé un média d'installation sur Internet
+ sous forme d'un fichier image ISO (en général pour une distribution
+ Linux), vous pourriez graver ce fichier sur un CD ou un DVD
+ vierge et poursuivre comme on vient de décrire. Mais avec VirtualBox,
+ vous pouvez passer cette étape et monter le fichier ISO directement.
+ VirtualBox présentera ce fichier comme un lecteur de CD ou de DVD-ROM
+ à la machine virtuelle, comme il le fait avec une image de disque dur virtuel.</para>
+
+ <para>Dans ce cas, la liste déroulante de l'assistant contient la liste
+ des médias d'installation qui ont été précédemment utilisés avec VirtualBox.</para>
+
+ <para>Si votre média n'est pas dans la liste (surtout si vous utilisez
+ VirtualBox pour la première fois), sélectionnez la petite icône de dossier
+ à côté de la liste déroulante pour afficher une boîte de dialogue de
+ fichiers standard dans laquelle vous pouvez choisir le fichier image
+ sur vos disques hôtes.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Dans les deux cas, après avoir fait vos choix dans l'assistant, vous
+ pourrez installer votre système d'exploitation.</para>
+ </sect2>
+
+ <sect2 id="keyb_mouse_normal">
+ <title>Capturer et rendre le clavier et la souris</title>
+
+ <para>À partir de la version 3.2, VirtualBox offre aux nouvelles machines
+ virtuelles une tablette USB virtuelle à travers laquelle les événements
+ de la souris sont transmis au système d'exploitation invité. Il s'en suit
+ que si vous lancez un système d'exploitation invité moderne qui peut gérer
+ de tels périphériques, il se peut que le support de la souris fonctionne
+ sans que la souris ne soit "capturée" comme décrit ci-dessous&#xA0;;
+ voir <xref linkend="settings-motherboard" /> pour plus
+ d'informations.</para>
+
+ <para>Sinon, si la machine virtuelle ne voit que la souris et le clavier
+ PS/2 standards, car le système d'exploitation de la machine virtuelle ne
+ "sait" pas qu'il ne fonctionne pas sur un vrai ordinateur, il attend à
+ avoir un contrôle exclusif de votre clavier et de votre souris. Ce n'est
+ cependant pas le cas puisque, sauf si vous lancez votre VM en mode plein
+ écran, votre VM doit partager le clavier et la souris avec d'autres
+ applications et éventuellement d'autres VMs sur l'hôte.</para>
+
+ <para>Il s'en suit qu'immédiatement après l'installation d'un système
+ d'exploitation invité, et avant que vous installiez les Suppléments invité
+ (nous expliquerons cela dans une minute), seule une des deux -- votre VM ou
+ le reste de votre ordinateur -- peut "détenir" le clavier et la souris.
+ Vous verrez un
+ <emphasis>deuxième</emphasis> pointeur de souris qui sera toujours enfermé
+ dans la fenêtre de la VM. De base, vous activez la VM en
+ cliquant dedans.</para>
+
+ <para>Pour rendre le clavier et la souris à votre système d'exploitation
+ hôte, VirtualBox réserve une touche spéciale de votre clavier pour
+ lui&#xA0;: la <emphasis role="bold">"touche hôte".</emphasis> Par défaut,
+ c'est la <emphasis>touche Contrôle droit</emphasis> de votre clavier&#xA0;;
+ sur un hôte Mac, la touche hôte par défaut est la touche de commande
+ gauche. Vous pouvez modifier ce réglage par défaut dans les paramètres
+ globaux de VirtualBox, voir <xref linkend="globalsettings" />. Dans tous
+ les cas, le paramétrage actuel de la
+ touche hôte est toujours affiché <emphasis>en bas à droite de la fenêtre
+ de la VM,</emphasis> au cas où vous l'auriez oublié&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-hostkey.png"
+ width="7cm" />
+ </imageobject>
+ </mediaobject>En détail, tout se traduit comme suit&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Votre <emphasis role="bold">clavier</emphasis> appartient à la
+ VM si la fenêtre de la VM du bureau hôte contient le focus
+ du clavier (et si vous avez beaucoup de fenêtres ouvertes dans votre
+ système d'exploitation invité, la fenêtre contenant le focus dans votre
+ VM). Cela veut dire que si vous voulez taper quelque chose dans votre
+ VM, cliquez d'abord sur la barre de titre de la fenêtre de votre VM.</para>
+
+ <para>Pour rendre la propriété du clavier, appuyez sur la touche hôte
+ (comme expliqué ci-dessus, en général la touche Contrôle droit).</para>
+
+ <para>Remarquez que si la VM possède le clavier, certaines séquences
+ de touches (comme Alt-Tab par exemple) ne seront plus vues par l'hôte,
+ mais iront plutôt à l'invité. Après avoir appuyé sur la touche hôte
+ pour réactiver le clavier hôte, tous les appuis iront de nouveau à
+ l'hôte pour que les séquences comme Alt-Tab ne touchent plus l'invité.
+ Pour des raisons techniques, il se peut qu'il ne soit pas possible,
+ pour une VM, de récupérer toutes les entrées du clavier même si elle
+ possède ce dernier. Par exemples, la séquence Alt-Ctrl-Suppr sur les
+ hôtes Windows ou des touches uniques utilisées par certaines applications
+ sur les hôtes X11 comme la fonction "La touche Contrôle souligne le
+ pointeur de la souris" du bureau GNOME.</para>
+ </listitem>
+
+ <listitem>
+ <para>Votre <emphasis role="bold">souris</emphasis> n'appartient à
+ la VM qu'après avoir cliqué de nouveau dans la fenêtre de la VM. Le
+ pointeur de souris de l'hôte disparaîtra et votre souris maniera
+ le pointeur de l'invité au lieu de votre pointeur de souris normal.</para>
+
+ <para>Remarquez que l'appartenance de la souris ne dépend pas de
+ celle du clavier, même après avoir cliqué sur la barre de titre pour
+ pouvoir taper dans la fenêtre de la VM, votre souris n'appartient pas
+ nécessairement à la VM.</para>
+
+ <para>Pour rendre l'appartenance de votre souris à la VM, appuyez
+ sur la touche hôte.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Comme ce comportement peut être gênant, VirtualBox offre un ensemble
+ d'outils et de pilotes de périphériques pour les systèmes invités, appelé
+ les "Suppléments invité VirtualBox", qui rendent beaucoup transparentes
+ les opérations du clavier et de la souris de la VM. Très important,
+ les suppléments vous débarrasserons du deuxième pointeur de souris de
+ "l'invité" et fera fonctionner la souris de votre hôte directement dans
+ l'invité.</para>
+
+ <para>On décrira ceci plus tard au <xref
+ linkend="guestadditions" />.</para>
+ </sect2>
+
+ <sect2 id="specialcharacters">
+ <title>Taper des caractères spéciaux</title>
+
+ <para>Les systèmes d'exploitation prévoient certaines combinaisons de touches
+ pour lancer certaines procédures. Certaines de ces combinaisons de touches
+ peuvent être difficiles à faire dans une machine virtuelle&#xA0;; car il y
+ a trois candidats à la réception de l'entrée clavier&#xA0;: le système
+ d'exploitation hôte, VirtualBox ou le système d'exploitation invité.
+ Le récepteur de l'appui sur les touches dépend d'un certain nombre de facteurs
+ comprenant la touche elle-même.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Les systèmes d'exploitation hôte réservent certaines combinaisons
+ de touches pour eux. C'est par exemple impossible de faire
+ <emphasis
+ role="bold">Ctrl+Alt+Supp</emphasis> si vous voulez redémarrer le
+ système d'exploitation invité de votre machine virtuelle, car cette
+ combinaison de touches est en général rattachée en dur à l'OS hôte
+ (Windows comme Linux l'interceptent), et l'appui sur cette combinaison
+ de touches redémarrera donc votre <emphasis>hôte</emphasis>.</para>
+
+ <para>De plus, sur les systèmes Linux et Solaris, qui utilise le
+ système X Window, la combinaison de touches <emphasis
+ role="bold">Ctrl+Alt+Effacement</emphasis> redémarrent en général le
+ serveur X (pour relancer toute interface graphique en cas de problème).
+ Comme le serveur X intercepte cette combinaison, l'appui sur ces touches
+ relancera en général votre interface graphique <emphasis>hôte</emphasis>
+ (et tuera tous les programmes, dont VirtualBox, dans l'opération).</para>
+
+ <para>Par ailleurs, sur les hôtes Linux qui supportent les terminaux
+ virtuels, la combinaison de touches <emphasis role="bold">Ctrl+Alt+Fx</emphasis>
+ (où Fx est une touche de fonctions entre F1 et F12) permet en principe
+ de basculer entre des terminaux virtuels. Comme avec Ctrl+Alt+Supp,
+ ces combinaisons sont interceptées par le système d'exploitation hôte
+ et elles basculent donc toujours entre les terminaux de
+ <emphasis>l'hôte</emphasis>.</para>
+
+ <para>Si vous voulez plutôt envoyer ces combinaisions de touches au
+ système d'exploitation <emphasis>invité</emphasis> de la machine
+ virtuelle, vous devrez utiliser une des méthodes suivantes&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Utiliser les icônes du menu "Machine" de la fenêtre de la
+ machine virtuelle. Vous y trouverez "Insérer Ctrl+Alt+Supp" et
+ "Ctrl+Alt+Effacement"&#xA0;; cette dernière n'ayant toutefois
+ d'effet qu'avec les invités Linux ou Solaris.</para>
+ </listitem>
+
+ <listitem>
+ <para>Appuyer sur des combinaisons de touches spéciales avec la
+ touche hôte (en principe, la touche contrôle droit), alors VirtualBox
+ traduira, pour la machine virtuelle&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Touche hôte + Supp</emphasis>
+ envoie Ctrl+Alt+Supp pour redémarrer l'invité);</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Touch hôte +
+ Effacement</emphasis> pour envoyer Ctrl+Alt+Effacement (pour
+ redémarrer l'interface graphique d'un invité Linux ou Solaris)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Touche hôte + F1</emphasis> (ou
+ autres touches de fonction) pour simuler Ctrl+Alt+F1 (ou
+ d'autres touches de fonction, pour basculer entre les
+ terminaux virtuels d'un invité Linux).</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>Pour d'autres combinaisons de touches telles que <emphasis
+ role="bold">Alt-Tab</emphasis> (pour basculer entre des fenêtres
+ ouvertes), VirtualBox vous permet de configurer si ces combinaisons
+ concerneront l'hôte ou l'invité, si la machine virtuelle a
+ le focus. C'est un paramètre global de toutes les machines virtuelles
+ qui se trouve dans "Fichier" -&gt; "Préférences" -&gt; "Entrée" -&gt;
+ "Capture automatique du clavier".</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Changer de média amovible</title>
+
+ <para>Pendant qu'une machine virtuelle fonctionne, vous pouvez changer de
+ média amovible dans le menu "Périphériques" de la fenêtre de la VM.
+ Vous pouvez y sélectionner en détail ce que VirtualBox présente à votre
+ VM en tant que CD, DVD, ou disquette.</para>
+
+ <para>Les paramètres sont les mêmes que ceux disponibles pour la VM dans
+ la boîte de dialogue "Paramètres" de la fenêtre principale de VirtualBox,
+ mais vu que la boîte de dialogue est désactivée quand la machine est
+ dans l'état "en fonction" ou "sauvegardée", ce menu supplémentaire vous
+ évite d'éteindre et de redémarrer la VM à chaque fois que vous voulez
+ changer de média.</para>
+
+ <para>Dès lors, dans le menu "Périphériques", VirtualBox vous permet
+ d'attacher le lecteur hôte à l'invité ou de sélectionner une image de
+ DVD ou de disquette en utilisant le gestionnaire d'images de disque, tout
+ comme décrit à la <xref
+ linkend="configbasics" />.</para>
+ </sect2>
+
+ <sect2 id="intro-resize-window">
+ <title>Redimensionner la fenêtre de la machine</title>
+
+ <para>Vous pouvez redimensionner la fenêtre de la machine virtuelle quand
+ elle fonctionne. Dans un tel cas, une des choses suivantes arrivera&#xA0;:<orderedlist>
+ <listitem>
+ <para>Si vous avez activé le <emphasis role="bold">"mode échelle"</emphasis>,
+ l'écran de la machine virtuelle sera adapté à la taille de la
+ fenêtre. Ceci peut être utile si vous avez de nombreuses machines
+ en fonction et si vous voulez les visualiser en fonction en
+ arrière-plan. Sinon, il pourrait être utile d'agrandir la fenêtre si
+ l'écran d'affichage de la fenêtre est très petit, par exemple car
+ vous y exécutez un vieux système d'exploitation.</para>
+
+ <para>Pour activer le mode échelle, appuyez sur <emphasis role="bold">touche
+ hôte + C</emphasis>, ou sélectionnez "Mode échelle" du menu "Machine"
+ dans la fenêtre de la VM. Pour désactiver le mode échelle, appuyez
+ de nouveau sur la touche hôte + C.</para>
+
+ <para>Les valeurs d'affichage de l'écran de l'invité sont préservées
+ lorsque vous redimensionnez la fenêtre. Pour ignorer ces valeurs
+ d'affichage, appuyez sur Majuscule pendant l'opération de
+ redimensionnement.</para>
+
+ <para>Merci de voir <xref linkend="KnownIssues" /> pour des
+ remarques supplémentaires.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez installé les Suppléments invité et s'ils supportent
+ le <emphasis role="bold">redimensionnement</emphasis> automatique,
+ les suppléments invité ajusteront automatiquement la résolution de
+ l'écran du système d'exploitation invité. Par exemple, si vous
+ exécutez un invité Windows avec une résolution de 1024x768 pixels et
+ si vous élargissez la fenêtre de la VM de 100 pixels, les suppléments
+ invité passeront la résolution de l'affichage de Windows en
+ 1124x768.</para>
+
+ <para>Merci de voir <xref linkend="guestadditions" /> pour plus
+ d'informations sur les suppléments invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sinon, si la fenêtre est plus haute que l'écran de la VM,
+ l'écran sera centré. Si elle est plus petite, les barres de défilement
+ seront ajoutées à la fenêtre de la machine.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Sauvegarder l'état de la machine</title>
+
+ <para>Quand vous cliquez sur le bouton "Fermer" de la fenêtre de votre
+ machine virtuelle (en haut à droite de la fenêtre, exactement comme vous
+ fermeriez n'importe quelle fenêtre de votre système), VirtualBox vous
+ demande si vous voulez "sauvegarder" ou "couper" la VM. (Vous pouvez
+ appuyez sur la touche hôte et "Q" simultanément en guise de raccourci.)</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-close.png"
+ width="11cm" />
+ </imageobject>
+ </mediaobject>La différence entre ces trois options est cruciale.
+ Elles signifient&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Sauvegarder l'état de la machine&#xA0;:</emphasis>
+ Avec cette option, VirtualBox "gèle" la machine virtuelle en sauvegardant
+ complètement son état sur votre disque local.</para>
+
+ <para>Quand vous redémarrerez la VM plus tard, vous vous retrouverez avec
+ la VM exactement là où vous l'avez interrompue. Tous vos programmes
+ seront encore ouverts et votre ordinateur recommencera ses tâches. La
+ sauvegarde de l'état d'une machine virtuelle revient, d'une certaine
+ façon, à mettre en veille prolongée un ordinateur portable (par exemple
+ en fermant l'écran).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Envoyer le signal Éteindre.</emphasis>
+ Ceci enverra un message d'extinction ACPI à la machine virtuelle,
+ qui a le même effet que si vous aviez appuyé sur le bouton d'alimentation
+ d'un ordinateur réel. Si la VM exécute un système d'exploitation moderne,
+ cela devrait provoquer un vrai mécanisme d'extinction de la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Couper la machine&#xA0;:</emphasis> Avec
+ cette option, VirtualBox arrête aussi l'exécution de la machine virtuelle,
+ mais <emphasis>sans</emphasis> sauvegarder son état.<warning>
+ <para>Cela revient à débrancher le câble d'alimentation d'un
+ vrai ordinateur sans l'éteindre correctement. Si vous redémarrez
+ la machine après l'avoir coupée, votre système d'exploitation devra
+ redémarrer complètement et il se peut qu'il fasse une vérification
+ de ses disques systèmes (virtuels). Vous ne devriez donc pas le
+ faire car cela peut conduire à une perte de données ou à un état
+ incohérent du disque du système invité.</para>
+ </warning></para>
+
+ <para>Par exception, si votre machine virtuelle a des instantanés (voir
+ le prochain chapitre), vous pouvez utiliser cette option pour <emphasis
+ role="bold">restaurer l'instantané actuel</emphasis> de la
+ machine virtuelle rapidement. Dans ce cas, couper la machine ne dégradera
+ pas son état mais seules les modifications faites depuis que vous
+ avez pris l'instantané seront perdues.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Le bouton <emphasis role="bold">"Oublier"</emphasis> de la fenêtre
+ du gestionnaire de VirtualBox Manager désactive un état sauvegardé de la
+ machine virtuelle. Cela a le même effet que de couper la machine, donc les
+ mêmes avertissements s'appliquent.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="gui-vmgroups">
+ <title>Utiliser des groupes de VMs</title>
+
+ <para>Les groupes de VMs permettent à l'utilisateur de créer des groupes ad
+ hoc de VMs, et de gérer et d'effectuer des fonctions de façon collective
+ ou individuelle sur ceux-ci. Il existe un certain nombre de fonctions liées
+ aux groupes&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>
+ Créer un groupe en utilisant l'option de l'interface graphique 1)
+ Remontez une VM au-dessus d'une autre VM.
+ </para>
+ <para>
+ Créer un groupe en utilisant l'option 2) Sélectionnez plusieurs VMs
+ et sélectionnez "Groupe" sur le menu issu du clic droit, comme suit&#xA0;:
+ </para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/vm-groups.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Option en ligne de commande 1) Créer un groupe et y affecter une VM&#xA0;:
+ <screen>VBoxManage modifyvm "Fred" --groups "/TestGroup"</screen>
+ </para>
+ <para>
+ Option en ligne de commande 2) Retirer une VM d'un groupe et effacer
+ le groupe s'il est vide&#xA0;:
+ <screen>VBoxManage modifyvm "Fred" --groups ""</screen>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Plusieurs groupes par exemple&#xA0;:
+ <screen>VBoxManage modifyvm "Fred" --groups "/TestGroup,/TestGroup2"</screen>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Groupes nested -- hiérarchie de groupes comme&#xA0;:
+ <screen>VBoxManage modifyvm "Fred" --groups "/TestGroup/TestGroup2"</screen>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Résumé des commandes de groupes&#xA0;: Démarrer, mettre en pause,
+ réinitialiser, fermer (sauvegarder l'état, envoyer un signal d'extinction,
+ couper), désactiver l'état sauvegardé, afficher dans un système de
+ fichiers, trier.
+ </para>
+ </listitem>
+ </orderedlist>
+ </sect1>
+
+ <sect1 id="snapshots">
+ <title>Instantanés</title>
+
+ <para>Avec les instantanés, vous pouvez sauvegarder un état particulier
+ d'une machine virtuelle pour une utilisation ultérieure. Plus tard, vous pourrez
+ rétablir son état même si vous pouvez avoir beaucoup modifié la VM entre temps.
+ Un instantané de la machine virtuelle est ainsi équivalent à passer une
+ machine en état "sauvegardé", comme décrit ci-dessus, mais il peut y en avoir
+ beaucoup, et ces états sauvegardés sont préservés.</para>
+
+ <para>Vous pouvez voir les instantanés d'une machine virtuelle en sélectionnant
+ d'abord une machine dans le gestionnaire VirtualBox, puis en cliquant sur
+ le bouton "Instantanés" en haut à droite. Jusqu'à ce que vous preniez un
+ instantané de la machine, la liste des instantanés restera vide sauf pour
+ l'icône "état actuel" quc représente le point "Maintenant" du temps de vie
+ de la machine virtuelle.</para>
+
+ <sect2>
+ <title>Prendre, restaurer et effacer des instantanés</title>
+
+ <para>Il existe trois opérations liées aux instantanés&#xA0;:<orderedlist>
+ <listitem>
+ <para>Vous pouvez <emphasis role="bold">prendre un instantané</emphasis>.
+ Ceci effectue une copie de l'état actuel de la machine, auquel vous pourrez
+ revenir plus tard n'importe quand..<itemizedlist>
+ <listitem>
+ <para>Si votre VM est en fonction, sélectionnez "Prendre un
+ instantané" dans le menu déroulant "Machine" de la fenêtre de la
+ VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si votre VM est dans l'état "sauvegardée" ou "coupée",
+ (comme indiqué à côté de la VM dans la fenêtre principale de
+ VirtualBox), cliquez sur l'onglet "Instantanés" en haut à droite
+ de la fenêtre principale, puis<itemizedlist>
+ <listitem>
+ <para>soit sur la petite icône en appareil photo (pour
+ "Prendre un instantané"), soit</para>
+ </listitem>
+
+ <listitem>
+ <para>effectuez un clic droit sur l'icône "état actuel"
+ dans la liste et sélectionnez "Prendre un instantané"
+ dans le menu.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Dans tous les cas, une fenêtre apparaîtra et vous demandera un
+ nom d'instantané. Ce nom a une finalité purement de référence pour
+ vous aider à vous souvenir de l'état de l'instantané. Par exemple, un nom utile
+ serait "Installation neuve à partir de rien, pas de suppléments
+ invité", ou "Pack service à peine installé". Vous pouvez aussi ajouter
+ un texte plus long dans le champ "Description" si vous le voulez.</para>
+
+ <para>Votre nouvel instantané apparaîtra ensuite dans la liste des instantanés.
+ Juste dessous votre nouvel instantané, vous verrez une icône appelée
+ "état actuel", signifiant que l'état actuel de votre VM est une
+ variante basée sur l'instantané que vous avez pris précédemment. Si
+ vous prenez plus tard un autre instantané, vous verrez qu'ils seront
+ affichés en séquences et chaque instantané consécutif dérive d'un
+ précédent&#xA0;:<mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/snapshots-1.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>VirtualBox n'impose aucune limite quant au nombre d'instantanés
+ que vous pouvez prendre. La seule limite pratique est l'espace disque
+ sur votre hôte&#xA0;: chaque instantané stocke l'état de la machine
+ virtuelle et occupe donc de l'espace disque (voir la prochaine section
+ pour des détails sur ce qui est stocké exactement dans un instantané.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez <emphasis role="bold">restaurer un instantané</emphasis>
+ en effectuant un clic droit sur un instantané que vous avez pris dans la
+ liste des instantanés. En restaurant un instantané, vous revenez en arrière (ou
+ vous reculez) dans le temps&#xA0;: l'état actuel de la machine est
+ perdu et la machine est restaurée dans l'état exact où elle était
+ quand vous avez pris l'instantané.<footnote>
+ <para>La terminologie et la fonctionnalité de restauration d'instantanés
+ ont toutes deux changé avec VirtualBox 3.1. Avant cette
+ version, il n'était possible que de revenir au tout dernier instantané
+ pris -- pas à ceux antérieurs, et l'opération s'appelait "Désactiver
+ l'état actuel" et non "Restaurer le dernier instantané". La
+ limite a été dépassée avec la version 3.1. Il est maintenant
+ possible de restaurer <emphasis>n'importe quel</emphasis> instantané,
+ revenir en arrière et reculer dans le temps.</para>
+ </footnote></para>
+
+ <note>
+ <para>La restauration d'un instantané concernera également les disques
+ durs connectés à votre VM puisque l'état complet des disques durs
+ virtuels sera rétabli. Ceci signifie aussi que tous les fichiers
+ qui ont été créés depuis l'instantané et toutes les autres modifications
+ de fichiers <emphasis>seront perdues. </emphasis>Afin d'empêcher
+ une telle perte de données, tout en utilisant la fonctionnalité
+ des instantanés, il est possible d'ajouter un deuxième disque dur en mode
+ "write-through" en utilisant l'interface
+ <computeroutput>VBoxManage</computeroutput> et de l'utiliser pour
+ stocker vos données. Vu que les disques durs write-through
+ <emphasis>ne sont pas</emphasis> inclus dans les instantanés, ils restent
+ inchangés quand une machine est rétablie. Voir le <xref
+ linkend="hdimagewrites" os="" /> pour des détails.</para>
+ </note>
+
+ <para>Pour éviter de perdre l'état actuel quand vous restaurez un
+ instantané, vous pouvez créer un nouvel instantané avant la restauration.</para>
+
+ <para>En restaurant un instantané précédent et en prenant plus d'instantanés
+ à partir de là, il est même possible de créer une sorte de réalité
+ alternative et de basculer entre les différentes histoires de la
+ machine virtuelle. Cela peut donner une arborescence complète
+ d'instantanés de machine comme le montre l'impression d'écran
+ ci-dessus.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez aussi <emphasis role="bold">effacer un instantané</emphasis>,
+ ce qui ne touchera pas l'état de la machine virtuelle mais seulement
+ les fichiers du disque qu'utilisait VirtualBox pour stocker les données
+ de l'instantané, libérant ainsi de l'espace disque. Pour effacer un
+ instantané, effectuez un clic droit dessus dans l'arborescence des
+ instantanés et sélectionnez "Effacer". À partir de VirtualBox 3.2,
+ on peut même effacer des instantanés pendant qu'une machine fonctionne.<note>
+ <para>Si la prise et la restauration d'instantanés sont des
+ opérations très rapides, l'effacement d'un instantané peut mettre
+ un temps considérable car de grandes quantité de données peuvent être
+ copiées entre plusieurs fichiers images de disques. Il se peut
+ que les fichiers de disque temporaires aient besoin de beaucoup de
+ place pendant le déroulement de l'opération.</para>
+ </note></para>
+
+ <para>Certaines situations ne peuvent pas être gérées pendant qu'une
+ VM est en fonction et vous aurez un message circonstancié selon lequel
+ vous devez effectuer cet effacement d'instantané quand la VM sera
+ éteinte.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Contenu d'un instantané</title>
+
+ <para>Voyez un instantané comme un marquage dans le temps que vous avez posé.
+ De façon plus formelle, un instantané consiste en trois éléments&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Il contient une copie complète des paramètres de la VM y compris
+ la configuration matérielle, afin que quand vous restaurerez un instantané,
+ les paramètres de la VM soient également restaurés (par exemple, si
+ vous avez modifié la configuration du disque dur ou les paramètres
+ système de la VM, ce changement est annulé quand vous restaurez un
+ instantané.)</para>
+
+ <para>La copie de ces paramètres est stockée dans la configuration
+ de la machine, fichier texte XML, occupant ainsi très peu de place.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'état complet de tous les disques virtuels attachés à la
+ machine est préservé. Le retour en arrière sur un instantané signifie
+ que toutes les modifications faites sur les disques de la machine
+ -- fichier par fichier, bit par bit -- seront toutes annulées. Les
+ fichiers créés entre-temps disparaîtront, les fichiers effacés seront
+ restaurés, les modifications de fichiers seront inversées.</para>
+
+ <para>(À proprement parler, ceci n'est vrai que pour les disques durs
+ virtuels en mode "normal". Comme indiqué ci-dessus, vous pouvez
+ configurer des disques pour se comporter autrement avec les instantanés (voir
+ <xref
+ linkend="hdimagewrites" />. De manière encore plus précise et juste
+ techniquement, ce n'est pas le disque dur virtuel lui-même qui est
+ restauré quand on restaure un instantané. En fait, quand on prend
+ un instantané, VirtualBox crée des images de différenciation contenant
+ seulement les modifications depuis que l'instantané a été pris, puis
+ l'instantané est restauré, VirtualBox applique cette image de différenciation,
+ revenant ainsi en arrière vers l'état précédent. Ceci est non seulement
+ plus rapide, mais cela utilise moins d'espace disque. Pour les
+ détails, qui peuvent être complexes, merci de voir le
+ <xref linkend="diffimages" />.)</para>
+
+ <para>La création d'une telle image de différenciation n'occupe pas
+ beaucoup de place dès le départ sur le disque hôte, puisque l'image
+ de différenciation sera vide au départ (et grandira plus tard de façon
+ dynamique à chaque opération d'écriture sur le disque). Par contre,
+ plus vous utiliserez la machine après avoir créé l'instantané, plus
+ l'image de différenciation grossira.</para>
+ </listitem>
+
+ <listitem>
+ <para>Enfin, si vous avez pris un instantané pendant que la machine était
+ en fonction, l'état de la mémoire de la machine est également
+ sauvegardé dans l'instantané (tout comme la mémoire peut être sauvegardée
+ quand vous fermez la fenêtre de la VM). Quand vous restaurez un tel
+ instantané, l'exécution recommence exactement là où elle en était quand
+ vous avez pris l'instantané.</para>
+
+ <para>Le fichier de l'état de la mémoire peut être aussi gros que la
+ taille de la mémoire de la machine virtuelle et il occupera donc
+ lui aussi beaucoup de place sur le disque.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="configbasics">
+ <title>Configuration d'une machine virtuelle</title>
+
+ <para>Quand vous sélectionnez une machine virtuelle dans la liste dans la
+ fenêtre du gestionnaire, vous verrez à droite un résumé des paramètres de
+ cette machine.</para>
+
+ <para>Un clic sur le bouton "Paramètres" dans la barre d'outils en haut
+ ouvre une fenêtre détaillée où vous pouvez configurer de nombreuses
+ propriétés de la VM sélectionnée. Mais attention, bien qu'il soit possible
+ de modifier tous les paramètres de la VM après avoir installé un système
+ d'exploitation invité, certaines modifications pourraient empêcher un système
+ d'exploitation invité de fonctionner correctement après l'installation.</para>
+
+ <note>
+ <para>Le bouton "Paramètres" est désactivé par défaut quand une VM est soit
+ dans l'état "en fonction", soit "sauvegardée". Ceci simplement car la boîte
+ de dialogue des paramètres vous permet de modifier des caractéristiques
+ fondamentales de l'ordinateur virtuel créé pour votre système d'exploitation
+ invité, et ce système d'exploitation peut ne pas bien supporter cela quand,
+ par exemple, la moitié de sa mémoire lui est coupée sous les pieds. Il s'en
+ suit que si le bouton "Paramètres" est désactivé, éteignez d'abord la VM
+ actuelle.</para>
+ </note>
+
+ <para>VirtualBox offre pléthore de paramètres qu'on peut changer pour une
+ machine virtuelle. Tous les paramètres modifiables dans la fenêtre "Paramètres"
+ sont décrits en détails au <xref
+ linkend="BasicConcepts" />. Encore plus de paramètres sont disponibles avec
+ l'interface en ligne de commande de VirtualBox&#xA0;; voir <xref
+ linkend="vboxmanage" />.</para>
+ </sect1>
+
+ <sect1>
+ <title>Supprimer des machines vcrtuelles</title>
+
+ <para>Pour supprimer une machine virtuelle dont vous n'avez plus besoin,
+ effectuez un clic droit sur la liste de VMs du gestionnaire et sélectionnez
+ "Supprimer" dans le menu contextuel qui apparaît.</para>
+
+ <para>Une fenêtre de confirmation apparaîtra, vous permettant de sélectionner s'il
+ faut supprimer la machine seulement de la liste des machines ou également les
+ fichiers associés.</para>
+
+ <para>L'élément "Supprimer" est désactivé quand une machine est en fonction.</para>
+ </sect1>
+
+ <sect1 id="clone">
+ <title>Cloner des machines virtuels</title>
+
+ <para>Pour expérimenter une configuration de VM, tester différents niveaux
+ d'OS invité ou sauvegarder une VM, VirtualBox peut créer une copie complète
+ ou liée d'une VM existante.<footnote><para>Le support du clonage a été
+ introduit avec VirtualBox 4.1.</para></footnote></para>
+
+ <para>Un assistant vous guidera dans le processus de clonage&#xA0;:</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/clone-vm.png"
+ width="10cm" />
+ </imageobject>
+ </mediaobject>
+
+ <para>On peut appeler cet assistant à partir du menu contextuel de la liste
+ des VMs du gestionnaire (en sélectionnant "Cloner") ou de la vue "Dépôts"
+ de la VM sélectionnée. Choisissez d'abord un @ouveau nom pour le clone. Quand
+ vous sélectionnez <emphasis
+ role="bold">Réinitialiser l'adresse MAC de toutes les cartes réseaux</emphasis>,
+ toutes les cartes réseaux se voient affecter une nouvelle adresse MAC. Ceci
+ est utile quand la VM source et celle clonée doivent fonctionner sur le même
+ réseau. Si vous ne changez rien, toutes les cartes réseaux auront la même
+ adresse MAC que celle de la VM source. Selon comment vous appelez l'assistant,
+ vous avez différents choix pour l'opération de clonage. Vous devez d'abord
+ décider si le clone devrait être lié à la VM source ou être totalement indépendant&#xA0;:</para>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Clone complet&#xA0;:</emphasis> Dans ce mode,
+ toutes les images de disques dépendantes sont copiées dans le nouveau
+ dossier de la VM. Le clone peut fonctionner complètement sans la VM
+ d'origine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Clone lié&#xA0;:</emphasis> Dans ce mode,
+ de nouvelles images de différenciation du disque sont créées là où
+ les images de disque parents se trouvent à l'origine. Si vous avez
+ sélectionné l'état actuel de la VM source comme point de clonage, un
+ nouvel instantané sera créé implicitement.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Après avoir sélectionné le mode de clonage, vous devez décider ce que
+ vous voulez exactement cloner. Vous pouvez toujours créer un clone de
+ <emphasis role="italic">l'état actuel</emphasis> seulement, ou de
+ <emphasis role="italic">tout</emphasis>. Quand vous sélectionnez <emphasis
+ role="italic">tout</emphasis>, l'état actuel et, également, tous les
+ instantanés seront clonés. Si vous partez d'un instantané ayant des fils
+ en plus, vous pouvez également cloner <emphasis role="italic">l'état
+ actuel et tous ses fils</emphasis>. Ceci crée un clone à partir de
+ cet instantané et inclut tous les instantanés fils.</para>
+
+ <para>La durée de l'opération de clonage dépend de la taille et du nombre
+ d'images de disques attachées. Garder aussi en tête que tout instantané a
+ des images de différenciation de disques rattachées, qu'il faut aussi
+ cloner.</para>
+
+ <para>L'icône "Cloner" est désactivée quand une machine est en fonction.</para>
+
+ <para>Pour savoir comment cloner une VM en ligne de commande, merci de voir <xref
+ linkend="vboxmanage-clonevm" />.</para>
+ </sect1>
+
+ <sect1 id="ovf">
+ <title>Importer et exporter des machines virtuelles</title>
+
+ <para>VirtualBox peut importer et exporter des machines virtuelles au
+ format du standard industriel Open Virtualization Format (OVF).<footnote>
+ <para>Le support d'OVF a été introduit à l'origine avec VirtualBox 2.2
+ et a connu des améliorations essentielles au fur et à mesure des versions
+ consécutives.</para>
+ </footnote></para>
+
+ <para>OVF est un standard de plateforme croisée supporté par de nombreux
+ produits de virtualisation, permettant de créer des machines virtuelles prêtes
+ à l'emploi importables ensuite dans un virtualiseur tel que VirtualBox. VirtualBox
+ facilite l'exportation et l'importation d'OVF, en y donnant un accès et un
+ support depuis la fenêtre du gestionnaire et son interface en ligne de
+ commande. Cela permet d'empaqueter ce qu'on appelle des
+ <emphasis role="bold">applicatifs virtuels</emphasis>&#xA0;: des images de
+ disque et des paramètres de configuration qu'on peut distribuer facilement.
+ De cette façon, chacun peut donner des logiciels dans un paquet prêt à utiliser
+ complet (incluant système d'exploitation et applications) qui n'a pas besoin de
+ configuration ou d'installation autre que l'importation dans VirtualBox.<note>
+ <para>Le standard OVF est complexe et son support dans VirtualBox est un
+ processus évolutif. En particulier, nous ne garantissons pas que
+ VirtualBox supporte tous les applicatifs créés par d'autres logiciels de
+ virtualisation. Pour une liste des limites connues, merci de voir le
+ <xref linkend="KnownIssues" />.</para>
+ </note></para>
+
+ <para>Les applicatifs au format OVF peut apparaître sous deux variantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>Ils peuvent être fournis en plusieurs fichiers, comme une ou
+ plusieurs images de disque, en général au format universel VMDK (voir
+ <xref
+ linkend="vdidetails" />) et un fichier de description en texte, au
+ format XML avec une extension <computeroutput>.ovf</computeroutput>.
+ Ces fichiers doivent résider dans le même répertoire pour que VirtualBox
+ puisse les importer.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sinon, les fichiers ci-dessus peuvent être empaquetés dans un
+ seul fichier archive, ayant en général une extension
+ <computeroutput>.ova</computeroutput>. (De tels fichiers archives
+ utilisent une variante du format d'archivage TAR et peuvent donc être
+ déballés hors de VirtualBox avec n'importe quel outil capable de déballer
+ des fichiers TAR standards.)</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Pour <emphasis role="bold">importer</emphasis> un applicatif dans l'un des
+ formats ci-dessus, cliquez simplement deux fois sur le fichier OVF/OVA.<footnote>
+ <para>À partir de la version 4.0, VirtualBox crée des associations de
+ types de fichiers pour des fichiers OVF et OVA sur votre système
+ d'exploitation hôte.</para>
+ </footnote> Sinon, sélectionnez "Fichier" -&gt; "Importer un applicatif"
+ à partir de la fenêtre du gestionnaire. Dans la boîte de dialogue de fichier
+ qui apparaît, allez sur le fichier ayant soit l'extension
+ <computeroutput>.ovf</computeroutput>, soit
+ <computeroutput>.ova</computeroutput>.</para>
+
+ <para>Si VirtualBox peut gérer le fichier, une boîte de dialogue ressemblant
+ à celle suivante apparaîtra&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/ovf-import.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>Elle présente les machines virtuelles décrites dans le fichier
+ OVF et elle vous permet de modifier les paramètres de la machine virtuelle
+ en cliquant deux fois sur les éléments de description. Une fois que vous
+ avez cliqué sur <emphasis
+ role="bold">"Importer"</emphasis>, VirtualBox copiera les images de disque et
+ créera les machines virtuelles locales ayant les paramètres décrits dans
+ la boîte de dialogue. Elles apparaîtront alors dans la liste de machines virtuelles
+ du gestionnaire.</para>
+
+ <para>Remarquez que vu que les images de disque sont souvent grosses, et que
+ les images VMDK fournis avec les applicatifs virtuels sont en général incluses
+ dans un format compressé spécial inadapté à l'usage direct par les machines
+ virtuelles, il faudra d'abord déballer les images et les copier, ce qui peut
+ prendre quelques minutes.</para>
+
+ <para>Pour savoir comment importer une image en ligne de commande, merci de
+ voir <xref
+ linkend="vboxmanage-import" />.</para>
+
+ <para>Inversement, pour <emphasis role="bold">exporter</emphasis> des
+ machines virtuaelles déjà présentes dans VirtualBox, sélectionnez "Fichier"
+ -&gt; "Exporter application virtuelle". Une boîte de dialogue apparaîtra vous permettant de
+ mettre plusieurs machines virtuelles dans un applicatif OVF. Puis, sélectionnez
+ la destination où stocker les fichiers cibles, le processus de conversion
+ commence. Cela peut mettre aussi du temps.</para>
+
+ <para>Pour savoir comment exporter une image en ligne de commande, merci de
+ voir <xref
+ linkend="vboxmanage-export" />.<note>
+ <para>OVF ne peut pas décrire d'instantanés pris pour une
+ machine virtuelle. Il s'en suit que lorsque vous exportez une machine
+ virtuelle avec des instantanés, seul l'état actuel de la machine sera
+ exporté et les images de disque de l'export seront dans l'état
+ "applati", identique à l'état actuel de la machine virtuelle.</para>
+ </note></para>
+ </sect1>
+
+ <sect1 id="globalsettings">
+ <title>Paramètres globaux</title>
+ <para>Vous pouvez atteindre la boîte de dialogue des paramètres globaux par
+ le menu <emphasis role="bold">Fichier</emphasis>, en sélectionnant l'élément
+ <emphasis role="bold">Préférences...</emphasis> (NdT&#xA0;: ou Paramètres selon la version). Elle offre une sélection
+ de paramètres qui s'appliquent à toutes les machines virtuelles de l'utilisateur
+ actuel ou, s'il y a des <emphasis role="bold">Extensions</emphasis>, à tout
+ le système&#xA0;:
+ <orderedlist>
+ <listitem>
+ <para><emphasis role="bold">Général</emphasis> Permet à l'utilisateur
+ de spécifier le dossier/répertoire par défaut des fichiers de la VM et
+ la bibliothèque d'Authentification à RDP.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Entrée</emphasis> Permet à l'utilisateur de
+ spécifier la touche Hôte. Elle indique la touche qui active si le
+ curseur est sur le focus de la VM ou dans les fenêtres du système
+ d'exploitation hôte (voir <xref linkend="keyb_mouse_normal"/>) et
+ qu'on utilise aussi pour activer certaines actions sur la VM (voir
+ <xref
+ linkend="specialcharacters"/>)</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Mises à jour</emphasis> Permet à
+ l'utilisateur de spécifier divers paramètres des mises à jour
+ automatiques.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Langue</emphasis> Permet à l'utilisateur
+ de spécifier la langue de l'interface graphique.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Affichage</emphasis> Permet à l'utilisateur
+ de préciser la résolution de l'écran, sa hauteur et sa largeur.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Réseau</emphasis> Permet à l'utilisateur
+ de configurer les détails des réseaux Host Only.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Extensions</emphasis> Permet à l'utilisateur
+ de lister et de gérer les paquets d'extension installés.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Proxy</emphasis> Permet à l'utilisateur
+ de configurer un serveur proxy HTTP.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1 id="frontends">
+ <title>Interfaces alternatives</title>
+
+ <para>Comme indiqué brièvement à la <xref linkend="features-overview" />,
+ VirtualBox possède un concept interne très flexible qui permet d'utiliser
+ plusieurs interfaces pour contrôler les mêmes machines virtuelles. Pour
+ illustrer, vous pouvez par exemple démarrer une machine virtuelle avec la fenêtre
+ du gestionnaire de VirtualBox puis l'arrêter en ligne de commande. Avec le
+ support de bureau distant (RDP) de VirtualBox, vous pouvez même lancer des
+ machines virtuelles à distance sur un serveur sans écran et rediriger la sortie
+ graphique sur le réseau.</para>
+
+ <para>En détails, le paquet standard de VirtualBox inclut les interfaces
+ suivantes&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para><computeroutput>VirtualBox</computeroutput> est le gestionnaire
+ VirtualBox. Cette interface graphique utilise l'environnement Qt&#xA0;;
+ la plupart de ce manuel de l'utilisateur est consacré à sa description.
+ S'il est le plus facile à utiliser, certaines fonctionnalités plus
+ avancées de VirtualBox n'y figurent pas pour garder sa simplicité.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage</computeroutput> est notre interface
+ en ligne de commande pour avoir un contrôle automatisé et très détaillé
+ de tous les aspects de VirtualBox. Il est décrit au <xref
+ linkend="vboxmanage" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxSDL</computeroutput> est une interface graphique
+ alternative simple, possédant des fonctionnalités volontairement limitées,
+ conçu pour n'afficher que des machines virtuelles contrôlées en détail
+ avec <computeroutput>VBoxManage</computeroutput>. C'est intéressant pour
+ des environnements professionnels où l'affichage de tous les gadgets
+ graphique n'est pas envisageable.
+ <computeroutput>VBoxSDL</computeroutput> est décrit au <xref
+ linkend="vboxsdl" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Enfin, <computeroutput>VBoxHeadless</computeroutput> est encore
+ une autre interface qui produit une sortie invisible sur l'hôte, mais qui
+ agit exactement comme un serveur RDP si l'extension de bureau à distance
+ de VirtualBox (VRDE) est installée. Contrairement aux autres interfaces
+ graphiques, l'interface sans affichage n'a pas besoin de support
+ graphique. Cela sert, par exemple, si vous voulez héberger vos machines
+ virtuelles sur un serveur Linux sans affichage et sans système X
+ Window installé. Pour les détails, voir <xref
+ linkend="vboxheadless" />.</para>
+ </listitem>
+ </orderedlist>Si les interfaces ci-dessus ne satisfont pas encore vos
+ besoins particuliers, il est possible de créer d'autres interfaces avec
+ le moteur de virtualisation complexe au c&#x153;ur de VirtualBox, car le
+ c&#x153;ur de VirtualBox présente ouvertement toutes ses foncitionnalités
+ dans une API propre&#xA0;; merci de vous reporter au <xref linkend="VirtualBoxAPI" />.</para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_KnownIssues.xml b/doc/manual/fr_FR/user_KnownIssues.xml
new file mode 100644
index 00000000..144b0a57
--- /dev/null
+++ b/doc/manual/fr_FR/user_KnownIssues.xml
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="KnownIssues">
+ <title>Limites connues</title>
+ <sect1 id="ExperimentalFeatures">
+ <title>Fonctions expérimentales</title>
+ <para>Certaines fonctions de VirtualBox sont étiquetées comme étant
+ expérimentales. De telles fonctions sont offertes sur une base "tel quel"
+ et elles ne sont pas formellement supportées. Cependant, des retours
+ et les suggestions sur ces fonctions sont bienvenus. Voici une liste complète
+ des fonctions expérimentales&#xA0;:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Pilote graphique WDDM Direct3D pour les invités Windows</para>
+ </listitem>
+ <listitem>
+ <para>Support de l'accélération matérielle 3D pour les invités Windows,
+ Linux, et Solaris</para>
+ </listitem>
+ <listitem>
+ <para>Support de l'accélération 2D pour les invités Windows</para>
+ </listitem>
+ <listitem>
+ <para>PCI pass-through (hôtes Linux uniquement)</para>
+ </listitem>
+ <listitem>
+ <para>Invités Mac OS X (hôtes Mac uniquement)</para>
+ </listitem>
+ <listitem>
+ <para>Émulation du chipset ICH9</para>
+ </listitem>
+ <listitem>
+ <para>firmware EFI</para>
+ </listitem>
+ <listitem>
+ <para>Pass-through lecteur CD/DVD de l'hôte</para>
+ </listitem>
+ <listitem>
+ <para>Support d'iSCSI par le réseau interne</para>
+ </listitem>
+ <listitem>
+ <para>Signalement synthétique du processeur</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+ <sect1 id="KnownProblems">
+ <title>Problèmes connus</title>
+ <para>La section suivante décrit les problèmes connus avec VirtualBox
+ @VBOX_VERSION_STRING@. Sauf autrement spécifié, il est prévu de corriger ces
+ problèmes dans les prochaines versions.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Les <emphasis role="bold">limites SMP (multiprocesseur) de
+ l'invité</emphasis> existent&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Faibles performances</emphasis> avec
+ des invités 32 bits sur des processeurs AMD. Cela concerne
+ surtout les invités Windows et Solaris, mais aussi probablement
+ certaines révisions du noyau Linux. Corrigé partiellement dans
+ la 3.0.6 pour les invités Windows NT, 2000, XP et 2003 32 bits.
+ Exige l'installation des suppléments invité 3.0.6 ou supérieur.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Faibles performances</emphasis> avec
+ les invités 32 bits sur certains modèles de processeurs Intel
+ qui n'incluent pas le support de l'optimisation matérielle APIC
+ virtuel. Cela concerne surtout les invités Windows et Solaris,
+ mais probablement également certaines révisions du noyau Linux.
+ Corrigé partiellement dans la 3.0.12 pour les invités Windows NT,
+ 2000, XP et 2003 32 bits. Exige l'installation des suppléments
+ invité 3.0.12 ou supérieur.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">NX (ne s'éxécute pas ou empêche le traitement de
+ données)</emphasis> ne fonctionne que sur les invités en fonction
+ sur des hôtes 64 bits ou sur des hôtes 32 bits ayant activé PAE et la
+ virtualisation matérielle doit être activée.</para>
+ </listitem>
+ <listitem>
+ <para>Pour que le <emphasis role="bold">support Direct3D de base dans
+ les invités Windows</emphasis> fonctionne, il faut installer les suppléments
+ invité en mode "sans échec" dans Windows. Appuyez sur F8 quand
+ l'invité Windows démarre et sélectionnez "Mode sans échec", puis installez
+ les suppléments invité. Sans cela, le mécanisme de protection des
+ fichiers de Windows interfèrera dans le remplacement des DLLs
+ installés par VirtualBox et il restaurera les DLLs du système Windows
+ d'origine. <note>
+ <para>Cela <emphasis role="bold">ne s'applique pas</emphasis> au pilote
+ graphique expérimental Direct3D WDDM disponible pour les invités Vista
+ et Windows 7 inclu avec VirtualBox 4.1.</para>
+ </note></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">contrôle de l'invité.</emphasis> Sur les
+ invités Windows, un processus lancé via le support d'exécution du
+ contrôle de l'invité ne pourra pas afficher d'interface graphique,
+ <emphasis>sauf</emphasis> si le compte utilisateur sous lequel il est
+ lancé est connecté et s'il a une session de bureau.</para>
+
+ <para>En outre, pour utiliser des comptes avec ou sans mot de passe
+ vide, vous devez modifier la politique de groupe de l'invité. Pour ce
+ faire, ouvrez un éditeur des règles de groupes en ligne de commande
+ en tapant <computeroutput>gpedit.msc</computeroutput>, ouvrez la clé
+ <emphasis>Computer Configuration\Windows Settings\Security
+ Settings\Local Policies\Security Options</emphasis> et passez la
+ valeur de <emphasis>Accounts: Limit local account use of blank passwords to
+ console logon only</emphasis> en <emphasis>Disabled</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">La compression d'images de disques virtuels
+ est limitée aux fichiers VDI.</emphasis> La commande <code>VBoxManage modifyhd --compact</code>
+ n'est actuellement implémentée que pour les fichiers VDi. Pour l'instant,
+ la seule façon d'optimiser la taille des images de disques virtuels
+ dans d'autres formats (VMDK, VHD) est de cloner l'image puis d'utiliser
+ l'image clonée dans la configuration de la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">import/export d'OVF&#xA0;:</emphasis><itemizedlist>
+ <listitem>
+ <para>La particularisation des OVF (plusieurs langues dans un fichier
+ OVF) n'est pas encore supportée.</para>
+ </listitem>
+
+ <listitem>
+ <para>Certaines sections OVF comme StartupSection,
+ DeploymentOptionSection et InstallSection sont ignorées.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les documents d'environnement OVF, y compris leurs
+ sections de propriétés et la configuration d'applicatifs avec des
+ images ISO, ne sont pas encore supportés.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les fichiers distants avec HTTP ou d'autres mécanismes ne
+ sont pas encore supportés.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para>Ni le <emphasis role="bold">mode échelonné</emphasis> ni <emphasis
+ role="bold">le mode transparent</emphasis> ne fonctionnent bien avec les
+ invités qui utilisent les fonctions 3D d'OpenGL (telles que celles
+ avec les gestionnaires de fenêtres ayant activé compiz).</para>
+ </listitem>
+
+ <listitem>
+ <para>Le serveur RDP du pack d'extension de VirtualBox ne supporte que
+ les flux audio au format 22.05kHz stereo 16 bit. Si le client RDP
+ demande d'autres formats de son, ils ne seront pas sonores.</para>
+ </listitem>
+
+ <listitem>
+ <para>La préservation de l'apparence de l'affichage en mode échelonné
+ ne fonctionne que sur les hôtes Windows et sur les hôtes Mac OS X.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les <emphasis role="bold">hôtes Mac OS X,</emphasis> les
+ fonctions suivantes ne sont pas encore implémentées&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Émulation du verrouillage numérique</para>
+ </listitem>
+
+ <listitem>
+ <para>Mesure de la fréquence du processeur</para>
+ </listitem>
+
+ <listitem>
+ <para>Jeu de ballon avec la mémoire</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Invités Mac OS X&#xA0;:</emphasis>
+ <itemizedlist>
+ <listitem>
+ <para>Les invités Mac OS X ne peuvent fonctionner que sur un
+ certain matériel hôte. Pour des détails sur les limites de la
+ licence et du matériel hôte, merci de voir <xref linkend="intro-macosxguests" />
+ et vérifiez les conditions de la licence logicielle d'Apple.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox n'offre pas de suppléments invité pour Mac OS X
+ pour l'instant.</para>
+ </listitem>
+
+ <listitem>
+ <para>La résolution graphique est par défaut de 1024x768 car
+ Mac OS X se rabat sur le support d'affichage EFI intégré. Voir
+ <xref linkend="efividmode" /> pour plus d'informations sur la façon
+ de modifier les modes graphiques EFI.</para>
+ </listitem>
+ <listitem>
+ <para>Les invités Mac OS X ne fonctionnent qu'avec un processeur
+ sur une VM. Le support du SMP sera fourni dans une version
+ future.</para>
+ </listitem>
+
+ <listitem>
+ <para>Selon votre système et votre version de Mac OS X, vous pourriez
+ connaître des plantages de l'invité après quelque temps. Vous
+ pouvez corriger cela en désactivant l'économie d'énergie (passez
+ le timeout à "Never" (jamais)) dans les préférences du système.</para>
+ </listitem>
+
+ <listitem>
+ <para>Par défaut, l'EFI de VirtualBox active la sortie de débogage
+ du noyau Mac OS X pour vous aider à diagnostiquer les problèmes
+ de démarrage. Remarquez qu'il y a de nombreux messages et toutes
+ les erreurs ne sont pas fatales (elles s'afficheraient aussi
+ sur votre Mac physique). Vous pouvez désactiver ces messages en
+ lançant cette commande&#xA0;:<screen>VBoxManage setextradata "nom VM" "VBoxInternal2/EfiBootArgs" " "</screen>Pour
+ revenir à l'ancien comportement, utilisez :<screen>VBoxManage setextradata "nom VM" "VBoxInternal2/EfiBootArgs" ""</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Il n'est actuellement pas possible de démarrer un invité
+ Mac OS X en mode sécurité en spécifiant l'option "-x" dans la donnée
+ externe "VBoxInternal2/EfiBootArgs".</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Hôtes Solaris&#xA0;:</emphasis> <itemizedlist>
+ <listitem>
+ <para>Il n'y a pas de support des périphériques USB connectés aux
+ hôtes Solaris 10.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le support USB sur les hôtes Solaris exige Solaris version
+ 11 snv_124 ou supérieur. Les Webcams et les autres périphériques
+ de temps (isochronous) sont connus pour donner de faibles
+ performances.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le passthrough de la webcam hôte se limite aux résolutions
+ 640x480 avec 20 images par secondes à cause de limites de l'API
+ V4L2 de Solaris. Il se peut que cela change dans une future
+ version de Solaris.</para>
+ </listitem>
+ <listitem>
+ <para>Aucune informations d'ACPI (état de la batterie, source
+ d'énergie) n'est signalée à l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pas de support des adaptateurs wifi avec le réseau bridgé.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le réseau bridgé basé sur Crossbow sur les hôtes Solaris
+ ne fonctionne pas directement avec les liens agrégés. Cependant,
+ vous pouvez créer à la main un VNIC (en utilisant
+ <computeroutput>dladm</computeroutput>) via le lien agrégé et
+ utilisez-le avec une VM. Cette limite n'exfste pas dans Solaris
+ 11u1 build 17 et supérieur.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Suppléments invité de la version 4.1, 4.1.2 et 4.1.4 pour Windows</emphasis>
+ Il se peut que le pilote graphique WDDM de VirtualBox ait été
+ installé et soit gardé dans le système invité après la désinstallation des
+ suppléments invité. Cela vient d'un bogue du désinstalleur des suppléments
+ invité.
+
+ <note>
+ <para>Cela <emphasis role="bold">ne s'applique pas</emphasis> aux
+ mises à jour des suppléments invité, c'est-à-dire que l'installation d'une
+ version des suppléments invité par-dessus une autre fonctionne
+ correctement.</para>
+ </note>
+ Pour résoudre ce problème, vous devriez désinstaller le pilote graphique
+ WDDM de VirtualBox à la main. Pour cela, ouvrez le gestionnaire de
+ périphériques et vérifiez si l'adaptateur d'affichage s'appelle
+ "VirtualBox Graphics Adapter ..". Sinon - il n'y a rien à faire. Si
+ oui, - faites un clic droit sur VirtualBox Graphics Adapter dans le
+ gestionnaire de périphériques, sélectionner "Désinstaller", cochez
+ "Effacer le pilote de ce périphérique" et cliquez sur "OK". Une fois
+ que la désinstallation est finie - dans le gestionnaire de périphériques,
+ allez dans le menu "Action" et sélectionnez "Analyser les changements
+ matériels" pour utiliser le bon pilote (celui par défaut de Windows)
+ pour l'adaptateur graphique.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Ni le pilote <emphasis>virtio</emphasis> ni <emphasis>Intel PRO/1000
+ </emphasis> des <emphasis role="bold">invités Windows XP</emphasis>
+ ne supportent la segmentation hors charge (offloading). Donc,
+ les invités Windows XP ont des vitesses de transmission plus lentes
+ que d'autres types d'invités. Reportez-vous à l'article 842264
+ du MS Knowledge base pour des informations supplémentaires.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Suppléments invité pour OS/2.</emphasis>
+ Les dossiers partagés ne sont pas encore supportés avec les invités
+ OS/2. De plus, les fenêtres transparentes et le redimensionnement de
+ l'invité ne seront probablement jamais implémentés à cause de limites
+ intrinsèques du système graphique d'OS/2.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_Networking.xml b/doc/manual/fr_FR/user_Networking.xml
new file mode 100644
index 00000000..a6601ac9
--- /dev/null
+++ b/doc/manual/fr_FR/user_Networking.xml
@@ -0,0 +1,958 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="networkingdetails">
+ <title>Le réseau virtuel</title>
+ <para>Comme indiqué brièvement au <xref linkend="settings-network" />,
+ VirtualBox fournit jusqu'à huit cartes Ethernet PCI virtuelles pour chaque
+ machine virtuelle. Pour chaque carte, vous pouvez sélectionner
+ individuellement<orderedlist>
+ <listitem>
+ <para>le matériel virtualisé ainsi que</para>
+ </listitem>
+
+ <listitem>
+ <para>le mode de virtualisation effectué par la carte virtuelle par rapport
+ à votre matériel réseau physique sur l'hôte.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Quatre des cartes réseaux peuvent être configurées dans la section
+ "Réseau" de la boîte de dialogue des paramètres de l'interface graphique de
+ VirtualBox. Vous pouvez configurer les huit cartes réseaux en ligne de commande
+ avec VBoxManage modifyvm&#xA0;; voir <xref linkend="vboxmanage-modifyvm" />.</para>
+
+ <para>Ce chapitre explique les différents paramètres réseaux avec davantage de
+ détails.</para>
+
+ <sect1 id="nichardware">
+ <title>Matériel réseau virtuel</title>
+
+ <para>Pour chaque carte, vous pouvez sélectionner individuellement le type de
+ <emphasis>matériel</emphasis> qui sera présenté à la machine virtuelle.
+ VirtualBox peut virtualiser les six types de matériel réseau suivants&#xA0;:<itemizedlist>
+ <listitem>
+ <para>AMD PCNet PCI II (Am79C970A)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>AMD PCNet FAST III (Am79C973, par défaut)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Intel PRO/1000 MT Desktop (82540EM)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Intel PRO/1000 T Server (82543GC)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Intel PRO/1000 MT Server (82545EM)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Adaptateur réseau paravirtualisé (virtio-net).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>PCNet FAST III est celle par défaut parce qu'elle est supportée par
+ presque tous les systèmes d'exploitation non inclus ainsi que par le chargeur
+ de démarrage GNU GRUB. Par exception, les adaptateurs de la famille Intel
+ PRO/1000 ont été choisis pour certains types de systèmes d'exploitation invités
+ qui n'incluent plus de pilotes pour la carte PCNet, tel que Windows Vista.</para>
+
+ <para>Le type Intel PRO/1000 MT Desktop fonctionne avec Windows Vista et
+ les versions supérieures. La variante T Server de la carte Intel PRO/1000
+ est reconnue par les invités Windows XP sans installer de pilotes supplémentaires.
+ La variante MT Server facilite les imports d'OVF à partir d'autres plateformes.</para>
+
+ <para><emphasis role="bold">"L'adaptateur réseau paravirtualisé (virtio-net)"</emphasis>
+ est spécial. Si vous le sélectionnez, VirtualBox <emphasis>ne virtualise pas</emphasis>
+ du matériel réseau classique (à savoir supporté par les systèmes d'exploitation
+ invités non intégrés). VirtualBox s'attend alors à ce qu'une interface
+ logicielle spéciale pour les environnements virtualisés provienne de l'invité,
+ évitant ainsi la complexité de l'émulation du matériel réseau et de la
+ performance d'importation du réseau. À partir de la version 3.1, VirtualBox
+ fournit un support des pilotes réseaux du standard industriel "virtio", qui
+ font partie du projet libre KVM.</para>
+
+ <para>Les pilotes réseaux "virtio" sont disponibles pour les systèmes
+ d'exploitation invités suivants&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Les noyaux Linux version 2.6.25 ou supérieur peuvent être configurés
+ pour fournir le support virtio&#xA0;; certaines distributions ont
+ adpaté aussi virtio dans d'anciens noyaux.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour Windows 2000, XP et Vista, les pilotes virtio peuvent être
+ téléchargés et installés sur la page Web du projet KVM.<footnote>
+ <para><ulink
+ url="http://www.linux-kvm.org/page/WindowsGuestDrivers">http://www.linux-kvm.org/page/WindowsGuestDrivers</ulink>.</para>
+ </footnote></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>VirtualBox contient aussi un support limité pour ce qu'on appelle
+ <emphasis role="bold">jumbo frames</emphasis>, c'est-à-dire les paquets
+ réseaux de plus de 1500 octets de données, si vous utilisez le réseau Intel
+ de virtualisation bridgé. En d'autres termes, jumbo frames n'est pas
+ supporté avec les périphériques réseaux AMD&#xA0;; dans ce cas, les paquets jumbo
+ seront rejetés en silence tant côté récepteur que transmetteur.
+ Les systèmes d'exploitation invités qui essaient d'utiliser cette fonctionnalité
+ verront cela comme une perte de paquets, ce qui peut provoquer un comportement
+ inattendu de l'application dans l'invité. Cela ne pose pas de problème avec les
+ systèmes d'exploitation invités dans leur configuration par défaut, vu que
+ jumbo frames doit être explicitement activé.</para>
+ </sect1>
+
+ <sect1 id="networkingmodes">
+ <title>Introduction aux modes réseaux</title>
+
+ <para>Chacun des huit adaptateurs réseaux peut être configuré séparément
+ pour agir dans l'un des modes suivants&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>Non attaché</glossterm>
+
+ <glossdef>
+ <para>Dans ce mode, VirtualBox dit à l'invité qu'une carte réseau est
+ présente, mais qu'il n'y a pas de connexion -- comme si aucun câble
+ Ethernet n'était branché dans la carte. De cette façon, il est possible
+ de "retirer" le câble réseau virtuel Ethernet et de couper la
+ connexion, ce qui peut être utile pour informer un système d'exploitation
+ invité qu'aucune connexion réseau n'est disponible et forcer une
+ reconfiguration.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Network Address Translation (NAT)</glossterm>
+
+ <glossdef>
+ <para>Si vous ne voulez que naviguer sur le Web, télécharger des
+ fichiers et lire des messages dans l'invité, ce mode par défaut devrait
+ vous suffir et vous pouvez sauter sans souci le reste de cette
+ section. Merci de remarquer qu'il existe certaines limitations quand
+ on utilise le partage de fichiers Windows (voir <xref linkend="nat-limitations" />
+ pour des détails).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau NAT</glossterm>
+
+ <glossdef>
+ <para>Le réseau NAT est une nouvelle forme de NAT introduite dans
+ VirtualBox 4.3. Voir
+ <xref linkend="network_nat_service" xrefstyle="template: %n" />
+ pour les détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau avec pont</glossterm>
+
+ <glossdef>
+ <para>Ceci est pour les besoins réseaux plus avancés tels que des
+ simulations de réseaux et des exécutions de serveurs dans un
+ invité. Lorsque vous l'activez, VirtualBox se connecte à une de
+ vos cartes réseaux installées et il échange des paquets réseaux
+ directement, dépassant la pile réseau du système d'exploitation de
+ votre hôte.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau interne</glossterm>
+
+ <glossdef>
+ <para>On peut l'utiliser pour créer un type différent de réseau sur
+ une base logicielle, visible pour les machines sélectionnées, mais pas
+ pour les applications de l'hôte ou du monde extérieur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau Host-only</glossterm>
+
+ <glossdef>
+ <para>On peut l'utiliser pour créer un réseau contenant l'hôte et un
+ ensemble de machines virtuelles, sans avoir besoin de l'interface
+ réseau physique de l'hôte. À la place, une interface réseau virtuelle
+ (identique à une interface loopback) est créée sur l'hôte, offrant
+ une connectivité entre les machines virtuelles et l'hôte.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau générique</glossterm>
+
+ <glossdef>
+ <para>Mode rarement utilisé, il partage la même interface réseau
+ générique en permettant à l'utilisateur de sélectionner un pilote qui
+ peut être inclu dans VirtualBox ou distribué dans un pack d'extension.</para>
+
+ <para>Pour l'instant, il existe potentiellement deux sous-modes
+ disponibles&#xA0;:</para>
+
+ <para><glosslist>
+ <glossentry>
+ <glossterm>Tunnel UDP</glossterm>
+
+ <glossdef>
+ <para>On peut l'utiliser pour interconnecter directement,
+ facilement et de manière transparente des machines
+ virtuelles qui fonctionnent sur différents hôtes, via une
+ infrastructure réseau existante.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Réseau VDE (Virtual Distributed Ethernet)</glossterm>
+
+ <glossdef>
+ <para>Cette option peut être utilisée pour se connecter à
+ un service Ethernet distribué virtuel sur un hôte Linux ou
+ FreeBSD. Pour l'instant ceci nécessite de compiler VirtualBox
+ à partir des sources car les paquets d'Oracle ne l'incluent
+ pas.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Les sections suivantes décrivent les modes réseaux disponibles avec plus de
+ détails.</para>
+ </sect1>
+
+ <sect1 id="network_nat">
+ <title>Network Address Translation (NAT)</title>
+
+ <para>Network Address Translation (NAT) est la manière la plus simple d'accéder
+ à un réseau externe à partir d'une machine virtuelle. Habituellement, cela
+ n'exige aucune configuration sur le réseau hôte ou le système invité. C'est
+ pourquoi c'est le mode réseau par défaut de VirtualBox.</para>
+
+ <para>Une machine virtuelle où NAT est activé agit exactement comme un vrai
+ ordinateur qui se connecte à Internet par un routeur. Le "routeur", dans
+ ce cas, est le moteur réseau de VirtualBox, qui dirige le trafic depuis et
+ vers la machine virtuelle de façon transparente. Dans VirtualBox, ce routeur
+ se place entre chaque machine virtuelle et l'hôte. Cette séparation maximise
+ la sécurité puisque, par défaut, les machines virtuelles ne peuvent pas se
+ parler.</para>
+
+ <para>L'inconvénient du mode NAT est que, comme dans un réseau privé,
+ derrière un routeur, la machine virtuelle est invisible et injoignable
+ depuis le réseau extérieur&#xA0;; vous ne pouvez pas lancer de serveur de
+ cette façon, sauf si vous réglez une redirection de ports (décrite ci-dessous).</para>
+
+ <para>Les trames réseaux envoyés par le système d'exploitation invité sont reçus
+ par le moteur NAT de VirtualBox qui extrait les données TCP/IP et les envoie
+ en utilisant le système d'exploitation hôte. Pour une application de l'hôte
+ ou un autre ordinateur du même réseau comme l'hôte, cela fonctionne comme
+ si des données étaient envoyées par l'application VirtualBox de l'hôte,
+ en utilisant une adresse IP appartenant à l'hôte. VirtualBox écoute les
+ réponses aux paquets envoyés et les réempaquète et les renvoie à la machine invitée
+ sur son réseau privé.</para>
+
+ <para>La machine virtuelle reçoit son adresse et sa configuration réseau
+ sur le réseau privé à partir d'un serveur DHCP intégré à VirtualBox. L'adresse
+ IP ainsi affectée à la machine virtuelle se trouve en général sur un réseau
+ complètement différent de l'hôte. On peut paramétrer l'utilisation de NAT
+ pour autant de cartes dont dispose la machine virtuelle, la première carte est
+ connectée au réseau privé sur 10.0.2.0, la deuxième carte sur 10.0.3.0 et
+ ainsi de suite. Si vous avez besoin de modifier la plage d'adresses affectées
+ à l'invité pour une raison quelconque, merci de vous reporter à la
+ <xref linkend="changenat" />.</para>
+
+ <sect2 id="natforward">
+ <title>Configurer la redirection de ports avec NAT</title>
+
+ <para>Comme la machine virtuelle est connectée à un réseau privé interne
+ de VirtualBox et invisible pour l'hôte, les services réseaux de l'invité
+ ne sont pas accessibles à la machine hôte ou à d'autres ordinateurs du
+ même réseau. Cependant, comme un routeur physique, VirtualBox peut rendre
+ disponibles des services sélectionnés pour le monde extérieur à l'invité
+ via la <emphasis role="bold">redirection de port.</emphasis> Cela veut
+ dire que VirtualBox écoute certains ports sur l'hôte et renvoie tous les
+ paquets qui y arrivent vers l'invité, sur le même port ou sur un autre.</para>
+
+ <para>Pour une application de l'hôte ou d'autres machines physiques (ou
+ virtuelles) du réseau, cela fonctionne comme si les services étaient
+ derrière un proxy qui tournerait en fait sur l'hôte. Cela signifie également
+ que vous ne pouvez pas lancer le même service sur les mêmes ports de
+ l'hôte. Néanmoins, vous pouvez toujours tirer parti de lancer un service
+ dans une machine virtuelle -- par exemple, les services de la machine hôte
+ ou d'autres machines virtuelles ne peuvent pas être atteints ou plantés
+ par une faille ou un bogue du service, et le service peut fonctionner dans
+ un autre système d'exploitation que le système hôte.</para>
+
+ <para>Pour configurer la redirection de ports, vous pouvez utiliser l'éditeur
+ graphique de redirection de ports que vous trouverez dans la boîte de
+ dialogue des paramètres réseaux des adaptateurs réseaux configurés pour
+ utiliser NAT. Vous pouvez y orienter les ports de l'hôte vers les ports de
+ l'invité pour permettre au trafic réseau d'être acheminé sur un port
+ spécifique de l'invité.</para>
+
+ <para>Vous pourriez utiliser un autre outil en ligne de commande,
+ <computeroutput>VBoxManage</computeroutput>&#xA0;; pour les détails, merci
+ de vous reporter au <xref linkend="vboxmanage-modifyvm" />.</para>
+
+ <para>Vous devrez connaître les ports de l'invité utilisés par les services
+ de l'invité et décider des ports à utiliser sur l'hôte (souvent, mais pas
+ toujours, vous voudrez utiliser les mêmes ports sur l'invité et sur l'hôte).
+ Vous pouvez utiliser n'importe quel port de l'hôte qui ne sont pas déjà
+ utilisés par un service. Par exemple, pour régler les connexions NAT
+ entrantes pour un serveur <computeroutput>ssh</computeroutput> de
+ l'invité, utilisez la commande suivante&#xA0;: <screen>VBoxManage modifyvm "nom VM" --natpf1 "guestssh,tcp,,2222,,22"</screen>Avec
+ l'exemple ci-dessus, tout le trafic TCP arrivant sur le port 2222 de
+ n'importe quelle interface de l'hôte sera redirigé sur le port 22 de
+ l'invité. Le nom du protocole <computeroutput>tcp</computeroutput> est un
+ attribut obligatoire définissant le protocole à utiliser pour
+ la redirection (on pourrait utiliser <computeroutput>udp</computeroutput>).
+ Le nom <computeroutput>guestssh</computeroutput> est purement descriptif
+ et il sera auto-généré si vous n'en mettez pas. Le numéro après
+ <computeroutput>--natpf</computeroutput> indique la carte réseau, comme
+ dans d'autres endroits de VBoxManage.</para>
+
+ <para>Pour supprimer de nouveau cette règle de redirection, utilisez
+ la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --natpf1 delete "guestssh"</screen></para>
+
+ <para>Si, pour une raison quelconque, l'invité utilise une adresse IP
+ affectée de manière statique non gérée par le serveur DHCP interne, vous devez
+ spécifier l'IP de l'invité lors de l'enregistrement de la règle de redirection&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"</screen>Cet
+ exemple est identique au précédent, sauf que qu'on dit au moteur NAT qu'il
+ peut trouver l'invité à l'adresse 10.0.2.19.</para>
+
+ <para>Pour rediriger <emphasis>tout</emphasis> le trafic rentrant depuis
+ une interface spécifique de l'hôte sur l'invité, spécifiez l'IP de cette
+ interface de l'hôte comme ceci&#xA0;:<screen>VBoxManage modifyvm "nom VM" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"</screen>Ceci
+ redirige tout le trafic TCP arrivant sur l'interface localhost (127.0.0.1)
+ via le port 2222 sur le port 22 de l'invité.</para>
+
+ <para>Il est possible de configurer les connexions NAT entrantes pendant
+ que la VM est en fonction, voir <xref linkend="vboxmanage-controlvm"/>.</para>
+ </sect2>
+
+ <sect2 id="nat-tftp">
+ <title>Démarrer avec PXE et NAT</title>
+
+ <para>Le démarrage avec PXE est désormais supporté en mode NAT. Le serveur
+ DHCP de NAT fournit un fichier d'amorçage dont le nom ressemble à
+ <computeroutput>nomvm.pxe</computeroutput> si le répertoire
+ <computeroutput>TFTP</computeroutput> existe dans le répertoire où se trouve
+ le fichier <computeroutput>VirtualBox.xml</computeroutput> de l'utilisateur.
+ L'utilisateur est chargé de fournir
+ <computeroutput>nomvm.pxe</computeroutput>.</para>
+ </sect2>
+
+ <sect2 id="nat-limitations">
+ <title>Limites du NAT</title>
+
+ <para>Il y a quatre <emphasis role="bold">limites</emphasis> du mode
+ NAT que les utilisateurs devraient connaître&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>Limite du protocole ICMP&#xA0;:</glossterm>
+
+ <glossdef>
+ <para>Certains outils de débogage réseau souvent utilisés (comme
+ <computeroutput>ping</computeroutput> ou tracerouting) s'appuient
+ sur le protocole ICMP pour envoyer/recevoir des messages. Si le support
+ ICMP a été amélioré avec VirtualBox 2.1
+ (<computeroutput>ping</computeroutput> devrait maintenant fonctionner),
+ d'autres outils peuvent ne pas marcher de manière fiable.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>La réception des broadcasts UDP n'est pas fiable&#xA0;:</glossterm>
+
+ <glossdef>
+ <para>L'invité ne reçoit pas de broadcasts fiables car, pour économiser
+ des ressources, il n'écoute qu'un certain temps après que l'invité a
+ envoyé des données UDP sur un port particulier. En conséquence,
+ la résolution de nom NetBios basée sur les broadcasts ne fonctionne
+ pas toujours (mais WINS fonctionne toujours). Un contournement est
+ d'utiliser l'IP numérique du serveur désiré en notation
+ <computeroutput>\\server\share</computeroutput>.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Les protocoles tels que GRE ne sont pas supportés&#xA0;:</glossterm>
+
+ <glossdef>
+ <para>Les protocoles autres que TCP et UDP ne sont pas supportés.
+ Cela signifie que certains produits VPN (comme PPTP de Microsoft)
+ ne peuvent pas être utilisés. Il existe d'autres produits VPN qui
+ utilisent simplement TCP et UDP.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Redirection des ports de l'hôte &lt; 1024 impossible&#xA0;:</glossterm>
+
+ <glossdef>
+ <para>Sur les hôtes basés sur Unix, (comme Linux, Solaris, Mac OS X),
+ il n'est pas possible de trouver des ports en-dessous de 1024 pour
+ les applications non lancées par <computeroutput>root</computeroutput>.
+ Il s'en suit que si vous essayez de configurer la redirection de tels
+ port, la VM refusera de démarrer.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <para>Ces limites ne concernent normalement pas les utilisations standards
+ du réseau. Mais la présence de NAT a également des effets subtils qui
+ peuvent interférer avec des protocoles qui, en principe, fonctionnent. Un
+ exemple est NFS, où le serveur est souvent configuré pour refuser les
+ connexions depuis des ports non privilégiés (donc les ports qui ne sont pas
+ inférieurs à 1024).</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network_nat_service">
+ <title>Network Address Translation Service (expérimental)</title>
+
+ <para>Le service Network Address Translation (NAT) fonctionne comme un
+ routeur domestique en regroupant les systèmes qui l'utilisent dans un réseau
+ et en évitant que les systèmes extérieurs accèdent au sein du réseau
+ tout en permettant aux systèmes qu'il contient de communiquer entre eux et
+ avec l'extérieur via TCP et UDP en IPv4 et IPv6.</para>
+
+ <para>Un service NAT est rattaché à un réseau interne. Les machines virtuelles
+ qui doivent l'utiliser devraient être branchées au réseau interne. Le nom du
+ réseau interne se choisit à la création du service NAT et le réseau interne
+ sera créé s'il n'existe pas déjà. Voici un exemple de commande pour créer
+ un réseau NAT :
+ </para>
+ <para><screen>VBoxManage natnetwork add -t nat-int-network -n "192.168.15.0/24" -e</screen></para>
+ <para>
+ Ici, "nat-int-network" est le nom du réseau interne à utiliser et
+ "192.168.15.0/24" est l'adresse du réseau et l'interface du masque du service NAT.
+ Dans cette configuration statique, par défaut, l'adresse affectée à la passerelle sera
+ 192.168.15.1 (adresse suivant celle de l'interface), bien que cela soit sujet
+ à changement. Pour connecter un serveur DHCP au réseau interne, nous
+ modifions l'exemple comme suit :</para>
+ <para><screen>VBoxManage natnetwork add -t nat-int-network -n "192.168.15.0/24" -e -h on</screen></para>
+ <para> ou pour ajouter un serveur DHCP au réseau après l'avoir créé :</para>
+ <para><screen>VBoxManage natnetwork modify -t nat-int-network -h on</screen></para>
+ <para>Pour le désactiver à nouveau, utilisez :</para>
+ <para><screen>VBoxManage natnetwork modify -t nat-int-network -h off</screen></para>
+ <para>Le serveur DHCP fournit la liste des noms de serveurs enregistrés
+ mais n'identifie pas les serveurs du réseau 127/8.</para>
+
+ <para>Pour démarrer le service NAT, utilisez la commande suivante :</para>
+ <para><screen>VBoxManage natnetwork start -t nat-int-network</screen></para>
+ <para>Si un serveur DHCP est connecté au réseau, il démarrera avec le
+ service réseau NAT.</para>
+ <para><screen>VBoxManage natnetwork stop -t nat-int-network</screen> arrête
+ le service réseau NAT ainsi que le serveur DHCP s'il y en a un.</para>
+ <para>Pour effacer le service réseau NAT, utilisez :</para>
+ <para><screen>VBoxManage natnetwork remove -t nat-int-network</screen></para>
+ <para>Cette commande ne supprime pas le serveur DHCP s'il y en a un actif
+ sur le réseau interne.</para>
+ <para>La redirection de Ports est supportée (en utilisant le paramètre "-p"
+ pour
+ switch for IPv4 et "-P" pour IPv6) :</para>
+ <para><screen>VBoxManage natnetwork modify -t nat-int-network -p "ssh:tcp:[]:10022:[192.168.15.15]:22"</screen></para>
+ <para>Ceci ajoute une règle de redirection de pots depuis le 10022 TCP de
+ l'hôte vers le 22 de l'invité ayant l'adresse IP 192.168.15.15. Pour
+ effacer la règle, utilisez :</para>
+ <para><screen>VBoxManage natnetwork modify -t nat-int-network -p delete ssh</screen></para>
+ <para>Il est possible d'associer un service NAT à l'interface désirée :</para>
+ <screen>VBoxManage setextradata global "NAT/win-nat-test-0/SourceIp4" 192.168.1.185</screen>
+ <para>Pour voir la liste des réseaux NAT enregistrés, utilisez :</para>
+ <para><screen>VBoxManage list natnetworks</screen></para>
+ </sect1>
+
+ <sect1 id="network_bridged">
+ <title>Réseau Bridgé</title>
+
+ <para>Avec le réseau bridgé, VirtualBox utilise un pilote de périphérique
+ sur votre système <emphasis>hôte</emphasis> qui filtre les données de votre
+ adaptateur réseau physique. Ce pilote s'appelle donc un pilote "net filter".
+ Il permet à VirtualBox d'intercepter les données du réseau physique et
+ d'y envoyer des données, ce qui crée de fait une nouvelle interface réseau
+ logicielle. Quand un invité utilise une telle interface, cela se passe,
+ sur le système hôte, comme si l'invité était connecté physiquement à
+ l'interface réseau en utilisant un câble réseau&#xA0;: l'hôte peut envoyer
+ des données à l'invité via cette interface et en reçoit des données. Cela
+ veut dire que vous pouvez régler du routage ou des ponts entre l'invité et le
+ reste de votre réseau.</para>
+
+ <para>Pour que cela fonctionne, VirtualBox a besoin d'un pilote de périphérique
+ sur votre système hôte. La manière dont fonctionne le réseau bridgé a été
+ complètement réécrite avec VirtualBox 2.0 et 2.1, selon le système d'exploitation
+ hôte. Du point de vue utilisateur, la principale différence est qu'une
+ configuration complexe n'est plus nécessaire, quel que soit le système
+ d'exploitation hôte supporté.<footnote>
+ <para>Pour les hôtes Mac OS X et Solaris, les pilotes net filter étaient
+ déjà ajoutés à VirtualBox 2.0 (vu que le support de Host Interface
+ Networking existait à l'origine sur ces plateformes). Avec VirtualBox 2.1,
+ les pilotes net filter ont été également ajoutés pour les hôtes Windows
+ et Linux à la place des mécanismes précédemment présents dans VirtualBox
+ pour ces plateformes&#xA0;; surtout sur Linux, l'ancienne méthode impliquait
+ de créer des interfaces TAP et des ponts, ce qui était complexe et
+ variait d'une distribution à l'autre. Rien de tout cela n'est désormais
+ nécessaire. Le réseau bridgé s'appelait jadis "Host Interface Networking"
+ et on l'a renommé avec la version 2.2 sans changer ses fonctionnalités.</para>
+ </footnote></para>
+
+ <para><note>
+ <para>Même si TAP n'est plus nécessaire sur Linux avec le réseau bridgé,
+ vous <emphasis>pouvez</emphasis> toujours utiliser les interfaces TAP
+ pour certains paramétrages avancés puisque vous pouvez connecter une VM
+ à n'importe quel interface de l'hôte -- qui pourrait être également une
+ interface TAP.</para>
+ </note>Pour activer le réseau bridgé, tout ce que vous devez faire est
+ d'ouvrir la boîte de dialogue des paramètres d'une machine virtuelle, d'aller
+ sur l'onglet "Réseau" et de sélectionner "Réseau bridgé" dans la boîte
+ à liste déroulante du champ "Attaché à". Au départ, sélectionnez l'interface
+ désirée de l'hôte dans la liste en bas de la fenêtre, qui contient les
+ interfaces réseaux physiques de vos systèmes. Sur un MacBook physique, par
+ exemple, cela vous permettra de choisir entre "en1:
+ AirPort" (qui est l'interface sans fil) et "en0: Ethernet", qui représente
+ l'interface avec câble réseau.</para>
+
+ <note><para>Créer un pont avec une interface sans fil se fait différemment
+ d'avec une interface filaire, car la plupart des adaptateurs sans fil ne
+ supportent pas le mode promiscuous. Tout le trafic doit utiliser l'adresse
+ MAC de l'adaptateur sans fil de l'hôte, donc VirtualBox doit remplacer
+ l'adresse MAC source dans l'en-tête Ethernet d'un paquet sortant pour
+ s'assurer que la réponse sera envoyée à l'interface hôte. Quand VirtualBox
+ voit un paquet entrant ayant pour adresse IP de destination celle
+ appartenant à un des adaptateurs d'une machine virtuelle, il remplace
+ l'adresse MAC de destination dans l'en-tête Ethernet par l'adresse MAC de
+ l'adaptateur de la VM et il l'envoie.
+ VirtualBox examine les paquets ARP et DHCP afin de découvrir les adresses
+ IP des machines virtuelles.</para></note>
+
+ <para>Selon votre système d'exploitation hôte, vous devriez garder en tête
+ les limites suivantes&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Sur les hôtes <emphasis role="bold">Macintosh</emphasis>,
+ la fonctionnalité est limitée quand on utilise AirPort (le réseau sans
+ fil de Mac) pour du réseau bridgé. Actuellement, VirtualBox ne supporte
+ l'IPv4 qu'avec AirPort. Pour les autres protocoles tels qu'IPv6 et IPX,
+ vous devez choisir une interface filaire.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes <emphasis role="bold">Linux</emphasis>, la
+ fonctionnalité est limitée quand on utilise les interfaces sans fil pour
+ le réseau bridgé. Actuellement, VirtualBox supporte le sans fil qu'en
+ IPv4. Pour les autres protocoles tels qu'IPv6 et IPX, vous devez
+ choisir une interface filaire.</para>
+
+ <para>De plus, le paramétrage du MTU sur moins de 1500 octets sur
+ les interfaces filaires fournies par le pilote sky2 sur les Marvell Yukon II EC
+ Ultra Ethernet NIC est connu pour provoquer une perte de paquets dans
+ certaines conditions.</para>
+
+ <para>Certains adaptateurs nettoient les tags VLAN matériellement. Cela
+ ne permet pas d'utiliser le troncage de VLAN entre une VM et le réseau
+ externe avec les noyaux Linux pre-2.6.27, ni avec les systèmes d'exploitation
+ hôtes autres que Linux.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les hôtes <emphasis role="bold">Solaris</emphasis>, il n'y
+ a aucun support pour utiliser les interfaces sans fil. Le filtrage
+ du trafic de l'invité par IPFilter n'est pas complètement supporté non
+ plus à cause de restrictions techniques du sous-système réseau de
+ Solaris. Ces problèmes devraient être résolus dans la future version
+ Solaris 11.</para>
+
+ <para>À partir de VirtualBox 4.1, sur les hôtes Solaris 11 (construction
+ 159 et supérieur), il est possible d'utiliser les Crossbow Virtual Network
+ Interfaces (VNICs) de Solaris directement, avec VirtualBox, sans
+ configuration dépassant l'exclusivité de chaque VNIC pour chaque
+ interface réseau de l'invité.</para>
+
+ <para>De VirtualBox 2.0.4 à VirtualBox 4.0, VNICs
+ peuvent être utilisés, mais avec les précautions suivantes&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Un VNIC ne peut pas être partagé entre plusieurs
+ interfaces réseaux invitées, c'est-à-dire que chaque interface réseau
+ invitée doit avoir son propre et exclusif VNIC.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il faut affecter au VNIC et à l'interface réseau invitée qui utilise
+ VNIC des adresses MAC identiques.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Quand on utilise des interfaces VLAN avec VirtualBox, il faut
+ les nommer selon le schéma de nommage PPA-hack (par exemple "e1000g513001"),
+ sans quoi l'invité pourrait recevoir des paquets dans un
+ format imprévu.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="network_internal">
+ <title>Réseau interne</title>
+
+ <para>Le réseau interne est identique à celui bridgé dans le sens où la VM
+ peut communiquer directement avec le monde extérieur. Toutefois, le "monde
+ extérieur" se limite aux autres VMs sur le même hôte et connectées au même
+ réseau interne.</para>
+
+ <para>Même si, techniquement, on peut faire tout ce qu'on fait avec un réseau interne
+ sur un réseau bridgé, il présente des avantages de sécurité. En mode réseau
+ bridgé, tout le trafic passe par l'interface physique du système hôte. Il est
+ donc possible d'attacher un snifeur de paquets (tel que Wireshark) à
+ l'interface hôte et d'enregistrer tout le trafic qui y transite. Si, pour
+ une raison quelconque, vous préférez que deux ou plusieurs VMs sur une même
+ machine communiquent en privé, en cachant leurs données au système et à
+ l'utilisateur hôtes, le réseau bridgé n'est donc pas envisageable.</para>
+
+ <para>Les réseaux internes sont créés automatiquement au besoin
+ c'est-à-dire qu'il n'y a pas de configuration centrale. Chaque réseau interne
+ est identifié simplement par son nom. Une fois qu'il y a plus d'une carte
+ réseau virtuelle active avec le même ID réseau interne, le pilote
+ de VirtualBox "branchera" automatiquement les cartes et agira comme un switch.
+ Les pilotes de VirtualBox implémentent un switch Ethernet complet
+ et supportent les frames broadcast/multicast et le mode promiscuous.</para>
+
+ <para>Afin d'attacher la carte réseau d'une VM à un réseau interne, réglez
+ son mode réseau sur "réseau interne". Il existe 2 manières de
+ faire cela&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Vous pouvez utiliser une boîte de dialogue "Paramètres" de la VM
+ dans l'interface graphique de VirtualBox. Dans la catégorie "Réseau"
+ de la boîte de dialogue des paramètres, sélectionnez "réseau interne"
+ dans la liste déroulante des modes réseaux. Maintenant, sélectionnez
+ le nom d'un réseau interne existant dans la liste déroulante en-dessous
+ ou tapez un nouveau nom dans la zone d'édition.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez utiliser <screen>VBoxManage modifyvm "nom VM" --nic&lt;x&gt; intnet</screen>
+ Éventuellement, vous pouvez spécifier un nom de réseau par la commande
+ <screen>VBoxManage modifyvm "nom VM" --intnet&lt;x&gt; "nom réseau"</screen>
+ Si vous ne spécifiez pas de nom réseau, la carte réseau sera
+ attachée au réseau <computeroutput>intnet</computeroutput> par défaut.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Sauf si vous configurez les cartes réseaux (virtuelles) dans les
+ systèmes d'exploitation invités qui participent au réseau interne pour utiliser
+ des adresses IP statiques, vous pourriez vouloir utiliser le serveur DHCP
+ qui est construit dans VirtualBox pour gérer des adresses IP pour le réseau
+ interne. Merci de voir <xref linkend="vboxmanage-dhcpserver" /> pour des
+ détails.</para>
+
+ <para>Par mesure de sécurité, l'implémentation Linux du réseau interne
+ n'autorise que les VMs en fonction sous le même utilisateur à établir
+ un réseau interne.</para>
+ </sect1>
+
+ <sect1 id="network_hostonly">
+ <title>Réseau Host-only</title>
+
+ <para>Le réseau Host-only est un autre mode réseau qui a été ajouté à la
+ version 2.2 de VirtualBox. On peut le voir comme un mode hybride entre les
+ modes réseaux bridgé et interne&#xA0;: comme en réseau bridgé, les machines
+ virtuelles peuvent se parler entre elles et avec l'hôte comme si elles étaient
+ connectées à un commutateur Ethernet physique. Au contraire, comme avec un
+ réseau interne, il faut une interface réseau physique et les machines virtuelles
+ ne peuvent pas parler au monde extérieur à l'hôte puisqu'elles ne sont pas
+ connectées à une interface réseau physique.</para>
+
+ <para>Quand on utilise le mode réseau host-only, VirtualBox crée une nouvelle
+ interface logicielle sur l'hôte qui apparaît alors à côté de vos interfaces
+ réseaux existantes. En d'autres termes, alors que le réseau bridgé et que
+ l'interface physique existante sont utilisés pour y attacher des machines virtuelles,
+ avec le réseau host-only, une nouvelle interface "loopback" est créée sur l'hôte.
+ Et alors qu'avec le réseau interne, le trafic entre les machines virtuelles
+ n'est pas visible, le trafic sur l'interface "loopback" de l'hôte peut être
+ intercepté.</para>
+
+ <para>Le réseau Host-only est particulièrement utile pour les applicatifs
+ virtuels préconfigués où plusieurs machines virtuelles sont groupées et conçues
+ pour collaborer. Par exemple, une machine virtuelle peut contenir un
+ serveur web et une deuxième une base de données, et comme elles sont faites
+ pour se parler, l'applicatif peut demander à VirtualBox de définir un réseau
+ host-only pour les deux. Un deuxième réseau (bridgé) connecterait alors le
+ serveur web au monde extérieur pour offrir des données, mais le monde extérieur
+ ne peut pas se connecter à la base de données.</para>
+
+ <para>Pour passer l'interface réseau d'une machine virtuelle en mode "host
+ only"&#xA0;:<itemizedlist>
+ <listitem>
+ <para>soit allez sur l'onglet "Réseau" de la boîte de dialogue
+ des paramètres de la machine virtuelle dans l'interface graphique et
+ sélectionnez "réseau host-only", soit</para>
+ </listitem>
+
+ <listitem>
+ <para>en ligne de commandes, taper <computeroutput>VBoxManage modifyvm
+ "nom VM" --nic&lt;x&gt; hostonly</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm" /> pour les détails.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Pour le réseau host-only, comme avec le réseau interne, vous pouvez
+ trouver utile que le serveur DHCP soit construit dans VirtualBox. Il peut être activé
+ et donc gérer les adresses IP dans le réseau host-only, puisque sans cela,
+ vous devriez configurer toutes les adresses IP de manière statique.<itemizedlist>
+ <listitem>
+ <para>Dans l'interface graphique de VirtualBox, vous pouvez configurer
+ tous ces éléments dans les paramètres globaux via "Fichier" -&gt;
+ "Paramètres" -&gt; "Réseau", qui liste tous les réseaux host-only
+ qui sont actuellement utilisés. Cliquez sur le nom du réseau puis sur
+ le bouton "Éditer" à droite, et vous pouvez modifier les paramètres
+ de l'adaptateur et du DHCP.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sinon, vous pouvez utiliser <computeroutput>VBoxManage
+ dhcpserver</computeroutput> en ligne de commandes&#xA0;; voir <xref
+ linkend="vboxmanage-dhcpserver" /> pour des détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ <para><note><para>Sur les hôtes Linux et Mac OS X, le nombre d'interfaces
+ host-only est limité à 128. Il n'y a pas de telles limites sur les hôtes
+ Solaris et Windows.</para></note></para>
+ </sect1>
+
+ <sect1 id="network_udp_tunnel">
+ <title>Réseau en tunnel UDP</title>
+
+ <para>Ce mode réseau permet d'interconnecter des machines virtuelles qui
+ fonctionnent sur des hôtes différents.</para>
+
+ <para>Techniquement, cela se fait en encapsulant des trames Ethernet envoyées
+ ou reçues par la carte réseau de l'invité dans des datagrammes UDP/IP, et
+ en les envoyant via n'importe quel réseau disponible sur l'hôte.</para>
+
+ <para>Le mode Tunnel UDP a trois paramètres&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>Port source UDP</glossterm>
+
+ <glossdef>
+ <para>Le port sur lequel écoute l'hôte. Les datagrammess arrivant
+ sur ce port depuis n'importe quelle adresse source seront redirigés
+ vers la partie réceptrice de la carte réseau invitée.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Adresse de destination</glossterm>
+
+ <glossdef>
+ <para>L'adresse IP de l'hôte cible des données transmises.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Port de destination UDP</glossterm>
+
+ <glossdef>
+ <para>Le numéro du port sur lequel sont envoyées les données transmises.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Quand on interconnecte deux machines virtuelles sur deux hôtes différents,
+ leurs adresses IP doivent être échangées. Sur un seul hôte, les ports UDP
+ source et de destination doivent être échangés.</para>
+
+ <para>Dans l'exemple suivant, l'hôte 1 utilise l'adresse IP 10.0.0.1 et l'hôte
+ 2 utilise l'adresse IP 10.0.0.2. La configuration en ligne de commandes&#xA0;:<screen> VBoxManage modifyvm "VM 01 on host 1" --nic&lt;x&gt; generic
+ VBoxManage modifyvm "VM 01 on host 1" --nicgenericdrv&lt;x&gt; UDPTunnel
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; dest=10.0.0.2
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; sport=10001
+ VBoxManage modifyvm "VM 01 on host 1" --nicproperty&lt;x&gt; dport=10002</screen>
+ et <screen> VBoxManage modifyvm "VM 02 on host 2" --nic&lt;y&gt; generic
+ VBoxManage modifyvm "VM 02 on host 2" --nicgenericdrv&lt;y&gt; UDPTunnel
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; dest=10.0.0.1
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; sport=10002
+ VBoxManage modifyvm "VM 02 on host 2" --nicproperty&lt;y&gt; dport=10001</screen></para>
+
+ <para>Bien entendu, vous pouvez toujours interconnecter deux machines virtuelles
+ sur le même hôte en paramétrant le paramètre Adresse de destination sur
+ 127.0.0.1 sur les deux. Cela agira de la même façon que le "réseau interne"
+ dans ce cas, cependant l'hôte peut voir le trafic réseau, ce qui ne pourrait
+ pas être le cas dans un réseau interne normal.</para>
+
+ <para><note><para>
+ Sur les hôtes basés sur Unix (comme Linux, Solaris, Mac OS X), il
+ n'est pas possible de sonder les ports inférieurs à 1024 pour des
+ applications non lancées par <computeroutput>root</computeroutput>.
+ Il s'en suit que si vous essayez de configurer un tel port source UDP,
+ la VM refusera de démarrer.
+ </para></note></para>
+ </sect1>
+
+ <sect1 id="network_vde">
+ <title>Réseau VDE</title>
+
+ <para>Virtual Distributed Ethernet (VDE<footnote>
+ <para>VDE est un projet développé par Renzo Davoli, Professeur associé
+ à l'Université de Bologne, Italie.</para>
+ </footnote>) est une infrastructure réseau flexible et virtuelle,
+ qui couvre plusieurs hôtes d'une manière sécurisée. Elle permet de basculer
+ entre L2/L3, y compris l'émulation du protocole spanning-tree, des VLANs
+ et de WAN. C'est une partie optionnelle de VirtualBox qui n'est incluse
+ que dans le code source.</para>
+
+ <para>Les blocs à construire de base de l'infrastructure sont les switches
+ VDE, les prises VDE et les fils VDE qui inter-connectent les switches.</para>
+
+ <para>Le pilote VDE de VirtualBox prend un paramètre&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>Réseau VDE</glossterm>
+
+ <glossdef>
+ <para>Le nom du socket du switch du réseau VDE auquel la VM
+ sera connecté.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>L'exemple basique suivant montre la manière de connecter une machine
+ virtuelle à un switch VDE&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>Créez un switch VDE&#xA0;: <screen>vde_switch -s /tmp/switch1</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Configuration en ligne de commandes&#xA0;: <screen>VBoxManage modifyvm "nom VM" --nic&lt;x&gt; generic</screen>
+ <screen>VBoxManage modifyvm "nom VM" --nicgenericdrv&lt;x&gt; VDE</screen>
+ Pour se connecter automatiquement à un port du switch affecté, utilisez&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --nicproperty&lt;x&gt; network=/tmp/switch1</screen>
+ Pour se connecter à un port du switch spécifique &lt;n&gt;, utilisez&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --nicproperty&lt;x&gt; network=/tmp/switch1[&lt;n&gt;]</screen>
+ La dernière option est utile pour les VLANs.</para>
+ </listitem>
+
+ <listitem>
+ <para>Éventuellement, reliez le port du switch VDE et le VLAN&#xA0;:
+ (à partir de la ligne de commande du switch) <screen>vde$ vlan/create &lt;VLAN&gt;</screen> <screen>vde$ port/setvlan &lt;port&gt; &lt;VLAN&gt;</screen></para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>VDE n'est disponible sur les hôtes Linux et FreeBSD que si le
+ logiciel VDE est la bibliothèque supplément VDE du projet VirtualSquare sont
+ installées sur le système hôte<footnote>
+ <para>Pour les hôtes Linux, la bibliothèque partagée libvdeplug.so doit
+ être disponible dans le chemin de recherche des bibliothèques partagées</para>
+ </footnote>. Pour plus d'informations sur le paramétrage de réseaux VDE,
+ merci de voir la documentation accompagnant le logiciel.<footnote>
+ <para><ulink
+ url="http://wiki.virtualsquare.org/wiki/index.php/VDE_Basic_Networking">http://wiki.virtualsquare.org/wiki/index.php/VDE_Basic_Networking</ulink>.</para>
+ </footnote></para>
+ </sect1>
+
+ <sect1 id="network_bandwidth_limit">
+ <title>Limiter la bande passante des E/S réseaux</title>
+
+ <para>À partir de la version 4.2, VirtualBox permet de limiter la bande
+ passante maximum utilisée pour la transmission réseau. Plusieurs adaptateurs
+ réseaux d'une VM peuvent partager les limites des groupes de bande passante.
+ Il est possible d'avoir plus d'une limite.</para>
+ <note><para>VirtualBox ne gère le t!afic de la VM que dans le sens de la
+ transmission, en faisant attendre les paquets à envoyer par les machines
+ virtuelles. Il ne limite pas le trafic reçu par les machines virtuelles.</para>
+ </note>
+
+ <para>On configure les limites avec <computeroutput>VBoxManage</computeroutput>. L'exemple
+ ci-dessous crée un groupe de bande passante appelé "Limit", paramètre la
+ limite à 20 Mo/s et affecte le groupe au premier et au deuxième adaptateurs
+ de la VM&#xA0;:<screen>VBoxManage bandwidthctl "nom VM" add Limit --type network --limit 20m
+VBoxManage modifyvm "nom VM" --nicbandwidthgroup1 Limit
+VBoxManage modifyvm "nom VM" --nicbandwidthgroup2 Limit</screen></para>
+
+ <para>Tous les adaptateurs d'un groupe partagent la limite de la bande
+ passante, ce qui veut dire que dans l'exemple ci-dessus, la bande passante
+ des deux adaptateurs associés ne peut jamais dépasser 20
+ Mo/s. Par contre, si un adaptateur n'a pas besoin de bande passante, l'autre
+ peut utiliser le reste de bande passante de son groupe.</para>
+
+ <para>On peut modifier les limites de chaque groupe pendant que la VM
+ est en fonction, les changements étant répercutés immédiatement.
+ L'exemple ci-dessous montre le passage de la limite du groupe créé dans
+ l'exemple ci-dessus à 100 Ko/s&#xA0;:<screen>VBoxManage bandwidthctl "nom VM" set Limit --limit 100k</screen></para>
+
+ <para>Pour désactiver complètement l'encadrement du premier adaptateur de la
+ VM, utilisez la commande suivante&#xA0;:
+ <screen>VBoxManage modifyvm "nom VM" --nicbandwidthgroup1 none</screen></para>
+
+ <para>Il est également possible de désactiver l'encadrement de tous les
+ adaptateurs affectés à un groupe de bande passante alors que la VM est en
+ fonction, en spécifiant la limite zéro pour le groupe. Par exemple,
+ pour le groupe de bande passante nommé "Limit", utilisez&#xA0;:
+ <screen>VBoxManage bandwidthctl "nom VM" set Limit --limit 0</screen></para>
+ </sect1>
+ <sect1 id="network_performance">
+ <title>Améliorer les performances réseaux</title>
+
+ <para>VirtualBox offre une variété d'adaptateurs réseaux virtuels qu'on peut
+ "attacher" au réseau de l'hôte de diverses manières. Selon les
+ types d'adaptateurs et d'attachements utilisés, les performances réseaux
+ seront différentes. Dans une logique de performances, l'adaptateur réseau
+ <emphasis>virtio</emphasis> est préférable aux adaptateurs
+ <emphasis>Intel PRO/1000</emphasis> émulés, préférables eux-mêmes à
+ la famille d'adaptateurs <emphasis>PCNet</emphasis>. Tant les adaptateurs
+ <emphasis>virtio</emphasis> que <emphasis>Intel PRO/1000
+ </emphasis> profitent de la segmentation et de l'offloading de la
+ vérification de somme. La segmentation offloading est essentielle pour de
+ hautes performances car elle permet moins de changements de contextes,
+ augmentant drastiquement les tailles des paquets croisés entre VM et hôte.</para>
+ <note><para>Ni les pilotes <emphasis>virtio</emphasis>, ni ceux
+ <emphasis>Intel PRO/1000</emphasis> de Windows XP supportent la segmentation
+ offloading. Donc, les invités Windows XP n'atteignent jamais les mêmes
+ vitesses de transmission que les autres types d'invités. Reportez-vous
+ à la base MS Knowledge article 842264 pour des informations supplémentaires.</para>
+ </note>
+ <para>Trois types d'attachements&#xA0;: <emphasis>interne</emphasis>,
+ <emphasis>bridgé</emphasis> et <emphasis>host-only</emphasis>, ont des
+ performances presque identiques, le type <emphasis>internal</emphasis>
+ étant légèrement plus rapide et utilisant moins de cycles processeur puisque
+ les paquets ne vont jamais dans la pile réseau de l'hôte. L'attachement
+ <emphasis>NAT</emphasis> est le plus lent (et le plus sûr) de tous les
+ types d'attachement car il fournit une traduction d'adresse réseau.
+ L'attachement du pilote générique est spécial et ne peut pas être considéré
+ comme une alternative à d'autres types d'attachements.</para>
+ <para>Le nombre de processeurs affectés à la VM n'améliore pas les
+ performances et, dans certains cas, cela peut les réduire du fait d'une
+ concurrence dans l'invité.</para>
+ <para>Voici un petit résumé des choses à vérifier afin d'améliorer les
+ performances réseau&#xA0;:</para>
+ <para><orderedlist>
+ <listitem>
+ <para>Si possible utilisez l'adaptateur réseau <emphasis>virtio</emphasis>,
+ ou utilisez un des adaptateurs <emphasis>Intel PRO/1000</emphasis>&#xA0;;</para>
+ </listitem>
+ <listitem>
+ <para>Utilisez l'attachement <emphasis>bridgé</emphasis> plutôt que
+ <emphasis>NAT</emphasis>;</para>
+ </listitem>
+ <listitem>
+ <para>Assurez-vous que la segmentation offloading est activée dans
+ l'OS invité. En général, elle sera activée par défaut. Vous pouvez
+ vérifier et modifier les paramètres d'offloading en utilisant la commnde
+ <computeroutput>ethtool</computeroutput> dans les invités Linux.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_PrivacyPolicy.xml b/doc/manual/fr_FR/user_PrivacyPolicy.xml
new file mode 100644
index 00000000..450eed6d
--- /dev/null
+++ b/doc/manual/fr_FR/user_PrivacyPolicy.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<appendix id="privacy">
+ <title>Informations sur la confidentialité de VirtualBox</title>
+
+ <para>Politique de confidentialité version 5, 13 déc. 2012</para>
+
+ <para>La politique de confidentialité d'Oracle publiée sur
+ <ulink url="http://www.oracle.com/html/privacy.html">http://www.oracle.com/html/privacy.html</ulink>
+ s'applique à vos données personnelles recueillies et utilisées par Oracle.
+ Les informations suivantes décrivent en détails les informations qui sont
+ échangées entre l'application VirtualBox et Oracle et celles recueillies par le site Internet virtualbox.org.</para>
+
+ <para><emphasis role="bold">§ 1 virtualbox.org.</emphasis> Le site Internet
+ "virtualbox.org" enregistre les informations d'utilisation anonymes telles
+ que votre adresse IP, votre situation géographique, votre navigateur, l'endroit
+ d'où vous naviguez, la durée de votre visite, le nombre de pages vues pendant
+ votre visite (collectivement, "données anonymes"). En outre, mais seulement si
+ vous choisissez de vous enregistrer, le chasseur de bogues du site Internet
+ et les forums stockent les données que vous choisissez de révéler lors de
+ l'enregistrement telles que votre nom d'utilisateur et vos informations de
+ contact.</para>
+
+ <para><emphasis role="bold">§ 2 Cookies.</emphasis> Le site Internet virtualbox.org,
+ le chasseur de bogues et le forum utilisent des cookies pour identifier et
+ savoir les navigateurs internet qui nous visitent et, si vous vous êtes
+ enregistré, pour faciliter votre identification. La plupart des navigateurs
+ vous permettent de refuser les cookies. Si vous pouvez visiter le site Internet
+ sans cookies, l'écriture dans le chasseur de bogues et dans les services de
+ forum ne fonctionnera probablement pas sans eux.</para>
+
+ <para><emphasis role="bold">§ 3 Processus d'enregistrement de VirtualBox.</emphasis>
+ Il se peut que l'application VirtualBox demande à l'utilisateur, à titre facultatif,
+ de s'enregistrer auprès d'Oracle. Si vous choisissez de vous enregistrer,
+ votre nom, votre adresse électronique, votre pays et votre société seront
+ envoyés à Oracle et stockées avec
+ l'adresse IP de la personne ainsi que la version du produit et la plateforme
+ utilisée.</para>
+
+ <para><emphasis role="bold">§ 4 Notifications de mise à jour.</emphasis> Il
+ se peut que l'application VirtualBox contacte Oracle pour savoir si une
+ nouvelle version de VirtualBox a été publiée et pour avertir l'utilisateur
+ si tel est le cas. Dans ce processus, des données anonymes telles que votre
+ adresse IP et un numéro de comptage non caractéristique, la version du produit
+ et la plateforme utilisée sont envoyées pour que le serveur sache si une mise
+ à jour est disponible. Par défaut, cette vérification a lieu une fois par
+ jour. Pour modifier cet intervalle ou désactiver ces vérifications, allez
+ dans les préférences de VirtualBox.</para>
+
+ <para><emphasis role="bold">§ 5 Utilisation des informations personnelles.</emphasis>
+ Oracle peut utiliser ces données anonymes et personnelles recueillies par les
+ moyens ci-dessus à des fins statistiques ou pour vous informer automatiquement
+ des nouveaux messages liés au vôtre sur le chasseur de bogues et le forum,
+ pour administrer le site Internet et pour vous contacter du fait de problèmes
+ techniques. Oracle peut aussi vous informer de nouvelles versions de produits
+ liés à VirtualBox.</para>
+
+ <para>Vos données personnelles ne seront en aucun cas transmises à un tiers
+ sans votre consentement, sauf si cela est demandé à Oracle par une loi ou
+ dans le cadre de procédures légales.</para>
+
+ <para><emphasis role="bold">§ 6 Mises à jour.</emphasis> Oracle peut mettre
+ à jour sa politique de confidentialité n'importe quand en en publiant une
+ nouvelle version sur <ulink url="http://www.oracle.com/html/privacy.html">http://www.oracle.com/html/privacy.html</ulink>
+ et les informations de confidentialité seront mises à jour dans la documentation
+ fournie avec l'application VirtualBox. Vous devriez vérifier ces ressources de
+ temps en temps pour vous assurer que les changements vous conviennent.</para>
+</appendix>
diff --git a/doc/manual/fr_FR/user_Security.xml b/doc/manual/fr_FR/user_Security.xml
new file mode 100644
index 00000000..a733d200
--- /dev/null
+++ b/doc/manual/fr_FR/user_Security.xml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="Security">
+ <title>Guide de sécurité</title>
+
+ <sect1>
+ <title>Principes généraux de sécurité</title>
+
+ <para>Les principes suivants sont fondamentaux pour utiliser une application
+ en toute sécurité.
+ <glosslist>
+ <glossentry>
+ <glossterm>Maintenir à jour le logiciel</glossterm>
+ <glossdef>
+ <para>
+ Une des bonnes pratiques de sécurité est d'avoir des versions de
+ logiciel et des correctifs à jour. Activez la notification de
+ mise à jour de VirtualBox pour être averti quand une nouvelle
+ version de VirtualBox est disponible. Quand vous mettez à jour
+ VirtualBox, n'oubliez pas de mettre à jour aussi les suppléments
+ invité. Maintenez à jour le système d'exploitation hôte ainsi
+ que l'invité.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Restreindre l'accès réseau des services critiques</glossterm>
+ <glossdef>
+ <para>
+ Utilisez les moyens, tels qu'un pare-feu, pour protéger votre
+ ordinateur et vo(s) invité(s) de l'extérieur. Choisir le bon mode
+ de réseau pour les VMs permet de distinguer le réseau de l'hôte
+ de l'invité et vice versa.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Suivre le principe du privilège le plus restreint</glossterm>
+ <glossdef>
+ <para>
+ Le principe du privilège le plus restreint dispose qu'il faut
+ donner aux utilisateurs les privilèges strictement nécessaires
+ pour accomplir leurs tâches. Exécutez toujours VirtualBox en
+ tant qu'utilisateur ordinaire. Nous déconseillons fortement
+ d'exécuter VirtualBox avec des privilèges système.
+ </para>
+ <para>
+ Choisissez des droits restrictifs quand vous créez des fichiers
+ de configuration, par exemple quand vous créez
+ /etc/default/virtualbox, voir
+ <xref linkend="linux_install_opts"/>. Le mode 0600 serait
+ idéal.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Surveiller l'activité du système</glossterm>
+ <glossdef>
+ <para>
+ La sécurité du système repose sur trois piliers&#xA0;: de bons
+ protocoles de sécurité, une bonne configuration du système et
+ la surveillance du système. L'évaluation et la lecture des
+ fruits de l'évaluation constituent la troisième exigence. Chaque
+ composant d'un système a un certain degré de capacité à être
+ surveillé. Suivez les conseils d'évaluation de ce document et
+ surveillez régulièrement les fruits de l'évaluation.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>Garder à jour les informations de sécurité</glossterm>
+ <glossdef>
+ <para>
+ Oracle améliore en permanence ses logiciels et sa documentation.
+ Vérifiez ce passage chaque année pour trouver les révisions.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>Installation et configuration sécurisées</title>
+
+ <sect2>
+ <title>Aperçu de l'installation</title>
+ <para>
+ Vous ne devriez télécharger le paquet de base de VirtualBox qu'à partir d'une
+ source de confiance, telle que le site Internet officiel
+ <ulink url="http://www.virtualbox.org">http://www.virtualbox.org</ulink>.
+ Vous devriez vérifier l'intégrité du paquet avec la somme de contrôle
+ SHA256 fournie sur le site officiel.
+ </para>
+ <para>
+ Vous pouvez trouver des instructions générales d'installation de VirtualBox
+ pour les hôtes supportés au <xref linkend="installation"/>.
+ </para>
+ <para>
+ Sur les hôtes Windows, l'installeur permet de désactiver le support USB,
+ le support du réseau bridgé, le support du réseau host-only et les bindings
+ du langage Python, voir <xref linkend="installation_windows"/>. Toutes ces
+ fonctionnalités sont activées par défaut mais la désactivation de certaines
+ d'entre elles pourrait être adaptée si vous n'avez pas besoin des
+ fonctionnalités correspondantes sur une machine virtuelle. Les bindings du
+ langage Python ne sont nécessaires que si vous devez utiliser l'API de
+ VirtualBox avec des applications Python externes. En particulier, le
+ support USB et le support des deux modes réseaux nécessitent d'installer
+ des pilotes du noyau Windows sur l'hôte. Donc, la désactivation de ces
+ fonctions peut non seulement permettre d'encadrer l'utilisateur dans
+ certaines fonctionnalités, mais aussi de minimiser le champ d'attaque d'un
+ pirate potentiel.</para>
+ <para>
+ En général, on installe tout le paquet VirtualBox. Il faut faire
+ l'installation avec les privilèges système. Tous les binaires de VirtualBox
+ devraient être lancés en tant qu'utilisateur ordinaire et jamais en tant
+ qu'utilisateur privilégié.
+ </para>
+ <para>
+ Le pack d'extension d'Oracle VM VirtualBox apporte des fonctionnalités
+ supplémentaires et il doit être téléchargé et installé à part, voir
+ <xref linkend="intro-installing"/>. Comme pour le paquet de base, vous devriez vérifier
+ la somme de contrôle SHA256 du pack d'extension. Comme le système d'installation
+ exige des privilèges systèmes, VirtualBox vous demandera le mot de passe
+ système pendant l'installation du pack d'extension.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Configuration post installation</title>
+ <para>
+ Normalement, aucune configuration post installation d'un composant de
+ VirtualBox n'est nécessaire. Cependant, sur les hôtes Solaris et Linux,
+ il faut configurer les droits adaptés pour que les utilisateurs exécutent
+ des VMs et puissent accéder à certaines ressources de l'hôte. Par exemple,
+ les utilisateurs Linux doivent faire partie du groupe <emphasis>vboxusers</emphasis>
+ pour pouvoir donner des périphériques USB à un invité. Si vous devriez
+ accéder à une interface série à partir d'une VM, il faut donner les bons
+ droits à l'utilisateur pour qu'il puisse accéder à ce périphérique. La
+ même chose s'applique à d'autres ressources comme la partition brute, les
+ lecteurs DVD/CD et les périphériques de son.
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Fonctions de sécurité</title>
+ <para>Cette section évoque les mécanismes de sécurité spécifiques à
+ VirtualBox.</para>
+
+ <sect2>
+ <title>Le modèle de sécurité</title>
+ <para>
+ Une des propriétés des gestionnaires de machines virtuels (VMMs) comme
+ VirtualBox est d'enfermer un invité en l'exécutant dans un environnement
+ protégé, une machine virtuelle laquelle fonctionne en tant que processus
+ d'un utilisateur du système d'exploitation hôte. L'invité ne peut pas
+ communiquer directement avec le matériel hôte ou avec d'autres ordinateurs,
+ mais uniquement via le VMM. Le VMM offre des ressources physiques et des
+ périphériques émulés à l'invité, auxquels on accède par le système d'exploitation hôte pour effectuer les
+ tâches nécessaires. Les paramètres de la VM contrôlent les ressources
+ fournies à l'invité, par exemple la quantité de mémoire de l'invité ou
+ le nombre de processeurs invités (voir <xref linkend="generalsettings"/>)
+ et les fonctionnalités activées pour cet invité (par exemple le contrôle à distance, certains paramètres
+ d'affichage et autres).
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Configuration sécurisée des machines virtuelles</title>
+ <para>
+ Plusieurs aspects de la configuration d'une machine virtuelle sont sujets
+ à des considérations de sécurité.</para>
+
+ <sect3>
+ <title>Le réseau</title>
+ <para>
+ Le mode réseau par défaut des VMs est NAT, ce qui signifie que la VM
+ se comporte comme un ordinateur derrière un routeur, voir
+ <xref linkend="network_nat"/>. L'invité fait partie d'un sous-réseau
+ privé appartenant à cette VM et l'adresse IP de l'invité n'est pas visible
+ de l'extérieur. Ce mode réseau fonctionne sans paramétrage supplémentaire
+ et il suffit pour la plupart des besoins.
+ </para>
+ <para>
+ Si vous utilisez le réseau bridgé, la VM se comporte comme un ordinateur
+ dans le même réseau que l'hôte, voir <xref linkend="network_bridged"/>.
+ Dans ce cas, l'invité a un accès réseau identique à l'hôte et un
+ pare-feu pourrait être nécessaire pour protéger d'autres ordinateurs
+ du sous-réseau contre des invités malveillants potentiels et pour
+ protéger l'invité contre un accès direct par les autres ordinateurs.
+ Dans certains cas, il est intéressant de songer à utiliser une règle
+ de redirection pour un port spécifique en mode NAT, plutôt que d'utiliser
+ le réseau bridgé.
+ </para>
+ <para>
+ Certaines configurations n'ont pas besoin que la VM soit connectée au
+ réseau public. Le réseau interne (voir <xref linkend="network_internal"/>)
+ ou le réseau host-only (voir <xref linkend="network_hostonly"/>) suffisent
+ souvent pour connecter des VMs entre elles ou pour ne connecter des VMs
+ qu'à l'hôte mais pas au réseau public.
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Authentification sur un bureau distant (VRDP)</title>
+ <para>Quand on utilise le pack d'extension de VirtualBox fourni par Oracle
+ pour accéder à distance (VRDP), on peut éventuellement utiliser
+ plusieurs méthodes pour configurer l'authentification RDP. La méthode
+ "null" est très peu sûre, vous devriez l'éviter sur un réseau public.
+ Voir <xref linkend="vbox-auth" /> pour les détails.</para>
+ </sect3>
+
+ <sect3 id="security_clipboard">
+ <title>Presse-papier</title>
+ <para>
+ Le presse-papier partagé permet aux utilisateurs de partager des
+ données entre l'hôte et l'invité. L'activation du presse-papier en
+ "mode bidirectionnel" permet à l'invité de lire et d'écrire dans le
+ presse-papier de l'hôte. Le mode "hôte vers invité" et "Invité vers
+ hôte" limitent l'accès à un seul sens. Si l'invité peut accéder au
+ presse-papier de l'hôte, il peut aussi accéder potentiellement à des
+ données sensibles de l'hôte partagées dans le presse-papier.
+ </para>
+ <para>
+ Si l'invité peut lire et/ou écrire dans le presse-papier de l'hôte,
+ un utilisateur distant qui se connecte à l'invité par le réseau aura
+ également cette possibilité, ce qui peut ne pas être souhaitable. Par
+ conséquent, le presse-papier partagé est désactivé pour les nouvelles
+ machines.
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Dossiers partagés</title>
+ <para>Si un dossier de l'hôte est partagé avec l'invité, n'importe quel utilisateur
+ connecté à distance à l'invité par le réseau peut accéder aussi à ces
+ fichiers car le mécanisme de partage des dossiers ne peut pas être désactivé
+ de manière sélective pour des utilisateurs distants.
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Accélération graphique 3D</title>
+ <para>L'activation de la 3D avec les suppléments invité expose l'hôte
+ à des risques supplémentaires de sécurité&#xA0;; voir <xref
+ linkend="guestadd-3d" />.</para>
+ </sect3>
+
+ <sect3>
+ <title>CD/DVD passthrough</title>
+ <para>L'activation du CD/DVD passthrough permet à l'invité d'effectuer
+ des opérations avancées sur le lecteur CD/DVD, voir <xref linkend="storage-cds"/>.
+ Cela peut poser un problème de sécurité car un invité pourrait écraser
+ des données sur un DVD.
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>USB passthrough</title>
+ <para>
+ La présentation de périphériques USB à l'invité offre à l'invité un
+ accès complet à ces périphériques, voir <xref linkend="settings-usb"/>.
+ Par exemple, outre la lecture et l'écriture du contenu des partitions
+ d'un disque USB externe, l'invité pourra également lire et écrire la
+ table de partitions et des données matérielles sur ce disque.
+ </para>
+ </sect3>
+
+ </sect2>
+
+ <sect2>
+ <title>Configurer et utiliser l'authentification</title>
+
+ <para>Les composants suivants de VirtualBox peuvent utiliser des mots de
+ passe pour l'authentification&#xA0;:<itemizedlist>
+
+ <listitem>
+ <para>Lors de l'utilisation du stockage iSCSI à distance et si le
+ serveur de stockage exige une authentification, vous pouvez fournir
+ un mot de passe d'initiateur avec la commande
+ <computeroutput>VBoxManage storageattach</computeroutput>. Tant que
+ vous ne fournissez pas de réglage de mots de passe (l'option
+ <screen>--settingspwfile</screen> en ligne de commande), ce mot
+ de passe secret est stocké <emphasis role="bold">sans chiffrement</emphasis>
+ dans la configuration de la machine et il est donc potentiellement
+ lisible sur l'hôte. Voir <xref
+ linkend="storage-iscsi" /> et <xref
+ linkend="vboxmanage-storageattach" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Quand vous utilisez le service Web de VirtualBox pour contrôler
+ un hôte VirtualBox à distance, les connexions au service sont authentifiées
+ de plusieurs façons. Ceci est décrit en détails dans manuel de référence
+ du kit de développement logiciel de VirtualBox (SDK)&#xA0;; merci de
+ voir <xref linkend="VirtualBoxAPI" />.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <!--
+ <sect2>
+ <title>Configurer et utiliser les contrôles d'accès</title>
+ </sect2>
+
+ <sect2>
+ <title>Configurer et utiliser l'évaluation de sécurité</title>
+ </sect2>
+
+ <sect2>
+ <title>Congigurer et utiliser d'autres fonctions de sécurité</title>
+ </sect2>
+ -->
+
+ <sect2>
+ <title>Opérations potentiellement non sécurisées</title>
+
+ <para>Les fonctions suivantes de VirtualBox peuvent présenter des problèmes
+ de sécurité&#xA0;:<itemizedlist>
+ <listitem>
+ <para>L'activation de la 3D par les suppléments invité expose l'hôte
+ à des risques de sécurité supplémentaires&#xA0;; voir <xref
+ linkend="guestadd-3d" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>En téléportant une machine, le flux de données par lequel passe
+ le contenu de la mémoire de la machine est transféré d'un hôte à l'autre
+ sans chiffrement. Un tiers ayant un accès au réseau par lequel les
+ données sont transférées pourrait donc intercepter ces données. On
+ pourrait utiliser un tunnel SSH pour sécuriser la connexion entre les
+ deux hôtes. Mais au moment de téléporter une VM par un réseau non fiable,
+ la première question à vous poser est celle de savoir comment les VMs
+ peuvent accéder de manière sécurisée à la/aux même(s) image(s) de disque
+ virtuel avec une performance raisonnable. </para>
+ </listitem>
+
+ <listitem>
+ <para>Quand vous utilisez le service Web de VirtualBox pour contrôler
+ un hôte VirtualBox à distance, les connexions au service (par lesquelles
+ les appels de l'API sont transférées en SOAP XML) ne sont pas chiffrées,
+ elles utilisent par défaut le HTTP en clair. C'est un risque potentiel
+ de sécurité&#xA0;! Pour des détails sur le service Web, merci de voir
+ <xref linkend="VirtualBoxAPI" />.</para>
+ <para>Les services web ne sont pas lancés par défaut. Merci de vous
+ reporter au <xref linkend="vboxwebsrv-daemon"/> pour voir comment
+ démarrer ce service et activer le support SSL/TLS. Il faut le démarrer
+ en tant qu'utilisateur ordinaire et seules les VMs de cet utilisateur
+ sont contrôlables. Par défaut, le service sonde localhost, empêchant
+ toute connexion distante.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le trafic envoyé par une connexion réseau en tunnel UDP n'est
+ pas chiffré. Vous pouvez soit le chiffrer au niveau du réseau hôte
+ (avec IPsec), soit utiliser des protocoles chiffrés dans le réseau
+ invité (tel que SSH). Les propriétés de sécurité sont similaires à un Ethernet bridgé.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Chiffrement</title>
+
+ <para>Les composants suivants de VirtualBox utilisent le chiffrement pour
+ protéger les données sensibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Quand on utilise le pack d'extension de VirtualBox fourni par
+ Oracle pour le support du bureau distant (VRDP), les données peuvent
+ être éventuellement chiffrées. Voir <xref linkend="vrde-crypt" /> pour
+ des détails. Seule la méthode Enhanced RDP Security (RDP5.2) avec le
+ protocole TLS offre une connexion sécurisée. La Standard RDP Security
+ (RDP4 et RDP5.1) est vulnérable à une attaque man-in-the-middle.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+ </sect1>
+
+ <!--
+ <sect1>
+ <title>Security Considerations for Developers</title>
+ </sect1>
+ -->
+
+</chapter>
diff --git a/doc/manual/fr_FR/user_Storage.xml b/doc/manual/fr_FR/user_Storage.xml
new file mode 100644
index 00000000..06049569
--- /dev/null
+++ b/doc/manual/fr_FR/user_Storage.xml
@@ -0,0 +1,959 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="storage">
+ <title>Le stockage virtuel</title>
+
+ <para>Comme la machine virtuelle s'attendra, la plupart du temps, à voir un
+ disque dur construit dans son ordinateur virtuel, VirtualBox doit pouvoir présenter
+ du "vrai" stockage à l'invité comme un disque dur virtuel. Il existe aujourd'hui
+ trois méthodes pour faire cela&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Le plus souvent, VirtualBox utilisera de gros fichiers images sur un
+ vrai disque dur et les présentera à un invité comme des disques durs virtuels.
+ Cela est décrit au <xref linkend="vdidetails" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sinon, si vous avez des serveurs de stockage iSCSI, vous pouvez connecter
+ un tel serveur à VirtualBox comme le décrit le <xref
+ linkend="storage-iscsi" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Enfin, comme fonction avancée, vous pouvez permettre à une machine
+ virtuelle d'accéder directement à un des disques durs de votre hôte&#xA0;;
+ cette fonction avancée est décrite au <xref linkend="rawdisk" />.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Chaque périphérique virtuel (fichier image, cible iSCSI ou disque physique)
+ devra être connecté au contrôleur de disque dur virtuel présenté par VirtualBox
+ à une machine virtuelle. Ceci est expliqué à la prochaine
+ section.</para>
+
+ <sect1 id="harddiskcontrollers">
+ <title>Les contrôleurs de disque dur&#xA0;: IDE, SATA (AHCI), SCSI, SAS</title>
+
+ <para>Dans un vrai PC, les disques durs et les lecteurs de CD/DVD sont
+ connectés à un périphérique appelé le contrôleur de disque dur, qui pilote les
+ opérations du disque dur et les transferts de données. VirtualBox peut émuler
+ les quatre types contrôleurs de disque les plus courants qu'on trouve en
+ général dans les PCs d'aujourd'hui&#xA0;: IDE, SATA (AHCI), SCSI et
+ SAS.<footnote>
+ <para>Le support SATA a été ajouté avec VirtualBox 1.6&#xA0;; le support SCSI
+ expérimental a été ajouté à la 2.1 et complètement implémenté avec la
+ 2.2. En général, les connexions de stockage ont été rendues beaucoup plus
+ flexibles avec VirtualBox 3.1&#xA0;; voir ci-dessous. Le support pour
+ le contrôleur LSI Logic SAS a été ajouté avec
+ VirtualBox 3.2.</para>
+ </footnote><itemizedlist>
+ <listitem>
+ <para>Les contrôleurs <emphasis role="bold">IDE (ATA)</emphasis> sont
+ une extension très avancée de la rétrocompatibilité du contrôleur de
+ disque dur dans les PC/AT IBM (1984). Au début, cette interface
+ ne fonctionnait qu'avec des disques durs mais elle a ensuite été
+ étendue aussi au support des lecteurs CD-ROM et d'autres types de
+ médias amovibles. Dans des PCs physiques, ce standard utilise des
+ nappes de 40 ou 80 fils. Chaque câble peut connecter deux périphériques
+ à un contrôleur, ce qu'on appelait traditionnellement le "maître" et "l'esclave".
+ Les PCs classiques avaient deux connecteurs par câbles, le support
+ jusqu'à quatre périphériques était donc classique.</para>
+
+ <para>Dans VirtualBox, chaque machine virtuelle peut avoir un contrôleur IDE
+ activé, ce qui vous donne jusqu'à quatre périphériques de stockage virtuels
+ connectables à la machine. (Par défaut, un des quatre -- le maître
+ secondaire -) est préconfiguré pour être le lecteur CD/DVD de la
+ machine virtuelle, mais ceci peut être modifié.<footnote>
+ <para>L'affectation du lecteur CD/DVD de la machine au maître
+ secondaire était figé avant VirtualBox 3.1&#xA0;; il est maintenant
+ modifiable et le lecteur peut être sur d'autres slots du contrôleur
+ IDE et il peut y avoir plus de deux lecteurs.</para>
+ </footnote>)</para>
+
+ <para>Donc, même si votre système d'exploitation invité ne supporte
+ pas les périphériques SCSI ou SATA, il devrait toujours pouvoir voir
+ un contrôleur IDE.
+ </para>
+
+ <para>Vous pouvez aussi sélectionner le type exact de contrôleur IDE
+ que VirtualBox devrait matériellement présenter à la machine virtuelle
+ (PIIX3, PIIX4 ou ICH6). Il n'y a pas de différence en termes de performance,
+ mais si vous importez une machine virtuelle d'un autre produit de
+ virtualisation, le système d'exploitation de cette machine peut attendre
+ un type de contrôleur particulier et planter s'il n'est pas trouvé.</para>
+
+ <para>Après avoir créé une nouvelle machine virtuelle avec l'assistant
+ "Nouvelle Machine virtuelle" de l'interface graphique, vous verrez généralement
+ un contrôleur IDE dans les paramètres de "Stockage" de la machine, auquel
+ le lecteur CD/DVD sera connecté, sur un des quatre
+ ports du contrôleur.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Serial ATA (SATA)</emphasis> est un
+ standard récent introduit en 2003. Par rapport à l'IDE, il supporte
+ plus de périphériques par contrôleur et à bien plus haute vitesse. De
+ plus, avec du matériel physique, les périphériques peuvent être ajoutés
+ et supprimés pendant que le système fonctionne. L'interface standard
+ des contrôleurs SATA est appelé
+ Advanced Host Controller Interface (<emphasis
+ role="bold">AHCI</emphasis>).</para>
+
+ <para>Comme un vrai contrôleur SATA, le contrôleur SATA virtuel de
+ VirtualBox travaille plus vite et consomme moins de ressources processeur
+ que le contrôleur IDE virtuel. De plus, il vous permet de connecter
+ jusqu'à 30 disques durs virtuels à une machine au lieu de seulement
+ trois comme avec le contrôleur IDE de VirtualBox (avec le lecteur DVD
+ déjà connecté).</para>
+
+ <para>Pour cette raison, à partir de la version 3.2 et selon le système
+ d'exploitation invité sélectionné, VirtualBox utilise SATA par défaut
+ pour les machines virtuelles nouvellement créées. Un contrôleur virtuel
+ SATA est créé par défaut et le disque par défaut créé avec une nouvelle
+ VM est connecté à ce contrôleur.<warning>
+ <para>Tout le contrôleur SATA et les disques virtuels qui s'y connectent
+ (y compris ceux en mode de compatibilité IDE) ne seront pas vus par
+ les systèmes d'exploitation n'ayant pas de support périphérique
+ pour AHCI. En particulier, <emphasis role="bold">il n'y a pas de
+ support pour AHCI dans Windows avant Windows Vista</emphasis>, donc
+ Windows XP (même SP3) ne verra pas de tels disques sauf si vous
+ installez des pilotes supplémentaires. Il est possible de passer
+ de l'IDE à SATA après l'installation en installant les pilotes SATA
+ et en changeant le type de contrôleur dans la boîte de dialogue des
+ paramètres de la VM.<footnote>
+ <para>VirtualBox recommande les pilotes Intel Matrix Storage
+ qui sont téléchargeables sur <ulink
+ url="http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101">http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2101</ulink>.</para>
+ </footnote></para>
+ </warning></para>
+
+ <para>Pour ajouter un contrôleur SATA à une machine pour laquelle il n'a
+ pas été activé par défaut (soit parce qu'elle a été créée par une
+ version antérieure VirtualBox, soit parce que SATA n'est pas supporté
+ par défaut par le système d'exploitation invité sélectionné), allez
+ dans l'onglet "Stockage" de la boîte de dialogue des paramètres de la
+ machine, cliquez sur le bouton "Ajouter un contrôleur" sous la case
+ "Arborescence de stockage" puis sélectionnez "Ajouter un contrôleur
+ SATA". Après quoi, le contrôleur traditionnel apparaîtra comme un
+ périphérique PCI distinct dans la machine virtuelle et vous pouvez y ajouter
+ des disques virtuels.</para>
+
+ <para>Pour modifier les paramètres du mode de compatibilité IDE pour
+ le contrôleur SATA, merci de voir <xref
+ linkend="vboxmanage-storagectl" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">SCSI</emphasis> est un autre standard
+ industriel signifiant "Small Computer System Interface".
+ SCSI a été standardisé dès 1986 comme une interface générique pour
+ transférer des données entre tous les types de périphériques, y compris
+ ceux de stockage. Aujourd'hui, SCSI est encore utilisé pour connecter
+ des disques durs et des lecteurs à bandes, mais il est généralement devenu
+ un matériel de convenance. On l'utilise encore souvent sur des stations
+ de travail et des serveurs à haute performance.</para>
+
+ <para>En priorité pour des raisons de compatibilité avec d'autres
+ logiciels de virtualisation, VirtualBox supporte en option les contrôleurs
+ LSI Logic et BusLogic SCSI, chacun d'entre eux pouvant gérer jusqu'à
+ 15 disques durs virtuels.</para>
+
+ <para>Pour activer un contrôleur SCSI, sur l'onglet "Stockage" de la
+ boîte de dialogue des paramètres d'une machine virtuelle, cliquez sur
+ le bouton "Ajouter un contrôleur" sous la case "Arborescence de
+ stockage" puis sélectionnez "Ajouter un contrôleur SCSI". Après quoi,
+ le contrôleur supplémentaire apparaîtra comme périphérique PCI distinct
+ dans la machine virtuelle.<warning>
+ <para>Comme avec les autres types de contrôleurs, un contrôleur SCSI
+ ne sera vu que par les systèmes d'exploitation ayant un support
+ de ce périphérique.
+ Windows 2003 et supérieur incluent des pilotes pour le contrôleur
+ LSI Logic, tandis que Windows NT 4.0 et Windows 2000 incluent
+ des pilotes pour le contrôleur BusLogic. Windows XP n'inclut
+ aucun pilote.</para>
+ </warning></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Serial Attached SCSI (SAS)</emphasis> est
+ un autre standard de bus qui utilise le jeu de commandes SCSI. Mais
+ contrairement au SCSI, avec les périphériques physiques, on utilise
+ des câbles série au lieu de ceux parallèles, ce qui simplifie la
+ connexion de périphériques physiques. D'une certaine manière, SAS
+ est donc au SCSI ce que SATA est à l'IDE: il permet des connexions
+ plus fiables et plus rapides.</para>
+
+ <para>Pour supporter des invités de haut niveau exigeant des contrôleurs
+ SAS, VirtualBox émule un contrôleur a LSI Logic SAS qui peut être
+ activé de la même façon qu'un contrôleur SCSI. Pour le moment, on
+ peut connecter jusqu'à huit périphériques au contrôleur SAS.</para>
+
+ <warning>
+ <para>Comme avec SATA, le contrôleur SAS ne sera vu que par les systèmes
+ d'exploitation supportant ce périphérique. En particulier,
+ <emphasis role="bold">il n'y a pas de support de SAS dans Windows
+ avant Windows Vista</emphasis>, donc Windows XP (même SP3) ne
+ verra pas de tels ditques, sauf si vous installez des pilotes supplémentaires.</para>
+ </warning>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>En résumé, VirtualBox vous offre les catégories de connecteur (slot) de stockage
+ virtuels suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para>quatre slots attachés au contrôleur IDE traditionnel, qui sont
+ toujours présents (un d'eux est en général un lecteur de CD/DVD
+ virtuel)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>30 slots attachés au contrôleur SATA s'il est activé et si votre
+ système d'exploitation invité le supporte&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>15 slots attachés au contrôleur SCSI s'il est activé et si le
+ système d'exploitation invité peut le voir&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>huit slots attachés au contrôleur SAS, s'il est activé et si le
+ système d'exploitation invité peut le voir&#xA0;;</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Étant donné le vaste choix de contrôleurs de stockage, il se peut que
+ vous vous demandiez lequel choisir. En général, vous devriez éviter l'IDE,
+ à moins que ce soit le seul contrôleur
+ supporté par votre invité. Que vous utilisiez SATA, SCSI ou SAS ne présente
+ pas de vraie différence. La variété des contrôleurs n'est fournie par
+ VirtualBox que pour des raisons de compatibilité avec le matériel existant
+ et d'autres hyperviseurs.</para>
+ </sect1>
+
+ <sect1 id="vdidetails">
+ <title>Fichiers images de disque (VDI, VMDK, VHD, HDD)</title>
+
+ <para>Les fichiers images de disque résident sur le système hôte sont vus
+ par les systèmes invités comme des disques durs d'une certaine géométrie.
+ Quand un système d'exploitation invité lit ou écrit sur un disque dur,
+ VirtualBox redirige la requête vers le fichier image.</para>
+
+ <para>Comme un disque physique, un disque virtuel est d'une taille (capacité),
+ qui doit être indiquée quand le fichier image est créé. Mais contrairement
+ à un disque physique, VirtualBox vous permet d'étendre un fichier image
+ après l'avoir créé, même s'il contient déjà des données (voir <xref
+ linkend="vboxmanage-modifyvdi" /> pour les détails.<footnote>
+ <para>Le redimensionnement d'image a été ajouté avec VirtualBox 4.0.</para>
+ </footnote></para>
+
+ <para>VirtualBox supporte quatre variantes de fichiers images de disque&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Normalement, VirtualBox utilise son propre format de container
+ pour les disques durs invités -- des fichiers Virtual Disk Image (VDI).
+ En particulier,ce format sera utilisé quand vous créerez une nouvelle
+ machine virtuelle avec un nouveau
+ disque.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox supporte aussi complètement le format de
+ container VMDK ouvert et populaire, utilisé par de nombreux produits
+ de virtualisation, en particulier, par VMware.<footnote>
+ <para>Le premier support du VMDK a été ajouté avec VirtualBox 1.4&#xA0;;
+ depuis la version 2.1, VirtualBox supporte complètement VMDK,
+ ce qui veut dire que vous pouvez créer des dépôts et utiliser toutes
+ les autres fonctions avancées décrites ci-dessus pour les images
+ VDI avec VMDK.</para>
+ </footnote></para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox supporte complètement le format VHD utilisé par
+ Microsoft.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les fichiers images de Parallels version 2 (format HDD) sont
+ aussi supportés.<footnote>
+ <para>Le support a été ajouté avec VirtualBox 3.1.</para>
+ </footnote> Par manque de documentation du format, les nouveaux formats
+ (3 et 4) ne sont pas supportés. Vous pouvez cependant convertir de
+ tels fichiers images à leur version 2 en utilisant des outils fournis
+ par Parallels.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Indépendamment de la capacité et du format du disque, comme on l'a
+ brièvement indiqué au <xref linkend="gui-createvm" />, il y a deux
+ options sur la façon de créer une image de disque&#xA0;: la taille fixe ou
+ dynamique..</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Si vous créez une <emphasis role="bold">image à taille fixe
+ </emphasis>, un fichier image sera créé sur votre système hôte ayant
+ rigoureusement la même taille que la capacité du disque virtuel. Donc,
+ pour un disque de 10G, vous aurez un fichier de 10G. Remarquez que la
+ création d'une image à taille fixe peut prendre du temps selon la taille
+ de l'image et les performances d'écriture de votre disque dur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour une gestion du stockage plus flexible, utilisez une <emphasis
+ role="bold">image dynamique</emphasis>. Elle sera très petite au départ
+ et n'occupera pas de place pour des secteurs de disque virtuel inutilisés,
+ mais elle grandira à chaque fois qu'un secteur de disque sera écrit pour
+ la première fois, jusqu'à ce que le lecteur atteigne la capacité maximale
+ choisie quand le lecteur a été créé. Si ce format prend moins de place au
+ départ, le fait que VirtualBox doit étendre le fichier image consomme
+ des ressources de calcul supplémentaires, donc jusqu'à ce que la taille
+ du fichier de disque ait été stabilisée, les opérations d'écriture peuvent
+ être plus lentes qu'avec des disques à taille fixe. Cependant, après
+ un certain temps, le taux de croissance ralentira et le handicap
+ moyen des opérations d'écriture deviendra négligeable.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="vdis">
+ <title>Le gestionnaire de médias virtuels</title>
+
+ <para>VirtualBox garde une trace de toutes les images de disque dur, de lecteur
+ CD/DVD-ROM et de disquette utilisés par les machines virtuelles. On les désigne
+ souvent comme des "médias connus" et ils proviennent de deux sources&#xA0;:<itemizedlist>
+ <listitem>
+ <para>tous les médias actuellement attachés aux machines virtuelles&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>les médias "enregistrés" pour la compatibilité avec les
+ versions de VirtualBox inférieures à 4.0. Pour les détails sur les modalités
+ du changement de l'enregistrement des médias, avec la version 4.0,
+ merci de vous reporter à <xref
+ linkend="vboxconfigdata" />.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Vous pouvez visualiser et modifier les médias connus dans le <emphasis
+ role="bold">gestionnaire de médias virtuels</emphasis>, auquel vous
+ pouvez accéder à partir du menu "Fichier" de la fenêtre principale de
+ VirtualBox&#xA0;:</para>
+
+ <para><mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtual-disk-manager.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject>Les médias connus sont regroupés, par commodité, dans trois
+ onglets pour les trois formats possibles. Ces formats sont&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Les images de disque dur, soit au format de VirtualBox Virtual Disk
+ Image(VDI), soit dans des formats tiers listés au chapitre précédent&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>Les images CD/DVD au format ISO standard&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>les images de disquette au format standard RAW.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Comme vous pouvez le voir dans l'impression d'écran ci-dessus, pour
+ chaque image, le gestionnaire de médias Virtuels vous montre le chemin complet
+ vers le fichier image et d'autres informations, telles que la machine virtuelle
+ à laquelle est attachée l'image, s'il y en a.</para>
+
+ <para>Le gestionnaire de média virtuels vous permet de</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">supprimer</emphasis> une image du
+ registre (et effacer éventuellement le fichier image en même temps)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">"libérer"</emphasis> une image, c'est-à-dire
+ la détacher d'une machine virtuelle si elle est rattachée actuellement à
+ une d'elles en tant que disque dur virtuel.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>À partir de la version 4.0, pour <emphasis role="bold">créer de
+ nouvelles images de disque,</emphasis> merci d'utiliser l'onglet "Stockage"
+ dans la boîte de dialogue des paramètres d'une machine virtuelle, car les
+ images de disque sont désormais stockées par défaut dans le dossier de chaque
+ machine.</para>
+
+ <para>Vous pouvez copier des fichiers images de disque dur entre systèmes
+ hôtes et les importer alors dans les machines virtuelles, bien que certains
+ systèmes invités (surtout Windows 2000 et XP) exigeront que la nouvelle
+ machine virtuelle soit réglée de façon identique à l'ancienne.<note>
+ <para>Ne faites pas de simples copies des images de disque dur virtuels.
+ Si vous importez une seconde copie dans une machine virtuelle, VirtualBox
+ se plaindra avec une erreur puisque VirtualBox affecte un identifiant
+ unique (UUID) à chaque image de disque pour garantir qu'elle n'est
+ utilisée qu'une fois. Voir <xref
+ linkend="cloningvdis" /> pour des instructions à ce sujet. De plus, si
+ vous voulez copier une machine virtuelle sur un autre système, VirtualBox
+ a un outil d'importation/exportation qui pourrait mieux convenir à vos besoins&#xA0;;
+ voir <xref linkend="ovf" />.</para>
+ </note></para>
+ </sect1>
+
+ <sect1 id="hdimagewrites">
+ <title>Modes spéciaux d'écriture d'images</title>
+
+ <para>Pour chaque image de disque dur virtuel supportée par VirtualBox, vous
+ pouvez déterminer distinctement la façon dont elle peut être touchée par les
+ opérations d'écriture par une machine virtuelle et les opérations de prise
+ d'instantanés. Ceci vaut pour tous les formats d'image précités (VDI, VMDK,
+ VHD ou HDD) et indépendamment du fait qu'une image soit de taille fixe
+ ou dynamique.</para>
+
+ <para>Par défaut, les images sont en mode "normal". Pour marquer une image
+ existante avec un des modes non standards listés ci-dessous, utilisez
+ <computeroutput>VBoxManage modifyhd</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvdi" />. Sinon, utilisez VBoxManage pour attacher
+ l'image à une VM et utilisez l'argument <computeroutput>--mtype</computeroutput>&#xA0;;
+ voir <xref linkend="vboxmanage-storageattach" />.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Avec des <emphasis role="bold">images normales</emphasis> (le
+ réglage par défaut), il n'y a aucune restriction de lecture et d'écriture
+ pour les systèmes invités.</para>
+
+ <para>Quand vous prenez un instantané de votre machine virtuelle comme
+ décrit au <xref linkend="snapshots" />, l'état d'un "disque dur normal"
+ sera enregistré avec l'instantané et, lors du retour à l'instantané,
+ son état sera complètement réinitialisé.</para>
+
+ <para>(Techniquement, pour parler rigoureusement, le fichier image lui-même
+ n'est pas "réinitialisé". Quand un instantané est pris, VirtualBox "gèle"
+ plutôt le fichier image et n'écrit plus dedans. Pour les opérations d'écriture
+ de la VM, un deuxième fichier image de "différenciation" est créé, qui
+ ne reçoit que les modifications de l'image d'origine&#xA0;; voir la section
+ suivante pour les détails.)</para>
+
+ <para>Si vous pouvez attacher une même image "normale" à plus d'une
+ machine virtuelle, une seule de ces machines virtuelles attachée au
+ même fichier image peut être exécuté en même temps, sans quoi il y aurait
+ des conflits si plusieurs machines écrivent dans le même fichier image.<footnote>
+ <para>Cette restriction est plus légère qu'avant
+ VirtualBox 2.2. Jadis, chaque image de disque "normale" ne pouvait
+ être <emphasis>attachée</emphasis> qu'à une seule machine. Maintenant,
+ elle peut être attachée à plus d'une machine du moment qu'une seule
+ des machines soit en fonction.</para>
+ </footnote></para>
+ </listitem>
+
+ <listitem>
+ <para>À l'opposé, <emphasis role="bold">les disques durs write-through</emphasis>
+ ne sont absolument pas concernés par les instantanés&#xA0;: leur
+ état <emphasis>n'est pas</emphasis> sauvegardé quand on prend l'instantané,
+ et il n'est pas restauré quand on le restaure.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les <emphasis role="bold">Disques durs partageables</emphasis> sont
+ des variantes des disques durs write-through. En principe, ils se
+ comportent exactement de la même façon, à savoir que leur état
+ <emphasis>n'est pas</emphasis> sauvegardé quand on prend l'instantané
+ et il n'est pas restauré quand on le restaure. La
+ différence n'apparaît que si vous attachez de tels disques à plusieurs
+ VMs. Les disques partageables peuvent être attachés à plusieurs VMs qui
+ peuvent fonctionner en même temps. Cela les rend adaptés pour l'utilisation
+ de systèmes de fichiers cluster entre des VMs et des applications identiques
+ qui sont explicitement préparés pour accéder en même temps à un
+ disque. Seules des images de disques fixes peuvent être utilisées dans ce
+ mode, les images dynamiques sont rejetées.<warning>
+ <para>C'est une fonctionnalité pour experts, dont la mauvaise utilisation
+ peut provoquer une perte de données -- les systèmes de fichiers réguliers
+ ne sont pas préparés à gérer des modifications simultanées par
+ plusieurs éléments.</para>
+ </warning></para>
+ </listitem>
+
+ <listitem>
+ <para>Ensuite, les <emphasis role="bold">images immuables</emphasis>
+ ne se souviennent des accès en écriture que de manière temporaire pendant
+ que la machine est en fonction&#xA0;; tous les changements sont perdus
+ quand la machine virtuelle est allumée la fois d'après. Il s'en suit qu'à
+ l'inverse des images "normales", une même image immuable peut être utilisée
+ avec plusieurs machines virtuelles sans
+ restrictions.</para>
+
+ <para>La <emphasis>création</emphasis> d'une image immuable a peu de sens
+ puisqu'elle serait vide au départ et elle perdrait son contenu à chaque
+ redémarrage de la machine (sauf si vous voulez vraiment avoir un disque
+ toujours non formaté quand la machine démarre). Du coup, normalement,
+ vous créeriez d'abord une image "normale" puis, quand vous estimez son
+ contenu utile, vous la marquez plus tard comme immuable.</para>
+
+ <para>Si vous prenez l'instantané d'une machine avec des images immuables,
+ sur chaque machine allumée, ces images sont réinitialisées à leur état du dernier
+ instantané (actuel) (et non à l'état de l'image immuable d'origine).</para>
+
+ <note>
+ <para>En guise d'exception particulière, les images immuables
+ <emphasis>ne sont pas</emphasis> réinitialisées si elles sont attachées
+ à une machine dont le dernier instantané a été pris pendant que la machine
+ était en fonction (ce qu'on appelle un instantané "en ligne"). Il s'en
+ suit que si l'instantané actuel de la machine est "en ligne",
+ ses images immuables se comportent exactement comme les images "normales"
+ décrites précédemment. Pour réactiver la réinitialisation automatique
+ de telles images, effacez l'instantané actuel de la machine.</para>
+ </note>
+
+ <para>De nouveau, techniquement, VirtualBox n'écrit jamais directement
+ sur l'image immuable. Toutes les opérations d'écriture de la machine seront
+ envoyées dans une image de différenciation&#xA0;; la prochaine fois que
+ la VM sera allumée, l'image de différenciation sera rétablie à chaque
+ démarrage de la machine, ses images immuables ont exactement le même
+ contenu.<footnote>
+ <para>Ce comportement a aussi changé avec VirtualBox 2.2. Jadis,
+ les images de différenciation étaient désactivées quand la session
+ de la machine <emphasis>se terminait</emphasis>&#xA0;; maintenant,
+ elles sont désactivées à chaque fois que la machine est allumée.</para>
+ </footnote> L'image de différenciation n'est réinitialisée que lorsque
+ la machine est allumée à partir de VirtualBox, pas quand vous redémarrez
+ en demandant un redémarrage à l'intérieur de la machine. C'est
+ également pourquoi les images immuables se comportent comme décrit
+ ci-dessus quand des instantanés sont aussi présents, ce qui utilise
+ également des images de différenciation.</para>
+
+ <para>Si la désactivation automatique de l'image de différenciation au
+ démarrage d'une VM ne correspond pas à vos besoins, vous pouvez la
+ désactiver en utilisant le paramètre
+ <computeroutput>autoreset</computeroutput> de
+ <computeroutput>VBoxManage modifyhd</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvdi" /> pour le detail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Une image en <emphasis role="bold">mode multiattachée</emphasis>
+ peut être attachée à plus d'une machine virtuelle en même temps même si
+ ces machines sont en fonction en même temps. Pour chaque
+ machine virtuelle à laquelle une image est attachée, une image de
+ différenciation est créée. Il s'en suit que les données écrites sur un
+ tel disque dur virtuel par une machine n'est pas vue par les autres machines
+ auxquelles l'image est attachée&#xA0;; chaque machine crée son propre
+ historique des écritures de l'image multiattachée.</para>
+
+ <para>Techniquement, une image "multiattachée" se comporte de la même façon
+ qu'une image "immuable", sauf que l'image de différenciation n'est pas
+ réinitialisée à chaque fois que la machine démarre.</para>
+ </listitem>
+
+ <listitem>
+ <para>Enfin, <emphasis role="bold">l'image en lecture seule</emphasis>
+ est utilisée automatiquement pour les images de CD/DVD, vu que les
+ CDs/DVDs ne sont jamais inscriptibles.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Pour illustrer les différences entre les différents types au
+ regard des instantanés&#xA0;: supposons que avez installé votre système
+ d'exploitation hôte dans votre VM et que vous avez pris un instantané.
+ Imaginons que vous avez accidentellement infecté votre VM avec un virus et
+ vous voulez revenir à l'instantané. Avec une image de disque dur normale,
+ vous restaurez simplement l'instantané et l'état antérieur de votre image
+ de disque dur seront restaurés également (et votre infection virale sera
+ annulée). Avec un disque dur immuable, il suffit d'éteindre et de rallumer
+ votre VM et l'infection virale sera désactivée. Par contre, avec une image
+ write-through, vous ne pouvez pas annuler facilement
+ l'infection virale par la virtualisation, mais vous devrez désinfecter
+ votre machine virtuelle comme un vrai ordinateur.</para>
+
+ <para>Là encore, vous pourriez trouver les images write-through utiles si vous
+ voulez préserver des données critiques indépendamment des instantanés, et
+ comme vous pouvez attacher plus d'une imafe à une VM, vous pourriez vouloir
+ avoir une image immuable pour le système d'exploitation et une en write-through
+ pour vos fichiers de données.</para>
+ </sect1>
+
+ <sect1 id="diffimages">
+ <title>Images de différenciation</title>
+
+ <para>La section précédente portait sur les images de différenciation et la
+ façon de les utiliser avec des instantanés, des images immuables et
+ des attachements immuables. Pour l'utilisateur curieux de VirtualBox, cette
+ section décrit avec plus de détails la façon dont elles fonctionnent.</para>
+
+ <para>Une image de différenciation est une image de disque spéciale qui ne
+ garde que les différences avec une autre image. En elle-même, une image de
+ différenciation est inutile, elle doit toujours se référer à une autre image.
+ On parle donc généralement d'une image de différenciation comme d'un "enfant"
+ qui garde les différences d'avec son
+ "parent".</para>
+
+ <para>Quand une image de différenciation est active, elle reçoit toutes les
+ opérations d'écriture de la machine virtuelle à la place de son parent. L'image
+ de différenciation ne contient que les secteurs du disque dur virtuel qui
+ ont changé depuis que l'image de différenciation a été créée. Quand la
+ machine lit un secteur à partir d'un tel disque dur virtuel, elle regarde
+ d'abord dans l'image de différenciation. Si le secteur est présent, il est
+ renvoyé à partir de là&#xA0;; sinon VirtualBox regarde dans le parent. En
+ d'autres termes, le parent devient en lecture seule&#xA0;; on n'écrit plus jamais
+ dedans mais il est lu si un secteur n'a pas changé.</para>
+
+ <para>On peut enchaîner les images de différenciation. Si une autre image de
+ différenciation est créée pour un disque virtuel qui a déjà une image de
+ différenciation, il devient le "petit-fils" du parent d'origine. La première
+ image de différenciation devient alors également en lecture seule et les
+ opérations d'écriture ne vont que dans l'image de différenciation du second
+ niveau. Lors de la lecture à partir d'un disque virtuel,
+ VirtualBox a besoin de regarder d'abord dans la deuxième image de différenciation,
+ puis dans la première si le secteur n'a pas été trouvé, puis dans
+ l'image d'origine.</para>
+
+ <para>Il peut y avoir un nombre illimité d'images de différenciation et
+ chaque image peut avoir plus d'un enfant. Il s'en suit que les images de
+ différenciation peuvent constituer une arborescence complexe avec des parents,
+ des "fratries" et des enfants, en fonction de la complexité de la configuration
+ de votre machine. Les opérations d'écriture vont toujours dans l'image de
+ différenciation "active" attachée à la machine, et pour les opérations de
+ lecture, VirtualBox peut avoir besoin de regarder jusqu'aux parents dans la
+ chaîne, jusqu'à ce qu'il trouve le secteur en question. Vous pouvez regarder
+ l'arborescence dans le gestionnaire de médias virtuels&#xA0;:<mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="images/virtual-disk-manager2.png"
+ width="12cm" />
+ </imageobject>
+ </mediaobject></para>
+
+ <para>Dans toutes ces situations, du point de vue de la machine virtuelle,
+ le disque dur virtuel se comporte comme n'importe quel autre disque.
+ Pendant que la machine virtuelle est en fonction, il y a un léger ralentissement
+ des E/S (overhead) car il se peut que VirtualBox doive regarder des
+ secteurs plusieurs fois. Cela ne se ressent cependant pas, puisque les tables
+ d'informations des secteurs sont toujours gardées en mémoire et peuvent être
+ consultées rapidement.</para>
+
+ <para>On utilise des images de différenciation dans les situations
+ suivantes&#xA0;:<orderedlist>
+ <listitem>
+ <para><emphasis role="bold">Les instantanés.</emphasis> Quand vous
+ créez un instantané comme expliqué dans la section précédente, VirtualBox
+ "gèle" les images attachées à la machine virtuelle et crée des
+ images de différenciation pour chacun d'eux (pour être précis, une
+ par image qui n'est pas en mode "write-through"). Du point de vue de
+ la machine virtuelle, les disques virtuels continuent d'agir comme
+ avant, mais toutes les opérations d'écriture vont dans les images de
+ différenciation. Chaque fois que vous créez un autre instantané, pour
+ chaque disque dur attaché, une autre image de différenciation est
+ créée et attachée, formant une chaîne ou une arborescence.</para>
+
+ <para>Dans l'impression d'écran ci-dessus, vous voyez que l'image du
+ disque d'origine est maintenant attachée à un instantané, ce qui
+ représente l'état du disque quand on a pris l'instantané.</para>
+
+ <para>Si vous <emphasis role="bold">restaurez</emphasis> maintenant
+ un instantané -- à savoir, si vous voulez revenir à l'état exact de
+ la machine stocké dans le dépôt --, il se produit la chose suivante&#xA0;:<orderedlist>
+ <listitem>
+ <para>VirtualBox copie les paramètres de la machine virtuelle
+ mémorisés dans l'instantané vers la machine virtuelle. Du coup, si
+ vous avez fait des modifications dans la configuration après avoir
+ pris l'instantané, elles sont annulées.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez pris l'instantané quand la machine était en
+ fonction, il contient un état sauvegardé de la machine et cet état
+ est restauré également&#xA0;; après la restauration de l'instantané,
+ la machine sera en état "sauvegardé" et elle reprendra son exécution
+ là où elle avait été commencée la fois suivante. Sinon, la
+ machine sera dans l'état "éteint" et elle fera un démarrage complet.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour chaque image de disque attachée, à la machine, l'image de
+ différenciation contenant les opérations d'écriture depuis que
+ l'instantané actuel a été pris est supprimée et l'image du parent
+ originel est réactivée. (Si vous avec restauré l'instantané "racine",
+ ce sera l'image de disque racine de tous les attachements&#xA0;;
+ sinon ce sera d'autres images de différenciation descendantes).
+ Cela restaure de fait l'ancien état de la machine.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Si vous <emphasis role="bold">effacez</emphasis> plus tard un
+ instantané afin de gagner de l'espace disque, chaque attachement de
+ disque des images de différenciation devient obsolète. Dans ce cas,
+ l'image de différenciation du disque ne peut pas être tout simplement
+ effacée. VirtualBox doit plutôt regarder chaque secteur de l'image de
+ différenciation et le copier dans le parent&#xA0;; ceci s'appelle des
+ images de "synchronisation" et cela peut être une procédure longue
+ selon la taille de l'image de différenciation. Il se peut qu'il faille
+ temporairement une importante quantité d'espace disque supplémentaire
+ avant que l'image de différenciation rendue obsolète par l'opération
+ de synchronisation ne soit effacée.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Les images immuables.</emphasis> Quand une
+ image passe en mode "immuable", une image de différenciation est créée
+ également. Comme avec les instantanés, l'image parent devient alors en
+ lecture seule et l'image de différenciation reçoit toutes les
+ opérations d'écriture. Chaque fois qu'on démarre la machine virtuelle,
+ toutes les images immuables qui y sont attachées voient leur image de
+ différenciation spécifique nettoyée, ce qui réinitialise de fait le
+ disque virtuel de la machine virtuelle à chaque redémarrage.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1 id="cloningvdis">
+ <title>Cloner des images de disque</title>
+
+ <para>Vous pouvez dupliquer des fichiers images de disque dur sur le même hôte
+ pour produire rapidement une deuxième machine virtuelle avec la même configuration
+ de système d'exploitation. Néanmoins, vous devriez ne faire des copies d'images
+ de disques durs virtuels <emphasis>que</emphasis> en utilisant l'outil fourni
+ par VirtualBox&#xA0;; voir <xref
+ linkend="vboxmanage-clonevdi" />. Ceci car VirtualBox affecte un numéro
+ d'identifiant unique (UUID) à chaque image de disque, qui est stocké dans
+ l'image et VirtualBox refusera de fonctionner avec deux images ayant le même
+ numéro. Si vous essayez, par accident, de réimporter une image de disque
+ que vous avez copiée normalement, vous pouvez faire une seconde copie en utilisant
+ l'outil de VirtualBox et l'importer à la place.</para>
+
+ <para>Remarquez que les distributions Linux récentes identifient le disque
+ dur de démarrage à partir de l'ID du disque. L'ID utilisé par VirtualBox pour
+ un lecteur est déterminé à partir de l'UUID de l'image du disque dur virtuel.
+ Donc si vous clonez une image de disque et si vous essayez de démarrer l'image,
+ copiée il se peut que l'invité ne puisse pas déterminer son propre disque de
+ démarrage car l'UUID a changé. Dans ce cas, vous devez adapter l'ID du disque
+ dans le script de votre chargeur de démarrage (par exemple
+ <computeroutput>/boot/grub/menu.lst</computeroutput>). L'ID d'un disque
+ ressemble à ceci&#xA0;:<screen>scsi-SATA_VBOX_HARDDISK_VB5cfdb1e2-c251e503</screen></para>
+
+ <para>L'ID de l'image copiée peut être déterminée avec <screen>hdparm -i /dev/sda</screen></para>
+ </sect1>
+
+ <sect1 id="iocaching">
+ <title>Mise en cache des E/S dans l'hôte</title>
+
+ <para>À partir de la version 3.2, VirtualBox peut éventuellement désactiver
+ la mise en cache de l'E/S qu'effectuerait le système d'exploitation hôte sur
+ les fichiers images du disque.</para>
+
+ <para>Traditionnellement, VirtualBox ouvrait des fichiers images de disque
+ comme des fichiers normaux, ce qui faisait qu'ils étaient mis en cache par le
+ système d'exploitation hôte comme n'importe quel autre fichier. Le principal
+ avantage en est la vitesse&#xA0;: quand l'OS invité écrit sur le disque
+ et quand le cache de l'hôte utilise l'écriture différée, l'opération d'écriture
+ peut être déclarée terminée pour l'OS invité rapidement alors que l'OS hôte
+ peut effectuer l'opération sans synchronisation. De même, quand vous démarrez
+ une VM une deuxième fois et si vous avez assez de mémoire disponible pour que
+ l'OS l'utilise pour la mise en cache, de grandes parties du disque dur virtuel
+ peuvent aller dans la mémoire du système et la VM peut accéder plus rapidement
+ aux données.</para>
+
+ <para>Remarquez que cela ne s'applique qu'aux fichiers images&#xA0;; la
+ mise en tampon ne fonctionnait jamais pour les disques présents sur des
+ supports iSCSI distants, ce qui est le
+ scenario le plus classique dans les paramétrages du type enterprise (voir
+ <xref linkend="storage-iscsi" />).</para>
+
+ <para>Si la mise en tampon est un paramètre par défaut utile pour virtualiser
+ quelques machines sur un ordinateur de bureau, elle présente quelques
+ inconvénients&#xA0;:<orderedlist>
+ <listitem>
+ <para>L'écriture différée dans le cache de l'OS hôte est moins
+ sécurisée. Quand l'OS invité écrit des données, il considère que les
+ données sont écrites même si elles ne sont pas encore arrivées sur le
+ disque physique. Si, pour une raison quelconque, l'écriture n'a pas lieu
+ (problème électrique, plantage de l'hôte), les chances de perdre des
+ données augmentent.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les fichiers images de disque ont tendance à être importantes.
+ Leur mise en cache utilise donc très vite tout le cache de l'OS hôte. Selon
+ l'efficacité de la gestion du cache par l'OS hôte, cela peut ralentir
+ énormément l'hôte, surtout si plusieurs VMs fonctionnent en même temps.
+ Par exemple, sur des hôtes Linux, la mise en cache de l'hôte peut aboutir
+ à un report, par Linux, de toutes les écritures jusqu'à ce que le
+ cache de l'hôte soit presque plein, avant d'écrire tous ces changements
+ en une fois, ce qui peut suspendre l'exécution d'une VM pendant quelques
+ minutes. Cel peut donner des erreurs d'E/S dans l'invité car les requêtes
+ E/S excèderaient le timeout.</para>
+ </listitem>
+
+ <listitem>
+ <para>La mémoire physique est souvent gaspillée, car les systèmes
+ d'exploitation hôtes ont en général leur propre système de mise en cache
+ des E/S, ce qui aboutit à la mise en cache double des données (à la fois dans
+ le cache de l'invité et de l'hôte), avec peu d'effet.
+ </para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Si vous décidez de désactiver la mise en cache des E/S dans l'hôte,
+ pour les raisons ci-dessus, VirtualBox utilise son propre petit cache pour
+ mettre les écritures en tampon, mais en général, aucune lecture de ce cache
+ n'est fait par l'OS invité. De plus, VirtualBox supporte complètement
+ l'E/S asynchrone pour ses contrôleurs SATA, SCSI et SAS virtuels via plusieurs
+ files (thread) d'E/S.</para>
+
+ <para>Les E/S asynchrones n'étant pas supportées par les contrôleurs IDE,
+ pour des raisons de performance, vous pourriez vouloir laisser la mise en
+ cache de l'hôte pour les contrôleurs IDE virtuels de votre VM.</para>
+
+ <para>Pour cette raison, VirtualBox vous permet de configurer si la mise en cache
+ des E/S est utilisée pour chaque contrôleur E/S, indépendamment. Soit décochez
+ la case "Utiliser la mise en cache des E/S de l'hôte" des paramètres de stockage,
+ d'un contrôleur de stockage donné, soit utilisez la commande VBoxManage
+ suivante pour désactiver la mise en cache des E/S de l'hôte pour un contrôleur
+ de stockage virtuel&#xA0;:<screen>VBoxManage storagectl "nom VM" --name &lt;nomcontrôleur&gt; --hostiocache off</screen></para>
+
+ <para>Voir <xref linkend="vboxmanage-storagectl" /> pour les détails.</para>
+
+ <para>Également pour les raisons ci-dessus, VirtualBox utilise maintenant
+ par défaut des contrôleurs SATA pour les nouvelles machines virtuelles.</para>
+ </sect1>
+
+ <sect1 id="storage-bandwidth-limit">
+ <title>Limiter la bande passante des images de disque</title>
+
+ <para>À partir de la version 4.0, VirtualBox permet de limiter la bande
+ passante maximale utilisée pour les E/S asynchrones. De plus, il supporte
+ le partage des limites entre des groupes de bandes passantes pour plusieurs
+ images. Il est possible d'avoir plus d'une limite.</para>
+
+ <para>Les limites sont configurées via
+ <computeroutput>VBoxManage</computeroutput>. L'exemple ci-dessous crée un
+ groupe de bandes passantes nommé "Limit", et pose la limite à 20 Mo/s et
+ affecte le groupe aux disques attachés à la VM&#xA0;:<screen>VBoxManage bandwidthctl "nom VM" add Limit --type disk --limit 20M
+VBoxManage storageattach "nom VM" --storagectl "SATA" --port 0 --device 0 --type hdd
+ --medium disk1.vdi --bandwidthgroup Limit
+VBoxManage storageattach "nom VM" --storagectl "SATA" --port 1 --device 0 --type hdd
+ --medium disk2.vdi --bandwidthgroup Limit</screen></para>
+
+ <para>Tous les disques d'un groupe partagent la limite de la bande passante,
+ c'est-à-dire que dans l'exemple ci-dessus,, la bande passante des deux images
+ combinées ne peut jamais dépasser 20Mo/s. Toutefois, si un disque n'a pas
+ besoin de bande passante, l'autre peut utiliser la bande passante restante
+ dans son groupe.</para>
+
+ <para>Les limites pour chaque groupe peuvent être modifiées pendant que la
+ VM est en fonction, ce qui applique immédiatement les modifications. L'exemple
+ ci-dessous modifie le groupe créé dans l'exemple ci-dessus en 10 Mo/s:<screen>VBoxManage bandwidthctl "nom VM" set Limit --limit 10M</screen></para>
+ </sect1>
+
+ <sect1 id="storage-cds">
+ <title>Support des CD/DVD</title>
+
+ <para>Le/les lecteur(s) CD/DVD virtuels ne supportent par défaut que la
+ lecture. Vous pouvez modifier la configuration d'un média pendant l'exécution.
+ Vous pouvez choisir entre trois options pour présenter les données d'un
+ média&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Lecteur hôte</emphasis> définit que l'invité
+ peut lire sur un média du lecteur hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Fichier image</emphasis> (en général un
+ fichier ISO) donne à l'invité un accès en lecture seule aux données de
+ l'image.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold">Vide</emphasis> signifie un lecteur sans
+ média dedans.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>La modification entre les situations ci-dessus, le changement de
+ média dans le lecteur hôte ou de fichier image signalera un changement de média
+ au système d'exploitation invité, lequel peut réagir au changement (par exemple,
+ en démarrant un programme d'installation).</para>
+
+ <para>Les changements de médias peuvent être empêchés par l'invité et VirtualBox
+ répercute cela en verrouillant le lecteur hôte si besoin. Vous pouvez forcer
+ le retrait d'un média en pareilles situations via l'interface graphique de
+ VirtualBox ou l'outil en ligne de commandes VBoxManage. En fait, cela revient
+ à une éjection en urgence, ce que supportent de nombreux lecteurs CD/DVD
+ avec tous les effets colatéraux associés&#xA0;: l'OS invité peut renvoyer
+ des messages d'erreur comme sur du vrai matériel, les applications invitées peuvent
+ mal se comporter. Utilisez ceci avec précaution.<note>
+ <para>La chaîne d'identification du lecteur fournie à l'invité (qui serait
+ affichée, dans l'invité, par les outils de configuration tels que le
+ gestionnaire de périphériques de Windows) est toujours "VBOX CD-ROM",
+ indépendamment de la configuration actuelle du lecteur virtuel. Ceci pour
+ empêcher la détection d'être faite en retard dans le système d'exploitation
+ invité à chaque fois que la configuration change.</para>
+ </note></para>
+
+ <para>L'émulation standard des CD/DVD ne permet de lire que des formats de
+ CD et de DVD de données standards. Une possibilité supplémentaire, expérimentale,
+ est de donner un accès direct de l'invité au lecteur CD/DVD de l'hôte en
+ activant le "Mode direct" (passthrough). Selon le matériel hôte, cela peut potentiellement
+ faire marcher trois choses&#xA0;:<itemizedlist>
+ <listitem>
+ <para>L'écriture sur CD/DVD depuis l'invité, si le lecteur DVD de l'hôte
+ est un graveur de CD/DVD&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>la lecture de CDs audio&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>la lecture de DVDs chiffrés.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Il existe une case à cocher "Mode direct" dans la boîte de dialogue
+ graphique de configuration du média attaché aux contrôleurs de stockage, ou
+ vous pouvez utiliser l'option
+ <computeroutput>--passthrough</computeroutput> de
+ <computeroutput>VBoxManage storageattach</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-storageattach" /> pour les détails.</para>
+
+ <para>Même si passthrough est activé, les commandes non sûres telles que
+ la mise à jour du firmware du lecteur, seront bloquées. Les formats de CD
+ vidéo ne sont pas du tout supportés, même pas en mode passthrough, et on
+ ne peut pas les lire à partir d'une
+ machine virtuelle.</para>
+
+ <para>Sur les hôtes Solaris, passthrough exige de lancer VirtualBox avec de
+ vrais droits d'administrateur du fait de mesures de sécurité renforcées par
+ l'hôte.</para>
+ </sect1>
+
+ <sect1 id="storage-iscsi">
+ <title>Serveurs iSCSI</title>
+
+ <para>iSCSI signifie "Internet SCSI" et c'est un standard qui permet d'utiliser
+ le protocole SCSI à travers des des connexions Internet. (TCP/IP). En
+ particulier, avec l'arrivée du Gigabit Ethernet, on peut désormais se permettre
+ d'attacher des serveurs de stockage iSCSI simplement comme des disques durs
+ distants à un réseau d'ordinateurs. Dans la terminologie iSCSI, le serveur
+ fournissant les ressources de stockage s'appelle la "cible iSCSI", tandis
+ que le client qui se connecte au serveur et qui accède à ses ressources
+ s'appelle "l'initiateur iSCSIr".</para>
+
+ <para>VirtualBox peut présenter de manière transparente du stockage distant
+ iSCSI à une machine virtuelle en tant que disque dur. Le système d'exploitation
+ ne verra pas de différence entre une image de disque virtuel (fichier VDI)
+ et une cible iSCSI. Pour obtenir cela, VirtualBox comporte un initiateur iSCSI
+ intégré.</para>
+
+ <para>Le support iSCSI de VirtualBox a été développé selon le standard iSCSI
+ et il devrait fonctionner avec toutes les cibles iSCSI conformes au standard.
+ Pour utiliser une cible iSCSI avec VirtualBox, vous devez utiliser la ligne
+ de commande&#xA0;; voir <xref linkend="vboxmanage-storageattach" />.</para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_Technical.xml b/doc/manual/fr_FR/user_Technical.xml
new file mode 100644
index 00000000..5b775555
--- /dev/null
+++ b/doc/manual/fr_FR/user_Technical.xml
@@ -0,0 +1,929 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="TechnicalBackground">
+ <title>Sous-bassements techniques</title>
+
+ <para>Le contenu de ce chapitre n'est pas indispensable pour utiliser
+ VirtualBox avec succès. Nous indiquons ce qui suit à titre informatif pour
+ ceux qui sont plus familiers de la technologie et de l'architecture informatique
+ et qui veulent en savoir davantage sur la manière dont fonctionne VirtualBox "sous
+ le capot".</para>
+
+ <sect1 id="vboxconfigdata">
+ <title>Où VirtualBox stocke ses fichiers</title>
+
+ <para>Dans VirtualBox, une machine virtuelle et ses paramètres sont
+ décrits dans un fichier de paramètres de la machine virtuelle, au format
+ XML. De plus, la plupart des machines virtuelles ont un ou plusieurs
+ disques durs qui leur sont en général présentés par des images de disque
+ (comme au format VDI). L'endroit où sont stockés tous ces fichiers
+ dépend de la version de VirtualBox qui a créé la machine.</para>
+
+ <sect2>
+ <title>Machines créées par VirtualBox version 4.0 ou supérieur</title>
+
+ <para>À partir de la version 4.0, par défaut, chaque machine virtuelle
+ dispose d'un répertoire sur votre ordinateur hôte (où tous les fichiers
+ de cette machine sont stockés -- le fichier des paramètres XML (avec une
+ extension de fichier <computeroutput>.vbox</computeroutput>) et ses
+ images de disque.</para>
+
+ <para>Par défaut, ce "dossier machine" se trouve dans un dossier ordinaire
+ appelé "VirtualBox VMs", créé par VirtualBox dans le dossier personnel
+ de l'utilisateur du système actuel. L'emplacement de ce répertoire personnel
+ dépend des conventions du système d'exploitation hôte&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Sur Windows, il s'agit de
+ <computeroutput>%HOMEDRIVE%%HOMEPATH%</computeroutput>; en général
+ quelque chose comme <computeroutput>C:\Documents and
+ Settings\NomUtilisateur\</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur Mac OS X, il s'agit de
+ <computeroutput>/Users/nomutilisateur</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur Linux et Solaris, il s'agit de
+ <computeroutput>/home/nomutilisateur</computeroutput>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Par simplicité, nous abrègerons cela ci-dessous par
+ <computeroutput>$HOME</computeroutput>. En utilisant cette convention, le
+ dossier ordinaire de toutes les machines virtuelles est
+ <computeroutput>$HOME/VirtualBox VMs</computeroutput>.</para>
+
+ <para>Par exemple, quand vous créez une machine virtuelle qui s'appelle
+ "VM Exemple", vous verrez que VirtualBox crée<orderedlist>
+ <listitem>
+ <para>le dossier <computeroutput>$HOME/VirtualBox VMs/VM Exemple/</computeroutput>
+ et, dans ce dossier,</para>
+ </listitem>
+
+ <listitem>
+ <para>le fichier des paramètres <computeroutput>VM Exemple.vbox</computeroutput> et</para>
+ </listitem>
+
+ <listitem>
+ <para>l'image de disque virtuel <computeroutput>VM Example.vdi</computeroutput>.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>C'est le rangement par défaut si vous utilisez l'assistant "Créer
+ une nouvelle machine virtuelle" comme décrit au <xref linkend="gui-createvm" />. Une fois que
+ vous commencez à travailler avec la VM, des fichiers supplémentaires
+ apparaîtront&#xA0;: vous trouverez des fichiers journaux dans un
+ sous-dossier qui s'appelle
+ <computeroutput>Logs</computeroutput>, et une fois que vous aurez pris
+ des instantanés, ils apparaîtront dans un sous-dossier
+ <computeroutput>Snapshots</computeroutput>. Pour chaque VM, vous pouvez
+ modifier l'emplacement de son dossier d'instantanés dans les paramètres
+ de la VM.</para>
+
+ <para>Vous pouvez changer le dossier machine par défaut en sélectionnant
+ "Préférences" du menu "Fichier" de la fenêtre principale de VirtualBox.
+ Puis, dans la fenêtre qui apparaît, cliquez sur l'onglet "Général". Sinon,
+ utilisez <computeroutput>VBoxManage setproperty
+ machinefolder</computeroutput>&#xA0;;; voir le <xref
+ linkend="vboxmanage-setproperty" />.</para>
+ </sect2>
+
+ <sect2>
+ <title>Machines créées par des versions de VirtualBox antérieures à 4.0</title>
+
+ <para>Si vous avez mis à jour vers VirtualBox 4.0 en partant d'une ancienne
+ version de VirtualBox, vous aurez probablement vos fichiers de paramètres
+ et les disques selon l'organisation du système de fichiers d'alors.</para>
+
+ <para>Avant la version 4.0, VirtualBox séparait les fichiers de
+ paramètrage de la machine des images de disque virtuel. Les fichiers de
+ paramétrage de la machine avaient une extension
+ <computeroutput>.xml</computeroutput> et se trouvaient dans un dossier
+ appelé "Machines" dans le répertoire de configuration global de VirtualBox
+ (voir la prochaine section). Donc, par exemple, sur Linux, il s'agissait
+ du répertoire caché <computeroutput>$HOME/.VirtualBox/Machines</computeroutput>.
+ Le dossier par défaut des disques durs s'appelait "HardDisks" et se trouvait
+ également dans le dossier <computeroutput>.VirtualBox</computeroutput>.
+ L'utilisateur pouvait changer les deux endroits dans les préférences
+ globales (le concept de "dossier par défaut des disques durs" a été
+ abandonné avec VirtualBox 4.0, vu que les images de disque se trouvent
+ désormais par défaut dans le dossier de chaque machine.)</para>
+
+ <para>L'ancienne organisation avait plusieurs gros inconvénients.<orderedlist>
+ <listitem>
+ <para>Il était très difficile de déplacer une machine virtuelle
+ d'un hôte à l'autre car les fichiers concernés ne se trouvaient pas
+ dans le même dossier. De plus, les médias virtuels de toutes les
+ machines étaient enregistrés avec un registre global dans le
+ fichier des paramètres transversaux de VirtualBox.
+ (<computeroutput>$HOME/.VirtualBox/VirtualBox.xml</computeroutput>).</para>
+
+ <para>Pour déplacer une machine sur un autre hôte, il n'était donc
+ pas suffisant de déplacer le fichier des paramètres XML et les images
+ de disque (qui se trouvaient à des endroits différents), mais
+ il fallait en plus copier méticuleusement les entrées du disque
+ dur à partir du XML du registre de médias global, ce qui était
+ presque impossible si la machine avait des instantanés et, donc, des
+ images de différenciation.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le stockage des images de disque virtuel, qui peuvent beaucoup
+ grossir, sous le répertoire caché
+ <computeroutput>.VirtualBox</computeroutput> (au moins sur les hôtes
+ Linux et Solaris) amenait de nombreux utilisateurs à se demander
+ ce qu'était devenu leur espace disque.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Si les nouvelles VMs créées avec VirtualBox 4.0 ou supérieur
+ respectent la nouvelle organisation, pour une compatibilité maximum, les
+ anciennes VMs <emphasis>ne sont pas</emphasis> converties en nouvelle
+ organisation. Sans cela, les paramètres de la machine seraient immanquablement
+ cassés si l'utilisateur rétrogradait de la 4.0 à une version plus ancienne
+ de VirtualBox.</para>
+ </sect2>
+
+ <sect2>
+ <title>Données globales de configuration</title>
+
+ <para>Outre les fichiers des machines virtuelles, VirtualBox gère des
+ données globales de configuration. Sur Linux et Solaris, depuis VirtualBox 4.3
+ elles se trouvent dans le répertoire caché <computeroutput>$HOME/.config/VirtualBox</computeroutput>
+ même si <computeroutput>$HOME/.VirtualBox</computeroutput> sera utilisé
+ s'il existe pour rester compatible avec les anciennes versions&#xA0;; sur
+ un Mac, elles se trouvent
+ dans <computeroutput>$HOME/Library/VirtualBox</computeroutput>.</para>
+
+ <para>VirtualBox crée automatiquement ce répertoire de configuration si
+ nécessaire. Vous pouvez éventuellement fournir un répertoire de configuration
+ alternatif en réglant la variable d'environnement
+ <computeroutput><literal>VBOX_USER_HOME</literal></computeroutput> ou,
+ en plus, sur Linux ou Solaris, en utilisant la variable standard
+ <computeroutput><literal>XDG_CONFIG_HOME</literal></computeroutput> (car le
+ fichier des paramètres globaux de <computeroutput>VirtualBox.xml</computeroutput>
+ pointe vers tous les autres fichiers de configuration, ce qui permet
+ de naviguer entre plusieurs configurations de VirtualBox.</para>
+
+ <para>VirtualBox stocke essentiellement dans ce répertoire son fichier
+ de paramètres globaux, un autre fichier XML appelé
+ <computeroutput>VirtualBox.xml</computeroutput>. Cela comprend des
+ options de configuration globales et la liste des machines virtuelles
+ enregistrées avec des pointeurs vers leurs fichiers de paramètres XML.
+ (Ni l'emplacement du fichier ni son répertoire n'ont changé avec
+ VirtualBox 4.0.)</para>
+
+ <para>Avant VirtualBox 4.0, tous les médias virtuels (fichiers images
+ de disque) étaient également stockés dans un registre global de ce
+ fichier de paramètres. Par compatibilité, ce registre de médias existe
+ toujours si vous mettez à jour VirtualBox et s'il y a des médias
+ issus de machines créées avec une version inférieure à 4.0. Si vous
+ n'avez pas de telles machines, il n'y aura pas de registre de médias
+ global&#xA0;; avec VirtualBox 4.0, chaque fichier XML d'une machine a
+ son propre registre de médias.</para>
+
+ <para>De même, avant VirtualBox 4.0, le dossier "Machines" par défaut
+ et le dossier "HardDisks" par défaut se trouvaient dans le répertoire de
+ configuration de VirtualBox (par exemple, <computeroutput>$HOME/.VirtualBox/Machines</computeroutput>
+ sur Linux). Si vous mettez à jour à partir d'une version de VirtualBox
+ inférieure à la 4.0, les fichiers de ce répertoire ne sont pas déplacés
+ automatiquement afin de ne pas casser la rétro compatibilité.</para>
+ </sect2>
+
+ <sect2>
+ <title>Résumé des modifications de la configuration de 4.0</title>
+
+ <para>La table suivante donne un bref apperçu des changements de configuration
+ entre les versions anciennes et la 4.0 ou ultérieure&#xA0;:</para>
+
+ <table>
+ <title>Changements de configuration en 4.0 et ultérieure</title>
+
+ <tgroup cols="3">
+ <tbody>
+ <row>
+ <entry></entry>
+
+ <entry><emphasis role="bold">Avant 4.0</emphasis></entry>
+
+ <entry><emphasis role="bold">4.0 ou supérieur</emphasis></entry>
+ </row>
+
+ <row>
+ <entry>Dossier par défaut des machines</entry>
+
+ <entry><computeroutput>$HOME/.VirtualBox/Machines</computeroutput></entry>
+
+ <entry><computeroutput>$HOME/VirtualBox
+ VMs</computeroutput></entry>
+ </row>
+
+ <row>
+ <entry>Emplacement des images de disque</entry>
+
+ <entry><computeroutput>$HOME/.VirtualBox/HardDisks</computeroutput></entry>
+
+ <entry>Dans chaque dossier de machine</entry>
+ </row>
+
+ <row>
+ <entry>Extension des fichiers de paramètres de la machine</entry>
+
+ <entry><computeroutput>.xml</computeroutput></entry>
+
+ <entry><computeroutput>.vbox</computeroutput></entry>
+ </row>
+
+ <row>
+ <entry>Registre de médias</entry>
+
+ <entry>Fichier <computeroutput>VirtualBox.xml</computeroutput>
+ global</entry>
+
+ <entry>Chaque fichier des paramètres d'une machine</entry>
+ </row>
+
+ <row>
+ <entry>Enregistrement des médias</entry>
+
+ <entry>Ouverture/fermeture explicite obligatoire</entry>
+
+ <entry>Automatique après la connexion</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+
+ <sect2>
+ <title>Fichiers XML de VirtualBox</title>
+
+ <para>VirtualBox utilise l'XML tant pour les fichiers des paramètres
+ de la machine que pour le fichier de configuration global,
+ <computeroutput>VirtualBox.xml</computeroutput>.</para>
+
+ <para>Tous les fichiers XML de VirtualBox sont versionnés. Quand un nouveau
+ fichier de paramètres est créé (par exemple parce qu'on crée une nouvelle
+ machine virtuelle), VirtualBox utilise automatiquement le format des
+ paramètres de la version actuelle de VirtualBox. Il se peut que ces
+ fichiers ne soient pas lus si vous rétrogradez à une version plus
+ ancienne de VirtualBox. Cependant, quand VirtualBox rencontre un fichier
+ de paramètres d'une ancienne version (comme après une mise à jour de
+ VirtualBox), il essaie autant que possible de garder le format des
+ paramètres. Il ne mettra à jour en silence les fichiers des paramètres
+ que si les paramètres actuels ne peuvent pas être exprimés dans l'ancien
+ format, par exemple parce que vous avez activé une fonction qui n'était
+ pas présente dans l'ancienne version de VirtualBox.<footnote>
+ <para>Par exemple, avant VirtualBox 3.1, il était possible d'activer
+ /désactiver qu'un seul lecteur DVD dans une machine virtuelle.
+ S'il a été activé, cela serait toujours possible sur le deuxième
+ maître du contrôleur IDE. Avec VirtualBox 3.1, on peut connecter
+ des lecteurs DVD à un slot de son choix sur un contrôleur de son choix,
+ donc ils pourraient être sur le deuxième esclave d'un contrôleur IDE
+ ou sur un slot SATA. Si vous avez un fichier de paramètres d'une
+ machine d'une ancienne version et si vous mettez à jour
+ VirtualBox vers la 3.1 et si vous déplacez le lecteur DVD de sa
+ position par défaut, on ne peut pas l'exprimer dans l'ancien format
+ des paramètres&#xA0;; le fichier XML de la machine serait écrit dans
+ le nouveau format et une copie de sauvegarde de l'ancien format serait
+ gardée.</para>
+ </footnote> Dans ces cas-là, VirtualBox sauvegarde le fichier des anciens
+ paramètres dans le répertoire de configuration de la machine virtuelle.
+ Si vous avez besoin de revenir à une ancienne version de VirtualBox,
+ vous devrez recopier à la main ces fichiers de sauvegarde.</para>
+
+ <para>Nous ne documentons volontairement pas les spécifications des fichiers
+ XML de VirtualBox car nous nous réservons le droit de les modifier à l'avenir.
+ Nous vous suggérons donc fortement de ne pas éditer ces fichiers à la main.
+ VirtualBox offre un accès complet à ses données de configuration par son
+ outil en ligne de commande <computeroutput>VBoxManage</computeroutput>
+ (voir le <xref linkend="vboxmanage" />) et son API (voir le <xref
+ linkend="VirtualBoxAPI" />).</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="technical-components">
+ <title>Exécutables et composants de VirtualBox</title>
+
+ <para>VirtualBox a été conçu pour être modulaire et flexible. Quand on ouvre
+ l'interface graphique (GUI) de VirtualBox et qu'on démarre une VM,
+ au moins trois processus fonctionnent&#xA0;:<orderedlist>
+ <listitem>
+ <para><computeroutput>VBoxSVC</computeroutput>, le processus du service
+ de VirtualBox qui fonctionne toujours en tâche de fond. Ce processus
+ est lancé automatiquement par le processus du premier client
+ VirtualBox (la GUI, <computeroutput>VBoxManage</computeroutput>,
+ <computeroutput>VBoxHeadless</computeroutput>, le service web ou
+ autre) et il s'arrête peu de temps après que le dernier client a
+ quitté. Le service est responsable d'archiver, maintenir l'état de
+ toutes les VMs et de la communication entre les composants de VirtualBox.
+ Cette communication est implémentée via COM/XPCOM.<note>
+ <para>Quand nous parlons de "clients" ici, nous voulons dire
+ les clients locaux d'un processus serveur
+ <computeroutput>VBoxSVC</computeroutput> en particulier, pas les
+ clients sur un réseau. VirtualBox utilise son propre concept
+ client/serveur pour permettre à ses processus de coopérer, mais
+ tous ces processus tournent sous le même compte utilisateur du
+ système d'exploitation hôte, et c'est entièrement transparent
+ pour l'utilisateur.</para>
+ </note></para>
+ </listitem>
+
+ <listitem>
+ <para>Le processus de la GUI,, <computeroutput>VirtualBox</computeroutput>,
+ une application client basée sur la bibliothèque multiplateformes
+ Qt. Lancée sans l'option <computeroutput>--startvm</computeroutput>,
+ cette application agit comme un gestionnaire de VirtualBox, en
+ affichant les VMs et leurs paramètres. Elle communique alors les
+ paramètres et les changements d'état à <computeroutput>VBoxSVC</computeroutput>
+ et elle répercute les changements subis par d'autres moyens comme
+ <computeroutput>VBoxManage</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si on lance l'application client <computeroutput>VirtualBox</computeroutput>
+ avec l'argument <computeroutput>--startvm</computeroutput>, elle
+ charge la bibliothèque VMM qui inclut l'hyperviseur proprement dit
+ et qui lance une machine virtuelle et offre une entrée et une sortie
+ à l'invité.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Toutes les interfaces de VirtualBox (client) communiqueront avec le
+ processus du service et elles peuvent contrôler et répercuter l'état actuel.
+ Par exemple, tant le selecteur de VM que la fenêtre de VM ou VBoxManage peuvent
+ être utilisés pour mettre en pause la VM en fonction, les autres composants
+ reflèteront toujours le changement d'état.</para>
+
+ <para>La GUI de VirtualBox n'est qu'une des nombreuses interfaces (client)
+ disponibles. La liste complète comprise dans VirtualBox est&#xA0;:<orderedlist>
+ <listitem>
+ <para><computeroutput>VirtualBox</computeroutput>, l'interface Qt
+ implémentant le gestionnaire et les VMs en fonction&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage</computeroutput>, une alternative
+ moins conviviale mais plus puissante, décrite au <xref
+ linkend="vboxmanage" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxSDL</computeroutput>, une interface graphique
+ simple basée sur la bibliothèque SDL&#xA0;; voir <xref
+ linkend="vboxsdl" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxHeadless</computeroutput>, une interface de
+ VM qui ne fournit pas directement de sortie graphique et d'entrée
+ clavier/souris,
+ mais qui permet une redirection par VirtualBox Remote Desktop Extension;
+ voir <xref linkend="vboxheadless" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>vboxwebsrv</computeroutput>, le processus du
+ service web de VirtualBox qui permet de contrôler un hôte VirtualBox à
+ distance. Ceci est décrit en détails dans le manuel de référence
+ du VirtualBox Software Development Kit (SDK)&#xA0;; merci de voir le
+ <xref linkend="VirtualBoxAPI" /> pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le shell Python de VirtualBox, une alternative en Python à
+ VBoxManage. Elle est aussi décrite dans le manuel de référence du SDK.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>En interne, VirtualBox comprend beaucoup plus d'interfaces
+ séparées. Vous pourriez les rencontrer en analysant les messages d'erreur
+ internes ou les fichiers journaux. Parmi elles, on compte&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>IPRT, une bibliothèque d'exécution portable qui forme une couche
+ d'abstraction d'accès aux fichiers, du filage (threading), la manipulation
+ de chaînes, etc. Chaque fois que VirtualBox accède aux fonctions du
+ système hôte, il le fait via cette bibliothèque pour une portabilité
+ multiplateformes.</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM (Virtual Machine Monitor), le c&#x153;ur de l'hyperviseur.</para>
+ </listitem>
+
+ <listitem>
+ <para>EM (Execution Manager), contrôle l'exécution d'un code invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>REM (Recompiled Execution Monitor), fournit une émulation logicielle
+ des instructions du processeur.</para>
+ </listitem>
+
+ <listitem>
+ <para>TRPM (Trap Manager), intercepte et traite les traps et les
+ exceptions de l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>HWACCM (Hardware Acceleration Manager), offre un support pour
+ VT-x et AMD-V.</para>
+ </listitem>
+
+ <listitem>
+ <para>PDM (Pluggable Device Manager), une interface abstraite entre le
+ VMM et les périphériques émulés qui sépare les implémentations du
+ périphérique de l'intérieur du VMM et qui facilite l'ajout de nouveaux
+ périphériques émulés. Par PDM, des développeurs tiers peuvent ajouter
+ de nouveaux périphériques virtuels à VirtualBox, sans devoir modifier
+ VirtualBox lui-même.</para>
+ </listitem>
+
+ <listitem>
+ <para>PGM (Page Manager), un composant contrôlant la pagination de
+ l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>PATM (Patch Manager), corrige le code de l'invité pour améliorer
+ et accélérer la virtualisation logicielle.</para>
+ </listitem>
+
+ <listitem>
+ <para>TM (Time Manager), gère les horloges et tous les aspects de l'heure
+ des invités.</para>
+ </listitem>
+
+ <listitem>
+ <para>CFGM (Configuration Manager), fournit une structure arborescente
+ qui garde les paramètres de configuration de la VM et tous les périphériques
+ émulés.</para>
+ </listitem>
+
+ <listitem>
+ <para>SSM (Saved State Manager), enregistre et charge l'état d'une VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>VUSB (Virtual USB), une couche USB qui sépare les contrôleurs USB
+ émulés des contrôleurs de l'hôte et des périphériques USB&#xA0;; ceci
+ active également l'USB distant.</para>
+ </listitem>
+
+ <listitem>
+ <para>DBGF (Debug Facility), un débogueur de VM intégré.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox émule un certain nombre de périphériques pour offrir
+ l'environnement matériel dont ont besoin divers invités. La plupart de
+ ces périphériques standards se trouvent dans beaucoup de machines
+ compatibles PC et sont largement supportés par les systèmes d'exploitation
+ invités. Pour les périphériques réseaux et de stockage en particulier,
+ il existe plusieurs options pour que les périphériques émulés accèdent
+ au matériel sous-jacent. Ces périphériques sont gérés par
+ PDM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les suppléments invité pour divers systèmes d'exploitation invités.
+ Il s'agit de code installé dans les machines virtuelles&#xA0;; voir <xref
+ linkend="guestadditions" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le composant "Main" est spécial&#xA0;: il lie tous les modules
+ ci-dessus et c'est la seule API publique fournie par VirtualBox. Tous
+ les processus clients listés ci-dessus n'utilisent que cettte API et
+ n'accèdent jamais directement aux composants de l'hyperviseur. Il s'en
+ suit que des applications tierces utilisant l'API principale de VirtualBox
+ peuvent s'appuyer sur le fait qu'elle est toujours bien testée et que
+ toutes les possibilités de VirtualBox sont complètement présentées. C'est
+ cette API qui est décrite dans le manuel de référence du SDK de
+ VirtualBox indiqué ci-dessus (de nouveau, voir le <xref linkend="VirtualBoxAPI" />).</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="hwvirt">
+ <title>Virtualisation matérielle vs. logicielle</title>
+
+ <para>VirtualBox permet aux logiciels de la machine virtuelle de s'exécuter
+ directement sur le processeur de l'hôte, mais il utilise une gamme de
+ techniques complexes pour intercepter les opérations interférant avec votre
+ hôte. Chaque fois que l'invité essaie de faire quelque chose de potentiellement
+ dangereux pour votre ordinateur et ses données, VirtualBox s'interpose et
+ rentre en action. En particulier, pour beaucoup de matériel auquel croit
+ avoir accès l'invité, VirtualBox simule un certain environnement "virtuel"
+ selon la façon dont vous avez configuré une machine virtuelle. Par exemple,
+ quand l'invité cherche à accéder à un disque dur, VirtualBox redirige ces
+ requêtes vers ce que vous avez configuré comme étant le disque dur virtuel
+ de la machine virtuelle -- en principe, un fichier image sur votre hôte.</para>
+
+ <para>Malheureusement, la plateforme x86 n'a jamais été conçue pour
+ être virtualisée. La détection des
+ situations où VirtualBox doit contrôler le code invité qui s'exécute, comme
+ décrit ci-dessus, est difficile. Il existe deux façons de faire cela&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Depuis 2006, les processeurs Intel et AMD supportent ce qu'on
+ appelle la <emphasis role="bold">"virtualisation matérielle"</emphasis>.
+ Cela signifie que ces processeurs peuvent aider VirtualBox à intercepter
+ des opérations potentiellement dangereuses que pourrait essayer de
+ faire le système d'exploitation invité et ils facilitent la présentation
+ de matériel virtuel à une machine virtuelle.</para>
+
+ <para>Ces fonctionnalités du matériel diffèrent entre les processeurs
+ Intel et AMD. Intel a appelé sa techno <emphasis
+ role="bold">VT-x</emphasis>&#xA0;;; AMD a nommé la leur <emphasis
+ role="bold">AMD-V</emphasis>. Le support d'Intel et d'AMD de la
+ virtualisation est très différent dans le détail, mais pas si différent
+ dans le principe.<note>
+ <para>Sur de nombreux systèmes, les fonctions de virtualisation
+ matérielle doivent être préalablement activées dans le BIOS avant
+ de pouvoir être utilisées par VirtualBox.</para>
+ </note></para>
+ </listitem>
+
+ <listitem>
+ <para>Contrairement aux autres logiciels de virtualisation, pour
+ de nombreux scénari d'utilisation, VirtualBox <emphasis>n'exige pas</emphasis>
+ que les fonctions de virtualisation matérielle soient présentes.
+ Par des techniques sophistiquées, VirtualBox virtualise beaucoup
+ de systèmes d'exploitation invités complets de manière
+ <emphasis role="bold">logicielle</emphasis>. Cela signifie que vous
+ pouvez lancer des machines virtuelles même sur d'anciens processeurs
+ qui ne supportent pas la virtualisation matérielle.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Même si VirtualBox n'exige pas toujours la virtualisation matérielle,
+ son activation est <emphasis>nécessaire</emphasis> dans les scénari suivants&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Certains systèmes d'exploitation, rares, comme OS/2, utilisent
+ des instructions processeur très ésotériques qui ne sont pas supportées
+ par notre virtualisation logicielle. Pour les machines virtuelles
+ configurées pour contenir un tel système d'exploitation, la
+ virtualisation matérielle est activée automatiquement.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le support des invités 64 bits de VirtualBox (ajouté avec la
+ version 2.0) et le multiprocessing (SMP, ajouté avec la version 3.0)
+ exigent tous deux l'activation de la virtualisation matérielle (ce n'est
+ tout de même pas une grosse limite vu l'immense majorité des processeurs
+ 64 bits et multi c&#x153;urs actuels incluant lavirtualisation matérielle&#xA0;;
+ les exceptions à cette règle étant par exemple les anciens processeurs
+ Intel Celeron et AMD Opteron.)</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <warning>
+ <para>Ne lancez pas d'autres hyperviseurs (produits de virtualisation
+ open-source ou propriétaires) en même temps que VirtualBox&#xA0;! Si
+ plusieurs hyperviseurs peuvent, en principe, être <emphasis>installés</emphasis>
+ en parallèle, n'essayez pas de <emphasis>lancer</emphasis> plusieurs
+ machines virtuelles à partir d'hyperviseurs concurrents en même temps.
+ VirtualBox ne peut pas savoir ce qu'un autre hyperviseur essaie de faire
+ sur un même hôte, et surtout si plusieurs produits essaient d'utiliser la
+ virtualisation matérielle, les fonctions telles que VT-x, cela peut planter
+ tout l'hôte. De plus, dans VirtualBox, vous pouvez mélanger la virtualisation
+ logicielle et matérielle quand vous lancez plusieurs VMs. Dans certains cas,
+ une petite perte de performances sera inévitable si vous mélangez des
+ VMs avec virtualisation VT-x et logicielle. Nous recommandons de ne pas
+ mélanger les modes de virtualisation si la performance maximum et
+ une faible surcharge (overhead) sont essentiels. Cela <emphasis>ne s'applique pas</emphasis>
+ à AMD-V.</para>
+ </warning>
+ </sect1>
+
+ <sect1>
+ <title>Détails sur la virtualisation logicielle</title>
+
+ <para>L'implémentation de la virtualisation sur les processeurs x86 sans
+ le support de la virtualisation matérielle est une tâche extraordinairement
+ complexe car l'architecture du processeur n'a pas été conçue pour être
+ virtualisée. On peut résoudre en général les problèmes, mais au prix de
+ performances réduites. Ainsi, il existe un conflit constant entre les
+ performances de virtualisation et la précision.</para>
+
+ <para>Le jeu d'instructions x86 a été conçu au départ dans les années 1970 et
+ subi des modifications significatives avec l'ajout d'un mode protégé dans
+ les années 1980s avec l'architecture du processeur 286, puis à nouveau avec
+ l'Intel 386 et l'architecture 32 bits. Alors que le 386 avait un
+ support de virtualisation vraiment limité pour les opérations en mode réel,
+ (le mode V86, utilisé par la "DOS Box" de Windows 3.x et d'OS/2 2.x), aucun
+ port n'existait pour virtualiser toute l'architecture.</para>
+
+ <para>En théorie, la virtualisation logicielle n'est pas complexe en soi.
+ Outre les quatre niveaux de privilèges ("rings") fournis par le matériel
+ (dont en général on n'utilise que deux&#xA0;: ring 0 pour le mode noyau et ring 3
+ pour le mode utilisateur), il faut faire la différence entre le "contexte
+ hôte" et le "contexte invité".</para>
+
+ <para>Dans le "contexte hôte", tout est comme s'il n'y avait pas d'hyperviseur
+ actif. Cela pourrait être le mode actif si une autre application de votre
+ hôte consomme du temps processeur&#xA0;; dans ce cas, il existe un mode
+ ring 3 hôte et un mode ring 0 hôte. L'hyperviseur n'est pas impliqué.</para>
+
+ <para>Par contre, dans le "contexte invité", une machine virtuelle est active.
+ Tant que le code invité s'exécute en ring 3, ce n'est pas très problématique
+ vu qu'un hyperviseur peut paramétrer les tableaux des pages correctement et
+ exécuter ce code de manière native sur le processeur. Les problèmes arrivent
+ sur la manière d'intercepter ce que fait le noyau de l'invité.</para>
+
+ <para>Il y a plusieurs solutions possibles à ces problèmes. Une approche
+ est l'émulation logicielle totale, ce qui implique généralement une recompilation.
+ A savoir que tout le code qui doit être exécuté par l'invité est analysé,
+ transformé sous une forme qui n'autorisera pas l'invité à modifier et à
+ voir l'état réel du processeur, lequel l'exécutera simplement. Ce processus
+ est bien sûr très complexe et coûteux en termes de performances. (VirtualBox
+ contient un recompilateur basé sur QEMU qu'on peut utiliser pour une
+ émulation logicielle pure, mais le recompilateur n'est activé que dans
+ des situations particulières, décrites ci-dessous.)</para>
+
+ <para>Une autre solution possible est la paravirtualisation, où seuls les
+ OS invités spécialement modifiés sont autorisés à s'exécuter. De cette manière,
+ la plupart des accès matériels sont rendus abstraits et toutes les fonctions
+ qui accèderaient normalement au matériel ou à l'état privilégié du processeur
+ se basent plutôt sur l'hyperviseur. La paravirtualisation peut donner
+ de bonnes fonctionnalités et de bonnes performances sur des processeurs
+ x86 standards, mais cela ne peut marcher que si l'OS invité peut être
+ modifié, ce qui n'est évidemment pas toujours le cas.</para>
+
+ <para>VirtualBox choisit une approche différente. Quand on démarre une
+ machine virtuelle par son pilote noyau du support ring-0, VirtualBox a
+ réglé le système hôte pour qu'il puisse lancer nativement la plupart du
+ code invité, mais il s'insère lui-même "en bas" de l'image. Il peut alors
+ supposer le contrôle lorsque c'est nécessaire -- si une instruction privilégiée
+ est exécutée, l'invité plante (traps) (en particulier car un accès au registre
+ E/S a été tenté et un périphérique doit être virtualisé) ou car des interruptions se produisent. VirtualBox peut
+ alors gérer cela et soit acheminer une requête vers un périphérique virtuel,
+ soit, si possible, déléguer la gestion de tels éléments à l'OS hôte ou
+ invité. Dans le contexte invité, VirtualBox peut être donc dans un des trois
+ états&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>Le code invité ring 3 s'exécute sans modifications, à pleine
+ vitesse, autant que possible. Le nombre d'erreurs sera généralement
+ faible (sauf si l'invité autorise l'E/S du port depuis ring 3,
+ chose que nous ne pouvons pas faire car nous ne voulons pas que
+ l'invité puisse accéder aux ports réels). On parle aussi de "mode brut",
+ car le code ring-3 de l'invité s'exécute sans modifications.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour le code invité en ring 0, VirtualBox utilise une astuce
+ savoureuse&#xA0;: il reconfigure l'invité pour que son code ring-0
+ se lance plutôt en ring 1 (ce qui n'est en principe pas utilisé sur les
+ systèmes d'exploitation x86). Il s'en suit que lorsque le code ring-0
+ de l'invité (qui s'exécute en fait en ring 1) tel que le pilote d'un
+ périphérique invité, essaie d'écrire sur un registre E/S ou d'exécuter
+ une instruction non privilégiée, l'hyperviseur de VirtualBox en ring
+ 0 "réel" peut prendre le dessus.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'hyperviseur (VMM) peut être actif. Chaque fois qu'une erreur
+ survient, VirtualBox regarde l'instruction problématique et il peut
+ la reléguer à un périphérique virtuel, à l'OS hôte, à l'invité ou
+ il peut le lancer dans le recompilateur.</para>
+
+ <para>En particulier, on utilise le recompilateur quand le code invité
+ désactive les interruptions et VirtualBox ne peut pas savoir quand
+ on y reviendra (dans ces situations, VirtualBox analyse en fait le
+ code invité en utilisant son propre désassembleur). De plus, certaines
+ instructions privilégiées telles que LIDT doivent être gérées à part.
+ Enfin, tout le code en mode réel ou protégé (comme le code du BIOS,
+ un invité DOS ou un démarrage de système d'exploitation) se lance
+ complètement dans un recompilateur.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Malheureusement, cela ne fonctionne que dans une certaine mesure.
+ Entre autres, les situations suivantes nécessitent une gestion spéciale&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>L'exécution de code ring 0 en ring 1 provoque beaucoup d'erreurs
+ d'instructions supplémentaires car ring 1 n'est pas autorisé à exécuter
+ des instructions privilégiées (dont le ring-0 de l'invité en contient
+ beaucoup). Avec chacune de ces erreurs, le VMM doit s'arrêter et
+ émuler le code pour obtenir le comportement désiré. Si cela fonctionne,
+ l'émulation de milliers d'erreurs est très coûteuse et très pénalisante
+ en performances de l'invité virtualisé.</para>
+ </listitem>
+
+ <listitem>
+ <para>Il existe des défauts dans l'implémentation de ring 1 de
+ l'architecture x86 qui n'ont jamais été corrigés. Certaines instructions
+ qui <emphasis>planteraient</emphasis> même en ring 1 ne le font pas.
+ Cela concerne par exemple les paires d'instructions LGDT/SGDT, LIDT/SIDT,
+ ou POPF/PUSHF. Alors que l'opération "load" est privilégiée et peut
+ donc planter, l'instruction "store" réussit toujours. Si l'invité est
+ autorisé à les exécuter, il verra l'état réel du PC et pas celui
+ virtualisé. L'instruction CPUID a également le même problème.</para>
+ </listitem>
+
+ <listitem>
+ <para>Un hyperviseur a en général besoin de réserver certaines parties
+ de l'espace d'adresse de l'invité (tant l'espace d'adresse liénaire
+ que les sélecteurs) pour son propre usage. Ce n'est pas complètement
+ transparent pour l'OS invité et cela peut provoquer des conflits.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'instruction SYSENTER (utilisée pour les appels système) exécutée
+ par une application en fonction dans un OS invité transite toujours
+ par le ring 0. Mais c'est là où l'hyperviseur se lance et pas l'OS
+ invité. Dans ce cas, l'hyperviseur doit bloquer et émuler l'instruction
+ même quand ce n'est pas souhaitable.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les registres de segments du processeur contiennent un cache
+ de descripteur "caché" inaccessible de manière logicielle. L'hyperviseur
+ ne peut pas lire, enregistrer ou restaurer cet état, mais l'OS invité
+ peut l'utiliser.</para>
+ </listitem>
+
+ <listitem>
+ <para>Certaines ressources doivent (et peuvent) être neutralisées par
+ l'hyperviseur, mais l'accès est si fréquent que cela crée une perte
+ significative de performance. Un exemple réside dans le registre
+ TPR (Task Priority) en mode 32 bits. Les accès à ce registre doivent
+ être bloqués par l'hyperviseur, mais certains systèmes d'exploitation
+ invités (en particulier Windows et Solaris) écrivent très souvent
+ dans ce registre, ce qui porte une atteinte certaine aux performances
+ de virtualisation.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>Pour corriger ces problèmes de performances et de sécurité, VirtualBox
+ contient un gestionnaire d'analyse et de scan de code
+ (Code Scanning and Analysis Manager (CSAM)), qui désassemble le code invité,
+ et un gestionnaire de correctifs (Patch Manager (PATM)), qui peut le remplacer
+ pendant l'exécution.</para>
+
+ <para>Avant d'exécuter du code ring 0, CSAM le scanne de manière récursive
+ pour trouver des instructions problématiques. PATM le corrige <emphasis>in-situ
+ </emphasis>, c'est-à-dire qu'il remplace l'instruction par un passage à la
+ mémoire de l'hyperviseur, où un générateur intégré a mis une implémentation
+ plus convenable. En réalité, c'est une tâche très complexe car il existe
+ de nombreuses situations compliquées à trouver et à gérer correctement. Donc,
+ vu son actuelle complexité, on pourrait dire que PATM est un recompilateur
+ avancé <emphasis>in-situ</emphasis>.</para>
+
+ <para>De plus, à chaque fois qu'une erreur survient, VirtualBox analyse
+ le code problématique pour déterminer s'il est possible de le corriger afin
+ de l'empêcher de provoquer davantage de futures erreurs. Cette approche
+ fonctionne bien en pratique et améliore de façon drastique les performances
+ de la virtualisation logicielle.</para>
+ </sect1>
+
+ <sect1>
+ <title>Détails sur la virtualisation matérielle</title>
+
+ <para>Avec VT-x d'Intel, il existe deux modes opératoires du processeur&#xA0;:
+ le mode racine VMM et le mode non-racine.<itemizedlist>
+ <listitem>
+ <para>En mode racine, le processeur se comporte beaucoup comme les
+ anciennes générations de processeurs sans le support VT-x. Il y a quatre
+ niveaux de privilèges ("rings") et le même jeu d'instructions est
+ supporté avec, en plus, des instructions spécifiques de virtualisation.
+ Le mode racine est ce que le système d'exploitation hôte utilise sans
+ virtualisation, et il est aussi utilisé par l'hyperviseur quand la
+ virtualisation est active.</para>
+ </listitem>
+
+ <listitem>
+ <para>En mode non-racine, le fonctionnement du processeur est très
+ différent. Il y a toujours quatre niveaux de privilèges et le même
+ jeu d'instructions, mais une nouvelle structure, qui s'appelle VMCS
+ (Virtual Machine Control Structure), contrôle désormais le fonctionnement
+ du processeur et elle détermine la manière dont se comportent certaines
+ instructions. Le mode non-racine est celui dans lequel les systèmes invités
+ fonctionnent.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Le passage du mode racine au mode non racine s'appelle "l'entrée VM",
+ celui en sens inverse s'appelle "Quitter VM". Le VMCS inclut une zone d'état
+ invité et hôte sauvegardée/restaurée à chaque entrée et sortie en VM.
+ Surtout, les VMMS contrôlent les opérations de l'invité qui feront quitter
+ la VM.</para>
+
+ <para>Les VMCS permettent un contrôle très fin via ce que les invités
+ peuvent et ne peuvent pas faire. Par exemple, un hyperviseur peut autoriser
+ un invité à écrire certains bits dans des registres de contrôle protégés,
+ mais pas dans d'autres. Cela permet une virtualisation efficace dans des cas
+ où les invités peuvent être autorisés à écrire des bits de contrôle sans
+ gêner l'hyperviseur, tout en les empêchant de modifier les bits de contrôle
+ dont l'hyperviseur a besoin pour avoir un contrôle total. Le VMMS fournit
+ aussi un contrôle via l'affichage d'interruptions et les exceptions.</para>
+
+ <para>Chaque fois qu'une instruction ou un événement fait quitter une VM,
+ le VMCS contient des informations sur les raisons de la sortie, ainsi que,
+ souvent, des détails environnants. Par exemple, si une écriture dans le
+ registre CR0 fait quitter, l'instruction en cause est enregistrée, ainsi
+ que le fait qu'un accès en écriture sur le registre de contrôle a provoqué
+ la sortie, ainsi que les informations sur le registre source et destination.
+ L'hyperviseur peut ainsi gérer efficacement la condition sans avoir besoin
+ de techniques avancées telles que CSAM et PATM décrits ci-dessus.</para>
+
+ <para>VT-x évite intrinsèquement plusieurs problèmes qui se posent avec la
+ virtualisation logicielle. L'invité a son propre espace d'adresse distinct,
+ qu'il ne partage pas avec l'hyperviseur, ce qui élimine les plantages
+ potentiels. De plus, le code du noyau de l'OS invité se lance avec le
+ privilège ring 0 en mode non racine VMX, rendant inopérants les problèmes
+ d'exécution de code en ring 0 sur des niveaux moins privilégiés. Par exemple,
+ l'instruction SYSENTER peut faire une transition vers le ring 0 sans problèmes.
+ Naturellement, même en ring 0 en mode non-racine VMX, tous les accès E/S par
+ le code invité amène toujours la VM à quitter, permettant l'émulation
+ de périphérique.</para>
+
+ <para>La plus grosse différence entre VT-x et AMD-V est qu'AMD-V fournit
+ un environnement de virtualisation plus complet. VT-x exige que le code
+ non-racine VMX s'exécute en mode pagination activée, ce qui rejette la
+ virtualisation matérielle de logiciels dont le code est en mode réel et en
+ mode protégé non paginé. Cela n'inclut en général que les firmwares et les
+ chargeurs d'OS, néanmoins cela complique l'implémentation d'un hyperviseur
+ avec VT-x. AMD-V n'a pas cette restriction.</para>
+
+ <para>Bien entendu, la virtualisation matérielle n'est pas parfaite. Par
+ rapport à la virtualisation logicielle, la surcharge (overherad) des sorties des VMs est
+ relativement élevée. Cela pose des problèmes aux périphériques dont l'émulation
+ requiet un grand nombre de captures (traps). Par exemple, avec le périphérique
+ VGA en mode 16 couleurs, mon seulement tous les accès au port en E/S, mais
+ aussi tous les accès à la mémoire tampon (framebuffer) doivent être
+ capturés.</para>
+ </sect1>
+
+ <sect1 id="imbriquéepaging">
+ <title>Pagination imbriquée (imbriquée) et VPIDs</title>
+
+ <para>En plus de la virtualisation matérielle "brute", votre processeur peut
+ supporter aussi des techniques sophistiquées supplémentaires&#xA0;:<footnote>
+ <para>VirtualBox 2.0 a ajouté le support de la pagination imbriquée d'AMD&#xA0;;
+ le support de l'EPT et des VPIDs d'Intel a été ajouté à la version 2.1.</para>
+ </footnote><itemizedlist>
+ <listitem>
+ <para>Une fonctionnalité récente, qui s'appelle la
+ <emphasis role="bold">"pagination imbriquée"</emphasis> implémente la
+ gestion de la mémoire dans le matériel, ce qui peut beaucoup accélérer
+ la virtualisation matérielle puisque ces tâches n'ont plus besoin d'être
+ accomplies par le logiciel de virtualisation.</para>
+
+ <para>Avec la pagination imbriquée, le matériel fournit un autre niveau
+ d'indirection en passant du linéaire aux adresses physiques. Les
+ tables de page fonctionnent comme avant mais les adresses linéaires
+ sont désormais d'abord traduites en adresses physiques de "l'invité"
+ et pas directement en adresses physiques. Il existe maintenant un
+ nouveau jeu de registres de pagination sous le mécanisme de pagination
+ traditionnel et qui traduit les adresses physiques invitées en adresses
+ physiques de l'hôte, qui sont utilisées pour accéder à la mémoire.</para>
+
+ <para>La pagination imbriquée élimine la charge causée par les sorties de
+ VM et les accès aux tables de pages. Par définition, avec les tables
+ de pages imbriquées, l'invité peut gérer la pagination sans que l'hyperviseur
+ n'intervienne. La pagination imbriquée améliore ainsi substantiellement
+ les performances de virtualisation.</para>
+
+ <para>Sur les processeurs AMD, la pagination imbriquée est disponible
+ depuis l'architecture Barcelona (K10) -- on l'appelle maintenant la
+ "rapid virtualization indexing" (RVI). Intel a ajouté le support de
+ la pagination imbriquée, qu'ils appellent la "extended page tables" (EPT),
+ à leurs processeurs Core i7 (Nehalem).</para>
+
+ <para>Si la pagination imbriquée est activée, l'hyperviseur de VirtualBox
+ peut également utiliser <emphasis role="bold">grandes pages</emphasis>,
+ pour réduire l'utilisation du TLB et la charge. Cela peut provoquer
+ une amélioration jusqu'à 5% des performances. Pour activer cette
+ fonctionnalité pour une VM, vous avez besoin d'utiliser la commande
+ <computeroutput>VBoxManage modifyvm
+ </computeroutput><computeroutput>--largepages</computeroutput>&#xA0;;
+ voir <xref linkend="vboxmanage-modifyvm" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sur les processeurs Intel, une autre fonction matérielle, qui
+ s'appelle <emphasis role="bold">"Virtual Processor Identifiers" (VPIDs)</emphasis>,
+ peut beaucoup accélérer le changement de contexte en réduisant le
+ besoin coûteux de mémoriser les Translation Lookaside Buffers
+ (TLBs) du processeur.</para>
+
+ <para>Pour activer ces fonctions pour une VM, vous devez utiliser
+ les commandes <computeroutput>VBoxManage modifyvm --vtxvpid</computeroutput> et
+ <computeroutput>--largepages</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-modifyvm" />.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_ThirdParty.xml b/doc/manual/fr_FR/user_ThirdParty.xml
new file mode 100644
index 00000000..bac4f459
--- /dev/null
+++ b/doc/manual/fr_FR/user_ThirdParty.xml
@@ -0,0 +1,3364 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<appendix id="ThirdParty">
+ <title>Briques tiers et licences</title>
+
+ <para>VirtualBox englobe des briques de plusieurs logiciels Open Source.
+ Donc, l'utilisation de ces briques par VirtualBox est soumise à des licences
+ Open Source. Ce document reproduit ces licences et fournit une liste des briques
+ utilisées avec leurs conditions de licences respectives. La section 1 contient
+ une liste des briques utilisées. La section 2 reproduit les licences Open Source
+ applicables. Pour chaque brique, nous fournissons une référence à sa
+ licence.</para>
+
+ <para>Le code source des briques listées ci-dessous ainsi que le reste du
+ code de VirtualBox publiés sous licence open source sont disponibles sur
+ <ulink url="http://www.virtualbox.org">http://www.virtualbox.org</ulink>, sous
+ forme d'archives tar pour des versions en particulier et d'un dépôt SVN en
+ direct.</para>
+
+ <sect1>
+ <title>briques</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>VirtualBox contient des morceaux de QEMU soumis aux licences
+ de <xref linkend="licX11" xrefstyle="template: %n" /> et
+ <xref linkend="licLGPL" xrefstyle="template: %n" /> et</para>
+
+ <para>(C) 2003-2005 Fabrice Bellard; Copyright (C) 2004-2005 Vassili
+ Karpov (malc); Copyright (c) 2004 Antony T Curtis; Copyright (C) 2003
+ Jocelyn Mayer</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code sous licence de
+ <xref linkend="licX11" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright 2004 par the Massachusetts Institute of
+ Technology.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code du BIOS VGA BOCHS soumis à la licence
+ sur <xref linkend="licLGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 2001, 2002 L'équipe des développeurs LGPL VGABios.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code du BIOS BOCHS ROM soumis à la licence
+ de <xref linkend="licLGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 2002 MandrakeSoft S.A.; Copyright (C) 2004 Fabrice
+ Bellard; Copyright (C) 2005 Struan Bartlett.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient la bibliothèque zlib soumise à la licence de
+ <xref linkend="licZLIB" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 1995-2003 Jean-loup Gailly et Mark Adler.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir OpenSSL soumis à la licence dans
+ <xref linkend="licSSL" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com). Ce
+ produit inclut un logiciel écrit par Tim Hudson
+ (tjh@cryptsoft.com).</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir NSPR et XPCOM soumis à la licence
+ de <xref linkend="licMPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) Les auteurs.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient Slirp soumis à la licence de
+ <xref linkend="licSlirp" xrefstyle="template: %n" /> et qui a été écrit
+ par Danny Gasparovski.</para>
+
+ <para>Copyright (C) 1995, 1996 Tous droits réservés.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient liblzf qui est soumis à la licence dans
+ <xref linkend="licLZF" xrefstyle="template: %n" /> and</para>
+
+ <para>Copyright (C) 2000-2005 Marc Alexander Lehmann
+ &lt;schmorp@schmorp.de&gt;</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut inclure une copie modifiée de rdesktop soumis à la
+ licence dans <xref linkend="licGPL"
+ xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) Matthew Chapman and others.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut inclure une copie modifiée de kchmviewer soumis
+ à la licence dans <xref linkend="licGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) George Yunaev and others.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir Etherboot soumis à la licence dans
+ <xref linkend="licGPL" xrefstyle="template: %n" />, sauf l'aggrégation
+ Etherboot dont un autre travail dont un autre travail publié sous la même
+ licence (voir
+ <literal><ulink
+ url="http://etherboot.sourceforge.net/clinks.html">http://etherboot.sourceforge.net/clinks.html</ulink></literal>).
+ Etherboot est</para>
+
+ <para>Copyright (C) L'équipe de Etherboot.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir iPXE, soumis à la licence dans
+ <xref linkend="licGPL" xrefstyle="template: %n" /> et</para>
+ <para>Copyright (C) Michael Brown &lt;mbrown@fensystems.co.uk&gt;
+ and others.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code de Wine soumis à la licence dans
+ <xref linkend="licLGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright 1993 Bob Amstadt, Copyright 1996 Albrecht Kleine,
+ Copyright 1997 David Faure, Copyright 1998 Morten Welinder, Copyright
+ 1998 Ulrich Weigand, Copyright 1999 Ove Koven</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code de lwIP soumis à la licence
+ dans <xref linkend="licLWIP" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 2001, 2002 Swedish Institute of Computer
+ Science (Institut de science informatique).</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient libxml qui est soumis à la licence dans
+ <xref linkend="licLibXML" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1998-2003 Daniel Veillard.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient libxslt qui est soumis à la licence in
+ <xref linkend="licLibXSLT" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 2001-2002 Daniel Veillard and Copyright (C)
+ 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code des outils de services Web gSOAP XML
+ sous licence <xref
+ linkend="licgSOAP" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 2000-2007, Robert van Engelen, Genivia Inc., et
+ autres.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox inclut l'application tunctl (sous le nom
+ VBoxTunctl) de la User-mode Linux suite soumise à la licence dans
+ <xref linkend="licGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 2002 Jeff Dike.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code de Chromium, implémentation OpenGL
+ soumise à la licence dans <xref
+ linkend="licChromium" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) Stanford University, The Regents of the University
+ of California, Red Hat, et autres.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient libcurl qui est soumis à la licence dans
+ <xref linkend="licLibCurl" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1996-2009, Daniel Stenberg.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient dnsproxy qui est soumis à la licence dans
+ <xref linkend="licMIT" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (c) 2003, 2004, 2005 Armin Wolfermann.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir iniparser soumis à la licence dans
+ <xref linkend="licMIT" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (c) 2000-2008 by Nicolas Devillard.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code de libgd soumis à la licence de
+ <xref linkend="licLibgd" xrefstyle="template: %n"/> et</para>
+
+ <para>Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Pierre-Alain Joye (pierre@libgd.org).</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient du code du kit de développement EFI
+ qui est soumis à la licence dans
+ <xref linkend="licBsdIntel" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (c) 2004-2008, Intel Corporation.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient libjpeg soumis à la licence dans
+ <xref linkend="licJPEG" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir l'extension x86 SIMD de la bibliothèque
+ IJG JPEG, soumis à la licence dans <xref linkend="licJPEGSIMD"
+ xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright 2009 Pierre Ossman &lt;ossman@cendio.se&gt; pour Cendio AB;
+ Copyright 2010 D. R. Commander; Copyright (C) 1999-2006, MIYASAKA Masaru.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut inclure une copie de Qt soumis à la licence de
+ <xref linkend="licLGPL" xrefstyle="template: %n" />
+ et</para>
+
+ <para>Copyright (C) 2010, 2011 Nokia Corporation et/ou sa/ses filiale(s).</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient ces morceaux du noyau FreeBSD soumis à la
+ licence dans <xref linkend="licFreeBsd" xrefstyle="template: %n" />.</para>
+ </listitem>
+ <listitem>
+ <para>VirtualBox contient des morceaux du noyau NetBSD soumis à la licence
+ dans <xref linkend="licNetBsd" xrefstyle="template: %n" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de liblightdm-gobject soumis à la
+ licence dans <xref linkend="licLGPL" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 2010-2013 Canonical Ltd.; Copyright (C) 2010-2011 Robert Ancell.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de glib soumis à la
+ licence dans <xref linkend="licLGPL" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1995-2011 L'équipe de Glib</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de PCRE soumis à la
+ licence dans <xref linkend="licPcre" xrefstyle="template: %n" /> et</para>
+ <para>Copyright (c) 1997-2012 University of Cambridge;
+ Copyright(c) 2009-2012 Zoltan Herczeg;
+ Copyright (c) 2007-2012, Google Inc.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de libffi soumis à la
+ licence dans <xref linkend="licLibffi" xrefstyle="template: %n" /> et</para>
+ <para>
+ Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc et autres.
+ Voir les fichiers du source pour les détails.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de FLTK soumis aux
+ licences dans <xref linkend="licFltk" xrefstyle="template: %n" /> et
+ <xref linkend="licLGPL" xrefstyle="template: %n"/> et </para>
+ <para>
+ Copyright (C) 1991-2012 L'équipe FLTK
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux d'Expat soumis à la
+ licence dans <xref linkend="licExpat" xrefstyle="template: %n" /> et</para>
+ <para>
+ Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ et Clark Cooper; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006
+ Responsables d'Expat.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de Fontconfig soumis à la
+ licence dans <xref linkend="licFontconfig" xrefstyle="template: %n" />
+ et</para>
+ <para>
+ Copyright (C) 2001, 2003 Keith Packard
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de Freetype soumis à la
+ licence dans <xref linkend="licFreetype" xrefstyle="template: %n" />
+ et</para>
+ <para>
+ Copyright 2012 Le projet FreeType (www.freetype.org). Tous droits
+ réservés.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir du code du SDK WebM VP8 Codec soumis à la
+ licence dans <xref linkend="licVPX" xrefstyle="template: %n" />
+ et </para>
+ <para>
+ Copyright (c) 2010, The WebM Project authors. Tous droits réservés.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de liblightdm-gobject soumis à la
+ licence dans <xref linkend="licLGPL" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 2010-2013 Canonical Ltd.; Copyright (C) 2010-2011 Robert Ancell.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de glib soumis à la
+ licence dans <xref linkend="licLGPL" xrefstyle="template: %n" /> et</para>
+
+ <para>Copyright (C) 1995-2011 L'équipe de Glib</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de PCRE soumis à la
+ licence dans <xref linkend="licPcre" xrefstyle="template: %n" /> et</para>
+ <para>Copyright (c) 1997-2012 University of Cambridge;
+ Copyright(c) 2009-2012 Zoltan Herczeg;
+ Copyright (c) 2007-2012, Google Inc.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de libffi soumis à la
+ licence dans <xref linkend="licLibffi" xrefstyle="template: %n" /> et</para>
+ <para>
+ Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc et autres.
+ Voir les fichiers du source pour les détails.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de FLTK soumis aux
+ licences dans <xref linkend="licFltk" xrefstyle="template: %n" /> ainsi que
+ dans <xref linkend="licLGPL" xrefstyle="template: %n"/> et </para>
+ <para>
+ Copyright (C) 1991-2012 L'équipe FLTK
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux d'Expat soumis à la
+ licence dans <xref linkend="licExpat" xrefstyle="template: %n" /> et</para>
+ <para>
+ Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ et Clark Cooper; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006
+ Responsables d'Expat.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de Fontconfig soumis à la
+ licence dans <xref linkend="licFontconfig" xrefstyle="template: %n" />
+ et</para>
+ <para>
+ Copyright (C) 2001, 2003 Keith Packard
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox contient des morceaux de Freetype soumis à la
+ licence dans <xref linkend="licFreetype" xrefstyle="template: %n" />
+ et</para>
+ <para>
+ Copyright 2012 Le projet FreeType (www.freetype.org). Tous droits
+ réservés.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox peut contenir du code du SDK WebM VP8 Codec soumis à la
+ licence dans <xref linkend="licVPX" xrefstyle="template: %n" />
+ et </para>
+ <para>
+ Copyright (c) 2010, The WebM Project authors. Tous droits réservés.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Licences</title>
+
+ <sect2 id="licGPL">
+ <title>GNU General Public License (GPL)</title>
+
+ <para>GNU GENERAL PUBLIC LICENSE Version 2, June 1991</para>
+
+ <para>Copyright (C) 1989, 1991 Free Software Foundation, Inc.</para>
+
+ <para>51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA</para>
+
+ <para>Everyone is permitted to copy and distribute verbatim copies of
+ this license document, but changing it is not allowed.</para>
+
+ <para>Preamble</para>
+
+ <para>The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General Public
+ License is intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users. This
+ General Public License applies to most of the Free Software Foundation's
+ software and to any other program whose authors commit to using it.
+ (Some other Free Software Foundation software is covered by the GNU
+ Library General Public License instead.) You can apply it to your
+ programs, too.</para>
+
+ <para>When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it if
+ you want it, that you can change the software or use pieces of it in new
+ free programs; and that you know you can do these things.</para>
+
+ <para>To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the software, or if you modify it.</para>
+
+ <para>For example, if you distribute copies of such a program, whether
+ gratis or for a fee, you must give the recipients all the rights that
+ you have. You must make sure that they, too, receive or can get the
+ source code. And you must show them these terms so they know their
+ rights.</para>
+
+ <para>We protect your rights with two steps: (1) copyright the software,
+ and (2) offer you this license which gives you legal permission to copy,
+ distribute and/or modify the software.</para>
+
+ <para>Also, for each author's protection and ours, we want to make
+ certain that everyone understands that there is no warranty for this
+ free software. If the software is modified by someone else and passed
+ on, we want its recipients to know that what they have is not the
+ original, so that any problems introduced by others will not reflect on
+ the original authors' reputations.</para>
+
+ <para>Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that redistributors of a free
+ program will individually obtain patent licenses, in effect making the
+ program proprietary. To prevent this, we have made it clear that any
+ patent must be licensed for everyone's free use or not licensed at
+ all.</para>
+
+ <para>The precise terms and conditions for copying, distribution and
+ modification follow.</para>
+
+ <para>GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING,
+ DISTRIBUTION AND MODIFICATION</para>
+
+ <para>0. This License applies to any program or other work which
+ contains a notice placed by the copyright holder saying it may be
+ distributed under the terms of this General Public License. The
+ "Program", below, refers to any such program or work, and a "work based
+ on the Program" means either the Program or any derivative work under
+ copyright law: that is to say, a work containing the Program or a
+ portion of it, either verbatim or with modifications and/or translated
+ into another language. (Hereinafter, translation is included without
+ limitation in the term "modification".) Each licensee is addressed as
+ "you".</para>
+
+ <para>Activities other than copying, distribution and modification are
+ not covered by this License; they are outside its scope. The act of
+ running the Program is not restricted, and the output from the Program
+ is covered only if its contents constitute a work based on the Program
+ (independent of having been made by running the Program). Whether that
+ is true depends on what the Program does.</para>
+
+ <para>1. You may copy and distribute verbatim copies of the Program's
+ source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an appropriate
+ copyright notice and disclaimer of warranty; keep intact all the notices
+ that refer to this License and to the absence of any warranty; and give
+ any other recipients of the Program a copy of this License along with
+ the Program.</para>
+
+ <para>You may charge a fee for the physical act of transferring a copy,
+ and you may at your option offer warranty protection in exchange for a
+ fee.</para>
+
+ <para>2. You may modify your copy or copies of the Program or any
+ portion of it, thus forming a work based on the Program, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:</para>
+
+ <para>a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.</para>
+
+ <para>b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any part
+ thereof, to be licensed as a whole at no charge to all third parties
+ under the terms of this License.</para>
+
+ <para>c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such interactive
+ use in the most ordinary way, to print or display an announcement
+ including an appropriate copyright notice and a notice that there is no
+ warranty (or else, saying that you provide a warranty) and that users
+ may redistribute the program under these conditions, and telling the
+ user how to view a copy of this License. (Exception: if the Program
+ itself is interactive but does not normally print such an announcement,
+ your work based on the Program is not required to print an
+ announcement.)</para>
+
+ <para>These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Program, and
+ can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based on
+ the Program, the distribution of the whole must be on the terms of this
+ License, whose permissions for other licensees extend to the entire
+ whole, and thus to each and every part regardless of who wrote
+ it.</para>
+
+ <para>Thus, it is not the intent of this section to claim rights or
+ contest your rights to work written entirely by you; rather, the intent
+ is to exercise the right to control the distribution of derivative or
+ collective works based on the Program.</para>
+
+ <para>In addition, mere aggregation of another work not based on the
+ Program with the Program (or with a work based on the Program) on a
+ volume of a storage or distribution medium does not bring the other work
+ under the scope of this License.</para>
+
+ <para>3. You may copy and distribute the Program (or a work based on it,
+ under Section 2) in object code or executable form under the terms of
+ Sections 1 and 2 above provided that you also do one of the
+ following:</para>
+
+ <para>a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections 1 and
+ 2 above on a medium customarily used for software interchange;
+ or,</para>
+
+ <para>b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your cost of
+ physically performing source distribution, a complete machine-readable
+ copy of the corresponding source code, to be distributed under the terms
+ of Sections 1 and 2 above on a medium customarily used for software
+ interchange; or,</para>
+
+ <para>c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is allowed
+ only for noncommercial distribution and only if you received the program
+ in object code or executable form with such an offer, in accord with
+ Subsection b above.)</para>
+
+ <para>The source code for a work means the preferred form of the work
+ for making modifications to it. For an executable work, complete source
+ code means all the source code for all modules it contains, plus any
+ associated interface definition files, plus the scripts used to control
+ compilation and installation of the executable. However, as a special
+ exception, the source code distributed need not include anything that is
+ normally distributed (in either source or binary form) with the major
+ components (compiler, kernel, and so on) of the operating system on
+ which the executable runs, unless that component itself accompanies the
+ executable.</para>
+
+ <para>If distribution of executable or object code is made by offering
+ access to copy from a designated place, then offering equivalent access
+ to copy the source code from the same place counts as distribution of
+ the source code, even though third parties are not compelled to copy the
+ source along with the object code.</para>
+
+ <para>4. You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License. Any attempt otherwise
+ to copy, modify, sublicense or distribute the Program is void, and will
+ automatically terminate your rights under this License. However, parties
+ who have received copies, or rights, from you under this License will
+ not have their licenses terminated so long as such parties remain in
+ full compliance.</para>
+
+ <para>5. You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Program or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Program (or any work based on the
+ Program), you indicate your acceptance of this License to do so, and all
+ its terms and conditions for copying, distributing or modifying the
+ Program or works based on it.</para>
+
+ <para>6. Each time you redistribute the Program (or any work based on
+ the Program), the recipient automatically receives a license from the
+ original licensor to copy, distribute or modify the Program subject to
+ these terms and conditions. You may not impose any further restrictions
+ on the recipients' exercise of the rights granted herein. You are not
+ responsible for enforcing compliance by third parties to this
+ License.</para>
+
+ <para>7. If, as a consequence of a court judgment or allegation of
+ patent infringement or for any other reason (not limited to patent
+ issues), conditions are imposed on you (whether by court order,
+ agreement or otherwise) that contradict the conditions of this License,
+ they do not excuse you from the conditions of this License. If you
+ cannot distribute so as to satisfy simultaneously your obligations under
+ this License and any other pertinent obligations, then as a consequence
+ you may not distribute the Program at all. For example, if a patent
+ license would not permit royalty-free redistribution of the Program by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Program.</para>
+
+ <para>If any portion of this section is held invalid or unenforceable
+ under any particular circumstance, the balance of the section is
+ intended to apply and the section as a whole is intended to apply in
+ other circumstances.</para>
+
+ <para>It is not the purpose of this section to induce you to infringe
+ any patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system, which is implemented
+ by public license practices. Many people have made generous
+ contributions to the wide range of software distributed through that
+ system in reliance on consistent application of that system; it is up to
+ the author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose that
+ choice.</para>
+
+ <para>This section is intended to make thoroughly clear what is believed
+ to be a consequence of the rest of this License.</para>
+
+ <para>8. If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License may
+ add an explicit geographical distribution limitation excluding those
+ countries, so that distribution is permitted only in or among countries
+ not thus excluded. In such case, this License incorporates the
+ limitation as if written in the body of this License.</para>
+
+ <para>9. The Free Software Foundation may publish revised and/or new
+ versions of the General Public License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns.</para>
+
+ <para>Each version is given a distinguishing version number. If the
+ Program specifies a version number of this License which applies to it
+ and "any later version", you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Program does not specify a version
+ number of this License, you may choose any version ever published by the
+ Free Software Foundation.</para>
+
+ <para>10. If you wish to incorporate parts of the Program into other
+ free programs whose distribution conditions are different, write to the
+ author to ask for permission. For software which is copyrighted by the
+ Free Software Foundation, write to the Free Software Foundation; we
+ sometimes make exceptions for this. Our decision will be guided by the
+ two goals of preserving the free status of all derivatives of our free
+ software and of promoting the sharing and reuse of software
+ generally.</para>
+
+ <para>NO WARRANTY</para>
+
+ <para>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
+ WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+ OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
+ EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+ YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+ NECESSARY SERVICING, REPAIR OR CORRECTION.</para>
+
+ <para>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+ AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+ DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+ DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+ (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+ INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
+ OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</para>
+
+ <para>END OF TERMS AND CONDITIONS</para>
+ </sect2>
+
+ <sect2 id="licLGPL">
+ <title>GNU Lesser General Public License (LGPL)</title>
+
+ <para>GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February
+ 1999</para>
+
+ <para>Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple
+ Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to
+ copy and distribute verbatim copies of this license document, but
+ changing it is not allowed.</para>
+
+ <para>[This is the first released version of the Lesser GPL. It also
+ counts as the successor of the GNU Library Public License, version 2,
+ hence the version number 2.1.]</para>
+
+ <para>Preamble</para>
+
+ <para>The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General Public
+ Licenses are intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users.</para>
+
+ <para>This license, the Lesser General Public License, applies to some
+ specially designated software packages--typically libraries--of the Free
+ Software Foundation and other authors who decide to use it. You can use
+ it too, but we suggest you first think carefully about whether this
+ license or the ordinary General Public License is the better strategy to
+ use in any particular case, based on the explanations below.</para>
+
+ <para>When we speak of free software, we are referring to freedom of
+ use, not price. Our General Public Licenses are designed to make sure
+ that you have the freedom to distribute copies of free software (and
+ charge for this service if you wish); that you receive source code or
+ can get it if you want it; that you can change the software and use
+ pieces of it in new free programs; and that you are informed that you
+ can do these things.</para>
+
+ <para>To protect your rights, we need to make restrictions that forbid
+ distributors to deny you these rights or to ask you to surrender these
+ rights. These restrictions translate to certain responsibilities for you
+ if you distribute copies of the library or if you modify it.</para>
+
+ <para>For example, if you distribute copies of the library, whether
+ gratis or for a fee, you must give the recipients all the rights that we
+ gave you. You must make sure that they, too, receive or can get the
+ source code. If you link other code with the library, you must provide
+ complete object files to the recipients, so that they can relink them
+ with the library after making changes to the library and recompiling it.
+ And you must show them these terms so they know their rights.</para>
+
+ <para>We protect your rights with a two-step method: (1) we copyright
+ the library, and (2) we offer you this license, which gives you legal
+ permission to copy, distribute and/or modify the library.</para>
+
+ <para>To protect each distributor, we want to make it very clear that
+ there is no warranty for the free library. Also, if the library is
+ modified by someone else and passed on, the recipients should know that
+ what they have is not the original version, so that the original
+ author's reputation will not be affected by problems that might be
+ introduced by others.</para>
+
+ <para>Finally, software patents pose a constant threat to the existence
+ of any free program. We wish to make sure that a company cannot
+ effectively restrict the users of a free program by obtaining a
+ restrictive license from a patent holder. Therefore, we insist that any
+ patent license obtained for a version of the library must be consistent
+ with the full freedom of use specified in this license.</para>
+
+ <para>Most GNU software, including some libraries, is covered by the
+ ordinary GNU General Public License. This license, the GNU Lesser
+ General Public License, applies to certain designated libraries, and is
+ quite different from the ordinary General Public License. We use this
+ license for certain libraries in order to permit linking those libraries
+ into non-free programs.</para>
+
+ <para>When a program is linked with a library, whether statically or
+ using a shared library, the combination of the two is legally speaking a
+ combined work, a derivative of the original library. The ordinary
+ General Public License therefore permits such linking only if the entire
+ combination fits its criteria of freedom. The Lesser General Public
+ License permits more lax criteria for linking other code with the
+ library.</para>
+
+ <para>We call this license the "Lesser" General Public License because
+ it does Less to protect the user's freedom than the ordinary General
+ Public License. It also provides other free software developers Less of
+ an advantage over competing non-free programs. These disadvantages are
+ the reason we use the ordinary General Public License for many
+ libraries. However, the Lesser license provides advantages in certain
+ special circumstances.</para>
+
+ <para>For example, on rare occasions, there may be a special need to
+ encourage the widest possible use of a certain library, so that it
+ becomes a de-facto standard. To achieve this, non-free programs must be
+ allowed to use the library. A more frequent case is that a free library
+ does the same job as widely used non-free libraries. In this case, there
+ is little to gain by limiting the free library to free software only, so
+ we use the Lesser General Public License.</para>
+
+ <para>In other cases, permission to use a particular library in non-free
+ programs enables a greater number of people to use a large body of free
+ software. For example, permission to use the GNU C Library in non-free
+ programs enables many more people to use the whole GNU operating system,
+ as well as its variant, the GNU/Linux operating system.</para>
+
+ <para>Although the Lesser General Public License is Less protective of
+ the users' freedom, it does ensure that the user of a program that is
+ linked with the Library has the freedom and the wherewithal to run that
+ program using a modified version of the Library.</para>
+
+ <para>The precise terms and conditions for copying, distribution and
+ modification follow. Pay close attention to the difference between a
+ "work based on the library" and a "work that uses the library". The
+ former contains code derived from the library, whereas the latter must
+ be combined with the library in order to run.</para>
+
+ <para>GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR
+ COPYING, DISTRIBUTION AND MODIFICATION</para>
+
+ <para>0. This License Agreement applies to any software library or other
+ program which contains a notice placed by the copyright holder or other
+ authorized party saying it may be distributed under the terms of this
+ Lesser General Public License (also called "this License"). Each
+ licensee is addressed as "you".</para>
+
+ <para>A "library" means a collection of software functions and/or data
+ prepared so as to be conveniently linked with application programs
+ (which use some of those functions and data) to form executables.</para>
+
+ <para>The "Library", below, refers to any such software library or work
+ which has been distributed under these terms. A "work based on the
+ Library" means either the Library or any derivative work under copyright
+ law: that is to say, a work containing the Library or a portion of it,
+ either verbatim or with modifications and/or translated
+ straightforwardly into another language. (Hereinafter, translation is
+ included without limitation in the term "modification".)</para>
+
+ <para>"Source code" for a work means the preferred form of the work for
+ making modifications to it. For a library, complete source code means
+ all the source code for all modules it contains, plus any associated
+ interface definition files, plus the scripts used to control compilation
+ and installation of the library.</para>
+
+ <para>Activities other than copying, distribution and modification are
+ not covered by this License; they are outside its scope. The act of
+ running a program using the Library is not restricted, and output from
+ such a program is covered only if its contents constitute a work based
+ on the Library (independent of the use of the Library in a tool for
+ writing it). Whether that is true depends on what the Library does and
+ what the program that uses the Library does.</para>
+
+ <para>1. You may copy and distribute verbatim copies of the Library's
+ complete source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an appropriate
+ copyright notice and disclaimer of warranty; keep intact all the notices
+ that refer to this License and to the absence of any warranty; and
+ distribute a copy of this License along with the Library.</para>
+
+ <para>You may charge a fee for the physical act of transferring a copy,
+ and you may at your option offer warranty protection in exchange for a
+ fee.</para>
+
+ <para>2. You may modify your copy or copies of the Library or any
+ portion of it, thus forming a work based on the Library, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:</para>
+
+ <para>a) The modified work must itself be a software library.</para>
+
+ <para>b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.</para>
+
+ <para>c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.</para>
+
+ <para>d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses the
+ facility, other than as an argument passed when the facility is invoked,
+ then you must make a good faith effort to ensure that, in the event an
+ application does not supply such function or table, the facility still
+ operates, and performs whatever part of its purpose remains
+ meaningful.</para>
+
+ <para>(For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the application.
+ Therefore, Subsection 2d requires that any application-supplied function
+ or table used by this function must be optional: if the application does
+ not supply it, the square root function must still compute square
+ roots.)</para>
+
+ <para>These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Library, and
+ can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based on
+ the Library, the distribution of the whole must be on the terms of this
+ License, whose permissions for other licensees extend to the entire
+ whole, and thus to each and every part regardless of who wrote
+ it.</para>
+
+ <para>Thus, it is not the intent of this section to claim rights or
+ contest your rights to work written entirely by you; rather, the intent
+ is to exercise the right to control the distribution of derivative or
+ collective works based on the Library.</para>
+
+ <para>In addition, mere aggregation of another work not based on the
+ Library with the Library (or with a work based on the Library) on a
+ volume of a storage or distribution medium does not bring the other work
+ under the scope of this License.</para>
+
+ <para>3. You may opt to apply the terms of the ordinary GNU General
+ Public License instead of this License to a given copy of the Library.
+ To do this, you must alter all the notices that refer to this License,
+ so that they refer to the ordinary GNU General Public License, version
+ 2, instead of to this License. (If a newer version than version 2 of the
+ ordinary GNU General Public License has appeared, then you can specify
+ that version instead if you wish.) Do not make any other change in these
+ notices.</para>
+
+ <para>Once this change is made in a given copy, it is irreversible for
+ that copy, so the ordinary GNU General Public License applies to all
+ subsequent copies and derivative works made from that copy.</para>
+
+ <para>This option is useful when you wish to copy part of the code of
+ the Library into a program that is not a library.</para>
+
+ <para>4. You may copy and distribute the Library (or a portion or
+ derivative of it, under Section 2) in object code or executable form
+ under the terms of Sections 1 and 2 above provided that you accompany it
+ with the complete corresponding machine-readable source code, which must
+ be distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange.</para>
+
+ <para>If distribution of object code is made by offering access to copy
+ from a designated place, then offering equivalent access to copy the
+ source code from the same place satisfies the requirement to distribute
+ the source code, even though third parties are not compelled to copy the
+ source along with the object code.</para>
+
+ <para>5. A program that contains no derivative of any portion of the
+ Library, but is designed to work with the Library by being compiled or
+ linked with it, is called a "work that uses the Library". Such a work,
+ in isolation, is not a derivative work of the Library, and therefore
+ falls outside the scope of this License.</para>
+
+ <para>However, linking a "work that uses the Library" with the Library
+ creates an executable that is a derivative of the Library (because it
+ contains portions of the Library), rather than a "work that uses the
+ library". The executable is therefore covered by this License. Section 6
+ states terms for distribution of such executables.</para>
+
+ <para>When a "work that uses the Library" uses material from a header
+ file that is part of the Library, the object code for the work may be a
+ derivative work of the Library even though the source code is not.
+ Whether this is true is especially significant if the work can be linked
+ without the Library, or if the work is itself a library. The threshold
+ for this to be true is not precisely defined by law.</para>
+
+ <para>If such an object file uses only numerical parameters, data
+ structure layouts and accessors, and small macros and small inline
+ functions (ten lines or less in length), then the use of the object file
+ is unrestricted, regardless of whether it is legally a derivative work.
+ (Executables containing this object code plus portions of the Library
+ will still fall under Section 6.) Otherwise, if the work is a derivative
+ of the Library, you may distribute the object code for the work under
+ the terms of Section 6. Any executables containing that work also fall
+ under Section 6, whether or not they are linked directly with the
+ Library itself.</para>
+
+ <para>6. As an exception to the Sections above, you may also combine or
+ link a "work that uses the Library" with the Library to produce a work
+ containing portions of the Library, and distribute that work under terms
+ of your choice, provided that the terms permit modification of the work
+ for the customer's own use and reverse engineering for debugging such
+ modifications.</para>
+
+ <para>You must give prominent notice with each copy of the work that the
+ Library is used in it and that the Library and its use are covered by
+ this License. You must supply a copy of this License. If the work during
+ execution displays copyright notices, you must include the copyright
+ notice for the Library among them, as well as a reference directing the
+ user to the copy of this License. Also, you must do one of these
+ things:</para>
+
+ <para>a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever changes
+ were used in the work (which must be distributed under Sections 1 and 2
+ above); and, if the work is an executable linked with the Library, with
+ the complete machine-readable "work that uses the Library", as object
+ code and/or source code, so that the user can modify the Library and
+ then relink to produce a modified executable containing the modified
+ Library. (It is understood that the user who changes the contents of
+ definitions files in the Library will not necessarily be able to
+ recompile the application to use the modified definitions.)</para>
+
+ <para>b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a copy of
+ the library already present on the user's computer system, rather than
+ copying library functions into the executable, and (2) will operate
+ properly with a modified version of the library, if the user installs
+ one, as long as the modified version is interface-compatible with the
+ version that the work was made with.</para>
+
+ <para>c) Accompany the work with a written offer, valid for at least
+ three years, to give the same user the materials specified in Subsection
+ 6a, above, for a charge no more than the cost of performing this
+ distribution.</para>
+
+ <para>d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.</para>
+
+ <para>e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.</para>
+
+ <para>For an executable, the required form of the "work that uses the
+ Library" must include any data and utility programs needed for
+ reproducing the executable from it. However, as a special exception, the
+ materials to be distributed need not include anything that is normally
+ distributed (in either source or binary form) with the major components
+ (compiler, kernel, and so on) of the operating system on which the
+ executable runs, unless that component itself accompanies the
+ executable.</para>
+
+ <para>It may happen that this requirement contradicts the license
+ restrictions of other proprietary libraries that do not normally
+ accompany the operating system. Such a contradiction means you cannot
+ use both them and the Library together in an executable that you
+ distribute.</para>
+
+ <para>7. You may place library facilities that are a work based on the
+ Library side-by-side in a single library together with other library
+ facilities not covered by this License, and distribute such a combined
+ library, provided that the separate distribution of the work based on
+ the Library and of the other library facilities is otherwise permitted,
+ and provided that you do these two things:</para>
+
+ <para>a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library facilities. This
+ must be distributed under the terms of the Sections above.</para>
+
+ <para>b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining where to
+ find the accompanying uncombined form of the same work.</para>
+
+ <para>8. You may not copy, modify, sublicense, link with, or distribute
+ the Library except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, link with, or distribute the
+ Library is void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights, from you
+ under this License will not have their licenses terminated so long as
+ such parties remain in full compliance.</para>
+
+ <para>9. You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Library or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Library (or any work based on the
+ Library), you indicate your acceptance of this License to do so, and all
+ its terms and conditions for copying, distributing or modifying the
+ Library or works based on it.</para>
+
+ <para>10. Each time you redistribute the Library (or any work based on
+ the Library), the recipient automatically receives a license from the
+ original licensor to copy, distribute, link with or modify the Library
+ subject to these terms and conditions. You may not impose any further
+ restrictions on the recipients' exercise of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties with
+ this License.</para>
+
+ <para>11. If, as a consequence of a court judgment or allegation of
+ patent infringement or for any other reason (not limited to patent
+ issues), conditions are imposed on you (whether by court order,
+ agreement or otherwise) that contradict the conditions of this License,
+ they do not excuse you from the conditions of this License. If you
+ cannot distribute so as to satisfy simultaneously your obligations under
+ this License and any other pertinent obligations, then as a consequence
+ you may not distribute the Library at all. For example, if a patent
+ license would not permit royalty-free redistribution of the Library by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Library.</para>
+
+ <para>If any portion of this section is held invalid or unenforceable
+ under any particular circumstance, the balance of the section is
+ intended to apply, and the section as a whole is intended to apply in
+ other circumstances.</para>
+
+ <para>It is not the purpose of this section to induce you to infringe
+ any patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system which is implemented
+ by public license practices. Many people have made generous
+ contributions to the wide range of software distributed through that
+ system in reliance on consistent application of that system; it is up to
+ the author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose that
+ choice.</para>
+
+ <para>This section is intended to make thoroughly clear what is believed
+ to be a consequence of the rest of this License.</para>
+
+ <para>12. If the distribution and/or use of the Library is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Library under this License may
+ add an explicit geographical distribution limitation excluding those
+ countries, so that distribution is permitted only in or among countries
+ not thus excluded. In such case, this License incorporates the
+ limitation as if written in the body of this License.</para>
+
+ <para>13. The Free Software Foundation may publish revised and/or new
+ versions of the Lesser General Public License from time to time. Such
+ new versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns.</para>
+
+ <para>Each version is given a distinguishing version number. If the
+ Library specifies a version number of this License which applies to it
+ and "any later version", you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Library does not specify a license
+ version number, you may choose any version ever published by the Free
+ Software Foundation.</para>
+
+ <para>14. If you wish to incorporate parts of the Library into other
+ free programs whose distribution conditions are incompatible with these,
+ write to the author to ask for permission. For software which is
+ copyrighted by the Free Software Foundation, write to the Free Software
+ Foundation; we sometimes make exceptions for this. Our decision will be
+ guided by the two goals of preserving the free status of all derivatives
+ of our free software and of promoting the sharing and reuse of software
+ generally.</para>
+
+ <para>NO WARRANTY</para>
+
+ <para>15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+ WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+ OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND,
+ EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH
+ YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+ NECESSARY SERVICING, REPAIR OR CORRECTION.</para>
+
+ <para>16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+ AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+ DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+ DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
+ (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+ INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+ THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR
+ OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</para>
+
+ <para>END OF TERMS AND CONDITIONS</para>
+ </sect2>
+
+ <sect2 id="licMPL">
+ <title>Mozilla Public License (MPL)</title>
+
+ <para>MOZILLA PUBLIC LICENSE Version 1.1</para>
+
+ <para>1. Definitions.</para>
+
+ <para>1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.</para>
+
+ <para>1.1. "Contributor" means each entity that creates or contributes
+ to the creation of Modifications.</para>
+
+ <para>1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.</para>
+
+ <para>1.3. "Covered Code" means the Original Code or Modifications or
+ the combination of the Original Code and Modifications, in each case
+ including portions thereof.</para>
+
+ <para>1.4. "Electronic Distribution Mechanism" means a mechanism
+ generally accepted in the software development community for the
+ electronic transfer of data.</para>
+
+ <para>1.5. "Executable" means Covered Code in any form other than Source
+ Code.</para>
+
+ <para>1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.</para>
+
+ <para>1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this
+ License.</para>
+
+ <para>1.8. "License" means this document.</para>
+
+ <para>1.8.1. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.</para>
+
+ <para>1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:</para>
+
+ <para>A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.</para>
+
+ <para>B. Any new file that contains any part of the Original Code or
+ previous Modifications.</para>
+
+ <para>1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this License
+ is not already Covered Code governed by this License.</para>
+
+ <para>1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process, and
+ apparatus claims, in any patent Licensable by grantor.</para>
+
+ <para>1.11. "Source Code" means the preferred form of the Covered Code
+ for making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.</para>
+
+ <para>1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.</para>
+
+ <para>2. Source Code License.</para>
+
+ <para>2.1. The Initial Developer Grant. The Initial Developer hereby
+ grants You a world-wide, royalty-free, non-exclusive license, subject to
+ third party intellectual property claims:</para>
+
+ <para>(a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce, modify,
+ display, perform, sublicense and distribute the Original Code (or
+ portions thereof) with or without Modifications, and/or as part of a
+ Larger Work; and</para>
+
+ <para>(b) under Patents Claims infringed by the making, using or selling
+ of Original Code, to make, have made, use, practice, sell, and offer for
+ sale, and/or otherwise dispose of the Original Code (or portions
+ thereof).</para>
+
+ <para>(c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes Original Code
+ under the terms of this License.</para>
+
+ <para>(d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2) separate
+ from the Original Code; or 3) for infringements caused by: i) the
+ modification of the Original Code or ii) the combination of the Original
+ Code with other software or devices.</para>
+
+ <para>2.2. Contributor Grant. Subject to third party intellectual
+ property claims, each Contributor hereby grants You a world-wide,
+ royalty-free, non-exclusive license</para>
+
+ <para>(a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications created by
+ such Contributor (or portions thereof) either on an unmodified basis,
+ with other Modifications, as Covered Code and/or as part of a Larger
+ Work; and</para>
+
+ <para>(b) under Patent Claims infringed by the making, using, or selling
+ of Modifications made by that Contributor either alone and/or in
+ combination with its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale, have made, and/or
+ otherwise dispose of: 1) Modifications made by that Contributor (or
+ portions thereof); and 2) the combination of Modifications made by that
+ Contributor with its Contributor Version (or portions of such
+ combination).</para>
+
+ <para>(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of the
+ Covered Code.</para>
+
+ <para>(d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version; 3) for
+ infringements caused by: i) third party modifications of Contributor
+ Version or ii) the combination of Modifications made by that Contributor
+ with other software (except as part of the Contributor Version) or other
+ devices; or 4) under Patent Claims infringed by Covered Code in the
+ absence of Modifications made by that Contributor.</para>
+
+ <para>3. Distribution Obligations.</para>
+
+ <para>3.1. Application of License. The Modifications which You create or
+ to which You contribute are governed by the terms of this License,
+ including without limitation Section 2.2. The Source Code version of
+ Covered Code may be distributed only under the terms of this License or
+ a future version of this License released under Section 6.1, and You
+ must include a copy of this License with every copy of the Source Code
+ You distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this License
+ or the recipients' rights hereunder. However, You may include an
+ additional document offering the additional rights described in Section
+ 3.5.</para>
+
+ <para>3.2. Availability of Source Code. Any Modification which You
+ create or to which You contribute must be made available in Source Code
+ form under the terms of this License either on the same media as an
+ Executable version or via an accepted Electronic Distribution Mechanism
+ to anyone to whom you made an Executable version available; and if made
+ available via Electronic Distribution Mechanism, must remain available
+ for at least twelve (12) months after the date it initially became
+ available, or at least six (6) months after a subsequent version of that
+ particular Modification has been made available to such recipients. You
+ are responsible for ensuring that the Source Code version remains
+ available even if the Electronic Distribution Mechanism is maintained by
+ a third party.</para>
+
+ <para>3.3. Description of Modifications. You must cause all Covered Code
+ to which You contribute to contain a file documenting the changes You
+ made to create that Covered Code and the date of any change. You must
+ include a prominent statement that the Modification is derived, directly
+ or indirectly, from Original Code provided by the Initial Developer and
+ including the name of the Initial Developer in (a) the Source Code, and
+ (b) in any notice in an Executable version or related documentation in
+ which You describe the origin or ownership of the Covered Code.</para>
+
+ <para>3.4. Intellectual Property Matters</para>
+
+ <para>(a) Third Party Claims. If Contributor has knowledge that a
+ license under a third party's intellectual property rights is required
+ to exercise the rights granted by such Contributor under Sections 2.1 or
+ 2.2, Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the party
+ making the claim in sufficient detail that a recipient will know whom to
+ contact. If Contributor obtains such knowledge after the Modification is
+ made available as described in Section 3.2, Contributor shall promptly
+ modify the LEGAL file in all copies Contributor makes available
+ thereafter and shall take other steps (such as notifying appropriate
+ mailing lists or newsgroups) reasonably calculated to inform those who
+ received the Covered Code that new knowledge has been obtained.</para>
+
+ <para>(b) Contributor APIs. If Contributor's Modifications include an
+ application programming interface and Contributor has knowledge of
+ patent licenses which are reasonably necessary to implement that API,
+ Contributor must also include this information in the LEGAL file.</para>
+
+ <para>3.5. Required Notices. You must duplicate the notice in Exhibit A
+ in each file of the Source Code. If it is not possible to put such
+ notice in a particular Source Code file due to its structure, then You
+ must include such notice in a location (such as a relevant directory)
+ where a user would be likely to look for such a notice. If You created
+ one or more Modification(s) You may add your name as a Contributor to
+ the notice described in Exhibit A. You must also duplicate this License
+ in any documentation for the Source Code where You describe recipients'
+ rights or ownership rights relating to Covered Code. You may choose to
+ offer, and to charge a fee for, warranty, support, indemnity or
+ liability obligations to one or more recipients of Covered Code.
+ However, You may do so only on Your own behalf, and not on behalf of the
+ Initial Developer or any Contributor. You must make it absolutely clear
+ than any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer.</para>
+
+ <para>3.6. Distribution of Executable Versions. You may distribute
+ Covered Code in Executable form only if the requirements of Section
+ 3.1-3.5 have been met for that Covered Code, and if You include a notice
+ stating that the Source Code version of the Covered Code is available
+ under the terms of this License, including a description of how and
+ where You have fulfilled the obligations of Section 3.2. The notice must
+ be conspicuously included in any notice in an Executable version,
+ related documentation or collateral in which You describe recipients'
+ rights relating to the Covered Code. You may distribute the Executable
+ version of Covered Code or ownership rights under a license of Your
+ choice, which may contain terms different from this License, provided
+ that You are in compliance with the terms of this License and that the
+ license for the Executable version does not attempt to limit or alter
+ the recipient's rights in the Source Code version from the rights set
+ forth in this License. If You distribute the Executable version under a
+ different license You must make it absolutely clear that any terms which
+ differ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of any such terms You
+ offer.</para>
+
+ <para>3.7. Larger Works. You may create a Larger Work by combining
+ Covered Code with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such a case, You
+ must make sure the requirements of this License are fulfilled for the
+ Covered Code.</para>
+
+ <para>4. Inability to Comply Due to Statute or Regulation.If it is
+ impossible for You to comply with any of the terms of this License with
+ respect to some or all of the Covered Code due to statute, judicial
+ order, or regulation then You must: (a) comply with the terms of this
+ License to the maximum extent possible; and (b) describe the limitations
+ and the code they affect. Such description must be included in the LEGAL
+ file described in Section 3.4 and must be included with all
+ distributions of the Source Code. Except to the extent prohibited by
+ statute or regulation, such description must be sufficiently detailed
+ for a recipient of ordinary skill to be able to understand it.</para>
+
+ <para>5. Application of this License. This License applies to code to
+ which the Initial Developer has attached the notice in Exhibit A and to
+ related Covered Code.</para>
+
+ <para>6. Versions of the License.</para>
+
+ <para>6.1. New Versions. Netscape Communications Corporation
+ ("Netscape") may publish revised and/or new versions of the License from
+ time to time. Each version will be given a distinguishing version
+ number.</para>
+
+ <para>6.2. Effect of New Versions. Once Covered Code has been published
+ under a particular version of the License, You may always continue to
+ use it under the terms of that version. You may also choose to use such
+ Covered Code under the terms of any subsequent version of the License
+ published by Netscape. No one other than Netscape has the right to
+ modify the terms applicable to Covered Code created under this
+ License.</para>
+
+ <para>6.3. Derivative Works. If You create or use a modified version of
+ this License (which you may only do in order to apply it to code which
+ is not already Covered Code governed by this License), You must (a)
+ rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL",
+ "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear
+ in your license (except to note that your license differs from this
+ License) and (b) otherwise make it clear that Your version of the
+ license contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial Developer,
+ Original Code or Contributor in the notice described in Exhibit A shall
+ not of themselves be deemed to be modifications of this License.)</para>
+
+ <para>7. DISCLAIMER OF WARRANTY.</para>
+
+ <para>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS,
+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+ RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU.
+ SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+ NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
+ CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
+ CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.</para>
+
+ <para>8. TERMINATION.</para>
+
+ <para>8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall survive
+ any termination of this License. Provisions which, by their nature, must
+ remain in effect beyond the termination of this License shall
+ survive.</para>
+
+ <para>8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declaratory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom You
+ file such action is referred to as "Participant") alleging that:</para>
+
+ <para>(a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License shall,
+ upon 60 days notice from Participant terminate prospectively, unless if
+ within 60 days after receipt of notice You either: (i) agree in writing
+ to pay Participant a mutually agreeable reasonable royalty for Your past
+ and future use of Modifications made by such Participant, or (ii)
+ withdraw Your litigation claim with respect to the Contributor Version
+ against such Participant. If within 60 days of notice, a reasonable
+ royalty and payment arrangement are not mutually agreed upon in writing
+ by the parties or the litigation claim is not withdrawn, the rights
+ granted by Participant to You under Sections 2.1 and/or 2.2
+ automatically terminate at the expiration of the 60 day notice period
+ specified above.</para>
+
+ <para>(b) any software, hardware, or device, other than such
+ Participant's Contributor Version, directly or indirectly infringes any
+ patent, then any rights granted to You by such Participant under
+ Sections 2.1(b) and 2.2(b) are revoked effective as of the date You
+ first made, used, sold, distributed, or had made, Modifications made by
+ that Participant.</para>
+
+ <para>8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as by
+ license or settlement) prior to the initiation of patent infringement
+ litigation, then the reasonable value of the licenses granted by such
+ Participant under Sections 2.1 or 2.2 shall be taken into account in
+ determining the amount or value of any payment or license.</para>
+
+ <para>8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.</para>
+
+ <para>9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO
+ LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR
+ OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR
+ ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES,
+ BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION,
+ DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+ MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF
+ SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
+ THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
+ PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT
+ ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL
+ DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.</para>
+
+ <para>10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial
+ item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995),
+ consisting of "commercial computer software" and "commercial computer
+ software documentation," as such terms are used in 48 C.F.R. 12.212
+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users acquire
+ Covered Code with only those rights set forth herein.</para>
+
+ <para>11. MISCELLANEOUS. This License represents the complete agreement
+ concerning subject matter hereof. If any provision of this License is
+ held to be unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be governed
+ by California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions. With
+ respect to disputes in which at least one party is a citizen of, or an
+ entity chartered or registered to do business in the United States of
+ America, any litigation relating to this License shall be subject to the
+ jurisdiction of the Federal Courts of the Northern District of
+ California, with venue lying in Santa Clara County, California, with the
+ losing party responsible for costs, including without limitation, court
+ costs and reasonable attorneys' fees and expenses. The application of
+ the United Nations Convention on Contracts for the International Sale of
+ Goods is expressly excluded. Any law or regulation which provides that
+ the language of a contract shall be construed against the drafter shall
+ not apply to this License.</para>
+
+ <para>12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and
+ the Contributors, each party is responsible for claims and damages
+ arising, directly or indirectly, out of its utilization of rights under
+ this License and You agree to work with Initial Developer and
+ Contributors to distribute such responsibility on an equitable basis.
+ Nothing herein is intended or shall be deemed to constitute any
+ admission of liability.</para>
+
+ <para>13. MULTIPLE-LICENSED CODE. Initial Developer may designate
+ portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed"
+ means that the Initial Developer permits you to utilize portions of the
+ Covered Code under Your choice of the NPL or the alternative licenses,
+ if any, specified by the Initial Developer in the file described in
+ Exhibit A.</para>
+
+ <para>EXHIBIT A -Mozilla Public License.</para>
+
+ <para>``The contents of this file are subject to the Mozilla Public
+ License Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/</para>
+
+ <para>Software distributed under the License is distributed on an "AS
+ IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.</para>
+
+ <para>The Original Code is
+ ______________________________________.</para>
+
+ <para>The Initial Developer of the Original Code is
+ ________________________. Portions created by ______________________ are
+ Copyright (C) ______ _______________________. All Rights
+ Reserved.</para>
+
+ <para>Contributor(s): ______________________________________.</para>
+
+ <para>Alternatively, the contents of this file may be used under the
+ terms of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those above. If
+ you wish to allow use of your version of this file only under the terms
+ of the [____] License and not to allow others to use your version of
+ this file under the MPL, indicate your decision by deleting the
+ provisions above and replace them with the notice and other provisions
+ required by the [___] License. If you do not delete the provisions
+ above, a recipient may use your version of this file under either the
+ MPL or the [___] License."</para>
+
+ <para>[NOTE: The text of this Exhibit A may differ slightly from the
+ text of the notices in the Source Code files of the Original Code. You
+ should use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]</para>
+ </sect2>
+
+ <sect2 id="licMIT">
+ <title>Licence MIT</title>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para>
+ </sect2>
+
+ <sect2 id="licX11">
+ <title>X Consortium License (X11)</title>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para>
+ </sect2>
+
+ <sect2 id="licZLIB">
+ <title>Licence zlib</title>
+
+ <para>This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.</para>
+
+ <para>Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:</para>
+
+ <para>1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product documentation
+ would be appreciated but is not required.</para>
+
+ <para>2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.</para>
+
+ <para>3. This notice may not be removed or altered from any source
+ distribution.</para>
+
+ <screen>Jean-loup Gailly Mark Adler
+jloup@gzip.org madler@alumni.caltech.edu</screen>
+ </sect2>
+
+ <sect2 id="licSSL">
+ <title>Licence OpenSSL</title>
+
+ <para>This package is an SSL implementation written by Eric Young
+ (eay@cryptsoft.com). The implementation was written so as to conform
+ with Netscape's SSL.</para>
+
+ <para>This library is free for commercial and non-commercial use as long
+ as the following conditions are adhered to. The following conditions
+ apply to all code found in this distribution, be it the RC4, RSA, lhash,
+ DES, etc., code; not just the SSL code. The SSL documentation included
+ with this distribution is covered by the same copyright terms except
+ that the holder is Tim Hudson (tjh@cryptsoft.com).</para>
+
+ <para>Copyright remains Eric Young's, and as such any Copyright notices
+ in the code are not to be removed. If this package is used in a product,
+ Eric Young should be given attribution as the author of the parts of the
+ library used. This can be in the form of a textual message at program
+ startup or in documentation (online or textual) provided with the
+ package.</para>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:</para>
+
+ <para>1. Redistributions of source code must retain the copyright
+ notice, this list of conditions and the following disclaimer.</para>
+
+ <para>2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.</para>
+
+ <para>3. All advertising materials mentioning features or use of this
+ software must display the following acknowledgement: "This product
+ includes cryptographic software written by Eric Young
+ (eay@cryptsoft.com)" The word 'cryptographic' can be left out if the
+ routines from the library being used are not cryptographic related
+ :-).</para>
+
+ <para>4. If you include any Windows specific code (or a derivative
+ thereof) from the apps directory (application code) you must include an
+ acknowledgement: "This product includes software written by Tim Hudson
+ (tjh@cryptsoft.com)"</para>
+
+ <para>THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.</para>
+
+ <para>The licence and distribution terms for any publicly available
+ version or derivative of this code cannot be changed. i.e. this code
+ cannot simply be copied and put under another distribution licence
+ [including the GNU Public Licence.]</para>
+ </sect2>
+
+ <sect2 id="licSlirp">
+ <title>Licence Slirp</title>
+
+ <para>Copyright (c) 1995,1996 Danny Gasparovski. Tous droits réservés.</para>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:</para>
+
+ <para>1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.</para>
+
+ <para>2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.</para>
+
+ <para>3. All advertising materials mentioning features or use of this
+ software must display the following acknowledgment: This product
+ includes software developed by Danny Gasparovski.</para>
+
+ <para>THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ NO EVENT SHALL DANNY GASPAROVSKI OR CONTRIBUTORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.</para>
+ </sect2>
+
+ <sect2 id="licLZF">
+ <title>Licence liblzf</title>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:</para>
+
+ <para>1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.</para>
+
+ <para>2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.</para>
+
+ <para>3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.</para>
+
+ <para>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.</para>
+ </sect2>
+
+ <sect2>
+ <title>Licence libpng</title>
+
+ <para>The PNG Reference Library is supplied "AS IS". The Contributing
+ Authors and Group 42, Inc. disclaim all warranties, expressed or
+ implied, including, without limitation, the warranties of
+ merchantability and of fitness for any purpose. The Contributing Authors
+ and Group 42, Inc. assume no liability for direct, indirect, incidental,
+ special, exemplary, or consequential damages, which may result from the
+ use of the PNG Reference Library, even if advised of the possibility of
+ such damage.</para>
+
+ <para>Permission is hereby granted to use, copy, modify, and distribute
+ this source code, or portions hereof, for any purpose, without fee,
+ subject to the following restrictions:</para>
+
+ <para>1. The origin of this source code must not be
+ misrepresented.</para>
+
+ <para>2. Altered versions must be plainly marked as such and must not be
+ misrepresented as being the original source.</para>
+
+ <para>3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.</para>
+
+ <para>The Contributing Authors and Group 42, Inc. specifically permit,
+ without fee, and encourage the use of this source code as a component to
+ supporting the PNG file format in commercial products. If you use this
+ source code in a product, acknowledgment is not required but would be
+ appreciated.</para>
+ </sect2>
+
+ <sect2 id="licLWIP">
+ <title>Licence lwIP</title>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:</para>
+
+ <para>1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.</para>
+
+ <para>2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.</para>
+
+ <para>3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.</para>
+
+ <para>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.</para>
+ </sect2>
+
+ <sect2 id="licLibXML">
+ <title>Licence libxml</title>
+
+ <para>Except where otherwise noted in the source code (e.g. the files
+ hash.c, list.c and the trio files, which are covered by a similar
+ licence but with different Copyright notices) all the files are:</para>
+
+ <para>Copyright (C) 1998-2003 Daniel Veillard. Tous droits
+ Réservés.</para>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES
+ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.</para>
+
+ <para>Except as contained in this notice, the name of Daniel Veillard
+ shall not be used in advertising or otherwise to promote the sale, use
+ or other dealings in this Software without prior written authorization
+ from him.</para>
+ </sect2>
+
+ <sect2 id="licLibXSLT">
+ <title>libxslt licenses</title>
+
+ <para>Licence for libxslt except libexslt:</para>
+
+ <para>Copyright (C) 2001-2002 Daniel Veillard. Tous droits
+ réservés.</para>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES
+ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.</para>
+
+ <para>Except as contained in this notice, the name of Daniel Veillard
+ shall not be used in advertising or otherwise to promote the sale, use
+ or other dealings in this Software without prior written authorization
+ from him.</para>
+
+ <para>Licence for libexslt:</para>
+
+ <para>Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman et Daniel
+ Veillard. Tous droits réservés.</para>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.</para>
+
+ <para>Except as contained in this notice, the name of the authors shall
+ not be used in advertising or otherwise to promote the sale, use or
+ other dealings in this Software without prior written authorization from
+ him.</para>
+ </sect2>
+
+ <sect2 id="licgSOAP">
+ <title>gSOAP Public License Version 1.3a</title>
+
+ <para>The gSOAP public license is derived from the Mozilla Public
+ License (MPL1.1). The sections that were deleted from the original
+ MPL1.1 text are 1.0.1, 2.1.(c),(d), 2.2.(c),(d), 8.2.(b), 10, and 11.
+ Section 3.8 was added. The modified sections are 2.1.(b), 2.2.(b), 3.2
+ (simplified), 3.5 (deleted the last sentence), and 3.6
+ (simplified).</para>
+
+ <para>1 DEFINITIONS</para>
+
+ <para>1.1. "Contributor" means each entity that creates or contributes
+ to the creation of Modifications.</para>
+
+ <para>1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.</para>
+
+ <para>1.3. "Covered Code" means the Original Code, or Modifications or
+ the combination of the Original Code, and Modifications, in each case
+ including portions thereof.</para>
+
+ <para>1.4. "Electronic Distribution Mechanism" means a mechanism
+ generally accepted in the software development community for the
+ electronic transfer of data.</para>
+
+ <para>1.5. "Executable" means Covered Code in any form other than Source
+ Code.</para>
+
+ <para>1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.</para>
+
+ <para>1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this
+ License.</para>
+
+ <para>1.8. "License" means this document.</para>
+
+ <para>1.8.1. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.</para>
+
+ <para>1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:</para>
+
+ <para>A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.</para>
+
+ <para>B. Any new file that contains any part of the Original Code, or
+ previous Modifications.</para>
+
+ <para>1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this License
+ is not already Covered Code governed by this License.</para>
+
+ <para>1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process, and
+ apparatus claims, in any patent Licensable by grantor.</para>
+
+ <para>1.11. "Source Code" means the preferred form of the Covered Code
+ for making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.</para>
+
+ <para>1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.</para>
+
+ <para>2 SOURCE CODE LICENSE.</para>
+
+ <para>2.1. The Initial Developer Grant.</para>
+
+ <para>The Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license, subject to third party intellectual
+ property claims:</para>
+
+ <para>(a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce, modify,
+ display, perform, sublicense and distribute the Original Code (or
+ portions thereof) with or without Modifications, and/or as part of a
+ Larger Work; and</para>
+
+ <para>(b) under patents now or hereafter owned or controlled by Initial
+ Developer, to make, have made, use and sell ("offer to sell and import")
+ the Original Code, Modifications, or portions thereof, but solely to the
+ extent that any such patent is reasonably necessary to enable You to
+ utilize, alone or in combination with other software, the Original Code,
+ Modifications, or any combination or portions thereof.</para>
+
+ <para>(c)</para>
+
+ <para>(d)</para>
+
+ <para>2.2. Contributor Grant.</para>
+
+ <para>Subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free, non-exclusive
+ license</para>
+
+ <para>(a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications created by
+ such Contributor (or portions thereof) either on an unmodified basis,
+ with other Modifications, as Covered Code and/or as part of a Larger
+ Work; and</para>
+
+ <para>(b) under patents now or hereafter owned or controlled by
+ Contributor, to make, have made, use and sell ("offer to sell and
+ import") the Contributor Version (or portions thereof), but solely to
+ the extent that any such patent is reasonably necessary to enable You to
+ utilize, alone or in combination with other software, the Contributor
+ Version (or portions thereof).</para>
+
+ <para>(c)</para>
+
+ <para>(d)</para>
+
+ <para>3 DISTRIBUTION OBLIGATIONS.</para>
+
+ <para>3.1. Application of License.</para>
+
+ <para>The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be distributed
+ only under the terms of this License or a future version of this License
+ released under Section 6.1, and You must include a copy of this License
+ with every copy of the Source Code You distribute. You may not offer or
+ impose any terms on any Source Code version that alters or restricts the
+ applicable version of this License or the recipients' rights hereunder.
+ However, You may include an additional document offering the additional
+ rights described in Section 3.5.</para>
+
+ <para>3.2. Availability of Source Code.</para>
+
+ <para>Any Modification created by You will be provided to the Initial
+ Developer in Source Code form and are subject to the terms of the
+ License. 3.3. Description of Modifications.</para>
+
+ <para>You must cause all Covered Code to which You contribute to contain
+ a file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that the
+ Modification is derived, directly or indirectly, from Original Code
+ provided by the Initial Developer and including the name of the Initial
+ Developer in (a) the Source Code, and (b) in any notice in an Executable
+ version or related documentation in which You describe the origin or
+ ownership of the Covered Code.</para>
+
+ <para>3.4. Intellectual Property Matters.</para>
+
+ <para>(a) Third Party Claims. If Contributor has knowledge that a
+ license under a third party's intellectual property rights is required
+ to exercise the rights granted by such Contributor under Sections 2.1 or
+ 2.2, Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the party
+ making the claim in sufficient detail that a recipient will know whom to
+ contact. If Contributor obtains such knowledge after the Modification is
+ made available as described in Section 3.2, Contributor shall promptly
+ modify the LEGAL file in all copies Contributor makes available
+ thereafter and shall take other steps (such as notifying appropriate
+ mailing lists or newsgroups) reasonably calculated to inform those who
+ received the Covered Code that new knowledge has been obtained.</para>
+
+ <para>(b) Contributor APIs. If Contributor's Modifications include an
+ application programming interface and Contributor has knowledge of
+ patent licenses which are reasonably necessary to implement that API,
+ Contributor must also include this information in the LEGAL file.</para>
+
+ <para>(c) Representations. Contributor represents that, except as
+ disclosed pursuant to Section 3.4(a) above, Contributor believes that
+ Contributor's Modifications are Contributor's original creation(s)
+ and/or Contributor has sufficient rights to grant the rights conveyed by
+ this License.</para>
+
+ <para>3.5. Required Notices. You must duplicate the notice in Exhibit A
+ in each file of the Source Code. If it is not possible to put such
+ notice in a particular Source Code file due to its structure, then You
+ must include such notice in a location (such as a relevant directory)
+ where a user would be likely to look for such a notice. If You created
+ one or more Modification(s) You may add your name as a Contributor to
+ the notice described in Exhibit A. You must also duplicate this License
+ in any documentation for the Source Code where You describe recipients'
+ rights or ownership rights relating to Covered Code. You may choose to
+ offer, and to charge a fee for, warranty, support, indemnity or
+ liability obligations to one or more recipients of Covered Code.
+ However, You may do so only on Your own behalf, and not on behalf of the
+ Initial Developer or any Contributor.</para>
+
+ <para>3.6. Distribution of Executable Versions. You may distribute
+ Covered Code in Executable form only if the requirements of Section
+ 3.1-3.5 have been met for that Covered Code. You may distribute the
+ Executable version of Covered Code or ownership rights under a license
+ of Your choice, which may contain terms different from this License,
+ provided that You are in compliance with the terms of this License and
+ that the license for the Executable version does not attempt to limit or
+ alter the recipient's rights in the Source Code version from the rights
+ set forth in this License. If You distribute the Executable version
+ under a different license You must make it absolutely clear that any
+ terms which differ from this License are offered by You alone, not by
+ the Initial Developer or any Contributor. If you distribute executable
+ versions containing Covered Code as part of a product, you must
+ reproduce the notice in Exhibit B in the documentation and/or other
+ materials provided with the product.</para>
+
+ <para>3.7. Larger Works. You may create a Larger Work by combining
+ Covered Code with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such a case, You
+ must make sure the requirements of this License are fulfilled for the
+ Covered Code.</para>
+
+ <para>3.8. Restrictions. You may not remove any product identification,
+ copyright, proprietary notices or labels from gSOAP.</para>
+
+ <para>4 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION.</para>
+
+ <para>If it is impossible for You to comply with any of the terms of
+ this License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description must
+ be included in the LEGAL file described in Section 3.4 and must be
+ included with all distributions of the Source Code. Except to the extent
+ prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.</para>
+
+ <para>5 APPLICATION OF THIS LICENSE.</para>
+
+ <para>This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.</para>
+
+ <para>6 VERSIONS OF THE LICENSE.</para>
+
+ <para>6.1. New Versions.</para>
+
+ <para>Grantor may publish revised and/or new versions of the License
+ from time to time. Each version will be given a distinguishing version
+ number.</para>
+
+ <para>6.2. Effect of New Versions.</para>
+
+ <para>Once Covered Code has been published under a particular version of
+ the License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms of
+ any subsequent version of the License.</para>
+
+ <para>6.3. Derivative Works.</para>
+
+ <para>If You create or use a modified version of this License (which you
+ may only do in order to apply it to code which is not already Covered
+ Code governed by this License), You must (a) rename Your license so that
+ the phrase "gSOAP" or any confusingly similar phrase do not appear in
+ your license (except to note that your license differs from this
+ License) and (b) otherwise make it clear that Your version of the
+ license contains terms which differ from the gSOAP Public License.
+ (Filling in the name of the Initial Developer, Original Code or
+ Contributor in the notice described in Exhibit A shall not of themselves
+ be deemed to be modifications of this License.)</para>
+
+ <para>7 DISCLAIMER OF WARRANTY.</para>
+
+ <para>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED OR STATUTORY,
+ INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF
+ THIRD PARTY INTELLECTUAL PROPERTY RIGHTS, AND ANY WARRANTY THAT MAY
+ ARISE BY REASON OF TRADE USAGE, CUSTOM, OR COURSE OF DEALING. WITHOUT
+ LIMITING THE FOREGOING, YOU ACKNOWLEDGE THAT THE SOFTWARE IS PROVIDED
+ "AS IS" AND THAT THE AUTHORS DO NOT WARRANT THE SOFTWARE WILL RUN
+ UNINTERRUPTED OR ERROR FREE. LIMITED LIABILITY THE ENTIRE RISK AS TO
+ RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU. UNDER NO
+ CIRCUMSTANCES WILL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT,
+ INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND OR NATURE
+ WHATSOEVER, WHETHER BASED ON CONTRACT, WARRANTY, TORT (INCLUDING
+ NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, ARISING OUT OF OR IN ANY WAY
+ RELATED TO THE SOFTWARE, EVEN IF THE AUTHORS HAVE BEEN ADVISED ON THE
+ POSSIBILITY OF SUCH DAMAGE OR IF SUCH DAMAGE COULD HAVE BEEN REASONABLY
+ FORESEEN, AND NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
+ EXCLUSIVE REMEDY PROVIDED. SUCH LIMITATION ON DAMAGES INCLUDES, BUT IS
+ NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, LOST PROFITS, LOSS OF DATA
+ OR SOFTWARE, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION OR
+ IMPAIRMENT OF OTHER GOODS. IN NO EVENT WILL THE AUTHORS BE LIABLE FOR
+ THE COSTS OF PROCUREMENT OF SUBSTITUTE SOFTWARE OR SERVICES. YOU
+ ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED FOR USE IN ON-LINE
+ EQUIPMENT IN HAZARDOUS ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR
+ FACILITIES, AIRCRAFT NAVIGATION OR CONTROL, OR LIFE-CRITICAL
+ APPLICATIONS. THE AUTHORS EXPRESSLY DISCLAIM ANY LIABILITY RESULTING
+ FROM USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS
+ ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RESPECT OF ANY ACTIONS OR
+ CLAIMS BASED ON THE USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN
+ HAZARDOUS ENVIRONMENTS BY YOU. FOR PURPOSES OF THIS PARAGRAPH, THE TERM
+ "LIFE-CRITICAL APPLICATION" MEANS AN APPLICATION IN WHICH THE
+ FUNCTIONING OR MALFUNCTIONING OF THE SOFTWARE MAY RESULT DIRECTLY OR
+ INDIRECTLY IN PHYSICAL INJURY OR LOSS OF HUMAN LIFE. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY
+ COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.</para>
+
+ <para>8 TERMINATION.</para>
+
+ <para>8.1.</para>
+
+ <para>This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall survive
+ any termination of this License. Provisions which, by their nature, must
+ remain in effect beyond the termination of this License shall
+ survive.</para>
+
+ <para>8.2.</para>
+
+ <para>8.3.</para>
+
+ <para>If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as by
+ license or settlement) prior to the initiation of patent infringement
+ litigation, then the reasonable value of the licenses granted by such
+ Participant under Sections 2.1 or 2.2 shall be taken into account in
+ determining the amount or value of any payment or license.</para>
+
+ <para>8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.</para>
+
+ <para>9 LIMITATION OF LIABILITY.</para>
+
+ <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR
+ ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+ INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+ OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
+ AND LIMITATION MAY NOT APPLY TO YOU.</para>
+
+ <para>10 U.S. GOVERNMENT END USERS.</para>
+
+ <para>11 MISCELLANEOUS.</para>
+
+ <para>12 RESPONSIBILITY FOR CLAIMS.</para>
+
+ <para>As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly, out
+ of its utilization of rights under this License and You agree to work
+ with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.</para>
+
+ <para>EXHIBIT A.</para>
+
+ <para>"The contents of this file are subject to the gSOAP Public License
+ Version 1.3 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ <ulink
+ url="http://www.cs.fsu.edu/~engelen/soaplicense.html">http://www.cs.fsu.edu/~engelen/soaplicense.html</ulink>.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations under
+ the License.</para>
+
+ <para>The Original Code of the gSOAP Software is: stdsoap.h, stdsoap2.h,
+ stdsoap.c, stdsoap2.c, stdsoap.cpp, stdsoap2.cpp, soapcpp2.h,
+ soapcpp2.c, soapcpp2_lex.l, soapcpp2_yacc.y, error2.h, error2.c,
+ symbol2.c, init2.c, soapdoc2.html, and soapdoc2.pdf, httpget.h,
+ httpget.c, stl.h, stldeque.h, stllist.h, stlvector.h, stlset.h.</para>
+
+ <para>The Initial Developer of the Original Code is Robert A. van
+ Engelen. Portions created by Robert A. van Engelen are Copyright (C)
+ 2001-2004 Robert A. van Engelen, Genivia inc. All Rights
+ Reserved.</para>
+
+ <para>Contributor(s): "________________________." [Note: The text of
+ this Exhibit A may differ slightly form the text of the notices in the
+ Source Code files of the Original code. You should use the text of this
+ Exhibit A rather than the text found in the Original Code Source Code
+ for Your Modifications.]</para>
+
+ <para>EXHIBIT B.</para>
+
+ <para>"Part of the software embedded in this product is gSOAP software.
+ Portions created by gSOAP are Copyright (C) 2001-2004 Robert A. van
+ Engelen, Genivia inc. Tous droits réservés. THE SOFTWARE IN THIS PRODUCT
+ WAS IN PART PROVIDED BY GENIVIA INC AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE."</para>
+ </sect2>
+
+ <sect2 id="licChromium">
+ <title>Chromium licenses</title>
+
+ <sect3>
+ <title>Licence Main</title>
+
+ <para>Copyright (c) 2002, Stanford University Tous droits
+ réservés.</para>
+
+ <para>Some portions of Chromium are copyrighted by individiual
+ organizations. Please see the files COPYRIGHT.LLNL and
+ COPYRIGHT.REDHAT for more information.</para>
+
+ <para>Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:<itemizedlist>
+ <listitem>
+ <para>Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.</para>
+ </listitem>
+
+ <listitem>
+ <para>Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.</para>
+ </listitem>
+
+ <listitem>
+ <para>Neither the name of Stanford University nor the names of
+ its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.</para>
+ </sect3>
+
+ <sect3>
+ <title>COPYRIGHT.LLNL file</title>
+
+ <para>This Chromium distribution contains information and code which
+ is covered under the following notice:</para>
+
+ <para>Copyright (c) 2002, The Regents of the University of California.
+ Produced at the Lawrence Livermore National Laboratory Pour les détails,
+ contactez : Randall Frank (rjfrank@llnl.gov). UCRL-CODE-2002-058 Tous
+ droits réservés.</para>
+
+ <para>This file is part of Chromium. For details, see accompanying
+ documentation.</para>
+
+ <para>Redistribution and use in source and binary forms, with or
+ without modification, are permitted provided that the following
+ conditions are met:</para>
+
+ <para>Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the disclaimer below.</para>
+
+ <para>Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the disclaimer (as noted
+ below) in the documentation and/or other materials provided with the
+ distribution.</para>
+
+ <para>Neither the name of the UC/LLNL nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.</para>
+
+ <para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ REGENTS OF THE UNIVERSITY OF CALIFORNIA, THE U.S. DEPARTMENT OF ENERGY
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.</para>
+
+ <para>Additional BSD Notice</para>
+
+ <para>1. This notice is required to be provided under our contract
+ with the U.S. Department of Energy (DOE). This work was produced at
+ the University of California, Lawrence Livermore National Laboratory
+ under Contract No. W-7405-ENG-48 with the DOE.</para>
+
+ <para>2. Neither the United States Government nor the University of
+ California nor any of their employees, makes any warranty, express or
+ implied, or assumes any liability or responsibility for the accuracy,
+ completeness, or usefulness of any information, apparatus, product, or
+ process disclosed, or represents that its use would not infringe
+ privately-owned rights.</para>
+
+ <para>3. Also, reference herein to any specific commercial products,
+ process, or services by trade name, trademark, manufacturer or
+ otherwise does not necessarily constitute or imply its endorsement,
+ recommendation, or favoring by the United States Government or the
+ University of California. The views and opinions of authors expressed
+ herein do not necessarily state or reflect those of the United States
+ Government or the University of California, and shall not be used for
+ advertising or product endorsement purposes.</para>
+ </sect3>
+
+ <sect3>
+ <title>COPYRIGHT.REDHAT file</title>
+
+ <para>This Chromium distribution contains information and code which
+ is covered under the following notice:</para>
+
+ <para>Copyright 2001,2002 Red Hat Inc., Durham, North Carolina.</para>
+
+ <para>Tous droits réservés.</para>
+
+ <para>Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation on the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the
+ Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions:</para>
+
+ <para>The above copyright notice and this permission notice (including
+ the next paragraph) shall be included in all copies or substantial
+ portions of the Software.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="licLibCurl">
+ <title>Licence curl</title>
+
+ <para>COPYRIGHT AND PERMISSION NOTICE</para>
+
+ <para>Copyright (c) 1996 - 2009, Daniel Stenberg, daniel@haxx.se.</para>
+
+ <para>Tous droits réservés.</para>
+
+ <para>Permission to use, copy, modify, and distribute this software for
+ any purpose with or without fee is hereby granted, provided that the
+ above copyright notice and this permission notice appear in all
+ copies.</para>
+
+ <para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+ THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.</para>
+
+ <para>Except as contained in this notice, the name of a copyright holder
+ shall not be used in advertising or otherwise to promote the sale, use
+ or other dealings in this Software without prior written authorization
+ of the copyright holder.</para>
+ </sect2>
+
+ <sect2 id="licLibgd">
+ <title>Licence libgd</title>
+
+ <para>Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002 by Cold Spring Harbor Laboratory. Funded under Grant P41-RR02188 by
+ the National Institutes of Health.</para>
+
+ <para>Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
+ Boutell.Com, Inc.</para>
+
+ <para>Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
+ Philip Warner.</para>
+
+ <para>Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
+ Roelofs.</para>
+
+ <para>Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John
+ Ellson (ellson@lucent.com).</para>
+
+ <para>Portions relating to gdft.c copyright 2001, 2002 John Ellson
+ (ellson@lucent.com).</para>
+
+ <para>Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Pierre-Alain Joye (pierre@libgd.org).</para>
+
+ <para>Portions relating to JPEG and to color quantization copyright
+ 2000, 2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This software is based in
+ part on the work of the Independent JPEG Group. See the file
+ README-JPEG.TXT for more information.</para>
+
+ <para>Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
+ Szmurlo and Johan Van den Brande.</para>
+
+ <para>Permission has been granted to copy, distribute and modify gd in
+ any context without fee, including a commercial application, provided
+ that this notice is present in user-accessible supporting
+ documentation.</para>
+
+ <para>This does not affect your ownership of the derived work itself,
+ and the intent is to assure proper credit for the authors of gd, not to
+ interfere with your productive use of gd. If you have questions, ask.
+ "Derived works" includes all programs that utilize the library. Credit
+ must be given in user-accessible documentation.</para>
+
+ <para>This software is provided "AS IS." The copyright holders disclaim
+ all warranties, either express or implied, including but not limited to
+ implied warranties of merchantability and fitness for a particular
+ purpose, with respect to this code and accompanying
+ documentation.</para>
+
+ <para>Although their code does not appear in gd, the authors wish to
+ thank David Koblas, David Rowley, and Hutchison Avenue Software
+ Corporation for their prior contributions.</para>
+ </sect2>
+
+ <sect2 id="licBsdIntel">
+ <title>BSD license from Intel</title>
+
+ <para>Tous droits réservés.</para>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.</para>
+ </listitem>
+ <listitem>
+ <para>Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.</para>
+ </listitem>
+ <listitem>
+ <para>Neither the name of the Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.</para>
+ </listitem>
+ </itemizedlist>
+ <para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.</para>
+ </sect2>
+
+ <sect2 id="licJPEG">
+ <title>Licence libjpeg</title>
+
+ <para>The authors make NO WARRANTY or representation, either express or implied,
+ with respect to this software, its quality, accuracy, merchantability, or
+ fitness for a particular purpose. This software is provided "AS IS", and you,
+ its user, assume the entire risk as to its quality and accuracy.</para>
+
+ <para>This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
+ All Rights Reserved except as specified below.</para>
+
+ <para>Permission is hereby granted to use, copy, modify, and distribute this
+ software (or portions thereof) for any purpose, without fee, subject to these
+ conditions:</para>
+ <para>(1) If any part of the source code for this software is distributed, then this
+ README file must be included, with this copyright and no-warranty notice
+ unaltered; and any additions, deletions, or changes to the original files
+ must be clearly indicated in accompanying documentation.</para>
+ <para>(2) If only executable code is distributed, then the accompanying
+ documentation must state that "this software is based in part on the work of
+ the Independent JPEG Group".</para>
+ <para>(3) Permission for use of this software is granted only if the user accepts
+ full responsibility for any undesirable consequences; the authors accept
+ NO LIABILITY for damages of any kind.</para>
+
+ <para>These conditions apply to any software derived from or based on the IJG code,
+ not just to the unmodified library. If you use our work, you ought to
+ acknowledge us.</para>
+
+ <para>Permission is NOT granted for the use of any IJG author's name or company name
+ in advertising or publicity relating to this software or products derived from
+ it. This software may be referred to only as "the Independent JPEG Group's
+ software".</para>
+
+ <para>We specifically permit and encourage the use of this software as the basis of
+ commercial products, provided that all warranty or liability claims are
+ assumed by the product vendor.</para>
+
+ <para>ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+ sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+ by the usual distribution terms of the Free Software Foundation; principally,
+ that you must include source code if you redistribute it. (See the file
+ ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
+ of any program generated from the IJG code, this does not limit you more than
+ the foregoing paragraphs do.</para>
+
+ <para>The Unix configuration script "configure" was produced with GNU Autoconf.
+ It is copyright by the Free Software Foundation but is freely distributable.
+ The same holds for its supporting scripts (config.guess, config.sub,
+ ltmain.sh). Another support script, install-sh, is copyright by X Consortium
+ but is also freely distributable.</para>
+
+ <para>The IJG distribution formerly included code to read and write GIF files.
+ To avoid entanglement with the Unisys LZW patent, GIF reading support has
+ been removed altogether, and the GIF writer has been simplified to produce
+ "uncompressed GIFs". This technique does not use the LZW algorithm; the
+ resulting GIF files are larger than usual, but are readable by all standard
+ GIF decoders.</para>
+
+ <para>We are required to state that</para>
+ <para>"The Graphics Interchange Format(c) is the Copyright property of
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
+ CompuServe Incorporated."</para>
+ </sect2>
+
+ <sect2 id="licJPEGSIMD">
+ <title>Licence extension x86 SIMD pour la bibliothèque IJG JPEG</title>
+
+ <para>Copyright 2009 Pierre Ossman &lt;ossman@cendio.se&gt; for Cendio AB</para>
+ <para>Copyright 2010 D. R. Commander</para>
+
+ <para>Based on</para>
+ <para>x86 SIMD extension for IJG JPEG library - version 1.02</para>
+
+ <para>Copyright (C) 1999-2006, MIYASAKA Masaru.</para>
+
+ <para>This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.</para>
+
+ <para>Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:</para>
+
+ <para>1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.</para>
+ <para>2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.</para>
+ <para>3. This notice may not be removed or altered from any source distribution.</para>
+ </sect2>
+
+ <sect2 id="licFreeBsd">
+ <title>Licence FreeBSD</title>
+
+ <para>The compilation of software known as FreeBSD is distributed under the
+ following terms:</para>
+
+ <para>Copyright (c) 1992-2009 Le projet FreeBSD. Tous droits réservés.</para>
+
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.</para>
+ </sect2>
+
+ <sect2 id="licNetBsd">
+ <title>Licence NetBSD</title>
+
+ <para>Copyright (c) 1992, 1993 The Regents of the University of California.
+ Tous droits réservés.</para>
+
+ <para>
+ This software was developed by the Computer Systems Engineering group
+ at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ contributed to Berkeley.
+ </para>
+
+ <para>
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ </para>
+
+ <orderedlist>
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+ </para>
+ </sect2>
+
+ <sect2 id="licPcre">
+ <title>Licence PCRE</title>
+
+ <para>
+ PCRE is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ </para><para>
+ Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
+ specified below. The documentation for PCRE, supplied in the "doc"
+ directory, is distributed under the same terms as the software itself.
+ </para><para>
+ The basic library functions are written in C and are freestanding. Also
+ included in the distribution is a set of C++ wrapper functions, and a
+ just-in-time compiler that can be used to optimize pattern matching. These
+ are both optional features that can be omitted when the library is built.
+ </para><para>
+ THE BASIC LIBRARY FUNCTIONS.
+ Written by: Philip Hazel; Email local part: ph10; Email domain: cam.ac.uk
+ University of Cambridge Computing Service, Cambridge, England.
+ Copyright (c) 1997-2012 University of Cambridge
+ Tous droits réservés.
+ </para><para>
+ PCRE JUST-IN-TIME COMPILATION SUPPORT.
+ Written by: Zoltan Herczeg; Email local part: hzmester; Emain domain: freemail.hu
+ Copyright(c) 2010-2012 Zoltan Herczeg
+ Tous droits réservés.
+ </para><para>
+ STACK-LESS JUST-IN-TIME COMPILER.
+ Written by: Zoltan Herczeg; Email local part: hzmester; Emain domain: freemail.hu
+ Copyright(c) 2009-2012 Zoltan Herczeg
+ Tous droits réservés.
+ </para><para>
+ THE C++ WRAPPER FUNCTIONS.
+ Contributed by: Google Inc.
+ Copyright (c) 2007-2012, Google Inc.
+ Tous droits réservés.
+ </para><para>
+ THE "BSD" LICENCE.
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Neither the name of the University of Cambridge nor the name of Google
+ Inc. nor the names of their contributors may be used to endorse or
+ promote products derived from this software without specific prior
+ written permission.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ </para>
+ </sect2>
+
+ <sect2 id="licLibffi">
+ <title>Licence libffi</title>
+
+ <para>
+ Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc and others.
+ See source files for details.
+ </para><para>
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ ``Software''), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+ </para><para>
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+ </para><para>
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+ </sect2>
+
+ <sect2 id="licFltk">
+ <title>Licence FLTK</title>
+
+ <para>
+ December 11, 2001
+ </para><para>
+ The FLTK library and included programs are provided under the terms
+ of the GNU Library General Public License (LGPL) with the following
+ exceptions:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Modifications to the FLTK configure script, config
+ header file, and makefiles by themselves to support
+ a specific platform do not constitute a modified or
+ derivative work.
+ </para>
+ <para>
+ The authors do request that such modifications be
+ contributed to the FLTK project - send all contributions
+ through the "Software Trouble Report" on the following page:
+ </para><para>
+ http://www.fltk.org/str.php
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Widgets that are subclassed from FLTK widgets do not
+ constitute a derivative work.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Static linking of applications and widgets to the
+ FLTK library does not constitute a derivative work
+ and does not require the author to provide source
+ code for the application or widget, use the shared
+ FLTK libraries, or link their applications or
+ widgets against a user-supplied version of FLTK.
+ </para>
+ <para>
+ If you link the application or widget to a modified
+ version of FLTK, then the changes to FLTK must be
+ provided under the terms of the LGPL in sections
+ 1, 2, and 4.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ You do not have to provide a copy of the FLTK license
+ with programs that are linked to the FLTK library, nor
+ do you have to identify the FLTK license in your
+ program or documentation as required by section 6
+ of the LGPL.
+ </para>
+ <para>
+ However, programs must still identify their use of FLTK.
+ The following example statement can be included in user
+ documentation to satisfy this requirement:
+ </para>
+ <para>
+ [program/widget] is based in part on the work of
+ the FLTK project (http://www.fltk.org).
+ </para>
+ </listitem>
+ </orderedlist>
+ </sect2>
+
+ <sect2 id="licExpat">
+ <title>Licence Expat</title>
+ <para>
+ Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ and Clark Cooper
+ </para>
+ <para>
+ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+ </para>
+ <para>
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+ </para>
+ <para>
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+ </para>
+ <para>
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ </para>
+ </sect2>
+
+ <sect2 id="licFontconfig">
+ <title>Licence fontconfig</title>
+ <para>
+ Copyright (C) 2001, 2003 Keith Packard
+ </para>
+ <para>
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation, and that the name of the author(s) not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. The authors make no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+ </para>
+ <para>
+ THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ </para>
+ </sect2>
+
+ <sect2 id="licFreetype">
+ <title>Licence Freetype</title>
+ <para>
+ 2006-Jan-27
+ </para>
+ <para>
+ Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg
+ </para>
+ <sect3>
+ <title>Introduction</title>
+ <para>
+ The FreeType Project is distributed in several archive packages;
+ some of them may contain, in addition to the FreeType font engine,
+ various tools and contributions which rely on, or relate to, the
+ FreeType Project.
+ </para>
+ <para>
+ This license applies to all files found in such packages, and
+ which do not fall under their own explicit license. The license
+ affects thus the FreeType font engine, the test programs,
+ documentation and makefiles, at the very least.
+ </para>
+ <para>
+ This license was inspired by the BSD, Artistic, and IJG
+ (Independent JPEG Group) licenses, which all encourage inclusion
+ and use of free software in commercial and freeware products
+ alike. As a consequence, its main points are that:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ We don't promise that this software works. However, we will be
+ interested in any kind of bug reports. (`as is' distribution)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ You can use this software for whatever you want, in parts or
+ full form, without having to pay us. (`royalty-free' usage)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ You may not pretend that you wrote this software. If you use
+ it, or only parts of it, in a program, you must acknowledge
+ somewhere in your documentation that you have used the
+ FreeType code. (`credits')
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ We specifically permit and encourage the inclusion of this
+ software, with or without modifications, in commercial products.
+ We disclaim all warranties covering The FreeType Project and
+ assume no liability related to The FreeType Project.
+ </para>
+ <para>
+ Finally, many people asked us for a preferred form for a
+ credit/disclaimer to use in compliance with this license. We thus
+ encourage you to use the following text:
+ </para>
+ <para>
+ Portions of this software are copyright (C) &lt;year&gt; The FreeType
+ Project (www.freetype.org). Tous droits réservés.
+ </para>
+ <para>
+ Please replace &lt;year&gt; with the value from the FreeType version you
+ actually use.
+ </para>
+ </sect3>
+ <sect3>
+ <title>Legal Terms</title>
+ <sect4>
+ <title>0. Definitions</title>
+ <para>
+ Throughout this license, the terms `package', `FreeType Project',
+ and `FreeType archive' refer to the set of files originally
+ distributed by the authors (David Turner, Robert Wilhelm, and
+ Werner Lemberg) as the `FreeType Project', be they named as alpha,
+ beta or final release.
+ </para>
+ <para>
+ `You' refers to the licensee, or person using the project, where
+ `using' is a generic term including compiling the project's source
+ code as well as linking it to form a `program' or `executable'.
+ This program is referred to as `a program using the FreeType
+ engine'.
+ </para>
+ <para>
+ This license applies to all files distributed in the original
+ FreeType Project, including all source code, binaries and
+ documentation, unless otherwise stated in the file in its
+ original, unmodified form as distributed in the original archive.
+ If you are unsure whether or not a particular file is covered by
+ this license, you must contact us to verify this.
+ </para>
+ <para>
+ The FreeType Project is copyright (C) 1996-2000 by David Turner,
+ Robert Wilhelm, and Werner Lemberg. All rights reserved except as
+ specified below.
+ </para>
+ </sect4>
+ <sect4>
+ <title>1. No Warranty</title>
+ <para>
+ THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
+ USE, OF THE FREETYPE PROJECT.
+ </para>
+ </sect4>
+ <sect4>
+ <title>2. Redistribution</title>
+ <para>
+ This license grants a worldwide, royalty-free, perpetual and
+ irrevocable right and license to use, execute, perform, compile,
+ display, copy, create derivative works of, distribute and
+ sublicense the FreeType Project (in both source and object code
+ forms) and derivative works thereof for any purpose; and to
+ authorize others to exercise some or all of the rights granted
+ herein, subject to the following conditions:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Redistribution of source code must retain this license file
+ (`FTL.TXT') unaltered; any additions, deletions or changes to
+ the original files must be clearly indicated in accompanying
+ documentation. The copyright notices of the unaltered,
+ original files must be preserved in all copies of source
+ files.</para>
+ </listitem>
+ <listitem>
+ <para>Redistribution in binary form must provide a disclaimer that
+ states that the software is based in part of the work of the
+ FreeType Team, in the distribution documentation. We also
+ encourage you to put an URL to the FreeType web page in your
+ documentation, though this isn't mandatory.</para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ These conditions apply to any software derived from or based on
+ the FreeType Project, not just the unmodified files. If you use
+ our work, you must acknowledge us. However, no fee need be paid
+ to us.
+ </para>
+ </sect4>
+ <sect4>
+ <title>3. Advertising</title>
+ <para>
+ Neither the FreeType authors and contributors nor you shall use
+ the name of the other for commercial, advertising, or promotional
+ purposes without specific prior written permission.
+ </para>
+ <para>
+ We suggest, but do not require, that you use one or more of the
+ following phrases to refer to this software in your documentation
+ or advertising materials: `FreeType Project', `FreeType Engine',
+ `FreeType library', or `FreeType Distribution'.
+ </para>
+ <para>
+ As you have not signed this license, you are not required to
+ accept it. However, as the FreeType Project is copyrighted
+ material, only this license, or another one contracted with the
+ authors, grants you the right to use, distribute, and modify it.
+ Therefore, by using, distributing, or modifying the FreeType
+ Project, you indicate that you understand and accept all the terms
+ of this license.
+ </para>
+ </sect4>
+ <sect4>
+ <title>4. Contacts</title>
+ <para>
+ There are two mailing lists related to FreeType:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ freetype@nongnu.org
+ </para>
+ <para>
+ Discusses general use and applications of FreeType, as well as
+ future and wanted additions to the library and distribution.
+ If you are looking for support, start in this list if you
+ haven't found anything to help you in the documentation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ freetype-devel@nongnu.org
+ </para>
+ <para>
+ Discusses bugs, as well as engine internals, design issues,
+ specific licenses, porting, etc.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Our home page can be found at
+ </para>
+ <para>
+ http://www.freetype.org
+ </para>
+ </sect4>
+ </sect3>
+ </sect2>
+
+ <sect2 id="licVPX">
+ <title>Licence VPX</title>
+ <para>
+ Copyright (c) 2010, The WebM Project authors. Tous droits réservés.
+ </para>
+ <para>
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Neither the name of Google, nor the WebM Project, nor the names
+ of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ </para>
+ </sect2>
+ </sect1>
+</appendix>
diff --git a/doc/manual/fr_FR/user_Troubleshooting.xml b/doc/manual/fr_FR/user_Troubleshooting.xml
new file mode 100644
index 00000000..630f410f
--- /dev/null
+++ b/doc/manual/fr_FR/user_Troubleshooting.xml
@@ -0,0 +1,1487 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="Troubleshooting">
+ <title>Dépannage</title>
+
+ <para>Ce chapitre apporte des réponses à des questions fréquemment posées.
+ Afin d'améliorer votre expérience utilisateur avec VirtualBox, il est recommandé
+ de lire cette section pour en apprendre plus sur les soucis classiques et
+ pour avoir les recommandations sur la manière d'utiliser le produit.</para>
+
+ <sect1>
+ <title>Procédures et outils</title>
+
+ <sect2>
+ <title>Catégoriser et isoler des problèmes</title>
+
+ <para>Le plus souvent, un invité virtualisé se comporte comme un système
+ physique. Une machine virtuelle rencontrera les mêmes problèmes que le
+ ferait une machine physique. Si, par exemple, vous perdez la connectivité
+ à Internet à cause de problèmes extérieurs, les machines virtuellas seront
+ touchées exactement comme celles physiques.</para>
+
+ <para>Si vous rencontrez un problème vraiment lié à VirtualBox, celui-ci
+ aide à le catégoriser et à l'isoler. Voici quelques questions auxquelles
+ vous devriez répondre avant de signaler un problème&#xA0;:<orderedlist>
+ <listitem>
+ <para>Le problème est-il spécifique à un OS invité en particulier&#xA0;?
+ À une version de l'OS invité&#xA0;? Surtout avec les problèmes liés
+ aux invités Linux, le problème peut être spécifique à une distribution
+ et à une version de Linux.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique à un OS hôte en particulier&#xA0;?
+ Les problèmes ne sont généralement pas spécifiques à un OS hôte (car
+ la plupart de la base du code de VirtualBox est partagée par toutes
+ les plateformes supportées), mais, surtout en matière de réseau et
+ de support USB, il existe d'importantes différences entre les
+ plateformes hôtes. Certains problèmes liés à la GUI sont aussi spécifiques
+ à l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique à un matériel hôte particulier&#xA0;?
+ Cette catégorie de problèmes est généralement liée au processeur de
+ l'hôte. Du fait de différences importantes entre VT-x et AMD-V, des
+ problèmes peuvent être spécifiques à l'une ou l'autre technologie.
+ Le modèle exact du processeur peut également marquer une différence
+ (même pour la virtualisation logicielle) car différents processeurs
+ supportent différentes fonctions, ce qui peut toucher
+ certains aspects du fonctionnement du processeur invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique à un mode de virtualisation
+ en particulier&#xA0;? Certains problèmes peuvent n'arriver qu'en mode
+ virtualisation logicielle, d'autres peuvent être spécifiques à la
+ virtualisation matérielle.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique au SMP de l'invité&#xA0;? À
+ savoir, est-il lié au nombre de processeurs virtuels (VCPUs) de
+ l'invité&#xA0;? L'utilisation de plus d'un processeur touche de
+ façon significative le fonctionnement interne d'un OS invité.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique aux suppléments invité&#xA0;?
+ Dans certains cas, c'est écrit (par exemple un problème de dossiers
+ partagés), dans d'autres, cela peut être moins évident (par exemple,
+ des problèmes d'affichage). Si le problème est spécifique aux
+ suppléments invité, est-il spécifique à une version en particulier
+ des suppléments invité&#xA0;?</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il spécifique à un environnement particulier&#xA0;?
+ Certains problèmes sont liés à un environnement externes à la VM&#xA0;;
+ cela implique en général un paramétrage du réseau. Certaines
+ configurations de serveurs externes tels que DHCP ou PXE peuvent
+ poser des problèmes qui ne surviennent pas avec d'autres serveurs
+ identiques.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le problème est-il une régression&#xA0;? Le fait de savoir qu'un
+ problème est une régression facilite beaucoup en général la recherche
+ d'une solution. Dans ce cas, il est crucial de connaître la version
+ concernée et celle qui ne l'est pas.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Recueillir des informations de débogage</title>
+
+ <para>Pour déterminer un problème, il est souvent important de recueillir
+ des informations de débogage que l'assistance de VirtualBox peut analyser.
+ Cette section contient des informations sur le type d'informations que
+ vous pouvez obtenir.</para>
+
+ <para>À chaque fois que VirtualBox démarre une VM, ce qu'on appelle un <emphasis
+ role="bold">"release log file"</emphasis> (fichier journal) est créé,
+ contenant beaucoup d'informations sur la configuration de la VM et les
+ événements lors de son exécution. Le fichier journal s'appelle
+ <computeroutput><literal>VBox.log</literal></computeroutput> et se trouve
+ dans le dossier du fichier journal de la VM. Il s'agira en général d'un
+ répertoire comme celui-ci&#xA0;:<screen>$HOME/VirtualBox VMs/{machinename}/Logs</screen></para>
+
+ <para>Au démarrage d'une VM, le fichier de configuration de la dernière exécution
+ sera renommé en <computeroutput>.1</computeroutput>, jusqu'à
+ <computeroutput>.3</computeroutput>. Parfois, quand il y a un problème,
+ il est utile de jeter un &#x153;il dans le journal. Quand vous demandez
+ de l'aide sur VirtualBox, le fait de fournir le fichier journal correspondant
+ est obligatoire.</para>
+
+ <para>Par commodité, pour chaque machine virtuelle, la fenêtre principale
+ de VirtualBox peut afficher ces journaux dans une fenêtre. Pour y accéder,
+ sélectionnez une machine virtuelle dans la liste à gauche et sélectionner
+ "Afficher les journaux..." dans la fenêtre "Machine".</para>
+
+ <para>Le fichier journal (VBox.log) contient une gamme d'informations
+ de diagnostic telles que le type et la version d'OS hôte, la version
+ de VirtualBox et l'architecture (32 ou 64 bits), un aperçu complet de la
+ configuration de l'invité (CFGM), des informations détaillées sur le
+ type et les fonctions supportées par le processeur, si la virtualisation
+ matérielle est activée, des informations sur le réglage VT-x/AMD-V, l'état
+ des transitions (création, exécution, en pause, éteint, etc.), les
+ messages du BIOS invité, les messages des suppléments invité, les entrées
+ du journal spécifiques aux périphériques, à la fin de l'exécution, l'état
+ final de l'invité et des statistiques consolidées.</para>
+
+ <para>En cas de plantage, il est très important de recueillir
+ <emphasis role="bold">les sorties du plantage</emphasis>. Ceci est vrai
+ tant pour les plantages de l'hôte que pour ceux de l'invité. Pour des
+ informations sur l'activation de plus de messages sur les systèmes Linux,
+ Solaris et OS X, reportez-vous à l'article sur les messages du c&#x153;ur
+ sur le site Internet de VirtualBox.<footnote>
+ <para><ulink
+ url="http://www.virtualbox.org/wiki/Core_dump">http://www.virtualbox.org/wiki/Core_dump</ulink>.</para>
+ </footnote></para>
+
+ <para>Vous pouvez àgalement utiliser <computeroutput>VBoxManage
+ debugvm</computeroutput> pour créer un journal de toute une machine
+ virtuelle&#xA0;; voir <xref linkend="vboxmanage-debugvm" />.</para>
+
+ <para>Pour des problèmes liés au réseau, il est souvent utile de récupérer
+ une trace du trafic réseau. Si le trafic est acheminé par un adaptateur
+ de l'hôte, il est possible d'utiliser Wireshark ou un outil similaire
+ pour y récupérer le trafic. Cependant, cela inclut aussi souvent beaucoup
+ de trafic indépendant de la VM.</para>
+
+ <para>VirtualBox offre la possibilité de récupérer seulement le trafic
+ réseau de l'adaptateur réseau d'une VM spécifique. Reportez-vous à l'article
+ sur le trafic réseau sur le site Internet de VirtualBox<footnote>
+ <para><ulink
+ url="http://www.virtualbox.org/wiki/Network_tips">http://www.virtualbox.org/wiki/Network_tips</ulink>.</para>
+ </footnote> pour des informations sur l'activation de cette récupération.
+ Les fichiers de trace créés par VirtualBox sont au format
+ <computeroutput>.pcap</computeroutput> et peuvent être facilement analysés
+ avec Wireshark.</para>
+ </sect2>
+
+ <sect2 id="ts_debugger">
+ <title>Le débogueur de VM intégré</title>
+
+ <para>VirtualBox inclut un débogueur de VM intégré, qui peut servir aux
+ utilisateurs avancés. Ce débogueur permet d'examiner et, dans une certaine
+ mesure, de contrôler l'état de la VM.<warning>
+ <para>L'utilisation du débogueur de VM est à vos risques et périls.
+ Il n'existe pas d'assistance autour, la documentation suivante a été
+ rendue disponible uniquement pour les utilisateurs avancés ayant un
+ degré de familiarité très élevé du jeu d'instructions d'une machine
+ x86/AMD64, ainsi que des connaissances détaillées de l'architecture
+ PC. Une certaine familiarité avec les aspects internes de l'OS invité
+ concerné peut aussi aider.</para>
+ </warning></para>
+
+ <para>Le débogueur de VM est disponible dans toutes les versions ordinaires
+ de production de VirtualBox, mais il est désactivé par défaut car l'utilisateur
+ moyen l'utilisera très peu. Il existe deux manières d'accéder au débogueur&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Une fenêtre de console du débogueur affichée à côté de la VM</para>
+ </listitem>
+
+ <listitem>
+ <para>Via le protocole <computeroutput>telnet</computeroutput> sur
+ le port 5000</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Vous pouvez activer le débogueur de trois façons&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Démarrer la VM directement en utilisant <computeroutput>VirtualBox
+ --startvm</computeroutput>, avec, en plus, l'argument
+ <computeroutput>--dbg</computeroutput>,
+ <computeroutput>--debug</computeroutput>, ou
+ <computeroutput>--debug-command-line</computeroutput>. Voir l'aide
+ sur l'utilisation de VirtualBox pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Définir la variable d'environnement
+ <computeroutput>VBOX_GUI_DBG_ENABLED</computeroutput> ou
+ <computeroutput>VBOX_GUI_DBG_AUTO_SHOW</computeroutput> avec
+ <computeroutput>true</computeroutput> avant de lancer le processus
+ de VirtualBox. Le réglage des variables (seule leur présence est
+ vérifiée) est effectif, même quand le premier processus de
+ VirtualBox est la fenêtre du sélecteur de VM. Les VMs qui se lancent
+ ensuite à partir du sélecteur auront un débogueur actif.</para>
+ </listitem>
+
+ <listitem>
+ <para>Définir la donnée supplémentaire <computeroutput>GUI/Dbg/Enabled</computeroutput>
+ sur <computeroutput>true</computeroutput> avant de lancer la VM. Vous
+ pouvez la régler de façon globale ou sur une base individuelle à
+ chaque VM.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Un nouveau menu 'Débogage' sera ajoutée à l'application VirtualBox.
+ Ce menu permet à l'utilisateur d'ouvrir la console du débogueur.</para>
+
+ <para>La syntaxe des commandes du débogueur de VM est grosso modo sur
+ le même modèle que les débogueurs de Microsoft et d'IBM, utilisés sur
+ DOS, OS/2 et Windows. Les utilisateurs familiers de symdeb,
+ CodeView, ou du débogueur du noyau the OS/2 trouveront le débogueur de
+ VM de VirtualBox classique.</para>
+
+ <para>La commande la plus importante est <computeroutput>help</computeroutput>.
+ Cela affichera un message d'aide à l'utilisation rapide de toutes les commandes
+ du débogueur. L'ensemble des commandes supporté par le débogueur de VM
+ change souvent et la commande <computeroutput>help</computeroutput> est
+ toujours à jour.</para>
+
+ <para>Voici un résumé rapide des commandes souvent utilisées&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>stop</computeroutput> -- arrête l'exécution
+ de la VM et active le mono-session (single stepping)</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>g</computeroutput> -- continue l'exécution de
+ la VM</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>t</computeroutput> -- passe en mono-session
+ (single step) une instruction</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>rg/rh/r</computeroutput> -- affiche les registres
+ actuels de l'invité/hyperviseur</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>kg/kh/k</computeroutput> -- affiche la pile
+ d'appel actuelle de l'invité/hyperviseur actuel</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>da/db/dw/dd/dq</computeroutput> -- affiche
+ le contenu de la mémoire sous forme ASCII/octets/mots/dwords/qwords</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>u</computeroutput> -- désassemble la mémoire</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>dg</computeroutput> -- affiche le GDT
+ de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>di</computeroutput> -- affiche le
+ IDT de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>dl</computeroutput> -- affiche le
+ LDT de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>dt</computeroutput> -- affiche le
+ TSS de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>dp*</computeroutput> -- affiche les structures
+ des tables de pages de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>bp/br</computeroutput> -- définit un point de
+ rupture normal/recompilateur</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>bl</computeroutput> -- liste les points de
+ rupture</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>bc</computeroutput> -- vide les points de
+ rupture</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>writecore</computeroutput> -- écrit sur le
+ disque un fichier c&#x153;ur de VM, reportez-vous au
+ <xref linkend="ts_guest-core-format" /></para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Voir le <computeroutput>help</computeroutput> intégré pour d'autres
+ commandes disponibles.</para>
+
+ <para>Le débogueur de VM supporte le débogage symbolique de base, même si
+ les symboles du code invité ne sont pas souvent disponibles. Pour les
+ invités Solaris, la commande <computeroutput>detect</computeroutput>
+ détermine automatiquement la version de l'OS invité et localise les symboles
+ du noyau dans la mémoire de l'invité. Le débogage symbolique est
+ alors disponible. Pour les invités Linux, les commandes <computeroutput>detect</computeroutput>
+ déterminent également la version de l'OS invité, mais il n'y a pas de
+ symboles dans la mémoire de l'invité. Les symboles du noyau sont disponiblas
+ dans le fichier <computeroutput>/proc/kallsyms</computeroutput> des
+ invités Linux. Vous devez copier ce fichier dans l'hôte, en utilisant par
+ exemple <computeroutput>scp</computeroutput>. La commande
+ <computeroutput>loadmap</computeroutput> du débogueur peut être utilisée
+ pour rendre les informations de symbole disponibles pour le débogueur de VM.
+ Remarquez que le fichier <computeroutput>kallsyms</computeroutput> contient
+ les symboles des modules actuellement chargés&#xA0;; si la configuration de
+ l'invité change, les symboles changeront aussi et doivent être mis à
+ jour.</para>
+
+ <para>Pour tous les invités, une façon simple de vérifier que les bons
+ symboles sont chargés est la commande <computeroutput>k</computeroutput>.
+ L'invité est en principe occupé et il devrait être vidé des informations
+ symboliques que la boucle active du système d'exploitation invité exécute.</para>
+
+ <para>Un autre groupe de commandes du débogueur est
+ <computeroutput>info</computeroutput>. L'exécution d
+ <computeroutput>info help</computeroutput> fournit ces
+ informations d'utilisation complètes. Les commandes d'informations
+ fournissent des données ad-hoc pertinentes sur divers périphériques émulés
+ et sur les aspects de la VMM. Il n'y a pas de lignes directrices générales
+ sur l'utilisation des commandes <computeroutput>info</computeroutput>,
+ la bonne commande à utiliser dépend beaucoup du problème à trouver.
+ Certaines commandes info sont&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>cfgm</computeroutput> -- affiche une branche
+ de l'arborescence de la configuration</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>cpuid</computeroutput> -- affiche les sorties
+ du CPUID de l'invité</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>ioport</computeroutput> -- affiche les E/S
+ des plages de ports enregistrées</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>mmio</computeroutput> -- affiche les plages
+ MMIO enregistrées</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>mode</computeroutput> -- affiche le mode de
+ pagination actuel</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>pit</computeroutput> -- affiche l'état i8254 PIT</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>pic</computeroutput> -- affiche l'état i8259A PIC</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>ohci/ehci</computeroutput> -- affiche un
+ sous-ensemble de l'état du contrôleur USB OHCI/EHCI</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>pcnet0</computeroutput> -- affiche l'état PCnet</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>vgatext</computeroutput> -- affiche le contenu
+ du tampon (framebuffer) VGA formaté en mode texte standard</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>timers</computeroutput> -- affiche toutes les
+ horloges de la VM</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>La sortie des commandes <computeroutput>info</computeroutput> exige
+ généralement une connaissance approfondie du périphérique émulé et/ou des
+ aspects internes de VirtualBox VMM. Cependant, quand on les utilise correctement,
+ les informations fournies peuvent avoir une valeur inestimable.</para>
+ </sect2>
+
+ <sect2 id="ts_guest-core-format">
+ <title>Format du c&#x153;ur d'une VM</title>
+
+ <para>VirtualBox utilise le format ELF 64 bits pour les fichiers c&#x153;ur
+ de la VM créés par <computeroutput>VBoxManage debugvm</computeroutput>&#xA0;;
+ voir <xref linkend="vboxmanage-debugvm" />. Les fichiers c&#x153;ur d'une
+ VM contiennent les messages de la mémoire et du processeur de la VM et ils
+ peuvent être utiles pour déboguer votre OS invité. Vous pouvez savoir
+ les spécifications du format objet ELF 64 bits ici&#xA0;: <literal><ulink
+ url="http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf">http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf</ulink></literal>.</para>
+
+ <para>La présentation grosso modo du format du c&#x153;ur de la VM est
+ celle-ci&#xA0;:</para>
+
+ <para><screen>[ ELF 64 Header]
+[ Program Header, type PT_NOTE ]
+ -&gt; offset to COREDESCRIPTOR
+[ Program Header, type PT_LOAD ] - un par plage de mémoire physique contiguë
+ -&gt; Memory offset of range
+ -&gt; File offset
+[ Note Header, type NT_VBOXCORE ]
+[ COREDESCRIPTOR ]
+ -&gt; Magic
+ -&gt; Version du fichier c&#x153;ur de la VM
+ -&gt; Version de VBox
+ -&gt; Nombre de vprocesseurs etc.
+[ Note Header, type NT_VBOXCPU ] - un pour chaque vCPU
+[ vCPU 1 Note Header ]
+ [ CPUMCTX - vCPU 1 dump ]
+[ Remarques + données supplémentaires ] - Non utilisées aujourd'hui
+[ Memory dump ]</screen></para>
+
+ <para>Les descripteurs de mémoire contiennent les adresses physiques de
+ la mémoire liées à l'invité et pas les adresses virtuelles. Les régions de
+ la mémoire telles que les régions MMIO ne sont pas incluses dans le fichier
+ c&#x153;ur.</para>
+
+ <para>Vous pouvez trouver les structures de données et les définitions
+ pertinentes dans les sources de VirtualBox sous les fichiers en-têtes
+ suivants&#xA0;:
+ <computeroutput>include/VBox/dbgfcorefmt.h</computeroutput>,
+ <computeroutput>include/VBox/cpumctx.h</computeroutput> et
+ <computeroutput>src/VBox/Runtime/include/internal/ldrELFCommon.h</computeroutput>.</para>
+
+ <para>Vous pouvez examiner le fichier c&#x153;ur de la VM en utilisant
+ <computeroutput>elfdump</computeroutput> et GNU
+ <computeroutput>readelf</computeroutput> ou d'autres outils similaires.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Général</title>
+
+ <sect2 id="ts_config-periodic-flush">
+ <title>L'invité affiche des erreurs IDE/SATA pour les images
+ fichier d'un système de fichiers hôte lent</title>
+
+ <para>De temps en temps, certains systèmes de fichiers hôte offrent des
+ performances d'écriture très faibles et, par conséquent, créent des
+ timeout sur les commandes IDE/SATA de l'invité. C'est un comportement normal
+ et cela ne devrait pas provoquer de vrais problèmes, car l'invité devrait
+ répéter des commandes qui ont dépassé le timeout. Cependant, certains
+ invités (comme certaines versions
+ de Linux) ont de gros problèmes si l'écriture dans un fichier image dépasse
+ 15 secondes. Or, certains systèmes de fichiers nécessitent plus d'une
+ minute pour effectuer une seule écriture, si le cache de l'hôte contient
+ beaucoup de données à écrire.</para>
+
+ <para>Le symptôme de ce problème est que l'invité ne peut plus accéder à
+ ses fichiers lors de grosses écritures, ce qui aboutit en général à un
+ accroc immédiat de l'invité.</para>
+
+ <para>Pour contourner ce problème (la vraie correction est d'utiliser un
+ système de fichier plus rapide qui n'excède pas de telles performances
+ d'écriture inacceptables), il est possible de flasher le fichier image
+ après qu'une certaine quantité de données ait été écrite. Cet intervalle est
+ en principe infini mais vous pouvez le configurer individuellement pour
+ chaque disque d'une VM.</para>
+
+ <para>Pour des disques IDE, utilisez la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/FlushInterval" [b]</screen>
+
+ <para>Pour des disques SATA, utilisez la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM"
+ "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/FlushInterval" [b]</screen>
+
+ <para>La valeur [x] qui sélectionne le disque pour l'IDE est 0 pour le
+ périphérique maître du premier canal, 1 pour périphérique esclave du premier
+ canal, 2 pour le périphérique maître du deuxième canal, ou 3 pour le
+ périphérique esclave du deuxième canal. Pour SATA, utilisez des valeurs
+ entre 0 et 29. Seuls les disques supportent cette option de configuration&#xA0;;
+ vous ne devez pas la définir pour des lecteurs CD/DVD.</para>
+
+ <para>L'unité d'intervalle [b] est le nombre d'octets écrits depuis le
+ dernier vidage. Sa valeur doit être sélectionnée de sorte que les longs
+ délais d'écriture occasionnels ne se produisent pas. Comme la bonne valeur
+ d'intervalle de vidage dépend des performances de l'hôte et du système de
+ fichiers hôte, savoir la valeur optimum qui fait disparaître le problème
+ nécessite d'expérimenter. Des valeurs entre 1000000 et 10000000 (1 to 10 mégaoctets)
+ sont un bon point de départ. La diminution de l'intervalle réduit la probabilité
+ du problème et les performances d'écriture de l'invité. Le test des valeurs faibles inutilement sera coûteux en
+ performances sans avantages. Un intervalle de 1 fera un vidage toutes les
+ opération d'écriture et cela devrait résoudre le problème dans tous les
+ cas, mais cela est très coûteux en performances d'écriture.</para>
+
+ <para>Fournir la valeur 0 à [b] revient à un intervalle de vidage infini
+ ce qui désactive de fait ce contournement. La suppression de la donnée
+ supplémentaire en ne spécifiant aucune valeur pour [b] aboutit au même
+ effet.</para>
+ </sect2>
+
+ <sect2>
+ <title>Réponse aux requêtes de vidage IDE/SATA de l'invité</title>
+
+ <para>Si vous le souhaitez, les images virtuelles de disque peuvent être
+ flashées quand l'invité lance une commande IDE FLUSH CACHE. Normalement ces
+ requêtes sont ignorées pour des performances améliorées. Les paramètres
+ ci-dessous sont acceptés uniquement pour les lecteurs de disque. Elles ne
+ doivent pas être définies pour des lecteurs DVD.</para>
+
+ <para>Pour activer le vidage des disques IDE, lancez la
+ commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/IgnoreFlush" 0</screen>
+
+ <para>La valeur [x] qui sélectionne le disque pour l'IDE est 0 pour le
+ périphérique maître du premier canal, 1 pour périphérique esclave du premier
+ canal, 2 pour le périphérique maître du deuxième canal, ou 3 pour le
+ périphérique esclave du deuxième canal.</para>
+
+ <para>Pour activer le vidage pour des disques SATA, lancez la commande
+ suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/IgnoreFlush" 0</screen>
+
+ <para>La valeur [x] qui sélectionne le disque peut être une valeur entre
+ 0 et 29.</para>
+
+ <para>Remarquez que cela ne concerne pas les vidages effectués selon la
+ configuration décrite au <xref linkend="ts_config-periodic-flush"
+ xrefstyle="template: %n" />. La restauration des paramètres par défaut
+ d'ignorance des commandes est possible en paramétrant la valeur sur 1 ou en
+ supprimant la clé.</para>
+ </sect2>
+
+ <sect2 id="ts_host-powermgmt">
+ <title>Faibles performances dues à la gestion d'énergie de l'hôte</title>
+
+ <para>Sur certaines plateformes matériel et sur certains systèmes
+ d'exploitation, les performances de virtualisation sont touchées de manière
+ négative par la gestion d'énergie du processeur de l'hôte. Les symptômes
+ peuvent être un changement de son dans l'invité ou un comportement erratique
+ de l'horloge de l'invité.</para>
+
+ <para>Certains problèmes peuvent venir de bogues d'un firmware et/ou
+ du système d'exploitation hôte. Donc, la mise à jour du firmware et l'application
+ de correctifs au système d'exploitation est recommandée.</para>
+
+ <para>Pour des performances de virtualisation optimales, le support de
+ l'état d'énergie C1E dans le BIOS du système devrait être activé si ce
+ paramètre est disponible (tous les systèmes ne supportent pas l'état
+ d'énergie C1E). Sur les systèmes Intel, le paramètre <computeroutput>Intel C State</computeroutput>
+ devrait être désactivé. La désactivation
+ d'autres paramètres de gestion d'énergie peut aussi améliorer les
+ performances. Toutefois, vous devez toujours faire un bilan performance
+ consommation d'énergie.</para>
+ </sect2>
+
+ <sect2 id="ts_gui-2d-grayed-out">
+ <title>GUI&#xA0;: l'option d'accélération graphique est grisée</title>
+
+ <para>Pour utiliser l'accélération graphique 2D dans VirtualBox, la carte
+ graphique de votre hôte devrait supporter certaines extensions d'OpenGL.
+ Au démarrage, VirtualBox vérifie ces extensions et, si le test échoue, cette
+ option est grisée silencieusement.</para>
+
+ <para>Pour connaître la raison pour laquelle il a échoué, vous pouvez exécuter
+ à la main la commande suivante&#xA0;:</para>
+
+ <screen>VBoxTestOGL --log "log_file_name" --test 2D</screen>
+
+ <para>Elle listera les extensions OpenGL nécessaires une par une et elle
+ vous montrera celles où le test a échoué. Cela signifie en général que
+ vous exécutez un pilote OpenGL obsolète ou mal configuré sur votre hôte.
+ Cela peut aussi signifier que le chipset graphique manque d'une fonctionnalité
+ requise.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Invités Windows</title>
+
+ <sect2>
+ <title>Écrans bleus Windows après avoir changé la configuration d'une VM</title>
+
+ <para>La modification de certains paramètres d'une machine virtuelle peut
+ faire échouer des invités Windows au démarrage, avec un écran bleu. Cela
+ peut se produire si vous changez les paramètres d'une VM après avoir installé
+ Windows ou si vous copiez une image de disque avec un Windows installé
+ sur une VM nouvellement créée dont les paramètres diffèrent de la machine
+ d'origine.</para>
+
+ <para>Cela s'applique en particulier aux paramètres suivants&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Vous ne devriez jamais modifier les paramètres ACPI et APIC
+ E/S après avoir installé Windows. Selon la présence de ces fonctions
+ matérielles, le programme d'installation de Windows choisit des
+ versions spéciales du noyau et des pilotes de périphérique et il
+ n'arrivera pas à démarrer si on supprime ces fonctionnalités. (Leur
+ activation pour une VM Windows installé sans elles ne présente
+ aucun risque. Par contre, Windows n'utilisera pas ces fonctions dans
+ ce cas.)</para>
+ </listitem>
+
+ <listitem>
+ <para>La modification des contrôleurs de stockage aboutira à des
+ échecs au démarrage. Cela pourrait aussi s'appliquer si vous copiez
+ une image de disque d'une ancienne version de VirtualBox sur une
+ machine virtuelle créée avec une version de VirtualBox plus récente&#xA0;;
+ le sous-type de contrôleur IDE est passé de PIIX3 à PIIX4 avec
+ VirtualBox 2.2. Assurez-vous que ces paramètres sont identiques.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Écran bleu sur Windows 0x101 si SMP est activé (IPI timeout)</title>
+
+ <para>Si une VM est configurée pour avoir plus d'un processeur (multiprocesseurs
+ symmétriques, SMP), certaines configurations d'invités Windows plantent avec
+ un message d'erreur 0x101 indiquant une interruption du timeout de
+ l'inter-processeur (IPIs, Interprocessor Interrupts). Ces interruptions
+ synchronisent la gestion de mémoire entre les processeurs.</para>
+
+ <para>Selon Microsoft, cela vient d'une condition concurrentielle (avec conflit)
+ dans Windows. Un correctif existe.<footnote>
+ <para>Voir <ulink
+ url="http://support.microsoft.com/kb/955076">http://support.microsoft.com/kb/955076</ulink>.</para>
+ </footnote> Si cela n'aide pas, merci de réduire le nombre de
+ processeurs virtuels à 1.</para>
+ </sect2>
+
+ <sect2>
+ <title>Échecs d'installation de Windows 2000</title>
+
+ <para>En installant des invités Windows 2000, vous pourriez rencontrer
+ les problèmes suivants&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>L'nstallation redémarre, en général lors de l'enregistrement
+ d'un composant.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'nstallation remplit tout le disque dur par des fichiers journaux
+ vides.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'installation rapporte un échec lors de l'installation de
+ <literal>msgina.dll</literal>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Ces problèmes viennent tous d'un bogue du pilote de disque dur de
+ Windows 2000. Après avoir sollicité une requête du disque dur, il survient
+ un conflit concurrentiel (race condition) dans le code du pilote Windows,
+ qui conduit à une corruption si l'opération se termine trop vite, donc si
+ l'interruption matérielle du contrôleur IDE survient trop tôt. Avec du
+ matériel physique, il existe un délai garanti dans la plupart des systèmes,
+ donc le problème est généralement caché (il devrait être cependant possible
+ de le reproduire aussi sur du matériel physique). Dans un environnement
+ virtuel, l'opération peut se faire immédiatement (surtout sur des systèmes
+ très rapides avec plusieurs CPU) et l'interruption est signalée
+ plus tôt que sur un système physique. La solution consiste à introduire
+ un délai artificiel avant d'envoyer de telles interruptions. Vous pouvez
+ configurer ce délai pour une VM avec la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage setextradata "nom VM" "VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1</screen>
+
+ <para>Ceci définit le délai à une milliseconde. Si cela n'aide pas,
+ passez-le à une valeur entre 1 et 5 millisecondes. Merci de remarquer que
+ cela ralentit les performances du disque. Après l'installation, vous devriez
+ pouvoir supprimer la clé (ou la passer à 0).</para>
+ </sect2>
+
+ <sect2>
+ <title>Comment garder les informations d'un écran bleu des invités Windows</title>
+
+ <para>Quand les invités Windows connaissent un plantage du noyau, ils affichent
+ l'horrible écran bleu. Selon la façon dont est configuré Windows, les
+ informations demeureront à l'écran jusqu'à ce que la machine soit redémarrée
+ ou qu'elle redémarre automatiquement. Pendant l'installation, Windows est
+ généralement configuré pour redémarrer automatiquement. Avec le
+ redémarrage automatique, il n'y a aucune chance d'enregistrer les informations
+ d'un écran bleu, alors qu'elles pourraient être importantes pour déterminer
+ le problème.</para>
+
+ <para>VirtualBox offre une méthode d'arrêt de l'invité quand il veut
+ redémarrer. Pour activer cette fonction, exécutez la commande suivante&#xA0;:</para>
+
+ <para><screen>VBoxManage setextradata "nom VM" "VBoxInternal/PDM/HaltOnReset" 1</screen></para>
+ </sect2>
+
+ <sect2>
+ <title>Pas de réseau dans les invités Windows Vista</title>
+
+ <para>Avec Windows Vista, Microsoft a abandonné le support de la carte
+ AMD PCNet utilisée par VirtualBox comme carte réseau virtuelle par défaut
+ avant la version 1.6.0. Pour les invités Windows Vista, VirtualBox utilise
+ maintenant par défaut une carte Intel E1000.</para>
+
+ <para>Si, pour une raison quelconque, vous voulez toujours utiliser la
+ carte AMD, vous devez télécharger le pilote de PCNet sur le site Internet
+ d'AMD (disponible seulement pour Windows 32 bits). Vous pouvez le transférer
+ dans la machine virtuelle en utilisant un dossier partagé (voir
+ <xref linkend="sharedfolders" />).</para>
+ </sect2>
+
+ <sect2>
+ <title>Les invités Windows peuvent provoquer une forte charge du processeur</title>
+
+ <para>Plusieurs applications en arrière-plan des invités Windows, en
+ particulier les anti-virus, sont connues pour augmenter considérablement la
+ charge du processeur même si l'invité semble être inactif. Nous vous
+ recommandons de désactiver les anti-virus des invités virtualisés si
+ possible.</para>
+ </sect2>
+
+ <sect2>
+ <title>Temps d'accès élevés aux dossiers partagés</title>
+
+ <para>Les performances d'accès aux dossiers partagés depuis un invité
+ Windows pourraient diminuer du fait des délais de résolution du service
+ de domaine des dossiers partagés de VirtualBox. Pour corriger ces délais,
+ ajoutez les entrées suivante au fichier <computeroutput>\windows\system32\drivers\etc\lmhosts</computeroutput>
+ de l'invité Windows&#xA0;:</para>
+
+ <screen>255.255.255.255 VBOXSVR #PRE
+255.255.255.255 VBOXSRV #PRE</screen>
+
+ <para>Après ce changement, il faut redémarrer l'invité.</para>
+ </sect2>
+
+ <sect2>
+ <title>La tablette USB coordonne mal dans les invités Windows 98</title>
+
+ <para>Si une VM Windows 98 est configurée pour utiliser la tablette USB
+ émulée (périphérique de pointage absolu), il se peut que la traduction de
+ la coordination soit incorrecte et que le pointeur soit restreint au quart
+ en haut à gauche de l'écran de l'invité.</para>
+
+ <para>Les pilotes HID (Human Interface Device) USB de Windows 98 sont très
+ vieux et ils ne gèrent pas les tablettes de la même manière que les systèmes
+ d'exploitation récents (Windows 2000 et supérieur, Mac OS X, Solaris). Pour
+ contourner le problème, exécutez la commande suivante&#xA0;:
+ </para>
+
+ <para><screen>VBoxManage setextradata "nom VM" "VBoxInternal/USB/HidMouse/0/Config/CoordShift" 0</screen></para>
+
+ <para>Pour restaurer le comportement par défaut, supprimez la clé ou
+ réglez sa valeur à 1.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Les invités Windows sont retirés du domaine Active Directory après
+ la restauration d'un instantané</title>
+
+ <para>Si un invité Windows est membre d'un domaine Active Directory et
+ que vous utilisez la fonction des instantanés de VirtualBox, il pourrait
+ se produire des pertes de cet état après la restauration d'un ancien
+ instantané.
+ </para>
+
+ <para>Ceci vient du changement automatique de mot de passe de la machine opéré
+ régulièrement par Windows pour des raisons de sécurité. Vous pouvez
+ désactiver cette fonction en suivant les instructions de <ulink
+ url="http://support.microsoft.com/kb/154501">http://support.microsoft.com/kb/154501</ulink>
+ cet article de Microsoft.
+ </para>
+ </sect2>
+
+ <sect2 id="ts_d3d8-d3d9-restore">
+ <title>Restauration de d3d8.dll et de d3d9.dll</title>
+
+ <para>Les suppléments invité de VirtualBox pour Windows et inférieurs à
+ la 4.1.8 ne sauvegardaient pas les fichiers système d'origine d3d8.dll et
+ d3d9.dll lors de l'installation du support expérimental de Direct3D. Ce
+ processus remplace ces deux fichiers système par des fichiers des suppléments
+ invité de VirtualBox gérables correctement par les appels de Direct3D. Si
+ ce problème a été corrigé avec VirtualBox 4.1.8, il n'y a aucun moyen de
+ faire réparer ces fichiers par l'installeur des suppléments invité.</para>
+
+ <para>La corruption de ces fichiers n'a pas d'implications si l'accélération
+ 3D est activée et si le support de base de Direct3D est installé, à savoir
+ sans WDDM (sur Windows Vista ou supérieur) ou sur les anciens systèmes
+ Windows comme Windows XP. Avec le support Direct3D de base, toutes les
+ applications Direct3D 8.0 et Direct3D 9.0 utiliseront directement les fichiers
+ Direct3D de VirtualBox et fonctionneront ainsi comme prévu.</para>
+
+ <para>Par contre, pour le support WDDM Direct3D, les fichiers d3d8.dll et
+ d3d9.dll inclus d'origine sont nécessaires pour lancer des applications
+ Direct3D 8.0 et Direct3D 9.0. Il résulte de la corruption des fichiers
+ système ci-dessus que ces applications ne fonctionneront plus. Voir
+ ci-dessous pour une guide pas à pas sur la restauration des fichiers
+ systèmes d'origine
+ d3d8.dll et d3d9.dll si l'installeur des suppléments invité de
+ VirtualBox a averti que ces fichiers étaient incorrects ou en cas de
+ problème en exécutant les applications Direct3D.</para>
+
+ <note><para>À partir de Windows 7 le bureau 3D (aka Aero) utilise DirectX 10
+ pour être affiché afin que les fichiers d3d8.dll et d3d9.dll corrompus
+ n'aient aucun effet sur la session en cours.</para></note>
+
+ <para>C'est pourquoi la détection d'une telle corruption de fichier n'est
+ pas considérée comme fatale pour l'installation basique de Direct3D sur
+ tous les invités Windows supportés et pour une installation de WDDM Direct3D
+ sur les invités Windows 7 et supérieur.</para>
+
+ <para>Extraire d3d8 et d3d9.dll du CD d'installation de Windows XP&#xA0;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Téléchargez et installez la dernière version de 7-Zip File Manager
+ <ulink url="http//www.7-zip.org">http//www.7-zip.org</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para>Parcourez le CD d'installation, par exemple E:\i386 (ou AMD64
+ pour la version 64 bits)</para>
+ </listitem>
+
+ <listitem>
+ <para>Localisez le fichier d3d8.dl_ et d3d9.dl_, cliquez deux fois
+ dessus et extrayez d3d8.dll et d3d9.dll</para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez Windows en mode sans échec</para>
+ </listitem>
+
+ <listitem>
+ <para>Copiez d3d8.dll et d3d9.dll extraits dans C:\Windows\system32 and C:\Windows\system32\dllcache</para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Extraction de d3d8 et de d3d9.dll du pack service de Windows XP </para>
+
+ <orderedlist>
+ <listitem>
+ <para>1, 3-6 Identiques au CD d'installation</para>
+ </listitem>
+ <listitem>
+ <para>Utilisez 'Ouvrir avec' pour ouvrir WindowsXP-KB936929-SP3-x86.exe
+ en tant qu'archive et parcourez le répertoire i386.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Extraction de d3d8 et de d3d9.dll du CD d'installation de Vista/Windows7 ou
+ des images du pack Service</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Téléchargez et installez la dernière version de 7-Zip File Manager <ulink
+ url="http//www.7-zip.org">http//www.7-zip.org</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para>Parcourez le CD d'installation, par exemple E:\sources</para>
+ </listitem>
+
+ <listitem>
+ <para>Localisez le fichier install.wim et cliquez deux fois dessus.
+ Après l'ouverture du fichier par 7-Zip, vous verrez un certain nombre
+ de dossiers. Chaque sous-dossier numéroté représente une version
+ différente de Windows (Starter, Home Basic, and ainsi de suite)</para>
+ </listitem>
+
+ <listitem>
+ <para>Après être entré dans les dossiers numérotés adéquats, parcourez
+ le répertoire Windows\System32 (or C:\Windows\SysWOW64 pour la
+ version 64 bits) et localisez d3d8.dll et d3d9.dll puis extrayez</para>
+ </listitem>
+
+ <listitem>
+ <para>Copiez d3d8.dll et d3d9.dll extraits dans C:\Windows\system32 ou
+ C:\Windows\SysWOW64 (les fichiers de system32 devraient aller dans
+ system32, ceux de SysWOW64 dans SysWOW64)</para>
+ </listitem>
+
+ <listitem>
+ <para>Redémarrez</para>
+ </listitem>
+ </orderedlist>
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Invités Linux et X11</title>
+
+ <sect2>
+ <title>Les invités Linux peuvent entraîner une forte charge du processeur</title>
+
+ <para>Certains invités Linux peuvent entraîner une forte charge du processeur
+ même si le système invité semble inactif. Cela peut venir d'une fréquence
+ d'horloge élevée du noyau invité. Certaines distributions Linux, par exemple
+ Fedora, incluent un noyau Linux configuré pour une fréquence d'horloge de
+ <emphasis role="bold"> 1000Hz</emphasis>. Nous vous recommandons de
+ recompiler le noyau invité et de sélectionner une fréquence d'horloge de
+ 100Hz.</para>
+
+ <para>Les noyaux Linux inclus avec Linux Red Hat Enterprise (RHEL) entre
+ la version 4.7 et 5.1 ainsi que les noyaux des distributions Linux associées
+ (par exemple, CentOS et Oracle Linux) supportent un paramètre
+ <emphasis>divider=N</emphasis> du noyau. D'où le fait que de tels noyaux
+ supportent une fréquence d'horloge plus faible sans recompilation. Nous
+ vous suggérons d'ajouter le paramètre <emphasis>divider=10</emphasis> du
+ noyau pour sélectionner une fréquence de l'horloge du noyau invité de
+ 100Hz.</para>
+ </sect2>
+
+ <sect2>
+ <title>Processeurs AMD Barcelona</title>
+
+ <para>La plupart des invités basés sur Linux échoueront avec l'AMD Phenoms ou
+ Barcelona-level Opterons du fait d'un bogue dans le noyau Linux. Activez
+ l'APIC E/S pour contourner le problème (voir <xref
+ linkend="settings-system" />).</para>
+ </sect2>
+
+ <sect2 id="ts_linux-buggy">
+ <title>Versions buguées du noyau Linux Linux 2.6</title>
+
+ <para>Les bogues suivants des noyaux Linux les empêchent de les exécuter
+ correctement dans VirtualBox, ce qui fait planter la VM au démarrage&#xA0;:<itemizedlist>
+ <listitem>
+ <para>La version du noyau Linux 2.6.18 (et certaines versions 2.6.17)
+ ont introduit un conflit de condition (race condition) qui peut
+ provoquer un plantage au démarrage dans VirtualBox. Merci d'utiliser
+ une version du noyau 2.6.19 ou supérieur.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec la virtualisation matérielle et l'APIC E/S activé, les
+ noyaux inférieurs au 2.6.24-rc6 peuvent planter au démarrage avec le
+ message suivant&#xA0;:<screen>Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with
+apic=debug and send a report. Then try booting with the 'noapic' option</screen></para>
+
+ <para>Si vous voyez ce message, soit désactivez la virtualisation
+ matérielle, soit l'APIC E/S (voir <xref
+ linkend="settings-system" />), ou mettez à jour l'invité vers un
+ noyau plus récent.<footnote>
+ <para>Voir <ulink
+ url="http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg30813.html">http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg30813.html</ulink>
+ pour des détails sur le correctif du noyau.</para>
+ </footnote></para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Presse-papier partagé, redimensionnement automatique et bureau transparent
+ dans les invités X11</title>
+
+ <para>Les services du bureau invité dans les invités exécutant le système
+ X11 window (Solaris, Linux et autres) sont fournis par un service invité
+ qui s'appelle <computeroutput>VBoxClient</computeroutput>, qui fonctionne
+ sous l'ID de l'utilisateur qui démarre la session du bureau et qui est
+ démarré automatiquement en utilisant les lignes de commande suivantes
+ <screen>VBoxClient --clipboard
+VBoxClient --display
+VBoxClient --seamless</screen> quand votre session utilisateur X11 est lancée
+si vous utilisez un environnement de bureau courant (Gnome, KDE et autres). Si
+un service du bureau particulier ne fonctionne pas bien, il vaut la peine de
+vérifier si le processus qui devrait le fournir est en fonction.</para>
+
+ <para>Les processus <computeroutput>VBoxClient</computeroutput> créent
+ des fichiers dans le dossier personnel de l'utilisateur avec des noms sous
+ la forme <computeroutput>.vboxclient-*.pid</computeroutput> quand ils
+ fonctionnent, pour empêcher un service donné de se démarrer deux fois. Il
+ peut arriver, à cause d'une mauvaise configuration, que ces fichiers
+ se créent sous la propriété de l'administrateur et ne sont pas effacés
+ quand les services s'arrêtent, ce qui les empêchera de démarrer à l'avenir.
+ Si vous ne pouvez pas démarrer les services, vous pourriez vérifier si
+ ces fichiers existent.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Invités Solaris</title>
+
+ <sect2>
+ <title>Les versions inférieures à Solaris 10 plantent en mode 64 bits</title>
+
+ <para>Les versions de Solaris 10 inférieures ou égales à Solaris 10 8/07 ("S10U4")
+ détectent mal les processeurs Intel récents fabriqués depuis 2007. Ce
+ problème fait planter ou stopper le noyau Solaris 64 bits presqu'immédiatement
+ lors du démarrage, tant dans un environnement virtualisé que physique.
+ </para>
+ <para>
+ La solution recommandée est de mettre à jour vers au moins Solaris 10 5/08
+ ("S10U5"). D'autres solutions consistent à obliger Solaris à toujours
+ démarrer le noyau 32 bits ou à appliquer un correctif au bogue 6574102
+ (tant que Solaris utilise le noyau 32 bits).
+ </para>
+
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Hôte Windows</title>
+
+ <sect2>
+ <title>Problème du serveur VBoxSVC out-of-process COM</title>
+
+ <para>VirtualBox utilise le Component Object Model (COM) de Microsoft pour
+ la communication inter et intra-processus. Cela permet à VirtualBox de
+ partager une configuration commune entre les processus de différentes
+ machines virtuelles et de fournir plusieurs versions de l'interface
+ utilisateur basées sur une architecture commune. Toutes les informations
+ d'état et la configuration globale sont maintenues par le processus
+ <computeroutput>VBoxSVC.exe</computeroutput>, qui est un service COM
+ hors des processus. À chaque fois que le processus de VirtualBox est démarré,
+ il demande un accès au serveur COM et Windows démarre automatiquement le
+ processus. Notez que l'utilisateur final ne devrait jamais le démarrer.</para>
+
+ <para>Quand le dernier processus se déconnecte du serveur COM, il se
+ terminera lui-même après quelques secondes. La configuration de VirtualBox
+ (fichiers XML) est maintenue et appartient au serveur COM et les fichiers
+ sont verrouillés à chaque fois que le serveur s'exécute.</para>
+
+ <para>Dans certains cas - comme quand une machine virtuelle se termine
+ de manière imprévue -, le serveur COM ne remarquera pas que le client est
+ déconnecté et il restera actif longtemps (10 minutes voire plus), gardant
+ verrouillés les fichiers de configuration. Dans de rares cas, le serveur
+ COM pourrait connaître une erreur interne et, en conséquence, les autres
+ processus pourraient ne pas pouvoir l'initialiser. Dans ces situations, il
+ est recommandé d'utiliser le gestionnaire des tâches de Windows pour tuer
+ le processus <computeroutput>VBoxSVC.exe</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Changements de CD/DVD non reconnus</title>
+
+ <para>Si vous avez affecté un lecteur CD/DVD physique à un invité et si
+ l'invité ne remarque pas les changements de médias, assurez-vous que la
+ fonction de notification de changement de média (MCN) de Windows n'est pas
+ désactivée. Elle est représentée par la clé suivante dans le registre
+ Windows&#xA0;::<screen><literal>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdrom\Autorun</literal></screen>
+ Il se peut que certaines applications désactivent cette clé contre l'avis de
+ Microsoft. Si elle est définie à 0, passez-la à 1 et redémarrez votre système.
+ VirtualBox s'appuie sur la notification de Windows de changement de média.</para>
+ </sect2>
+
+ <sect2>
+ <title>Réponse lente en utilisant le client RDP de Microsoft</title>
+
+ <para>Si vous vous connectez à une machine virtuelle avec le client RDP de
+ Microsoft (appelé Remote Desktop Connection), il peut y avoir d'importants
+ délais entre l'entrée (le déplacement de la souris dans un menu est la situation la
+ plus évidente) et la sortie. Ceci car le client RDP récupère l'entrée pendant
+ un certain temps avant de l'envoyer au serveur RDP.</para>
+
+ <para>Vous pouvez diminuer l'intervalle en définissant une clé du registre
+ Windows sur des valeurs plus petites que celles par défaut, 100. La clé
+ n'existe pas au départ, elle doit être de type DWORD. Son unité de valeur est en millisecondes. Les valeurs autour
+ de 20 conviennent aux connexions avec faible bande passante entre le client
+ et le serveur RDP. Des valeurs autour de 4 peuvent être utilisées pour une
+ connexion Internet à 4 gigaoctets. En général, les valeurs inférieures à
+ 10 donnent une performance très réduite par rapport aux périphériques
+ d'entrée locaux et à l'écran de l'hôte sur lequel fonctionne la machine
+ virtuelle.</para>
+
+ <para>Selon que le paramètre à modifier est pour un utilisateur individuel
+ ou pour le système, vous pouvez définir soit</para>
+
+ <screen>HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
+
+ <para>soit</para>
+
+ <screen>HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
+
+ <para>correctement.</para>
+ </sect2>
+
+ <sect2>
+ <title>Lancer un initiateur et une cible iSCSI sur un seul système</title>
+
+ <para>Des verrouillages peuvent se produire sur un hôte Windows quand on essaie
+ d'accéder à une cible iSCSI en fonction dans une machine virtuelle invitée
+ avec un initiateur iSCSI (comme Microsoft iSCSI Initiator) en fonction
+ sur l'hôte. Cela vient d'un défaut dans le composant du gestionnaire de cache
+ de Windows et cela donne une réponse lente du système hôte, de plusieurs
+ minutes, suivies d'un message d'erreur "Delayed Write Failed" (délai
+ d'écriture différé) dans la barre système ou dans une fenêtre de message
+ distincte. L'invité est bloqué pendant ce temps et il peut afficher des
+ messages d'erreur ou devenir instable.</para>
+
+ <para>La définition d'une variable d'environnement
+ <computeroutput>VBOX_DISABLE_HOST_DISK_CACHE</computeroutput> à 1 activera
+ un contournement de ce problème jusqu'à ce que Microsoft le traite.
+ Par exemple, ouvrez une fenêtre d'invite de commande et démarrez VirtualBox
+ comme ceci&#xA0;:</para>
+
+ <screen>set VBOX_DISABLE_HOST_DISK_CACHE=1
+VirtualBox</screen>
+
+ <para>Si cela réduif les performances du disque invité (surtout en écriture),
+ cela ne concerne pas les performances d'autres applications en fonction
+ sur l'hôte.</para>
+ </sect2>
+
+ <sect2>
+ <title>Adaptateurs réseaux bridgés absents</title>
+
+ <para>Si aucun adaptateur bridgé n'apparaît dans la section "Réseau" des
+ paramètres de la VM, cela signifie généralement que le pilote du réseau
+ bridgé n'a pas été installé correctement sur votre hôte. Cela pourrait venir
+ des raisons suivantes&#xA0;: <itemizedlist>
+ <listitem>
+ <para>Le nombre maximum de filtres autorisés a été atteint sur l'hôte.
+ Dans ce cas, le journal MSI indiquera le code d'erreur
+ <computeroutput>0x8004a029</computeroutput> retourné à l'installation
+ du composant réseau NetFlt&#xA0;:<screen>VBoxNetCfgWinInstallComponent: Install failed, hr (0x8004a029)</screen></para>
+
+ <para>Vous pouvez essayer d'augmenter le nombre de filtre maximum
+ dans le registre Windows avec la clé suivante&#xA0;:<screen>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\MaxNumFilters</screen>Le nombre maximum autorisé est de 14. Après le redémarrage, essayez
+ de réinstaller VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le cache INF est corrompu. Dans ce cas, le journal d'installation
+ (<computeroutput>%windir%\inf\setupapi.log</computeroutput> sur XP
+ ou <computeroutput>%windir%\inf\setupapi.dev.log</computeroutput>
+ sur Vista ou supérieur) indiquera normalement un échec pour
+ trouver le paquet du pilote adapté aux composants
+ <computeroutput>sun_VBoxNetFlt</computeroutput> ou
+ <computeroutput>sun_VBoxNetFltmp</computeroutput>. La solution est
+ alors de désinstaller VirtualBox, de supprimer le cache INF
+ (<computeroutput>%windir%\inf\INFCACHE.1</computeroutput>), de
+ redémarrer et d'essayer de réinstaller VirtualBox</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>L'adaptateur réseau Host-only ne peut pas être créé</title>
+
+ <para>Si l'adaptateur host-only ne peut pas être créé (soit avec le gestionnaire
+ soit avec VBoxManage), le cache INF est probablement corrompu. Dans ce cas,
+ le journal d'installation (<computeroutput>%windir%\inf\setupapi.log</computeroutput>
+ sur XP ou <computeroutput>%windir%\inf\setupapi.dev.log</computeroutput>
+ sur Vista ou supérieur) indiquera généralement un échec pour trouver un
+ paquet de pilote adapté au composant <computeroutput>sun_VBoxNetAdp</computeroutput>.
+ De nouveau, comme pour le problème du réseau bridgé décrit ci-dessus, la
+ solution consiste à désinstaller VirtualBox, à supprimer le cache INF
+ (<computeroutput>%windir%\inf\INFCACHE.1</computeroutput>), à redémarrer
+ et à essayer de réinstaller VirtualBox.</para>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Hôtes Linux</title>
+
+ <sect2 id="ts_linux-kernelmodule-fails-to-load">
+ <title>Le module du noyau Linux refuse de se charger</title>
+
+ <para>Si le module du noyau Linux
+ (<computeroutput>vboxdrv</computeroutput>) refuse de se charger, c'est-à-dire
+ que vous avez un message "Error inserting vboxdrv: Invalid argument",
+ vérifiez (en tant qu'administrateur) la sortie de la commande
+ <computeroutput>dmesg</computeroutput> pour trouver la raison de l'échec
+ du chargement. Probablement, le noyau n'est pas d'accord avec la version
+ de gcc utilisée pour compiler le module. Assurez-vous d'utiliser le même
+ compilateur que celui utilisé pour construire le noyau.</para>
+ </sect2>
+
+ <sect2>
+ <title>Lecteur CD/DVD de l'hôte Linux non trouvé</title>
+
+ <para>Si vous avez configuré une machine virtuelle pour utiliser le
+ lecteur CD/DVD de l'hôte, et s'il semble ne pas fonctionner, assurez-vous
+ que l'utilisateur actuel a le droit d'accéder au fichier de périphérique
+ Linux correspondant (<computeroutput>/dev/hdc</computeroutput> ou
+ <computeroutput>/dev/scd0</computeroutput> ou
+ <computeroutput>/dev/cdrom</computeroutput> ou identique). Sur la plupart
+ des distributions, l'utilisateur doit être ajouté à un groupe correspondant
+ (qui s'appelle en général <computeroutput>cdrom</computeroutput> ou
+ <computeroutput>cdrw</computeroutput>).</para>
+ </sect2>
+
+ <sect2>
+ <title>Lecteur CD/DVD non trouvé sur l'hôte Linux (distributions anciennes)</title>
+
+ <para>Sur les anciennes distributions Linux, si votre lecteur CD/DVD
+ a un autre nom, il se peut que VirtualBox soit incapable de le trouver.
+ Sur les hôtes Linux anciens, VirtualBox suit les étapes suivantes pour
+ trouver vos lecteurs CD/DVD&#xA0;:</para>
+
+ <para><orderedlist>
+ <listitem>
+ <para>VirtualBox examine si la variable d'environnement
+ <computeroutput>VBOX_CDROM</computeroutput> est définie (voir ci-dessous).
+ Si tel est le cas, VirtualBox ne fait pas les vérifications suivantes.</para>
+ </listitem>
+
+ <listitem>
+ <para>VirtualBox teste si
+ <computeroutput>/dev/cdrom</computeroutput> fonctionne.</para>
+ </listitem>
+
+ <listitem>
+ <para>En plus, VirtualBox vérifie si des lecteurs CD/DVD sont montés
+ en vérifiant <computeroutput>/etc/mtab</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>En outre, VirtualBox vérifie si une des entrées de
+ <computeroutput>/etc/fstab</computeroutput> pointe vers un lecteur
+ CD/DVD.</para>
+ </listitem>
+ </orderedlist></para>
+
+ <para>En d'autres termes, vous pouvez essayer de définir VBOX_CDROM pour
+ contenir vos lecteurs CD/DVD, séparés par des deux-points, par exemple
+ comme suit&#xA0;:</para>
+
+ <para><screen>export VBOX_CDROM='/dev/cdrom0:/dev/cdrom1'</screen>Sur les
+ distributions Linux modernes, VirtualBox utilise la couche d'abstraction
+ matérielle (hal) pour localiser le matériel CD et DVD.</para>
+ </sect2>
+
+ <sect2>
+ <title>Disquette non trouvée sur un hôte Linux</title>
+
+ <para>Les instructions précédentes (pour les lecteurs CD et DVD) s'appliquent
+ aussi aux disquettes, sauf que sur les distributions anciennes,
+ VirtualBox teste par défaut les périphériques <computeroutput>/dev/fd*</computeroutput>
+ ce que vous pouvez changer avec la variable d'environnement
+ <computeroutput>VBOX_FLOPPY</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Messages d'erreur étranges de l'IDE invité lors de l'écriture sur un CD/DVD</title>
+
+ <para>Si le support expérimental d'écriture sur un CD/DVD est activé avec
+ une mauvaise configuration de l'hôte et de l'invité VirtualBox, il est
+ possible que vos efforts pour accéder à l'écriture sur CD/DVD échouent et
+ n'aboutissent qu'à des messages d'erreur du noyau invité (pour les invités
+ Linux) ou à des messages d'erreur de l'application (pour les invités
+ Windows). VirtualBox effectue les vérifications de cohérence habituelles
+ quand une VM est allumée (en particulier, il quitte avec un message d'erreur
+ si l'utilisateur qui démarre la VM ne peut pas écrire sur le périphérique
+ du graveur CD/DVD), mais il ne peut pas détecter toutes les mauvaises
+ configurations. La configuration de l'OS hôte et de l'invité requise n'est
+ pas spécifique à VirtualBox, mais quelques problèmes fréquents sont listés
+ ici, ils se sont produits en lien avec VirtualBox.</para>
+
+ <para>Vous devez faire très attention à utiliser le bon périphérique. Le
+ nom du fichier du lecteur CD/DVD de l'hôte configuré (dans la plupart des
+ cas, <literal>/dev/cdrom</literal>) doit pointer vers le périphérique
+ qui permet d'écrire sur l'unité CD/DVD. Pour les unités du graveur CD/DVD,
+ connecté à un contrôleur SCSI ou à un contrôleur IDE qui fait interface
+ avec le sous-système SCSI de Linux (ce qui est classique pour certains
+ contrôleurs SATA), il doit renvoyer au n&#x153;ud de périphérique SCSI
+ (comme <literal>/dev/scd0</literal>). Même pour les unités de graveurs de CD/DVD en
+ IDE, il doit renvoyer au n&#x153;ud du lecteur CD-ROM adéquat (comme
+ <literal>/dev/scd0</literal>) si le module du noyau
+ <literal>ide-scsi</literal> est chargé. Ce module est requis pour le support
+ du graveur CD/DVD avec tous les noyaux Linux 2.4 et avec certains noyaux
+ 2.6 des débuts. De nombreuses distributions Linux chargent ce module à
+ chaque fois que le graveur CD/DVD est détecté dans le système, même si
+ le noyau supporterait des graveurs CD/DVD sans le module. VirtualBox supporte
+ l'utilisation des fichiers de périphérique IDE (comme
+ <literal>/dev/hdc</literal>), pourvu que le noyau le supporte et que le
+ module <literal>ide-scsi</literal> ne soit pas chargé.</para>
+
+ <para>Des règles similaires (sauf que dans l'invité, le graveur CD/DVD
+ est toujours un périphérique IDE) s'appliquent à la configuration de
+ l'invité. Ce paramétrage étant très classique, il est probable que la
+ configuration par défaut de l'invité fonctionne comme prévu.</para>
+ </sect2>
+
+ <sect2>
+ <title>Problème de l'IPC VBoxSVC</title>
+
+ <para>Sur Linux, VirtualBox utilise une version personnalisée de XPCOM
+ de Mozilla (modèle d'objet du composant multi-plateformes) pour la
+ communication inter et intra processus (IPC). Le processus
+ <computeroutput>VBoxSVC</computeroutput> sert de hub de communication
+ entre plusieurs processus de VirtualBox et il maintient la configuration
+ globale, c'est-à-dire la base de données XML. Au démarrage d'un composant
+ de VirtualBox, les processus <computeroutput>VBoxSVC</computeroutput> et
+ <computeroutput>VirtualBoxXPCOMIPCD</computeroutput> sont lancés automatiquement.
+ Ils ne sont accessibles qu'à partir du compte utilisateur qui l'a
+ lancé. <computeroutput>VBoxSVC</computeroutput> possède la base de données
+ de la configuration de VirtualBox qui se trouve normalement dans
+ <computeroutput>~/.config/VirtualBox</computeroutput>, ou dans le répertoire
+ de configuration adéquat de votre système d'exploitation. Tant qu'il est en fonction,
+ les fichiers de configuration sont verrouillés. La communication entre les
+ composants de VirtualBox et <computeroutput>VBoxSVC</computeroutput> est
+ faite via un socket de domaine local qui se trouve dans
+ <computeroutput>/tmp/.vbox-&lt;username&gt;-ipc</computeroutput>. En cas
+ de problèmes de communication (par exemple si une application VirtualBox
+ ne peut pas communiquer avec <computeroutput>VBoxSVC</computeroutput>),
+ clôturez les démons et supprimez le répertoire du socket du domaine
+ local.</para>
+ </sect2>
+
+ <sect2 id="ts_usb-linux">
+ <title>L'USB ne fonctionne pas</title>
+
+ <para>Si l'USB ne fonctionne pas sur votre hôte Linux, assurez-vous que
+ l'utilisateur actuel fait partie du groupe
+ <computeroutput>vboxusers</computeroutput>. Sur les hôtes anciens, vous
+ devez vous assurer que l'utilisateur a le droit d'accéder au système de
+ fichiers USB (<computeroutput>usbfs</computeroutput>), sur lequel s'appuie
+ VirtualBox pour récupérer des informations valides sur les périphériques
+ USB de votre hôte. Le reste de cette section ne s'applique qu'à ces anciens
+ systèmes.</para>
+
+ <para>Comme <computeroutput>usbfs</computeroutput> est un système de fichiers
+ virtuel, un <computeroutput>chmod</computeroutput> sur
+ <computeroutput>/proc/bus/usb</computeroutput> n'a aucun effet. Les droits
+ sur <computeroutput>usbfs</computeroutput> <emphasis>ne peuvent donc être
+ changés que</emphasis> si vous éditez le fichier
+ <computeroutput>/etc/fstab</computeroutput>.</para>
+
+ <para>Par exemple, la plupart des distributions Linux comportent un groupe
+ utilisateur qui s'appelle <computeroutput>usb</computeroutput> ou similaire,
+ dont l'utilisateur actuel doit faire partie. Pour donner à tous les
+ utilisateurs de ce groupe un accès à usbfs, assurez-vous que la ligne
+ suivante est présente&#xA0;:<screen># 85 is the USB group
+none /proc/bus/usb usbfs devgid=85,devmode=664 0 0</screen>Remplacez
+ 85 par l'ID du groupe correspondant à votre système (cherchez dans
+ <computeroutput>/etc/group</computeroutput> "usb" ou proche). Sinon, si
+ vous vous moquez des considérations de sécurité, donnez à tous les
+ utilisateurs l'accès à l'USB en changeant "664" en "666".</para>
+
+ <para>Les distributions sont très créatives sur le script qui monte le
+ système de fichiers <computeroutput>usbfs</computeroutput>. Parfois,
+ la commande est cachée à des endroits improbables. Pour SuSE 10.0, la
+ commande de montage fait partie du fichier de configuration udev
+ <computeroutput>/etc/udev/rules.d/50-udev.rules</computeroutput>. Comme
+ cette distribution n'a aucun groupe d'utilisateurs appelé
+ <computeroutput>usb</computeroutput>, vous pouvez utiliser par exemple le
+ groupe <computeroutput>vboxusers</computeroutput> qui a été créé par
+ l'installeur de VirtualBox. Les numéros des groupes étant affectés de manière
+ dynamique, l'exemple suivant utilise 85 comme modèle. Modifiez la ligne
+ contenant (on a inséré un retour à la ligne pour améliorer la lisibilité)
+ <screen>DEVPATH="/module/usbcore", ACTION=="add",
+ RUN+="/bin/mount -t usbfs usbfs /proc/bus/usb"</screen> et ajoutez les
+ options nécessaires (assurez-vous que tout est sur une seule ligne)&#xA0;:
+ <screen>DEVPATH="/module/usbcore", ACTION=="add",
+ RUN+="/bin/mount -t usbfs usbfs /proc/bus/usb -o devgid=85,devmode=664"</screen></para>
+
+ <para>Debian Etch a sa commande de montage dans
+ <computeroutput>/etc/init.d/mountkernfs.sh</computeroutput>. Cette
+ distribution n'ayant pas de groupe <computeroutput>usb</computeroutput>,
+ la solution la plus simple est d'autoriser tous les membres du
+ groupe <computeroutput>vboxusers</computeroutput> à accéder au sous-système
+ USB. Modifiez la ligne <screen>domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev</screen>
+ pour qu'elle contienne <screen>domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=85,devmode=664</screen>
+ Comme d'habitude, remplacez 85 par le vrai numéro du groupe qui devrait
+ avoir accès aux périphériques USB.</para>
+
+ <para>D'autres distributions font des opérations identiques dans des scripts
+ stockés dans le répertoire <computeroutput>/etc/init.d</computeroutput>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Noyaux PAX/grsec</title>
+
+ <para>Les noyaux Linux incluant le correctif grsec (voir <literal><ulink
+ url="http://www.grsecurity.net/">http://www.grsecurity.net/</ulink></literal>)
+ et ses dérivés doivent désactiver PAX_MPROTECT pour que les binaires VBox
+ puissent démarrer une VM. Ceci car VBox doit créer un code exécutable en
+ mémoire anonyme.</para>
+ </sect2>
+
+ <sect2>
+ <title>pool vmalloc du noyau Linux dépassé</title>
+
+ <para>Quand on exécute un grand nombre de VMs avec beaucoup de RAM sur
+ un système Linux (disons 20 VMs de 1Go de RAM chacune), les VMs supplémentaires
+ pourraient ne pas réussir à démarrer avec une erreur du noyau disant que
+ le pool vmalloc est dépassé et que vous devriez l'agrandir. Le message
+ d'erreur vous dit aussi de spécifier
+ <computeroutput>vmalloc=256MB</computeroutput> dans votre liste des
+ paramètres du noyau. Si l'ajout de ce paramètre à votre configuration de
+ GRUB ou de LILO empêche le noyau de démarrer (avec un message d'erreur
+ bizarre tel que "failed to mount the root partition"), vous avez probablement
+ un conflit de mémoire entre votre noyau et la RAM disque initiale. Vous
+ pouvez résoudre cela en ajoutant le paramètre suivant à votre configuration
+ de GRUB&#xA0;:</para>
+
+ <screen>uppermem 524288</screen>
+ </sect2>
+ </sect1>
+
+ <sect1>
+ <title>Hôtes Solaris</title>
+
+ <sect2>
+ <title>Ne peut pas démarrer de VM, pas assez de mémoire contiguë</title>
+
+ <para>Le système de fichiers ZFS est connu pour utiliser presque toute la
+ RAM disponible comme du cache si les paramètres système par défaut ne sont
+ pas modifiés. Cela peut conduire à une énorme fragmentation de la mémoire
+ de l'hôte, empêchant les VMS de VirtualBox de démarrer. Nous vous recommandons
+ de limiter la limite du cache ZFS en ajoutant une ligne<screen>set zfs:zfs_arc_max = xxxx</screen>
+ à /etc/system où <computeroutput>xxxx</computeroutput> octets est la quantité
+ de mémoire utilisable pour le cache ZFS.</para>
+ </sect2>
+
+ <sect2>
+ <title>La VM s'arrête avec des erreurs de dépassement de mémoire sur les hôtes
+ Solaris 10</title>
+
+ <para>Les hôtes Solaris 10 32 bits (bogue 1225025) exigent un espace d'échange
+ supérieur ou égal à la taille de la mémoire physique de l'hôte. Par exemple,
+ 8 Go de mémoire physique exigerait au moins 8 Go d'échange. Vous pouvez
+ configurer cela pendant l'installation de Solaris 10 en choisissant une
+ 'installation personnalisée' et en modifiant les partitions par défaut.</para>
+
+ <note>
+ <para>Cette restriction ne s'applique qu'aux hôtes Solaris 32 bits, les
+ hôtes 64 bits ne sont pas concernés&#xA0;!</para>
+ </note>
+
+ <para>Pour les installations Solaris 10 existantes, il faut monter une image
+ d'échange supplémentaire et l'utiliser comme échange. D'où le fait que si
+ vous avez un échange de 1 Go et 8 Go de mémoire physique, vous devez
+ ajouter un échange supplémentaire de 7 Go. Vous pouvez faire cela comme
+ suit&#xA0;:</para>
+
+ <para>Pour ZFS (en tant qu'administrateur)&#xA0;:</para>
+
+ <para><screen>zfs create -V 8gb /_&lt;ZFS volume&gt;_/swap
+swap -a /dev/zvol/dsk/_&lt;ZFS volume&gt;_/swap</screen></para>
+
+ <para>Pour monter le système de fichiers au démarrage, ajoutez la ligne
+ suivante à /etc/vfstab&#xA0;:</para>
+
+ <screen>/dev/zvol/dsk/_&lt;ZFS volume&gt;_/swap - - swap - no -</screen>
+
+ <para>Sinon, vous pouvez agrandir l'espace existant en utilisant&#xA0;:</para>
+
+ <screen>zfs set volsize=8G rpool/swap</screen>
+
+ <para>Et redémarrer le système pour que les changements prennent effet.</para>
+
+ <para>Pour UFS (en tant qu'administrateur)&#xA0;:</para>
+
+ <screen>mkfile 7g /path/to/swapfile.img
+swap -a /path/to/swapfile.img</screen>
+
+ <para>Pour le monter au redémarrage, ajoutez la ligne suivante à
+ /etc/vfstab&#xA0;:</para>
+
+ <screen>/path/to/swap.img - - swap - no -</screen>
+ </sect2>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_VBoxManage.xml b/doc/manual/fr_FR/user_VBoxManage.xml
new file mode 100644
index 00000000..1c4177a0
--- /dev/null
+++ b/doc/manual/fr_FR/user_VBoxManage.xml
@@ -0,0 +1,4363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="vboxmanage">
+ <title>VBoxManage</title>
+
+ <sect1>
+ <title>Introduction</title>
+
+ <para>Comme brièvement indiqué au <xref linkend="frontends" />, VBoxManage
+ est l'interface en ligne de commande de VirtualBox. Avec elle, vous pouvez
+ contrôler complètement VirtualBox depuis la ligne de commandes
+ de votre système d'exploitation hôte.
+ VBoxManage supporte toutes les fonctionnalités auxquelles vous donne accès
+ l'interface graphique, mais il supporte bien plus que ça. Il ouvre vraiment
+ toutes les fonctions du moteur de virtualisation, même celles auxquelles on
+ ne peut pas (encore) accéder en mode graphique.</para>
+
+ <para>Vous devrez utiliser la ligne de commande si vous voulez</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para>utiliser une autre interface que celle graphique (par exemple,
+ VBoxSDL ou le serveur VBoxHeadless)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>contrôler certains paramètres de configuration plus avancés et
+ expérimentaux d'une VM.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Il faut avoir en tête deux choses en utilisant
+ <computeroutput>VBoxManage</computeroutput>&#xA0;: D'abord,
+ <computeroutput>VBoxManage</computeroutput> doit toujours être utilisé
+ avec des "sous-commandes" spécifiques telles que "list" ou "createvm" ou
+ "startvm". Toutes les sous-commandes supportées par
+ <computeroutput>VBoxManage</computeroutput> sont décrites en détail à la
+ <xref linkend="vboxmanage" />.</para>
+
+ <para>Ensuite, la plupart de ces sous-commandes exigent que vous spécifiez
+ une machine virtuelle en particulier après la sous-commande. Il y a deux façons
+ de faire cela&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Vous pouvez spécifier le nom de la VM comme il s'affiche dans
+ l'interface graphique de VirtualBox. Remarquez que si ce nom contient des
+ espaces, vous devez l'entourer de guillemets (comme cela est toujours
+ le cas avec les arguments d'une ligne de commande contenant des espaces).</para>
+
+ <para>Par exemple&#xA0;:<screen>VBoxManage startvm "Windows XP"</screen></para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez spécifier l'UUID, qui est l'identifiant interne unique
+ utilisé par VirtualBox pour parler de la machine virtuelle. En supposant que
+ la VM précitée nommée "Windows XP" porte l'UUID affiché ci-dessous,
+ la commande suivante a le même effet que celle précédente&#xA0;:<screen>VBoxManage startvm 670e746d-abea-4ba6-ad02-2a3b043810a5</screen></para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Vous pouvez taper <computeroutput>VBoxManage list vms</computeroutput>
+ pour voir toutes les VMs enregistrées&#xA0;; listées avec leurs paramètres,
+ y compris leurs noms respectifs et leurs UUIDs.</para>
+
+ <para>Des exemples classiques de la façon de contrôler VirtualBox depuis la
+ ligne de commande apparaissent ci-dessous&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Pour créer une nouvelle machine virtuelle en ligne de commandes
+ et l'enregistrer immédiatement avec VirtualBox, utilisez
+ <computeroutput>VBoxManage createvm</computeroutput> avec l'option
+ <computeroutput>--register</computeroutput>,<footnote>
+ <para>Pour des détails, voir <xref
+ linkend="vboxmanage-createvm" />.</para>
+ </footnote> comme ceci&#xA0;:</para>
+
+ <screen>$ VBoxManage createvm --name "SUSE 10.2" --register
+VirtualBox Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2005-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+Virtual machine 'SUSE 10.2' is created.
+UUID: c89fc351-8ec6-4f02-a048-57f4d25288e5
+Settings file: '/home/nomutilisateur/.config/VirtualBox/Machines/SUSE 10.2/SUSE 10.2.xml'</screen>
+
+ <para>Comme vous pouvez le voir dans la sortie ci-dessus, une nouvelle
+ machine virtuelle a été créée avec le nouvel UUID et un nouveau fichier
+ XML de paramètres.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour afficher la configuration d'une VM en particulier, utilisez
+ <computeroutput>VBoxManage showvminfo</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-showvminfo" /> pour des détails et un exemple.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour modifier les paramètres pendant qu'une VM est éteinte, utilisez
+ <computeroutput>VBoxManage modifyvm</computeroutput>, comme ceci&#xA0;:
+ <screen>VBoxManage modifyvm "Windows XP" --memory 512</screen></para>
+
+ <para>Pour des détails,voir <xref linkend="vboxmanage-modifyvm" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour modifier la configuration du stockage (par exemple pour ajouter un
+ contrôleur de stockage et ensuite un disque virtuel), utilisez <computeroutput>VBoxManage
+ storagectl</computeroutput> et <computeroutput>VBoxManage
+ storageattach</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-storagectl" /> et <xref
+ linkend="vboxmanage-storageattach" /> pour les détails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour contrôler le comportement de la VM, utilisez&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Pour démarrer une VM éteinte, utilisez
+ <computeroutput>VBoxManage startvm</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-startvm" /> pour les détails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour mettre en pause ou sauvegarder une VM en fonction, ou
+ pour modifier certains de ses paramètres, utilisez
+ <computeroutput>VBoxManage
+ controlvm</computeroutput>&#xA0;; voir <xref
+ linkend="vboxmanage-controlvm" /> pour les détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Aperçu des commandes</title>
+
+ <para>Quand vous lancez VBoxManage sans paramètres ou si vous entrez une ligne de
+ commande invalide, le diagramme de syntaxe ci-dessous s'affichera. Remarquez
+ que la sortie sera légèrement différente selon la plateforme hôte&#xA0;;
+ en cas de doute, vérifiez la sortie de <computeroutput>VBoxManage</computeroutput>
+ pour voir les commandes disponibles sur votre hôte en particulier.</para>
+
+ <xi:include href="../user_VBoxManage_CommandsOverview.xml" xpointer="xpointer(/sect1/*)"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <para>À chaque fois que vous appelez VBoxManage, une seule commande peut être
+ exécutée. Toutefois, une commande peut supporter plusieurs sous-commandes
+ que vous pouvez appeler en une seule fois. Les sections suivantes fournissent
+ des informations de référence détaillées sur les différentes commandes.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-general">
+ <title>Options générales</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>--version</computeroutput>&#xA0;: affiche la
+ version de cet outil et quitte.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--nologo</computeroutput>&#xA0;: supprime l'affichage
+ des informations de logo (utile pour les scripts)</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--settingspw</computeroutput>&#xA0;: spécifie
+ un mot de passe pour les paramètres</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--settingspwfile</computeroutput>&#xA0;: spécifie
+ un fichier contenant le mot de passe des paramètres</para>
+ </listitem>
+ </itemizedlist>
+ Le mot de passe des paramètres est utilisé pour certains paramètres ayant
+ besoin d'être stockés et chiffrés pour des raisons de sécurité. Pour le moment,
+ le seul paramètre chiffré est l'initiateur secret iSCSI (voir
+ <xref linkend="vboxmanage-storageattach" /> pour les détails). Tant
+ qu'aucun mot de passe des paramètres n'a été spécifié, ces informations
+ sont stockées en <emphasis role="bold">texte brut</emphasis>. Après avoir
+ utilisé l'option <computeroutput>--settingspw|--settingspwfile</computeroutput>
+ une fois, il faut toujours l'utiliser, sans quoi le paramètre chiffré ne peut pas
+ être chiffré.
+ </para>
+ </sect1>
+
+ <sect1 id="vboxmanage-list">
+ <title>VBoxManage list</title>
+
+ <para>La commande <computeroutput>list</computeroutput> donne des
+ informations pertinentes sur votre système et sur les paramètres actuels de
+ VirtualBox.</para>
+
+ <para>Les sous-commandes suivantes sont disponibles avec
+ <computeroutput>VBoxManage list</computeroutput>&#xA0;: <itemizedlist>
+ <listitem>
+ <para><computeroutput>vms</computeroutput> liste toutes les machines
+ virtuelles actuellement enregistrées avec VirtualBox. Par défaut, elle
+ affiche une liste compacte avec le nom et l'UUID de chaque VM&#xA0;;
+ si vous spécifiez en plus <computeroutput>--long</computeroutput> ou
+ <computeroutput>-l</computeroutput>, cela affichera une liste détaillée
+ comme avec la commande<computeroutput>showvminfo</computeroutput> (voir
+ ci-dessous).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>runningvms</computeroutput> liste toutes les
+ machines virtuelles actuellement en fonction avec leurs identifiants
+ uniques (UUIDs) sous la même forme qu'avec
+ <computeroutput>vms</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>ostypes</computeroutput> liste les systèmes
+ d'exploitation invités connus aujourd'hui de VirtualBox, ainsi que
+ les identifiants utilisés pour s'y référer avec la commande
+ <computeroutput>modifyvm</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>hostdvds</computeroutput>,
+ <computeroutput>hostfloppies</computeroutput>, listent respectivement
+ les lecteurs DVD, amovibles, les interfaces réseaux bridgées et
+ host-only sur l'hôte, ainsi que le nom utilisé pour y accéder depuis
+ VirtualBox.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>bridgedifs</computeroutput>,
+ <computeroutput>hostonlyifs</computeroutput> aet
+ <computeroutput>dhcpservers</computeroutput>, listent respectivement
+ les interfaces réseaux bridgées, host-only et les serveurs DHCP disponibles
+ sur l'hôte. Merci de voir <xref
+ linkend="networkingdetails" /> pour les détails à leur sujet.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>hostinfo</computeroutput> affiche des informations
+ sur le système hôte telles que les processeurs, la taille de la mémoire
+ et la version du système d'exploitation.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>hostcpuids</computeroutput> affiche les paramètres
+ CPUID aux processeurs de l'hôte. Cela peut servir à une analyse plus
+ fine des possibilités de virtualisation de l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>hddbackends</computeroutput> liste les backends (fondations)
+ de disque virtuel connus de VirtualBox. Pour chaque format (tels que
+ VDI, VMDK ou RAW), ceci liste les possibilités de la fondation et sa
+ configuration.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>hdds</computeroutput>,
+ <computeroutput>dvds</computeroutput> et
+ <computeroutput>floppies</computeroutput> vous donnent des informations
+ sur les images de disque virtuel actuellement utilisées par VirtualBox,
+ y compris leurs paramètres, leurs identifiants uniques (UUIDs)
+ associés par VirtualBox et tous leurs fichiers associés. C'est l'équivalent
+ ligne de commandes du gestionnaire de médias virtuels&#xA0;; voir <xref
+ linkend="vdis" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>usbhost</computeroutput> donne des informations
+ sur les périphériques USB attachés à l'hôte, en particulier des
+ informations utiles pour construire des filtres USB et s'ils sont actuellement
+ utilisés par l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>usbfilters</computeroutput> liste les filtres USB
+ globaux enregistrés avec VirtualBox -- c'est-à-dire les filtres des
+ périphériques accessibles à toutes les machines virtuelles -- et
+ il affiche les paramètres du filtre.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>systemproperties</computeroutput> affiche des
+ paramètres globaux de VirtualBox, tels que la RAM minimum et maximum
+ de l'invité et la taille du disque dur virtuel, les paramètres du
+ dossier et la bibliothèque d'authentification actuellement utilisée.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>extpacks</computeroutput> affiche les packs
+ d'extension de VirtualBox actuellement installés&#xA0;; voir <xref
+ linkend="intro-installing" /> et <xref
+ linkend="vboxmanage-extpack" /> pour plus d'informations.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-showvminfo">
+ <title>VBoxManage showvminfo</title>
+
+ <para>La commande <computeroutput>showvminfo</computeroutput> affiche
+ des informations sur une machine en particulier. Ce sont les mêmes
+ informations qu'afficherait <computeroutput>VBoxManage list vms --long</computeroutput>
+ pour toutes les machines virtuelles.</para>
+
+ <para>Vous aurez des informations ressemblant à ce qui suit&#xA0;:</para>
+
+ <para><screen>$ VBoxManage showvminfo "Windows XP"
+VirtualBox Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2005-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+Name: Windows XP
+Guest OS: Other/Unknown
+UUID: 1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
+Config file: /home/nomutilisateur/.config/VirtualBox/Machines/Windows XP/Windows XP.xml
+Memory size: 512MB
+VRAM size: 12MB
+Number of CPUs: 2
+Synthetic Cpu: off
+Boot menu mode: message and menu
+Boot Device (1): DVD
+Boot Device (2): HardDisk
+Boot Device (3): Not Assigned
+Boot Device (4): Not Assigned
+ACPI: on
+IOAPIC: on
+PAE: on
+Time offset: 0 ms
+Hardw. virt.ext: on
+Nested Paging: on
+VT-x VPID: off
+State: powered off (since 2009-10-20T14:52:19.000000000)
+Monitor count: 1
+3D Acceleration: off
+2D Video Acceleration: off
+Teleporter Enabled: off
+Teleporter Port: 0
+Teleporter Address:
+Teleporter Password:
+Storage Controller (0): IDE Controller
+Storage Controller Type (0): PIIX4
+Storage Controller (1): Floppy Controller 1
+Storage Controller Type (1): I82078
+IDE Controller (0, 0): /home/user/windows.vdi (UUID: 46f6e53a-4557-460a-9b95-68b0f17d744b)
+IDE Controller (0, 1): /home/user/openbsd-cd46.iso (UUID: 4335e162-59d3-4512-91d5-b63e94eebe0b)
+Floppy Controller 1 (0, 0): /home/user/floppy.img (UUID: 62ac6ccb-df36-42f2-972e-22f836368137)
+NIC 1: disabled
+NIC 2: disabled
+NIC 3: disabled
+NIC 4: disabled
+NIC 5: disabled
+NIC 6: disabled
+NIC 7: disabled
+NIC 8: disabled
+UART 1: disabled
+UART 2: disabled
+Audio: disabled (Driver: Unknown)
+Clipboard Mode: Bidirectional
+VRDE: disabled
+USB: disabled
+
+USB Device Filters:
+&lt;none&gt;
+
+Shared folders:
+&lt;none&gt;
+
+Statistics update: disabled</screen></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-registervm">
+ <title>VBoxManage registervm / unregistervm</title>
+
+ <para>La commande <computeroutput>registervm</computeroutput> vous permet
+ d'importer la définition d'une machine virtuelle dans VirtualBox via
+ un fichier XML. La machine ne doit pas entrer en conflit avec une autre déjà
+ enregistrée dans VirtualBox et elle ne peut pas avoir de disques durs ou
+ amovibles attachés. Il est recommandé de mettre le fichier de définition
+ dans le répertoire des machines avant de l'enregistrer.<note>
+ <para>Lors de la création d'une nouvelle machine virtuelle avec
+ <computeroutput>VBoxManage createvm</computeroutput> (voir ci-dessous),
+ vous pouvez spécifier directement l'option
+ <computeroutput>--register</computeroutput> pour éviter de devoir
+ l'enregistrer séparément.</para>
+ </note></para>
+
+ <para>La commande <computeroutput>unregistervm</computeroutput> désenregistre
+ une machine virtuelle. Si vous spécifiez également
+ <computeroutput>--delete</computeroutput>, les fichiers suivants seront
+ eux aussi automatiquement effacés&#xA0;:<orderedlist>
+ <listitem>
+ <para>tous les fichiers images de disque dur, y compris les fichiers de
+ différenciation, utilisés par la machine et non partagés avec d'autres
+ machines&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>les fichiers de l'état sauvegardé créés par la machine si ils existent
+ (un si la machine était en état "sauvegardé" et un pour chaque
+ instantané en ligne)&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>le fichier XML de la machine et ses sauvegardes&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>les fichiers journaux de la machine s'il y en a&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para>le répertoire de la machine s'il est vide après l'effacement de
+ tout ce qui précède.</para>
+ </listitem>
+ </orderedlist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-createvm">
+ <title>VBoxManage createvm</title>
+
+ <para>Cette commande crée un nouveau fichier de définition de machine virtuelle
+ XML.</para>
+
+ <para>Le paramètre <computeroutput>--name &lt;name&gt;</computeroutput> est
+ requis et doit spécifier le nom de la machine. Ce nom étant utilisé par
+ défaut pour nommer le fichier des paramètres (avec l'extension
+ <computeroutput>.xml</computeroutput>) et le dossier machine (un sous-dossier
+ du dossier <computeroutput>.config/VirtualBox/Machines</computeroutput>), il doit
+ respecter les exigences de votre système d'exploitation hôte en matière de
+ spécifications d'un nom de fichier. Si vous renommez plus tard la VM, le
+ nom du fichier et du dossier seront modifiés automatiquement.</para>
+
+ <para>Néanmoins, si vous utilisez l'option <computeroutput>--basefolder
+ &lt;path&gt;</computeroutput>, le dossier de la machine sera appelé
+ <computeroutput>&lt;path&gt;</computeroutput>. Dans ce cas, les noms du
+ fichier et du dossier ne seront pas modifiés si la machine virtuelle est
+ renommée.</para>
+
+ <para>Par défaut, cette commande ne fait que créer le fichier XML,
+ sans enregistrer automatiquement la VM avec votre installation de
+ VirtualBox. Pour enregistrer instantanément la VM, utilisez l'option
+ <computeroutput>--register</computeroutput>, ou lancez
+ <computeroutput>VBoxManage registervm</computeroutput> séparément a posteriori.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-modifyvm">
+ <title>VBoxManage modifyvm</title>
+
+ <para>Cette commande modifie les propriétés d'une machine virtuelle enregistrée
+ et non en fonction. La plupart des propriétés disponibles avec cette commande
+ correspondent aux paramètres de la VM affichés dans l'interface graphique de
+ VirtualBox dans la boîte de dialogue "Paramètres" de chaque VM&#xA0;;
+ celles-ci ont été décrites en
+ <xref linkend="BasicConcepts" />. Néanmoins, certains des paramètres les plus
+ avancés ne sont disponibles que via l'interface
+ <computeroutput>VBoxManage</computeroutput>.</para>
+
+ <para>Ces commandes exigent que la machine soit éteinte (ni
+ en fonction ni en état "sauvegardé"). Certains paramètres de la machine
+ peuvent être aussi modifiés pendant qu'une machine est en fonction&#xA0;;
+ ces paramètres auront alors une sous-commande correspondante avec la sous-commande
+ <computeroutput>VBoxManage controlvm</computeroutput> (voir <xref linkend="vboxmanage-controlvm" />).</para>
+
+ <sect2>
+ <title>Paramètres généraux</title>
+
+ <para>Les paramètres généraux suivants sont disponibles via
+ <computeroutput>VBoxManage modifyvm</computeroutput>&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>--name &lt;nom&gt;</computeroutput>&#xA0;: Ceci
+ modifie le nom de la VM et renomme éventuellement les fichiers internes
+ virtuels, comme décrit avec <computeroutput>VBoxManage
+ createvm</computeroutput> ci-dessus.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--ostype &lt;ostype&gt;</computeroutput>&#xA0;:
+ Ceci spécifie le système d'exploitation supposé fonctionner dans la
+ VM. Pour en apprendre davantage sur les différents identifiants
+ utilisables, utilisez <computeroutput>VBoxManage list
+ ostypes</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--memory
+ &lt;taillemémoire&gt;</computeroutput>&#xA0;: Ceci définit la quantité
+ de RAM, en Mo, que devrait s'affecter à elle-même la machine virtuelle
+ sur l'hôte. Voir les remarques au <xref linkend="gui-createvm" /> pour
+ plus d'informations.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vram &lt;taillevram&gt;</computeroutput>&#xA0;:
+ Ceci définit la quantité de RAM de la carte graphique. Voir
+ <xref linkend="settings-display" /> pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--acpi on|off</computeroutput>&#xA0;;
+ <computeroutput>--ioapic on|off</computeroutput>&#xA0;: Ces deux éléments
+ déterminent si la VM devrait supporter respectivement l'ACPI et
+ l'APIC I/O&#xA0;; voir <xref linkend="settings-motherboard" /> pour
+ des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--hardwareuuid
+ &lt;uuid&gt;</computeroutput>&#xA0;: L'UUID présentée à l'invité via
+ les tables mémoire (DMI/SMBIOS), les propriétés matérielles
+ et invité. Par défaut, c'est le même que l'uuid de la VM. Utile quand
+ vous clonez une VM. La téléportation en tient compte automatiquement.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cpus &lt;nombreprocesseur&gt;</computeroutput>&#xA0;:
+ Ceci définit le nombre de processeurs virtuels de la machine virtuelle
+ (voir <xref linkend="settings-processor" />). Si le branchement
+ à chaud des processaurs est activé (voir ci-dessous), ceci définit
+ le nombre <emphasis>maximum</emphasis> de processeurs virtuels
+ qu'on peut brancher dans les machines virtuelles.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--rtcuseutc on|off</computeroutput>&#xA0;: Cette
+ option fait tourner l'horloge en temps réel (RTC) en temps UTC (voir
+ <xref linkend="settings-motherboard" />).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cpuhotplug on|off</computeroutput>&#xA0;: Ceci
+ active le branchement à chaud du processeur. Quand vous l'activez,
+ les processeurs virtuels peuvent être ajoutés et supprimés d'une
+ machine virtuelle pendant qu'elle est en fonction. Voir
+ <xref linkend="cpuhotplug" /> pour plus d'informations.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--plugcpu|unplugcpu
+ &lt;id&gt;</computeroutput>&#xA0;: Si vous avez activé le branchement
+ des processeurs à chaud (voir ci-dessus), ceci ajoute un processeur
+ virtuel aux machines virtuelles (ou en supprime un). <computeroutput>&lt;id&gt;</computeroutput>
+ spécifie l'index du processeur virtuel à ajouter ou supprimer et doit
+ être un numéro entre 0 et le nombre maximum de processeurs configurés
+ avec l'option <computeroutput>--cpus</computeroutput>. Le processeur
+ 0 ne peut jamais être supprimé.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cpuexecutioncap
+ &lt;1-100&gt;</computeroutput>&#xA0;: Ce paramètre contrôle le nombre
+ de temps processeur utilisable par un processeur. La valeur 50 implique
+ qu'un seul processeur virtuel peut utiliser jusqu'à 50% d'un seul
+ processeur de l'hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--pae on|off</computeroutput>&#xA0;: Ceci active/désactive
+ la PAE (voir <xref
+ linkend="settings-processor" />).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--longmode on|off</computeroutput> : Ceci
+ active/désactive le mode long (voir <xref
+ linkend="settings-processor" />).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--synthcpu on|off</computeroutput>&#xA0;: Ce
+ paramètre détermine si VirtualBox présente ou non un processeur
+ synthétique à l'invité pour permettre une migration en direct entre
+ les systèmes hôtes qui diffèrent de manière significative.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--hpet on|off</computeroutput>&#xA0;: Ceci active/désactive
+ un High Precision Event Timer (HPET) qui peut remplacer les timers
+ du système primitif. C'est désactivé par défaut. Remarquez que Windows
+ ne supporte un HPET qu'à partir de Vista.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--hwvirtex on|off</computeroutput>&#xA0;: Ceci
+ active ou désactive l'utilisation des extensions du matériel de
+ virtualisation (Intel VT-x ou AMD-V) dans le processeur de votre système
+ hôte&#xA0;; voir <xref linkend="hwvirt" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--triplefaultreset on|off</computeroutput> : ce
+ paramètre permet de relancer l'invité au lieu de récupérer une Guru Meditation.
+Certains invités échouent par une triple erreur lors de la réinitialisation
+ du processeur, donc on peut parfois souhaiter ce comportement. Cela
+ ne fonctionne que sur les invités non SMP.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--nestedpaging on|off</computeroutput>&#xA0;: Si
+ la virtualisation matérielle est activée, ce paramètre supplémentaire
+ active ou désactive l'utilisation de la fonction de pagination nested
+ du processeur de votre système hôte&#xA0;; voir <xref
+ linkend="hwvirt" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--largepages on|off</computeroutput>&#xA0;: Si
+ la virtualisation matérielle <emphasis>et</emphasis> la pagination
+ nested sont activées, pour Intel VT-x seulement, vous pouvez obtenir un
+ gain de performances jusqu'à 5% en activant ce paramètre. Il fait
+ utiliser à l'hyperviseur les grandes pages pour réduire l'utilisation du
+ TLB et l'overhead.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vtxvpid on|off</computeroutput>&#xA0;: Si
+ la virtualisation matérielle est activée, pour Intel VT-x seulement,
+ ce paramètre supplémentaire active ou désactive l'utilisation de la
+ fonction TLB taggçe (VPID) du processeur de votre système hôte&#xA0;;
+ voir <xref linkend="hwvirt" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vtxux on|off</computeroutput> : Si vous avez
+ activé la virtualisation matérielle, seulement pour VT-x d'Intel, ce
+ paramètre active ou désactive l'utilisation de la fonction mode invité
+ sans restriction pour faire tourner votre invité.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--accelerate3d on|off</computeroutput>&#xA0;:
+ Ceci active, si vous avez installé les suppléments invité, la disponibilité
+ de l'accélération 3D&#xA0;; voir <xref
+ linkend="guestadd-3d" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez influencer le logo du BIOS affiché quand une machine
+ virtuelle démarre avec un certain nombre de paramètres. Par défaut,
+ un logo VirtualBox est affiché.</para>
+
+ <para>Avec <computeroutput>--bioslogofadein
+ on|off</computeroutput> et <computeroutput>--bioslogofadeout
+ on|off</computeroutput>, vous pouvez déterminer si le logo apparaît
+ et disparaît éstompé, respectivement.</para>
+
+ <para>Avec <computeroutput>--bioslogodisplaytime
+ &lt;msec&gt;</computeroutput> vous pouvez définir la durée d'affichage
+ du logo en millisecondes.</para>
+
+ <para>Avec <computeroutput>--bioslogoimagepath
+ &lt;cheminimage&gt;</computeroutput> vous pouvez, si vous le souhaitez,
+ remplacer l'image affichée par votre propre logo. L'image doit être
+ un fichier BMP décompressé 256 couleurs avec des informations sur
+ la zone des couleurs (au format Windows 3.0). La taille de l'image
+ ne doit pas excéder 640 x 480.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--biosbootmenu
+ disabled|menuonly|messageandmenu</computeroutput>&#xA0;: Ceci
+ spécifie si le BIOS permet à l'utilisateur de sélectionner un périphérique
+ de démarrage temporaire. <computeroutput>menuonly</computeroutput>
+ supprime le message, mais l'utilisateur peut encore appuyer sur F12
+ pour sélectionner un périphérique de démarrage temporaire.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nicbootprio&lt;1-N&gt;
+ &lt;priorité&gt;</computeroutput>&#xA0;: Ceci spécifie l'ordre dans
+ lequel les NICs sont essayés pour démarrer par le réseau (en utilisant
+ PXE). La priorité est un entier entre 0 à 4. La priorité 1 est la
+ plus élevée, la priorité 4 est la plus faible. La priorité 0, qui
+ est celle par défaut sauf autrement spécifié, est la plus faible.
+ </para>
+ <para>Remarquez que cette option n'a d'effet que quand le démarrage
+ Intel PXE ROM est utilisé.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--boot&lt;1-4&gt;
+ none|floppy|dvd|disk|net</computeroutput>&#xA0;: Ceci spécifie l'ordre
+ d'amorçage pour la machine virtuelle. Il y a quatre "slots", auxquels
+ essaiera d'accéder la VM de 1 à 4, et pour chacun d'eux, vous pouvez
+ définir un périphérique sur lequel la VM devrait essayer de démarrer.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--snapshotfolder
+ default|&lt;path&gt;</computeroutput>&#xA0;: Ceci vous permet de
+ spécifier le dossier dans lequel seront stockés les instantanés d'une
+ machine virtuelle.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--firmware efi|bios</computeroutput>&#xA0;:
+ Spécifie le firmware utilisé pour démarrer une
+ machine virtuelle en particulier&#xA0;: EFI ou BIOS. N'utilisez EFI
+ que si vous comprenez bien ce que vous faites.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--guestmemoryballoon
+ &lt;taille&gt;</computeroutput> définit la taille par défaut de la
+ mémoire du ballon de l'invité c'est-à-dire la mémoire affectée
+ par les suppléments invité de VirtualBox à partir du système d'exploitation
+ invité et rendue à l'hyperviseur pour être réutilisée par d'autres
+ machines virtuelles. &lt;taille&gt; doit être spécifiée en mégaoctets.
+ La taille par défaut est de 0 mégaoctets. Pour les
+ détails, voir <xref linkend="guestadd-balloon" />.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--lptmode&lt;1-N&gt;
+ &lt;Périphérique&gt;</computeroutput>
+ Spécifie le nom du périphérique du port parallèle utilisé par la
+ fonction Pert parallèle. Utilisez ceci <emphasis>avant</emphasis>
+ <computeroutput>--lpt</computeroutput>. Cette fonction est spécifique
+ au système d'exploitation.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--lpt&lt;1-N&gt;
+ &lt;base E/S&gt; &lt;IRQ&gt;</computeroutput> Spécifie l'adresse
+ E/S du port parallèle et le numéro IRQ utilisés par la fonction
+ Port parallèle. Utilisez ceci <emphasis>après</emphasis>
+ <computeroutput>--lptmod</computeroutput>. L'adresse de base
+ E/S et le numéro IRQ sont les valeurs vues par l'invité, c'est-à-dire
+ les valeurs disponibles dans le gestionnaire de périphériques de
+ l'invité.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--defaultfrontend
+ default|&lt;nom&gt;</computeroutput>&#xA0;: Ceci vous permet de
+ spécifier l'interface par défaut qui sera utilisée au démarrage de
+ cette VM&#xA0; voir
+ <xref linkend="vboxmanage-startvm" /> pour des détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2>
+ <title>Paramètres réseaux</title>
+
+ <para>Les paramètres réseaux suivants sont disponibles avec
+ <computeroutput>VBoxManage modifyvm</computeroutput>. Avec tous ces paramètres,
+ le numéro décimal suivant directement le nom de l'option ("1-N" dans la
+ in liste ci-dessous) spécifie l'adaptateur réseau virtuel dont vous
+ modifiez les paramètres.<itemizedlist>
+ <listitem>
+ <para><computeroutput>--nic&lt;1-N&gt;
+ none|null|nat|bridged|intnet|hostonly|generic
+ </computeroutput>&#xA0;: Avec cela, vous pouvez définir, pour chacune
+ des cartes réseaux virtuelles de la VM, le type de réseau qui devrait
+ être disponible. Ils peuvent ne pas être présents
+ (<computeroutput>none</computeroutput>), non connectés à l'hôte
+ (<computeroutput>null</computeroutput>), utiliser le network
+ address translation (<computeroutput>nat</computeroutput>),
+ le réseau bridgé (<computeroutput>bridged</computeroutput>) ou
+ communiquer avec d'autres machines virtuelles en utilisant le réseau
+ interne (<computeroutput>intnet</computeroutput>), le réseau
+ host-only (<computeroutput>hostonly</computeroutput>), ou accéder
+ à des sous-modes rarement utilisés (<computeroutput>generic</computeroutput>).
+ Ces options correspondent aux modes décrits en détail au <xref
+ linkend="networkingmodes" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nictype&lt;1-N&gt;
+ Am79C970A|Am79C973|82540EM|82543GC|82545EM|virtio</computeroutput>&#xA0;:
+ Cela vous permet, pour chacune des cartes réseaux virtuelles de la VM, de
+ spécifier le matériel réseau que VirtualBox présente à l'invité&#xA0;;
+ voir <xref linkend="nichardware" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cableconnected&lt;1-N&gt;
+ on|off</computeroutput>&#xA0;: Cela vous permet de déconnecter
+ temporairement une interface réseau virtuelle comme si vous débranchiez un
+ câble réseau d'une vraie carte réseau. Cela pourrait être utile pour
+ reparamétrer certains composants logiciels dans la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec l'option "nictrace", vous pouvez éventuellement tracer
+ le trafic réseau en l'envoyant vers un fichier pour faire du débogage.</para>
+
+ <para>Avec <computeroutput>--nictrace&lt;1-N&gt;
+ on|off</computeroutput>, vous pouvez activer un traçage réseau pour
+ des cartes réseaux en particulier.</para>
+
+ <para>Si vous l'activez, vous devez spécifier avec
+ <computeroutput>--nictracefile&lt;1-N&gt;
+ &lt;nomfichier&gt;</computeroutput> le fichier où devrait être
+ journalisée la trace.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--bridgeadapter&lt;1-N&gt;
+ none|&lt;nompériphérique&gt;</computeroutput>&#xA0;: Si le réseau
+ bridgé est activé pour une carte réseau virtuelle (voir l'option
+ <computeroutput>--nic</computeroutput> ci-dessus&#xA0;; sinon ce
+ paramètre n'a aucun effet),, utilisez cette option pour spécifier
+ l'interface de l'hôte qu'utilisera l'interface réseau virtuelle
+ donnée. Pour des détails, merci de voir <xref linkend="network_bridged" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--hostonlyadapter&lt;1-N&gt;
+ none|&lt;nompériphérique&gt;</computeroutput>&#xA0;: Si le réseau
+ host-only a été activé pour une carte réseau virtuelle (voir l'option
+ --nic ci-dessus&#xA0;; sinon ce paramètre n'a aucun effet), employez
+ cette option pour spécifier quelle interface réseau host-only utilisera
+ l'interface réseau virtuelle donnée. Pour des détails, merci de voir <xref
+ linkend="network_hostonly" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--intnet&lt;1-N&gt;
+ network</computeroutput>&#xA0;: Si le réseau interne a été activé
+ pour une carte réseau virtuelle (voir l'option
+ <computeroutput>--nic</computeroutput> ci-dessus&#xA0;; sinon ce
+ paramètre n'a aucun effet), utilisez cette option pour spécifier le
+ nom du réseau interne (voir <xref
+ linkend="network_internal" />).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--macaddress&lt;1-N&gt;
+ auto|&lt;mac&gt;</computeroutput>&#xA0;: Avec cette option,
+ vous pouvez définir l'adresse MAC de la carte réseau virtuelle.
+ Normalement, chaque carte réseau virtuel se voit affecter une adresse
+ aléatoire par VirtualBox Lors de la création de la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nicgenericdrv&lt;1-N&gt;
+ &lt;pilote fondation&gt;</computeroutput>&#xA0;: Si le réseau
+ générique a été activé pour une carte réseau virtuelle (voir l'option
+ <computeroutput>--nic</computeroutput> ci-dessus&#xA0;; sinon ce paramètre
+ n'a aucun effet), ce mode vous permet d'accéder à des sous-modes
+ réseaux rarement utilisés, tels que le réseau VDE ou le tunnel UDP.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nicproperty&lt;1-N&gt;
+ &lt;nomparam&gt;="paramvaleur"</computeroutput>&#xA0;:
+ Cette option, associée avec "nicgenericdrv", vous permet de
+ passer des paramètres aux backends (fondations) réseaux rarement utilisées.</para><para>
+ Ces paramètres sont des fondations spécifiques au moteur et sont
+ différents entre les pilotes du tunnel UDP et ceux de la fondation
+ VDE. Par exemple,merci de voir <xref linkend="network_udp_tunnel" />.
+ </para>
+ </listitem>
+ </itemizedlist></para>
+
+ <sect3>
+ <title>Paramètres du réseau NAT.</title>
+
+ <para>Les paramètres de réseau NAT suivants sont disponibles via
+ <computeroutput>VBoxManage modifyvm</computeroutput>. Avec tous ces
+ paramètres, le numéro décimal suivant le nom de l'option ("1-N"
+ dans la liste ci-dessous) spécifie l'adaptateur réseau virtuel que
+ devrait modifier ces paramètres.<itemizedlist>
+ <listitem>
+ <para><computeroutput>--natpf&lt;1-N&gt;
+ [&lt;nom&gt;],tcp|udp,[&lt;hostip&gt;],&lt;porthôte&gt;,[&lt;ipinvité&gt;],
+ &lt;portinvité&gt;</computeroutput>&#xA0;: Cette option définit
+ une règle de redirection de port NAT (merci de voir <xref linkend="natforward" />
+ pour des détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--natpf&lt;1-N&gt; delete
+ &lt;nom&gt;</computeroutput>&#xA0;: Cette option supprime une règle
+ de redirection de port NAT (merci de voir <xref linkend="natforward" />
+ pour les détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nattftpprefix&lt;1-N&gt;
+ &lt;préfixe&gt;</computeroutput>&#xA0;: Cette option définit un
+ préfixe pour le serveur TFTP intégré, à savoir là où se trouve le
+ fichier de démarrage (merci de voir <xref linkend="nat-tftp" /> et <xref
+ linkend="nat-adv-tftp" /> pour les détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nattftpfile&lt;1-N&gt;
+ &lt;fichierdémarrage&gt;</computeroutput>&#xA0;: Cette option
+ définit le fichier de démarrage TFT (merci de voir <xref linkend="nat-adv-tftp" />
+ pour des détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nattftpserver&lt;1-N&gt;
+ &lt;serveurtftp&gt;</computeroutput>&#xA0;: Cette option définit
+ l'adresse du serveur TFTP sur lequel démarrer (voir <xref
+ linkend="nat-adv-tftp" /> pour les détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--natdnspassdomain&lt;1-N&gt;
+ on|off</computeroutput>&#xA0;: Cette option spécifie si le serveur
+ DHCP passe le nom de domaine pour la résolution du nom du réseau.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--natdnsproxy&lt;1-N&gt;
+ on|off</computeroutput>&#xA0;: Cette option fait que le proxy du
+ moteur NAT envoie toutes les requêtes DNS de l'invité au serveur DNS
+ de l'hôte (merci de voir <xref linkend="nat-adv-dns" /> pour des
+ détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--natdnshostresolver&lt;1-N&gt;
+ on|off</computeroutput>&#xA0;: Cette option fait que le
+ moteur NAT utilise le mécanismes de résolveur de l'hôte pour gérer les
+ requêtes DNS (merci de voir <xref linkend="nat-adv-dns" /> pour les détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--natsettings&lt;1-N&gt;
+ [&lt;mtu&gt;],[&lt;socksnd&gt;],[&lt;sockrcv&gt;],[&lt;tcpsnd&gt;],
+ [&lt;tcprcv&gt;]</computeroutput>&#xA0;: Cette option contrôle
+ plusieurs paramètres NAT (merci de voir <xref linkend="nat-adv-settings" />
+ pour les détails).</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--nataliasmode&lt;1-N&gt;
+ default|[log],[proxyonly],[sameports]</computeroutput>&#xA0;: Cette
+ option définit le comportement du c&#x153;ur du moteur NAT&#xA0;:
+ log - active la journalisation, proxyonly - switch les modes d'alias
+ pour rendre NAT transparent, sameports renforce le moteur NAT pour
+ envoyer des paquets via le même port qu'ils arrivent, default -
+ désactive tous les modes mentionnés ci-dessus. (merci de voir <xref
+ linkend="nat-adv-alias" /> pour des détails).</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-other">
+ <title>Paramètres divers</title>
+
+ <para>Les autres paramètres matériels suivants (tels que ceux du port série,
+ du son, du presse-papiers, du glisser/déplacer, de l'écran et de l'USB)
+ sont disponibles avec
+ <computeroutput>VBoxManage modifyvm</computeroutput>&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>--uart&lt;1-N&gt; off|&lt;I/O base&gt;
+ &lt;IRQ&gt;</computeroutput>&#xA0;: Avec cette option, vous pouvez
+ configurer les ports série virtuels de la VM (voir <xref
+ linkend="serialports" /> pour une introduction.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--uartmode&lt;1-N&gt;
+ &lt;arg&gt;</computeroutput>&#xA0;: Ce paramètre contrôle la façon
+ dont VirtualBox se connecte à un port série virtuel donné (on la
+ configurait jadis avec l'option
+ <computeroutput>--uartX</computeroutput>, voir ci-dessus) sur l'hôte
+ sur lequel fonctionne la machine virtuelle. Comme décrit en détail
+ au <xref linkend="serialports" />, pour chaque port, vous pouvez
+ spécifier <computeroutput>&lt;arg&gt;</computeroutput> comme une des
+ options suivantes&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>disconnected</computeroutput>&#xA0;: Même
+ si le port série apparaît dans l'invité, il ne sert à rien --
+ comme un vrai port COM sans câble.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>server
+ &lt;pipename&gt;</computeroutput>&#xA0;: Sur un hôte Windows,
+ ceci dit à VirtualBox de créer un tuyau nommé sur l'hôte,
+ appelé <computeroutput>&lt;pipename&gt;</computeroutput> et de
+ connecter le port série virtuel dessus. Remarquez que Windows
+ exige que le nom d'un tuyau nommé commence par
+ <computeroutput>\\.\pipe\</computeroutput>.</para>
+
+ <para>Sur un hôte Linux, plutôt qu'un tuyau nommé, une
+ socket de domaine local est utilisée.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>client
+ &lt;pipename&gt;</computeroutput>&#xA0;: Ceci agit comme
+ <computeroutput>server ...</computeroutput>, sauf que le tuyau
+ (ou la socket de domaine local) n'est pas créée par VirtualBox,
+ mais est supposée déjà exister.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>&lt;devicename&gt;</computeroutput>&#xA0;:
+ Si, au lieu de celui ci-dessus, le nom du périphérique du port
+ série matériel de l'hôte est spécifié, le port série virtuel est
+ connecté à ce port matériel. Sur un hôte Windows, le nom du
+ périphérique sera un port COM tel que
+ <computeroutput>COM1</computeroutput>&#xA0;; sur un hôte Linux,
+ le nom du périphérique ressemblera à
+ <computeroutput>/dev/ttyS0</computeroutput>. Cela vous permet
+ de "brancher" un vrai port série à une machine virtuelle.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--audio none|null|oss</computeroutput>&#xA0;:
+ Avec cette option, vous pouvez définir si la VM supporte le son.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--clipboard
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput>&#xA0;:
+ Avec ce paramètre, vous pouvez sélectionner si le presse-papier du
+ système d'exploitation invité ou de l'hôte doit être partagé avec
+ l'hôte ou l'invité et comment ; voir
+ <xref linkend="generalsettings" />. Cela exige que les suppléments
+ invité soient installés dans la machine virtuelle.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--draganddrop
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput> :
+ Avec ce paramètre, vous pouvez sélectionner le mode actuel de
+ glisser/déplacer à utiliser entre l'hôte et la machine virtuelle ;
+ voir <xref linkend="guestadd-dnd" />. Cela exige que les suppléments
+ invité soient installés dans la machine virtuelle.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--monitorcount
+ &lt;nombre&gt;</computeroutput>&#xA0;: Cela active le support multi-moniteurs&#xA0;;
+ voir <xref linkend="settings-display" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--usb on|off</computeroutput>&#xA0;: Cette
+ option active ou désactive le contrôleur virtuel USB de la VM&#xA0;; voir
+ <xref linkend="settings-usb" /> pour les détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--usbehci on|off</computeroutput>&#xA0;: Cette
+ option active ou désactive le contrôleur USB 2.0 virtuel de la VM&#xA0;;
+ voir <xref linkend="settings-usb" /> pour des détails.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-vrde">
+ <title>Paramètres de la machine distante</title>
+
+ <para>Les paramètres suivants concernant le comportement de la machine
+ distante sont disponibles avec <computeroutput>VBoxManage
+ modifyvm</computeroutput>&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>--vrde on|off</computeroutput>&#xA0;: Avec
+ l'interface graphique de VirtualBox, ceci active ou désactive le serveur
+ VirtualBox remote desktop extension (VRDE). Remarquez que si vous
+ utilisez <computeroutput>VBoxHeadless</computeroutput> (voir
+ <xref linkend="vboxheadless" />), VRDE est activé par défaut.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdeport
+ default|&lt;ports&gt;</computeroutput>&#xA0;: Un port ou une plage
+ de ports que le serveur VRDE peut sonder&#xA0;; "default" ou "0"
+ signifient le port 3389, le port RDP standard. Vous pouvez spécifier
+ une liste de ports ou de plages de ports séparée par des virgules.
+ Utilisez un tiret entre deux numéros de ports pour spécifier une plage.
+ Le serveur VRDE sondera <emphasis role="bold">un</emphasis> des
+ ports disponibles dans la liste spécifiée. Une seule machine peut utiliser
+ un port donné en même temps. Par exemple, l'option <computeroutput> --vrdeport
+ 5000,5010-5012</computeroutput> dira au serveur de sonder un des ports
+ suivants&#xA0;: 5000, 5010, 5011 ou 5012.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdeaddress &lt;adresse IP
+ &gt;</computeroutput>&#xA0;: L'adresse IP de l'interface réseau de
+ l'hôte que sondera le serveur VRDE. Si vous la spécifiez, le serveur
+ n'acceptra les connexions que sur l'interface de l'hôte spécifiée.</para>
+ <para>On peut utiliser ce paramètre pour indiquer si le serveur
+ VRDP devrait accepter des connexions IPv4, IPv6 ou les deux :
+ <itemizedlist>
+ <listitem>
+ <para>IPv4 seulement : <computeroutput>--vrdeaddress "0.0.0.0"
+ </computeroutput></para>
+ </listitem>
+ <listitem>
+ <para>IPv6 seulement : <computeroutput>--vrdeaddress "::"
+ </computeroutput></para>
+ </listitem>
+ <listitem>
+ <para>IPv6 et IPv4 (par défaut) : <computeroutput>--vrdeaddress ""
+ </computeroutput></para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdeauthtype
+ null|external|guest</computeroutput>&#xA0;: Cela vous permet de choisir
+ s'il faut une autorisation et sous quelle forme&#xA0;; voir <xref
+ linkend="vbox-auth" /> pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdemulticon on|off</computeroutput>&#xA0;: Ceci
+ active la multiconnexions au même serveur VRDE si le serveur supporte
+ cette fonction ; voir <xref lang=""
+ linkend="vrde-multiconnection" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdereusecon on|off</computeroutput>&#xA0;: Ceci
+ spécifie le comportement du serveur VRDE quand plusieurs connexions
+ sont désactivées. Quand on active cette option, le serveur autorisera
+ un nouveau client à se connecter et il fermera la connexion existante.
+ Quand cette option est désactivée (c'est le réglage par défaut), une
+ nouvelle connexion ne sera pas acceptée si un client est déjà connecté
+ au serveur.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdevideochannel on|off</computeroutput>&#xA0;:
+ Ceci active la redirection graphique, si elle est supportée par le
+ serveur VRDE&#xA0;; voir <xref lang="" linkend="vrde-videochannel" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--vrdevideochannelquality
+ &lt;pourcent&gt;</computeroutput>&#xA0;: Définit la qualité de l'image
+ dans la redirection graphique&#xA0;; voir <xref lang=""
+ linkend="vrde-videochannel" />.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+
+ <sect2 id="vboxmanage-modifyvm-teleport">
+ <title>Paramètres de téléportation</title>
+
+ <para>Avec les commandes suivantes pour <computeroutput>VBoxManage
+ modifyvm</computeroutput>, vous pouvez configurer une machine pour qu'elle
+ soit une cible de téléportation. Voir <xref linkend="teleporting" /> pour
+ une introduction détaillée.<itemizedlist>
+ <listitem>
+ <para><computeroutput>--teleporter on|off</computeroutput>&#xA0;: Avec
+ ce paramètre, vous activez ou désactivez l'attente par une machine
+ d'une requête de téléportation venant du réseau lorsqu'elle est
+ démarrée. Si elle est activée, quand on démarre la machine, cela ne
+ démarre pas la machine virtuelle comme cela est normalement le cas,
+ mais cela attend qu'une requête de téléportation arrive à l'adresse
+ listée avec les deux options suivantes.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--teleporterport
+ &lt;port&gt;</computeroutput>, <computeroutput>--teleporteraddress
+ &lt;adresse&gt;</computeroutput>&#xA0;: il faut les utiliser avec
+ --teleporter et elle dit à une machine virtuelle le port et l'adresse
+ sur lesquelles elle doit écouter les demandes de téléportation d'une
+ autre machine virtuelle. <computeroutput>&lt;port&gt;</computeroutput>
+ peut être n'importe quel numéro de port TCP/IP libre (comme 6000)&#xA0;;
+ <computeroutput>&lt;adresse&gt;</computeroutput> peut être n'importe
+ quelle adresse IP ou nom d'hôte et il spécifie une socket TCP/IP
+ à sonder. Par défaut, c'est "0.0.0.0", ce qui signifie toutes les
+ adresses.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--teleporterpassword
+ &lt;mot_de_passe&gt;</computeroutput>&#xA0;: si vous donnez cet
+ argument facultatif, la requête de téléportation ne réussira que si
+ la machine source spécifie le même mot de passe que celui donné avec
+ cette commande.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--teleporterfichier_mot_de_passe
+ &lt;mot_de_passe&gt;</computeroutput>&#xA0;: si vous donnez cet
+ argument facultatif, la requête de téléportation ne réussira que si
+ la machine source spécifie le même mot de passe que celui spécifié
+ dans le fichier donné avec cette commande. Utilisez
+ <computeroutput>stdin</computeroutput> pour lire le mot de passe à
+ partir de l'entrée standard.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--cpuid &lt;leaf&gt; &lt;eax&gt; &lt;ebx&gt;
+ &lt;ecx&gt; &lt;edx&gt;</computeroutput>&#xA0;: Les utilisateurs
+ avancés peuvent utiliser cette commande avant une opération de
+ téléportation pour restreindre les possibilités du processeur virtuel
+ présenté par VirtualBox au système d'exploitation invité. Il faut
+ l'exécuter à la fois sur la machine source et cible
+ impliquées dans la téléportation et cela modifiera ce que l'invité
+ verra quand il exécutera l'instruction machine
+ <computeroutput>CPUID</computeroutput>. Cela peut aider des applications
+ présupposant à tord la présence de
+ certaines capacités du processeur. La signification des paramètres
+ dépend du matériel&#xA0;; merci de vous reporter aux manuels des
+ processeurs AMD ou Intel.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vboxmanage-clonevm">
+ <title>VBoxManage clonevm</title>
+
+ <para>Cette commande crée une copie complète ou liée d'une
+ machine virtuelle existante.</para>
+
+ <para>La sous-commande <computeroutput>clonevm</computeroutput> prend
+ au moins en argument le nom de la machine virtuelle à cloner. Vous pouvez
+ utiliser les paramètres supplémentaires suivants pour configurer davantage
+ la procédure de clonage de la VM&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><computeroutput>--snapshot &lt;uuid&gt;|&lt;nom&gt;</computeroutput>&#xA0;:
+ Sélectionne un instantané spécifique auquel se rapporte le processus
+ de clonage. Par défaut, c'est à l'état courant qu'il se réfère.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--mode machine|machineandchildren|all</computeroutput>&#xA0;:
+ Sélectionne le mode de clonage. Si
+ <computeroutput>machine</computeroutput> est sélectionnée (comme par
+ défaut), l'état actuel de la VM sans instantané est cloné. En mode
+ <computeroutput>machineandchildren</computeroutput>, l'instantané
+ fourni par <computeroutput>--snapshot</computeroutput> et tous les
+ instantanés fils sont clonés. Si vous
+ sélectionnez le mode <computeroutput>all</computeroutput>, tous les
+ instantanés de l'état actuel seront clonés.
+ </para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--options link|keepallmacs|keepnatmacs|keepdisknames</computeroutput>&#xA0;:
+ Permet de peaufiner encore davantage l'opération de clonage.
+ La première dit de créer un clone lié, ce qui n'est possible que pour
+ le clonage d'une machine à partir d'un instantané. Les deux options
+ suivantes permettent de définir la façon dont les adresses MAC de chaque
+ carte réseau virtuel seront gérées. Elles peuvent être soit réinitialisées
+ (comme par défaut), soit inchangées
+ (<computeroutput>keepallmacs</computeroutput>), soit inchangées
+ quand le type de réseau est NAT
+ (<computeroutput>keepnatmacs</computeroutput>). Si vous ajoutez
+ <computeroutput>keepdisknames</computeroutput>, toutes les nouvelles
+ images de disque dur s'appellent comme celles d'origine, sinon elles
+ sont renommées.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--name &lt;name&gt;</computeroutput>&#xA0;:
+ Sélectionne un nouveau nom pour la nouvelle machine virtuelle. Par défaut,
+ il s'agit de "Nom d'origine Clone".</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--basefolder &lt;basefolder&gt;</computeroutput>&#xA0;:
+ Sélectionne le dossier où devrait être sauvegardée la configuration.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--uuid &lt;uuid&gt;</computeroutput>&#xA0;:
+ Sélectionne l'UUID de la nouvelle VM. Cette id doit être unique dans
+ l'instance de VirtualBox où ce clone doit être enregistré. Par défaut,
+ un nouvel UUID est créé.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>--register</computeroutput>&#xA0;:
+ Enregistre automatiquement le nouveau clone dans l'installation de
+ VirtualBox. Si vous voulez enregistrer la nouvelle VM plus tard à la
+ main, voir <xref linkend="vboxmanage-registervm" /> pour les
+ instructions pour faire cela.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="vboxmanage-import">
+ <title>VBoxManage import</title>
+
+ <para>Cette commande importe un applicatif virtuel au format OVF en copiant
+ les images de disque virtuelles et en créant les machines virtuelles dans
+ VirtualBox. Voir
+ <xref linkend="ovf" /> pour une présentation des applicatifs.</para>
+
+ <para>La commande <computeroutput>import</computeroutput> prend comme
+ argument au moins le chemin d'un fichier OVF en entrée et elle attend que les
+ images de disque, s'il en faut, soient dans le même répertoire que le fichier
+ OVF. Beaucoup d'autres options en ligne de commande sont supportées pour
+ contrôler en détails ce qui est importé et pour modifier les paramètres
+ d'importation, mais les détails dépendent du contenu du fichier OVF.</para>
+
+ <para>Il est donc recommandé de lancer d'abord la sous-commande import avec
+ l'option <computeroutput>--dry-run</computeroutput> ou
+ <computeroutput>-n</computeroutput>. Cela affichera alors à l'écran le contenu
+ d'un applicatif et la façon de l'importer dans VirtualBox, ainsi que
+ les options facultatives en ligne de commandes pour influencer le comportement
+ de l'importation.</para>
+
+ <para>Par exemple, voilà l'écran qui s'afficherait pour un applicatif modèle
+ contenant un invité Windows XP&#xA0;:<screen>VBoxManage import WindowsXp.ovf --dry-run
+Interpreting WindowsXp.ovf...
+OK.
+Virtual system 0:
+ 0: Suggested OS type: "WindowsXP"
+ (change with "--vsys 0 --ostype &lt;type&gt;"; use "list ostypes" to list all)
+ 1: Suggested VM name "Windows XP Professional_1"
+ (change with "--vsys 0 --nomvm &lt;name&gt;")
+ 3: Number of CPUs: 1
+ (change with "--vsys 0 --cpus &lt;n&gt;")
+ 4: Guest memory: 956 MB (change with "--vsys 0 --memory &lt;MB&gt;")
+ 5: Sound card (appliance expects "ensoniq1371", can change on import)
+ (disable with "--vsys 0 --unit 5 --ignore")
+ 6: USB controller
+ (disable with "--vsys 0 --unit 6 --ignore")
+ 7: Network adapter: orig bridged, config 2, extra type=bridged
+ 8: Floppy
+ (disable with "--vsys 0 --unit 8 --ignore")
+ 9: SCSI controller, type BusLogic
+ (change with "--vsys 0 --unit 9 --scsitype {BusLogic|LsiLogic}";
+ disable with "--vsys 0 --unit 9 --ignore")
+10: IDE controller, type PIIX4
+ (disable with "--vsys 0 --unit 10 --ignore")
+11: Hard disk image: source image=WindowsXp.vmdk,
+ target path=/home/user/disks/WindowsXp.vmdk, controller=9;channel=0
+ (change controller with "--vsys 0 --unit 11 --controller &lt;id&gt;";
+ disable with "--vsys 0 --unit 11 --ignore")</screen></para>
+
+ <para>Comme vous pouvez le voir, les éléments de configuration individuelle
+ sont numérotés et en fonction de leur type de support, les options en ligne
+ de commande. La sous-commande import peut être redirigée pour ignorer
+ de nombreux éléments tels que ceux avec des options
+ <computeroutput>--vsys X --unit Y --ignore</computeroutput>, où
+ X est le numéro du système virtuel (zéro sauf s'il y a plusieurs
+ descriptions de système virtuel dans l'applicatif) et Y le numéro de l'élément,
+ tel qu'affiché à l'écran.</para>
+
+ <para>Dans l'exemple ci-dessus, Item #1 spécifie le nom de la
+ machine cible dans VirtualBox. Items #9 et #10 spécifient respectivement les
+ contrôleurs de disque. Item #11 décrit une image de disque dur&#xA0;; dans ce
+ cas, l'option supplémentaire <computeroutput>--controller</computeroutput>
+ indique l'élément auquel devrait être connectée l'image de disque, avec le
+ fichier OVF d'origine par défaut.</para>
+
+ <para>Vous pouvez associer plusieurs éléments pour un même système virtuel
+ derrière une même option <computeroutput>--vsys</computeroutput>. Par exemple,
+ pour importer une machine comme décrit dans l'OVF mais sans la carte son
+ ni le contrôleur USB, mais avec l'image de disque connectée au contrôleur IDE
+ au lieu du contrôleur SCSI, utilisez ceci&#xA0;:<screen>VBoxManage import WindowsXp.ovf
+ --vsys 0 --unit 5 --ignore --unit 6 --ignore --unit 11 --controller 10</screen></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-export">
+ <title>VBoxManage export</title>
+
+ <para>Cette commande exporte une ou plusieurs machines virtuelles à partir
+ de VirtualBox vers un applicatif virtuel au format OVF, ce qui inclut la
+ copie de leurs images de disque virtuel en VMDK compressé. Voir <xref linkend="ovf" />
+ pour une présentation des applicatifs.</para>
+
+ <para>La commande <computeroutput>export</computeroutput> est simple à
+ utiliser&#xA0;: affichez la machine (ou les machines) que vous voulez
+ exporter dans un même fichier OVF et spécifiez le fichier OVF cible après
+ l'option facultative <computeroutput>--output</computeroutput> ou
+ <computeroutput>-o</computeroutput>. Remarquez que le répertoire du fichier
+ cible OVF recevra également les images de disques exportés au format VNDK
+ compressé (quel que soit le format d'origine) et vous devriez leur laisser
+ assez d'espace disque.</para>
+
+ <para>Derrière une simple exportation d'une machine virtuelle donnée, vous
+ pouvez ajouter diverses informations produit dans le fichier applicatif.
+ Utilisez <computeroutput>--product</computeroutput>,
+ <computeroutput>--producturl</computeroutput>,
+ <computeroutput>--vendor</computeroutput>,
+ <computeroutput>--vendorurl</computeroutput> et
+ <computeroutput>--version</computeroutput> pokr spécifier les
+ informations supplémentaires. Pour des raisons légales, vous pouvez ajouter
+ un texte de licence ou le contenu d'un fichier de licence en utilisant
+ respectivement les options <computeroutput>--eula</computeroutput> et
+ <computeroutput>--eulafile</computeroutput>. Comme avec l'importation
+ OVF, vous devez utiliser l'option <computeroutput>--vsys X</computeroutput>
+ pour adresser les options précitées à la bonne
+ machine virtuelle.</para>
+
+ <para>Pour les produits de virtualisation non pleinement compatibles avec
+ le standard OVF 1.0, vous pouvez activer un mode OVF 0.9 basique avec
+ l'option <computeroutput>--legacy09</computeroutput>.</para>
+
+ <para>Pour spécifier des options contrôlant le contenu exact du fichier
+ d'applicatif, vous pouvez utiliser <computeroutput>--option</computeroutput>
+ pour demander la création d'un fichier manifeste (on vous y encourage, cela
+ permet la détection d'applicatifs corrompus lors de l'importation), l'export
+ d'images de DVD supplémentaires, et l'inclusion des adresses MAC. Vous pouvez
+ spécifier une liste d'options comme <computeroutput>--option manifest,nomacs</computeroutput>. Pour des détails,
+ consultez la sortie de l'aide de
+ <computeroutput>--option manifest,nomacs</computeroutput>. For details, + check the help output of <computeroutput>VBoxManage export</computeroutput>.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-startvm">
+ <title>VBoxManage startvm</title>
+
+ <para>Cette commande démarre une machine virtuelle qui est en état "Éteinte"
+ ou "Sauvegardée".</para>
+
+ <para>Le paramètre facultatif <computeroutput>--type</computeroutput>
+ détermine si la machine sera démarrée dans une fenêtre ou si la sortie devrait passer par
+ <computeroutput>VBoxHeadless</computeroutput>, en activant ou pas VRDE&#xA0;;
+ voir <xref linkend="vboxheadless" /> pour plus d'informations. La liste
+ des types peut changer et il n'est pas garanti que tous les types soient
+ acceptés par la variante d'un produit.</para>
+
+ <para>La valeur par défaut, globale ou individuelle à une VM, du type
+ d'interface d'une VM sera utilisée si vous ne spécifiez pas explicitement
+ le type. Si aucune n'est définie, c'est la variante GUI qui sera démarrée.</para>
+ <para>Les valeurs suivantes sont autorisées&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>gui</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Démarre une VM en affichant une fenêtre graphique. C'est le cas
+ par défaut.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>headless</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Démarre une VM sans fenêtre pour un affichage distant.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>sdl</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Démarre une VM avec une GUI minimale et limitée dans ses
+ fonctionnalités.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+
+ <note>
+ <para>Si vous rencontrez des problèmes en démarrant des machines virtuelles
+ avec certaines interfaces et s'il n'y a pas d'informations d'erreur
+ convaincantes, essayez de démarrer les machines virtuelles en lançant
+ directement leur interface respective, car cela peut donner des informations
+ supplémentaires sur l'erreur.</para>
+ </note>
+ </sect1>
+
+ <sect1 id="vboxmanage-controlvm">
+ <title>VBoxManage controlvm</title>
+
+ <para>La sous-commande <computeroutput>controlvm</computeroutput> vous permet
+ de modifier l'état d'une machine virtuelle en fonction. Vous pouvez spécifier
+ ce qui suit&#xA0;:</para>
+
+ <para><itemizedlist>
+ <listitem>
+ <para><computeroutput>VBoxManage controlvm &lt;vm&gt;
+ pause</computeroutput> met temporairement une machine virtuelle en
+ attente, sans vraiment changer son état. La fenêtre de la VM sera grisée
+ pour indiquer que la VM est actuellement en pause. (Cela revient à
+ sélectionner l'élément "Pause" dans le menu "Machine" de l'interface
+ graphique.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Utilisez <computeroutput>VBoxManage controlvm &lt;vm&gt;
+ resume</computeroutput> pour inverser une commande
+ <computeroutput>pause</computeroutput> précédente. (Cela revient à
+ sélectionner l'élément "Reprendre" du menu "Machine" de l'interface
+ graphique.)</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage controlvm &lt;vm&gt;
+ reset</computeroutput> a le même effet sur une machine virtuelle que
+ l'appui sur le bouton "Reset" d'un vrai ordinateur&#xA0;: un redémarrage
+ à froid de la machine virtuelle, ce qui redémarrera le système d'exploitation
+ invité immédiatement. L'état de la VM n'est pas sauvegardé et des
+ données peuvent être perdues. (Cela revient à sélectionner l'élément
+ "Réinitialiser" du menu "Machine" de l'interface graphique.)</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage controlvm &lt;vm&gt;
+ poweroff</computeroutput> a le même effet sur une machine virtuelle que
+ de débrancher le câble d'alimentation d'un vrai ordinateur. Là encore,
+ l'état de la VM n'est pas sauvegardé et il se peut que des données soient
+ perdues. (Cela revient à sélectionner l'élément "Couper" de l'interface
+ graphique ou à appuyer sur le bouton Fermer de la fenêtre puis
+ sélectionner "Couper la machine" dans la boîte de dialogue.)</para>
+
+ <para>Après cela, l'état de la VM sera "éteint". À partir de là, vous
+ pouvez la relancer&#xA0;; voir <xref
+ linkend="vboxmanage-startvm" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage controlvm &lt;vm&gt;
+ savestate</computeroutput> sauvegardera l'état actuel de la VM sur le
+ disque et arrêtera la VM. (Cela revient à sélectionner l'élément
+ "Fermer" du menu "Machine" de l'interface graphique ou à appuyer sur
+ le bouton fermer de la fenêtre et sélectionner "Sauvegarder l'état de
+ la machine" dans la boîte de dialogue.)</para>
+
+ <para>Après cela, l'état de la machine sera "Sauvegardé". À partir de
+ là, vous pouvez la relancer&#xA0;; voir
+<xref linkend="vboxmanage-startvm" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>VBoxManage controlvm &lt;vm&gt; teleport
+ --hostname &lt;nom&gt; --port &lt;port&gt; [--passwordfile
+ &lt;fichier&gt; | --password &lt;mot_de_passe&gt;]</computeroutput>
+ passe la machine en source de téléportation et engage une téléportation
+ sur la cible donnée. Voir <xref linkend="teleporting" /> pour une
+ présentation. Si vous spécifiez le mot de passe facultatif, il doit
+ correspondre à celui donné avec la commande
+ <computeroutput>modifyvm</computeroutput> pour la
+ machine cible&#xA0;; voir <xref linkend="vboxmanage-modifyvm-teleport" />
+ pour des détails.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Quelques options supplémentaires sont disponibles avec
+ <computeroutput>controlvm</computeroutput>, ne modifiant pas directement
+ l'état de la VM en fonction&#xA0;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>L'opération <computeroutput>setlinkstate&lt;1-N&gt;</computeroutput>
+ connecte ou déconnecte les câbles réseaux virtuels à leurs interfaces
+ réseaux.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>nic&lt;1-N&gt;
+ null|nat|bridged|intnet|hostonly|generic</computeroutput>&#xA0;: Avec
+ ceci, vous pouvez définir, pour chaque carte réseau virtuelle de la VM,
+ le type de réseau qui devrait être disponible. Elles peuvent ne pas être
+ connectées à l'hôte
+ (<computeroutput>null</computeroutput>), utiliser network address
+ translation (<computeroutput>nat</computeroutput>), le résaeau bridgé
+ (<computeroutput>bridged</computeroutput>) ou communiquer avec d'autres
+ machines virtuelles en utilisant le réseau interne
+ (<computeroutput>intnet</computeroutput>) ou host-only
+ (<computeroutput>hostonly</computeroutput>) ou accéder à des sous-modes
+ rarement utilisés
+ (<computeroutput>generic</computeroutput>). Ces options correspondent
+ aux modes décrits en détails au <xref
+ linkend="networkingmodes" />.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'opération <computeroutput>guestmemoryballoon</computeroutput>
+ change la taille du ballon mémoire de l'invité, c'est-à-dire la mémoire
+ du système d'exploitation invité affectée par les suppléments invité de VirtualBox
+ et rendue à l'hyperviseur pour être réutilisée par d'autres
+ machines virtuelles. Elle se spécifie en mégaoctets. Pour des détails,
+ voir <xref linkend="guestadd-balloon" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>usbattach</computeroutput> et
+ <computeroutput>usbdettach</computeroutput> rendent les pçriphériques
+ USB de l'hôte, à la volée, visibles pour la machine virtuelle sans besoin de
+ créer des filtres préalablement. Les périphériques USB peuvent être désignés
+ par leur UUID (identifiant unique) ou leur adresse sur le système hôte.</para>
+
+ <para>Vous pouvez utiliser <computeroutput>VBoxManage list
+ usbhost</computeroutput> pour trouver ces informations.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>clipboard
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput> :
+ Avec ce paramètre, vous pouvez sélectionner si le presse-papiers du
+ système d'exploitation de l'hôte ou de l'invité doit être partagé avec
+ l'hôte et l'invfté et comment ; voir <xref linkend="generalsettings" />. Ceci
+ exige que les suppléments invité soient installés dans la machine
+ virtuelle.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>draganddrop
+ disabled|hosttoguest|guesttohost|bidirectional</computeroutput> :
+ Avec ce paramètre, vous pouvez sélectionner le mode glisser/déplacer
+ actuel qui sera utilisé entre l'hôte et la machine virtuelle ;
+ voir <xref linkend="guestadd-dnd" />. Cela exige que les suppléments
+ invité soient installés dans la machine
+ virtuelle.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>vrde on|off</computeroutput> vous permet d'activer
+ ou de désactiver le serveur VRDP s'il est installé.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>vrdeport default|&lt;ports&gt;</computeroutput>
+ modifie le port ou la plage de ports que peut sonder le serveur
+ VRDP&#xA0;; "default" ou "0" signifient le port 3389, celui standard
+ pour RDP. Pour des détails, voir la description de l'option
+ <computeroutput>--vrdeport</computeroutput> au <xref
+ linkend="vboxmanage-modifyvm-other" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>setvideomodehint</computeroutput> demande
+ que le système invité passe dans un mode graphique particulier. Cela exige
+ l'installation des suppléments invité et ne fonctionnera pas pour tous
+ les systèmes invités.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>screenshotpng</computeroutput> prend une impression
+ écran de l'affichage invité et la sauvegarde au format PNG.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'opération <computeroutput>setcredentials</computeroutput> est
+ utilisé pour les identifications distantes dans les invités Windows.
+ Pour des détails, merci de vous reporter au
+ <xref linkend="autologon" />.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>--plugcpu|unplugcpu
+ &lt;id&gt;</computeroutput> : Si vous avez activé le montage à chaud de
+ processeurs, ceci ajoutera un processeur virtuel aux machines virtuelles
+ (ou en supprimera un).
+ <computeroutput>&lt;id&gt;</computeroutput> spécifie l'index du processeur
+ virtuel à ajouter ou à supprimer et il doit être un numéro de 0
+ au numéro maximum du nombre de processeurs configuré.</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>cpuexecutioncap
+ &lt;1-100&gt;</computeroutput>&#xA0;: Cette opération contrôle la
+ quantité de temps processeur que peut utiliser un processeur virtuel.
+ Une valeur de 50 implique qu'un seul processeur virtuel peut utiliser
+ jusqu'à 50% d'un seul processeur de l'hôte.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage discardstate</title>
+
+ <para>Cette commande désactive l'état sauvegardé d'une machine virtuelle
+ qui n'est pas en fonction, ce qui fera redémarrer son système d'exploitation
+ la prochaine fois que vous démarrerez. Cela revient à débrancher le câble
+ d'alimentation d'une machine physique et vous devriez l'éviter si possible.</para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage adoptstate</title>
+
+ <para>Si vous avez un fichier d'état sauvegardé
+ (<computeroutput>.sav</computeroutput>), c'est-à-dire séparé de la configuration
+ de la VM, vous pouvez "adopter" le fichier. Cela passera la VM en état
+ sauvegardé et quand vous la démarrerez, VirtualBox essaiera de la restaurer
+ à partir du fichier d'état sauvegardé que vous avez indiqué. Cette commande
+ ne devrait être utilisée que dans des configurations spéciales.</para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage snapshot</title>
+
+ <para>Cette commande est utilisée pour contrôler les instantanés en ligne de
+ commande. Un instantané consiste en une copie complète des paramètres de la
+ machine virtuelle, copiés à un moment où l'instantané a été pris, et éventuellement
+ un fichier d'état sauvegardé de la machine virtuelle si l'instantané a été
+ pris alors que la machine était en fonction. Après qu'un instantané ait été pris,
+ VirtualBox crée un disque dur de différenciation pour chaque disque dur normal
+ associé à la machine pour que, quand on restaure un instantané, les disques durs
+ virtuels de la machine virtuelle puissent être rapidement réinitialisés en
+ disqualifiant simplement les fichiers de différenciation.</para>
+
+ <para>L'opération <computeroutput>take</computeroutput> prend un instantané de
+ l'état actuel de la machne viruelle. Vous devez fournir un nom pour l'instantané
+ et vous pouvez éventuellement entrer une description. Le nouvel instantané est
+ inséré à l'arborescence des instantanés comme un fichier de l'instantané
+ actuel et il devient le nouvel instantané actuel. Le paramètre
+ <computeroutput>--description</computeroutput> permet de décrire
+ l'instantané. Si vous spécifiez <computeroutput>--live</computeroutput>,
+ la VM ne s'arrêtera pas pendant la création de l'instantané.</para>
+
+ <para>L'opération <computeroutput>delete</computeroutput> efface un
+ instantané (spécifié par son nom ou son UUID). Cela peut être long à se
+ terminer car les images de différenciation associées à l'instantané pourraient
+ devoir être synchronisées avec leurs images de différenciation filles.</para>
+
+ <para>L'opération <computeroutput>restore</computeroutput> restaurera l'instantané
+ donné (spécifié par son nom ou son UUID) en réinitialisant les paramètres
+ de la machine virtuelle et l'état actuel à ceux de l'instantané. L'état
+ actuel précédent de la machine sera perdu. Après cela, l'instantané donné
+ devient le nouvel instantané "actuel" pour que les instantanés consécutifs
+ s'insèrent sous l'instantané à partir duquel on a restauré.</para>
+
+ <para>L'opération <computeroutput>restorecurrent</computeroutput> est un
+ raccourci pour restaurer l'instantané actuel (donc l'instantané d'où provient
+ l'état actuel). Cette sous-commande revient à utiliser la sous-commande
+ "restore" avec le nom ou l'UUID de l'instantané actuel, sauf qu'elle évite
+ l'étape supplémentaire de déterminer ce nom ou cet UUID.</para>
+
+ <para>Avec l'opération <computeroutput>edit</computeroutput>, vous pouvez
+ modifier le nom ou la description d'un instantané existant.</para>
+
+ <para>Avec l'opération <computeroutput>showvminfo</computeroutput>, vous
+ pouvez voir les paramètres de la machine virtuelle stockées dans un instantané
+ existant.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-closemedium">
+ <title>VBoxManage closemedium</title>
+
+ <para>Cette commande supprime un fichier image de disque dur, de DVD ou
+ disquette, d'un registre de médias VirtualBox.<footnote>
+ <para>Avant VirtualBox 4.0, il fallait appeler VBoxManage
+ openmedium avant de pouvoir attacher un média à une machine virtuelle&#xA0;;
+ cet appel "enregistrait" le média avec le registre des médias global de
+ VirtualBox. Avec VirtualBox 4.0, ce n'est plus nécessaire&#xA0;; les
+ médias sont ajoutés aux registres des médias automatiquement. L'appel
+ "closemedium" a cependant été conservé pour permettre de supprimer
+ explicitement un média du registre.</para>
+ </footnote></para>
+
+ <para>Éventuellement, vous pouvez demander que l'image seit effacée. Vous aurez
+ les retours circonstanciés selon lesquels la suppression a échoué, mais l'image
+ ne sera pas enregistrée.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-storageattach">
+ <title>VBoxManage storageattach</title>
+
+ <para>Cette commande attache/modifie/supprime un média de stockage connecté
+ à un contrôleur de stockage précédemment ajouté avec la commande
+ <computeroutput>storagectl</computeroutput> (voir la section précédente).
+ La syntaxe est ainsi&#xA0;:</para>
+
+ <screen>VBoxManage storageattach &lt;uuid|nomvm&gt;
+ --storagectl &lt;name&gt;
+ [--port &lt;number&gt;]
+ [--device &lt;number&gt;]
+ [--type dvddrive|hdd|fdd]
+ [--medium none|emptydrive|
+ &lt;uuid&gt;|&lt;filename&gt;|host:&lt;drive&gt;|iscsi]
+ [--mtype normal|writethrough|immutable|shareable]
+ [--comment &lt;text&gt;]
+ [--setuuid &lt;uuid&gt;]
+ [--setparentuuid &lt;uuid&gt;]
+ [--passthrough on|off]
+ [--tempeject on|off]
+ [--nonrotational on|off]
+ [--discard on|off]
+ [--bandwidthgroup name|none]
+ [--forceunmount]
+ [--server &lt;name&gt;|&lt;ip&gt;]
+ [--target &lt;target&gt;]
+ [--tport &lt;port&gt;]
+ [--lun &lt;lun&gt;]
+ [--encodedlun &lt;lun&gt;]
+ [--username &lt;username&gt;]
+ [--password &lt;password&gt;]
+ [--initiator &lt;initiator&gt;]
+ [--intnet]</screen>
+
+ <para>Un certain nombre de paramètres sont requis classiquement&#xA0;; ceux
+ à la fin de la liste ne sont requis que pour les cibles iSCSI (voir ci-dessous).</para>
+
+ <para>Les paramètres classiques sont&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Le nom ou l'UUID de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>storagectl</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom du contrôleur de stockage. Obligatoire. Vous pouvez obtenir
+ la liste des contrôleurs de stockage actuellement attachés à une VM
+ avec <computeroutput>VBoxManage showvminfo</computeroutput>&#xA0;; voir
+ <xref linkend="vboxmanage-showvminfo" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>port</glossterm>
+
+ <glossdef>
+ <para>Le numéro du port du contrôleur de stockage qui doit être
+ modifié. Obligatoire, sauf si le contrôleur de stockage n'a qu'un
+ seul port.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>device</glossterm>
+
+ <glossdef>
+ <para>Le numéro du périphérique du port à modifier. Obligatoire,
+ sauf si le contrôleur de stockage n'a qu'un périphérique par port.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>type</glossterm>
+
+ <glossdef>
+ <para>Définit le type de lecteur auquel doit être
+ attaché/détaché/modifié un média. On ne peut se passer de cet
+ argument que si le type de média peut être déterminé par le média
+ donné avec l'argument <computeroutput>--medium</computeroutput> argument ou
+ à partir de précédents rattachements de médias</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>medium</glossterm>
+
+ <glossdef>
+ <para>Spécifie ce qu'il faut attacher. Les valeurs suivantes sont
+ supportées&#xA0;:<itemizedlist>
+ <listitem>
+ <para>"none"&#xA0;: Tout périphérique existant serait supprimé du
+ slot donné.</para>
+ </listitem>
+
+ <listitem>
+ <para>"emptydrive"&#xA0;: Pour un lecteur amovible ou de DVD
+ virtuel, cela fait se comporter le périphérique comme un lecteur
+ amovible dans lequel on n'a inséré aucun média.</para>
+ </listitem>
+
+ <listitem>
+ <para>"additions"&#xA0;: Seulement pour un lecteur DVD virtuel,
+ ceci connecte l'image des <emphasis>Suppléments invité de
+ VirtualBox</emphasis> au slot de périphérique donné.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous spécifiez un UUID, il doit s'agir de l'UUID d'un
+ média de stockage déjà connu de VirtualBox (par exemple parce qu'il
+ a été attaché à une autre machine virtuelle). Voir
+ <xref linkend="vboxmanage-list" /> pour la façon de lister
+ les médias connus. Ce média est alors attaché au slot du
+ périphérique donné.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous spécifiez un nom de fichier, il doit s'agir du
+ chemin complet vers une image de disque existante (ISO, RAW, VDI, VMDK
+ ou autre), qui est donc attaché au slot du périphérique donné.</para>
+ </listitem>
+
+ <listitem>
+ <para>"host:&lt;lecteur&gt;": Pour un lecteur amovible ou de DVD
+ virtuel seulement, ceci connecte le slot du périphérique donné
+ au lecteur amovible ou de DVD spécifié sur l'ordinateur hôte.</para>
+ </listitem>
+
+ <listitem>
+ <para>"iscsi"&#xA0;: Pour les disques durs virtuels seulement,
+ cela permet de spécifier une cible iSCSI. Dans ce cas, vous
+ devez donner davantage de paramètres&#xA0;; voir ci-dessous.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Certaines modifications ci-dessus, en particulier concernant
+ les médias amovibles (disquettes ou CDs/DVDs), peuvent prendre effet
+ pendant que la VM est en fonction. Les autres (changement de périphérique
+ ou dans les slots des disques durs) exigent que la VM soit éteinte.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>mtype</glossterm>
+
+ <glossdef>
+ <para>Définit la façon dont ce média se comporte vis-à-vis des
+ instantanés et des opérations d'écriture. Voir <xref linkend="hdimagewrites" />
+ pour des détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>comment</glossterm>
+
+ <glossdef>
+ <para>Une description que vous souhaitez stocker avec ce média (facultative&#xA0;;
+ par exemple pour une cible iSCSI, "Gros serveur de stockage de l'étage
+ inférieur"). C'est purement descriptif et facultatif pour que le
+ média fonctionne correctement.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>setuuid, setparentuuid</glossterm>
+
+ <glossdef>
+ <para>Modifie l'UUID ou l'UUID parent d'un média avant de l'attacher
+ à une VM. C'est une option pour experts. Une utilisation impropre
+ peut rendre le média inutilisable ou donner des configurations de VM
+ cassées si une autre VM se réfère déjà au même média. La variante
+ la plus fréquemment utilisée est <code>--setuuid ""</code>, qui
+ affecte un nouvel UUID (aléatoire) à une image. Cela sert à résoudre
+ des erreurs d'UUID dupliqués si on a dupliqué une image par les
+ outils de copie de fichiers.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>passthrough</glossterm>
+
+ <glossdef>
+ <para>Seulement pour un lecteur DVD virtuel, vous pouvez activer
+ le support de gravure sur DVD (actuellement expérimental&#xA0;; voir
+ <xref linkend="storage-cds" />).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>tempeject</glossterm>
+
+ <glossdef>
+ <para>Seulement pour un lecteur DVD virtuel, vous pouvez configurer
+ le comportement de l'éjection du média déclenchée par l'invité.
+ Si vous l'activez, l'éjection n'a qu'un effet temporaire. Si vous
+ éteignez puis redémarrez la VM, le média configuré au départ sera
+ toujours dans le lecteur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>nonrotational</glossterm>
+
+ <glossdef>
+ <para>Ce paramètre permet d'activer le drapeau non-rotational pour
+ les disques durs virtuels. Certains invités (comme Windows 7+) gèrent
+ de tels disques comme des SSDs et ne fragmentent pas de tels médias.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>bandwidthgroup</glossterm>
+
+ <glossdef>
+ <para>Définit le groupe de bande passante à utiliser pour le
+ périphérique donné&#xA0;; voir <xref linkend="storage-bandwidth-limit" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>forceunmount</glossterm>
+
+ <glossdef>
+ <para>Seulement pour un lecteur DVD ou amovible virtuel, cela démonte
+ de force le DVD/CD/disquette ou monte un nouveau DVD/CD/disquette
+ même si celui précédent est verrouillé en lecture par l'invité.
+ De nouveau, voir <xref linkend="storage-cds" /> pour des détails.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+
+ <para>Quand on utilise "iscsi" avec le paramètre
+ <computeroutput>--medium</computeroutput> pour le support iSCSI --
+ voir <xref linkend="storage-iscsi" /> --, vous pouvez ou devez utiliser
+ des paramètres supplémentaires&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>server</glossterm>
+
+ <glossdef>
+ <para>Le nom de l'hôte ou l'adresse IP de la cible iSCSI&#xA0;;
+ requis.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>target</glossterm>
+
+ <glossdef>
+ <para>La chaîne du nom de la cible. Il est déterminé par la cible iSCSI
+ et il est utilisé pour identifier la ressource de stockage&#xA0;;
+ requis.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>tport</glossterm>
+
+ <glossdef>
+ <para>Numéro de port TCP/IP du service iSCSI sur la cible (facultatif).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>lun</glossterm>
+
+ <glossdef>
+ <para>Numéro d'unité logique de la ressource cible (facultatif).
+ Souvent, cette valeur vaut zéro.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>username, password</glossterm>
+
+ <glossdef>
+ <para>Nom d'utilisateur et mot de passe (initiator secret) pour
+ l'authentification sur la cible si nécessaire (facultatif).<note>
+ <para>Le nom d'utilisateur et le mot de passe sont stockés sans
+ chiffrement (donc en clair) dans le fichier XML de configuration
+ de la VM si vous ne fournissez aucun paramètre de mot de passe.
+ Quand vous spécifiez pour la première fois un paramètre de mot de passe,
+ le mot de passe est stocké et chiffré.</para>
+ </note></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>intnet</glossterm>
+
+ <glossdef>
+ <para>Si spécifié, connecte à la cible iSCSI via le réseau
+ interne. Cela nécessite une configuration supplémentaire décrite au
+ <xref linkend="iscsi-intnet" />.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-storagectl">
+ <title>VBoxManage storagectl</title>
+
+ <para>Cette commande attache/modifie/supprime un contrôleur de stockage.
+ Après elle, on peut attacher des médias virtuels au contrôleur avec la
+ commande <computeroutput>storageattach</computeroutput> (voir la prochaine
+ section).</para>
+
+ <para>La syntaxe est comme suit&#xA0;:</para>
+
+ <screen>VBoxManage storagectl &lt;uuid|nomvm&gt;
+ --name &lt;nom&gt;
+ [--add &lt;ide/sata/scsi/floppy&gt;]
+ [--controller &lt;LsiLogic|LSILogicSAS|BusLogic|
+ IntelAhci|PIIX3|PIIX4|ICH6|I82078&gt;]
+ [--sataportcount &lt;1-30&gt;]
+ [--hostiocache on|off]
+ [--bootable on|off]
+ [--remove]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>uuid|nomvm</glossterm>
+
+ <glossdef>
+ <para>Nom ou UUID de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>nom</glossterm>
+
+ <glossdef>
+ <para>Nom du contrôleur de stockage. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>add</glossterm>
+
+ <glossdef>
+ <para>Définit le type de bus système auquel doit être connecté le
+ contrôleur de stockage.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>controller</glossterm>
+
+ <glossdef>
+ <para>Permet de choisir le type de chipset à émuler pour le
+ contrôleur de stockage donné.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>sataportcount</glossterm>
+
+ <glossdef>
+ <para>Ceci détermine le nombre de ports que le contrôleur SATA
+ devrait supporter.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>hostiocache</glossterm>
+
+ <glossdef>
+ <para>Configure l'utilisation du cache E/S de l'hôte pour toutes les
+ images de disque attachées à ce contrôleur de stockage. Pour des détails,
+ merci de voir <xref
+ linkend="iocaching" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>bootable</glossterm>
+
+ <glossdef>
+ <para>Sélectionne si ce contrôleur est amorçable.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>remove</glossterm>
+
+ <glossdef>
+ <para>Supprime le contrôleur de stockage de la config de la VM.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage bandwidthctl</title>
+
+ <para>Cette commande crée/efface/modifie/affiche les groupes de bande
+ passante de la machine virtuelle donnée&#xA0;:<screen>VBoxManage bandwidthctl &lt;uuid|nomvm&gt;
+ add &lt;nom&gt; --type disk|network --limit &lt;megabytes per second&gt;[k|m|g|K|M|G] |
+ set &lt;nom&gt; --limit &lt;megabytes per second&gt;[k|m|g|K|M|G] |
+ remove &lt;nom&gt; |
+ list [--machinereadable]</screen></para>
+
+ <para>Les sous-commandes suivantes sont disponibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>add</computeroutput>, crée un nouveau groupe de
+ bande passante d'un type donné.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>set</computeroutput>, modifie la limite d'un groupe
+ de bande passante existante.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>remove</computeroutput>, détruit un groupe de
+ bande passante.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>list</computeroutput>, affiche tous les groupes
+ de bande passante définis pour la VM donnée.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>Les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm>uuid|nomvm</glossterm>
+
+ <glossdef>
+ <para>Le nom ou l'UUID de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>nom</glossterm>
+
+ <glossdef>
+ <para>Nom du groupe de bande passante. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>type</glossterm>
+
+ <glossdef>
+ <para>Type de groupe de bande passante. Obligatoire. Deux types sont
+ supportés&#xA0;: <computeroutput>disk</computeroutput> et
+ <computeroutput>network</computeroutput>. Voir
+ <xref linkend="storage-bandwidth-limit" /> ou
+ <xref linkend="network_bandwidth_limit" /> pour une description d'un
+ type particulier.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>limit</glossterm>
+
+ <glossdef>
+ <para>Spécifie la limite du groupe donné. On peut le modifier pendant
+ que la VM est en fonction. L'unité par défaut est en mégaoctet par
+ seconde. Vous pouvez modifier l'unité en spécifiant un des
+ suffixes suivants&#xA0;: <computeroutput>k</computeroutput> pour
+ kilobits/s, <computeroutput>m</computeroutput> pour mégabits/s,
+ <computeroutput>g</computeroutput> pour gigabits/s,
+ <computeroutput>K</computeroutput> pour kilo octets/s,
+ <computeroutput>M</computeroutput> pour méga octets/s,
+ <computeroutput>G</computeroutput> pour giga octets/s.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ <note>
+ <para>Les limites de bande passante du réseau ne s'appliquent qu'au
+ trafic émis par les machines virtuelles. Le trafic reçu par les VMs est
+ illimité.</para>
+ </note>
+ <note>
+ <para>Pour supprimer un groupe de bande passante, il ne doit être référencé
+ sur aucun disque ou adaptateur d'une VM en fonction.</para>
+ </note>
+ </para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage showhdinfo</title>
+
+ <para>Cette commande affiche des informations sur une image de disque
+ virtuelle, en particulier sa taille sur le disque, son type et les machines
+ virtuelles qui l'utilisent.<note>
+ <para>Pour être compatible avec des versions plus anciennes de VirtualBox
+ la commande "showvdiinfo" est également supportée et associée en
+ interne à la commande "showhdinfo".</para>
+ </note></para>
+ <para>L'image de disque doit être spécifiée soit par son UUID (si le média
+ est enregistré), soit par le nom du fichier. Les images enregistrées peuvent
+ être listées par
+ <computeroutput>VBoxManage list hdds</computeroutput> (voir <xref linkend="vboxmanage-list" />
+ pour plus d'informations). Un nom de fichier doit être spécifié en tant
+ que chemin valide, soit absolu soit relatif en partant du répertoire
+ actuel.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-createvdi">
+ <title>VBoxManage createhd</title>
+
+ <para>Cette commande crée une nouvelle de disque dur virtuel. La
+ syntaxe est comme suit&#xA0;:</para>
+
+ <screen>VBoxManage createhd --filename &lt;nomfichier&gt;
+ --size &lt;mégaoctets&gt;
+ [--format VDI|VMDK|VHD] (par défaut : VDI)
+ [--variant Standard,Fixed,Split2G,Stream,ESX]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>nomfichier</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir un nom de fichier. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>mégaoctets</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de définir la capacité de l'image, en MiO.
+ Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>format</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir un format de fichier pour le fichier
+ de sortie, différent du format du fichier d'entrée.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>variant</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir une variante du format de fichier pour le
+ fichier de sortie. C'est une liste de drapeaux séparée par des virgules.
+ Toutes les combinaisons ne sont pas supportées, spécifier des
+ drapeaux incohérents donne un message d'erreur.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist> <note>
+ <para>Pour être compatible avec d'anciennes versions de VirtualBox, la
+ commande "createvdi" est également supportée et associée en interne avec
+ la commande "createhd".</para>
+ </note></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-modifyvdi">
+ <title>VBoxManage modifyhd</title>
+
+ <para>Avec la commande <computeroutput>modifyhd</computeroutput>, vous pouvez
+ modifier les caractéristiques d'une image de disque après l'avoir
+ créé&#xA0;:<screen>VBoxManage modifyhd &lt;uuid&gt;|&lt;nomfichier&gt;
+ [--type normal|writethrough|immutable|shareable|
+ readonly|multiattach]
+ [--autoreset on|off]
+ [--compact]
+ [--resize &lt;megabytes&gt;|--resizebyte &lt;octets&gt;]</screen><note>
+ <para>Malgré le "hd" du nom de la sous-commande, la commande fonctionne
+ avec toutes les images de disque et pas seulement les disques durs. Pour
+ être compatible avec les anciennes versions de VirtualBox, la commande
+ "modifyvdi" est également supportée et a été associée en interne à la
+ commande"modifyhd".</para>
+ </note></para>
+
+ <para>L'image de disque doit être spécifiée soit par son UUID (si le média
+ est enregistré), soit par le nom du fichier. Les images enregistrées peuvent
+ être listées par
+ <computeroutput>VBoxManage list hdds</computeroutput> (voir <xref linkend="vboxmanage-list" />
+ pour plus d'informations). Un nom de fichier doit être spécifié en tant
+ que chemin valide, soit absolu soit relatif en partant du répertoire
+ actuel.</para>
+ <para>Les options suivantes sont disponibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Avec l'argument <computeroutput>--type</computeroutput>, vous
+ pouvez modifier le type d'une image existante entre le mode normal,
+ immuable, write-through et autres modes&#xA0;; voir <xref
+ linkend="hdimagewrites" /> pour des détails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour les disques durs immuables seulement (de différenciation),
+ l'option <computeroutput>--autoreset on|off</computeroutput> détermine
+ si le disque est automatiquement réinitialisé à chaque démarrage de
+ la VM (de nouveau, voir <xref linkend="hdimagewrites" />). Par défaut,
+ c'est actif.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'option <computeroutput>--compact</computeroutput>,
+ peut être utilisée pour compresser des images de disque (à savoir
+ supprimer des blocs qui ne contiennent que des zéros). Cela réallègera
+ une image à taille dynamique&#xA0;; cela réduira la taille
+ <emphasis>physique</emphasis> de l'image sans changer la taille logique
+ du disque virtuel. La compression fonctionne aussi bien pour les images
+ de base que celles de différenciation créées dans un instantané.</para>
+
+ <para>Pour que l'opération soit efficace, il faut d'abord libérer de
+ l'espace dans le système invité en y mettant des zéros via le logiciel
+ adapté. Pour les invités Windows, vous pouvez utiliser l'outil
+ <computeroutput>sdelete</computeroutput> de Microsoft.
+ Exécutez <computeroutput>sdelete -z</computeroutput> dans l'invité pour
+ mettre des zéros dans l'espace libre avant de compresser l'image de
+ disque virtuel. Pour Linux, utilisez l'outil
+ <code>zerofree</code> qui supporte les systèmes de fichiers s ext2/ext3.
+ Pour les invités Mac OS X, utilisez la fonction <emphasis>Supprimer l'espace libre</emphasis> de
+ <emphasis>l'outil de disque</emphasis> intégré. Utilisez
+ <emphasis>Zero Out Data</emphasis>.</para>
+
+ <para>Remarquez que la compression n'est actuellement disponible que
+ pour les images VDI. Vous pouvez obtenir la même chose en mettant des
+ zéros sur les blocs libres et clonant le disque vers un autre format
+ dynamique. Vous pouvez utiliser ce contournement jusqu'à ce que la
+ compression soit supportée pour les autres formats de disque que VDI.</para>
+ </listitem>
+
+ <listitem>
+ <para>L'option <computeroutput>--resize x</computeroutput> (où x est
+ le nouvel espace total désiré en <emphasis role="bold">mégaoctets</emphasis>)
+ vous permet de modifier la capacité d'une image existante&#xA0;; ceci
+ ajuste la taille <emphasis>logique</emphasis> d'un disque virtuel sans
+ beaucoup changer la taille physique.<footnote>
+ <para>Le redimensionnement d'images a été ajouté à VirtualBox 4.0.</para>
+ </footnote> Cela ne fonctionne actuellement que pour les formats
+ VDI et VHD et pour les variantes, à taille dynamique, et vous ne
+ pouvez l'utiliser que pour augmenter (ou réviser) la capacité.
+ Par exemple, si vous avez créé au départ un disque de 10G à présent
+ plein, vous pouvez utiliser la commande <computeroutput>--resize 15360</computeroutput>
+ pour passer la capacité à 15G (15,360Mo) sans devoir créer une nouvelle
+ image et y copier toutes les données à partir d'un e machine virtuelle.
+ Cependant, remarquez que cela ne change que la capacité du lecteur&#xA0;;
+ vous devrez ensuite, en général, utiliser un outil de gestion des
+ partitions dans l'invité pour ajuster la partition principale et
+ remplir le lecteur.</para><para>L'option <computeroutput>--resizebyte x</computeroutput>
+ fait presque la même chose mais x est exprimé en octets au lieu de
+ mégaoctets.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-clonevdi">
+ <title>VBoxManage clonehd</title>
+
+ <para>Cette commande duplique une image de disque dur virtuel enregistrée
+ vers un nouveau fichier image ayant un nouvel identifiant unique (UUID). La
+ nouvelle image peut être transférée vers un autre système hôte ou réimportée
+ dans VirtualBox en utilisant le gestionnaire de médias virtuels&#xA0;; voir
+ <xref linkend="vdis" /> et <xref linkend="cloningvdis" />. La syntaxe est
+ comme suit&#xA0;:</para>
+
+ <screen>VBoxManage clonehd &lt;uuid&gt;|&lt;nomfichier&gt; &lt;outputfile&gt;
+ [--format VDI|VMDK|VHD|RAW|&lt;other&gt;]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--existing]</screen>
+
+ <para>L'image de disque à cloner et celle cible doivent être spécifiées
+ soit par leur UUID (si le média
+ est enregistré), soit par leur nom du fichier. Les images enregistrées peuvent
+ être listées par
+ <computeroutput>VBoxManage list hdds</computeroutput> (voir <xref linkend="vboxmanage-list" />
+ pour plus d'informations). Un nom de fichier doit être spécifié en tant
+ que chemin valide, soit absolu soit relatif en partant du répertoire
+ actuel.</para>
+ <para>Les options suivantes sont disponibles&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>--format</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir un format de fichier pour le fichier de
+ sortie, autre que celui du fichier d'entrée.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--variant</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir une variante de format de fichier pour le
+ fichier de sortie. C'est une liste de drapeaux séparée par des virgules.
+ Toutes les combinaisons ne sont pas supportées, spécifier des
+ drapeaux incohérents donne un message d'erreur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--existing</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Effectue le clonage sur un média de destination existant. Seule
+ la partie du média source convenant au média de destination est copiée.
+ Cela signifie que si le média de destination est plus petit que
+ la source, seule une partie en est copiée, et si le média de
+ destination est plus gros que la source, le reste de l'espace du
+ média de destination reste inchangé.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist> <note>
+ <para>Pour être compatible avec les anciennes versions de VirtualBox,
+ la commande "clonevdi" est également supportée et elle a été associée
+ en interne à la commande "clonehd".</para>
+ </note></para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage convertfromraw</title>
+
+ <para>Cette commande convertit une image de disque brute en fichier VirtualBox Disk Image
+ (VDI). La syntaxe est la suivante&#xA0;:</para>
+
+ <screen>VBoxManage convertfromraw &lt;filename&gt; &lt;outputfile&gt;
+ [--format VDI|VMDK|VHD]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--uuid &lt;uuid&gt;]
+VBoxManage convertfromraw stdin &lt;fichiersortie&gt; &lt;octets&gt;
+ [--format VDI|VMDK|VHD]
+ [--variant Standard,Fixed,Split2G,Stream,ESX]
+ [--uuid &lt;uuid&gt;]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>--bytes</computeroutput></glossterm>
+
+ <glossdef>
+ <para>La taille du fichier image, en octets, fournie en entrée.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--format</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Sélectionnez le format de l'image de disque à créer. Par
+ défaut, c'est VDI.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--variant</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de choisir une variante de format de fichier pour le
+ fichier en sortie. C'est une liste de drapeaux séparée par des
+ virgules. Toutes les combinaisons ne sont pas supportées, spécifier
+ des drapeaux incohérents donne un message d'erreur.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--uuid</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Permet de spécifier l'UUID ou le fichier de sortie.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist> La deuxième forme oblige VBoxManage à lire le contenu de
+ l'image de disque à partir de l'entrée standard (utile pour utiliser
+ cette commande en ligne).</para>
+
+ <para><note>
+ <para>Pour être compatible avec d'anciennes versions de VirtualBox,
+ la commande "convertdd" est aussi supportée et elle est associée en interne
+ à la commande "convertfromraw".</para>
+ </note></para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage getextradata/setextradata</title>
+
+ <para>Ces commandes vous permettent d'attacher et de récupérer des chaînes de
+ données dans une machine virtuelle ou à une configuration de VirtualBox (en
+ spécifiant <computeroutput>global</computeroutput> au lieu d'un nom de machine
+ virtuelle). Vous pouvez spécifier une clé (comme chaîne de texte) pour
+ associer les données que vous pourrez récupérer plus tard. Par exemple&#xA0;:</para>
+
+ <screen>VBoxManage setextradata Fedora5 installdate 2006.01.01
+VBoxManage setextradata SUSE10 installdate 2006.02.02</screen>
+
+ <para>associerait la chaîne "2006.01.01" à la clé installdate pour la
+ machine virtuelle Fedora5, et "2006.02.02" pour la machine SUSE10. Vous
+ pourriez récupérer l'information comme suit&#xA0;:</para>
+
+ <screen>VBoxManage getextradata Fedora5 installdate</screen>
+
+ <para>qui renverrait</para>
+
+ <screen>VirtualBox Command Line Management Interface Version @VBOX_VERSION_MAJOR@.@VBOX_VERSION_MINOR@.@VBOX_VERSION_BUILD@
+(C) 2005-@VBOX_C_YEAR@ @VBOX_VENDOR@
+All rights reserved.
+
+Value: 2006.01.01</screen>
+ <para>Pour supprimer une clé, la commande <computeroutput>setextradata</computeroutput>
+ doit être exécutée sans spécifier de données (la clé seule), par exemple:
+ </para>
+
+ <screen>VBoxManage setextradata Fedora5 installdate</screen>
+
+ </sect1>
+
+ <sect1 id="vboxmanage-setproperty">
+ <title>VBoxManage setproperty</title>
+
+ <para>Cette commande est utilisée pour modifier des paramètres globaux
+ qui modifient toute l'installation de VirtualBox. Certains d'entre eux
+ correspondent aux paramètres de la boîte de dialogue "Paramètres globaux" de
+ l'interface graphique. Les propriétés suivantes sont disponibles&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>machinefolder</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci spécifie le dossier par défaut dans lequel sont
+ stockées les définitions de la machine virtuelle&#xA0;; voir <xref linkend="vboxconfigdata" /> pour les détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>hwvirtexclusive</computeroutput></glossterm>
+ <glossdef>
+ <para>Ceci spécife si VirtualBox utilisera en exclusivité les
+ extensions de virtualisation matérielle (Intel VT-x ou AMD-V) du
+ processeur du système hôte ; voir <xref linkend="hwvirt" />. Si
+ vous souhaitez partager ces extensions avec d'autres hyperviseurs en
+ fonction en même temps, vous devez désactiver ce paramètre.
+ Cela a des implications négatives en termes de performance.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm><computeroutput>vrdeauthlibrary</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci indique la bibliothèque à utiliser quand on a sélectionné
+ l'authentification "externe" pour une machine virtuelle en particulier&#xA0;;
+ voir <xref linkend="vbox-auth" /> pour des détails.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>websrvauthlibrary</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci spécifie la bibliothèque utilisée par le service web
+ pour authentifier les utilisateurs. Pour des détails sur le service
+ web de VirtualBox, merci de vous reporter au manuel de référence SDK
+ distinct de VirtualBox (voir <xref
+ linkend="VirtualBoxAPI" />).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>vrdeextpack</computeroutput></glossterm>
+ <glossdef>
+ <para>Ceci spécifie la bibliothèque qui implémente l'extension Bureau
+ distant de VirtualBox.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>loghistorycount</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci sélectionne le nombre de journaux de VMs (anciens)
+ conservés.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>autostartdbpath</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci sélectionne le chemin vers la base de données autostart.
+ Voir <xref linkend="autostart" />.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>defaultfrontend</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ceci sélectionne l'interface globale des VMs. Voir
+ <xref linkend="vboxmanage-startvm" />.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage usbfilter add/modify/remove</title>
+
+ <para>Les commandes <computeroutput>usbfilter</computeroutput> sont utilisées
+ pour travailler avec des filtres USB dans des machines virtuelles ou avec
+ des filtres globaux qui concernent tout le paramétrage de VirtualBox. Les
+ filtres globaux sont appliqués avant les filtres spécifiques aux machines et
+ ils peuvent être utilisés pour empêcher les périphériques d'être capturés par
+ une machine virtuelle. Les filtres globaux s'appliquent toujours dans un
+ ordre particulier, et seul le premier filtre convenant à un périphérique est
+ appliqué. Par exemple, si le premier filtre global dit de garder (rendre
+ disponible) une carte mémoire Kingston particulière et le deuxième d'ignorer
+ tous les périphériques Kingston, cette carte mémoire sera disponible pour
+ toutes les machines ayant un filtre adéquat mais pas les autres périphériques
+ Kingston.</para>
+
+ <para>Lors de la création d'un filtre USB en utilisant
+ <computeroutput>usbfilter add</computeroutput>, vous devez fournir trois ou
+ quatre paramètres obligatoires. L'index spécifie la position du filtre dans
+ la liste. S'il y a déjà un filtre à cette place, lui-mâme et les suivants
+ seront déplacés. Sinon, le nouveau filtre sera ajouté à la fin de la liste.
+ Le paramètre <computeroutput>target</computeroutput> sélectionne la
+ machine virtuelle à laquelle devrait être attaché le
+ filtre, sinon utilisez "global" pour l'appliquer à toutes les machines virtuelles.
+ <computeroutput>name</computeroutput> est le nom du nouveau filtre et
+ des filtres globaux, <computeroutput>action</computeroutput> autorise les
+ machines à accéder aux périphériques correspondant à la description du
+ filtre ("hold") ou ne leur donne pas accès ("ignore"). En outre, vous devriez
+ spécifier des paramètres de filtrage. Vous pouvez trouver les paramètres des
+ périphériques attachés à votre système en utilisant <computeroutput>VBoxManage list usbhost</computeroutput>.
+ Enfin, vous pouvez spécifier si le filtre devrait être actif, et pour les
+ filtres globaux, s'ils concernent les périphériques locaux, à distance (par
+ connexion RDP) ou autrement.</para>
+
+ <para>Quand vous modifiez un filtre USB en utilisant
+ <computeroutput>usbfilter modify</computeroutput>, vous devez spécifier le
+ filtre par index (voir la sortie de
+ <computeroutput>VBoxManage list usbfilters</computeroutput> pour voir les
+ indexes des filtres globaux et <computeroutput>VBoxManage
+ showvminfo</computeroutput> pour voir les indexes des machines individuelles),
+ et par cible, laquelle est soit une machine virtuelle, soit "global". Les
+ propriétés modifiables sont les mêmes que pour <computeroutput>usbfilter
+ add</computeroutput>. Pour supprimer un filtre, utilisez <computeroutput>usbfilter
+ remove</computeroutput> et spécifiez l'index et la cible.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-sharedfolder">
+ <title>VBoxManage sharedfolder add/remove</title>
+
+ <para>Cette commande vous permet de partager des dossiers de l'ordinateur hôte
+ avec les systèmes d'exploitation invités. Pour cela, il faut que les systèmes
+ invités aient une version installée des Suppléments invité qui supporte cette
+ fonctionnalité.</para>
+
+ <para>Les dossiers partagés sont décrits en détails au <xref
+ linkend="sharedfolders" />.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-guestproperty">
+ <title>VBoxManage guestproperty</title>
+
+ <para>Les commandes "guestproperty" vous permettent de voir ou de définir
+ les propriétés d'une machine virtuelle en fonction. Merci de voir <xref linkend="guestadd-guestprops" />
+ pour une présentation. Comme il y est expliqué, les propriétés de l'invité
+ sont des pairs de chaînes clé/valeur arbitraires qu'on peut changer et lire
+ depuis l'hôte ou l'invité, donc on peut les utiliser comme des canaux de
+ communication à faible volume pour des chaînes du moment qu'un invité est
+ en fonction et a installé les suppléments invité. De plus, un certain nombre
+ de valeurs dont les clés commencent par "/VirtualBox/" sont automatiquement
+ définies et maintenues par les suppléments invité.</para>
+
+ <para>Les sous-commandes sont disponibles (où
+ <computeroutput>&lt;vm&gt;</computeroutput>, dans chaque cas, peut être
+ soit un nom soit un UUID d'une VM, comme pour les autres commandes de
+ VBoxManage)&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>enumerate &lt;vm&gt; [--patterns
+ &lt;pattern&gt;]</computeroutput>&#xA0;: Ceci liste toutes les
+ propriétés invité disponibles pour une VM donnée avec leur valeur.
+ Cette liste sera très limitée si le processus service de l'invité
+ ne peut pas être contacté, notamment car la VM n'est pa en fonction
+ ou les suppléments invité ne sont pas installés.</para>
+
+ <para>Si vous spécifiez <computeroutput>--patterns
+ &lt;échantillon&gt;</computeroutput>, il agit comme un filtre pour ne
+ lister que les propriétés correspondant à l'échantillon donné. L'échantillon
+ peut contenir les caractères jokers suivants&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>*</computeroutput> (astérisque)&#xA0;:
+ représente n'importe quel nombre de caractères&#xA0;; par exemple,
+ "<computeroutput>/VirtualBox*</computeroutput>" correspondrait
+ à toutes les propriétés commençant par "/VirtualBox".</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>?</computeroutput> (point d'interrogation)&#xA0;:
+ représente un seul caractère de votre choix&#xA0;; par exemple,
+ "<computeroutput>fo?</computeroutput>" correspondrait à "foo"
+ et à "for".</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>|</computeroutput> (symbole pipe)&#xA0;:
+ peut être utilisé pour spécifier plusieurs échantillons alternatifs&#xA0;;
+ par exemple, "<computeroutput>s*|t*</computeroutput>" correspondrait
+ à tout ce qui commence par un "s" ou un "t".</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>get &lt;vm&gt;</computeroutput>&#xA0;: Ceci ne
+ récupère la valeur que d'une propriété. Si la propriété est introuvable
+ (par exemple car l'invité n'est pas en fonction), ceci affichera
+ <screen>No value set!</screen></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>set &lt;vm&gt; &lt;propriété&gt; [&lt;valeur&gt;
+ [--flags &lt;drapeaux&gt;]]</computeroutput>&#xA0;: Ceci vous permet
+ de définir une propriété invité en spécifiant la clé et la valeur.
+ Si vous ne mettez pas <computeroutput>&lt;valeur&gt;</computeroutput>,
+ la propriété est effacée. Avec <computeroutput>--flags</computeroutput>,
+ vous pouvez éventuellement spécifier un comportement supplémentaire
+ (vous pouvez en combiner plusieurs en les séparant par des virgules)&#xA0;:<itemizedlist>
+ <listitem>
+ <para><computeroutput>TRANSIENT</computeroutput>&#xA0;: la
+ valeur ne sera pas stockée avec les données de la VM quand la
+ VM exite&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>TRANSRESET</computeroutput>&#xA0;: la valeur
+ sera effacée dès que la VM redémarrera et/ou existera&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>RDONLYGUEST</computeroutput>&#xA0;: la
+ valeur ne peut être modifiée que par l'hôte, l'invité ne
+ peut que la lire&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>RDONLYHOST</computeroutput>&#xA0;: inversement,
+ cette valeur ne peut être modifiée que par l'invité, l'hôte
+ ne peut que la lire&#xA0;;</para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>READONLY</computeroutput>&#xA0;: la
+ combinaison des deux, la valeur ne peut pas être modifiée.</para>
+ </listitem>
+ </itemizedlist></para>
+ </listitem>
+
+ <listitem>
+ <para><computeroutput>wait &lt;vm&gt; &lt;échantillon&gt; --timeout
+ &lt;timeout&gt;</computeroutput>&#xA0;: Ceci attend une valeur
+ particulière décrite par "échantillon" à modifier ou effacer ou à
+ créer. Les règles de l'échantillon sont les mêmes qu'avec la commande
+ "enumerate" ci-dessus.</para>
+ </listitem>
+ <listitem>
+ <para><computeroutput>delete &lt;vm&gt; &lt;propriété&gt;
+ </computeroutput>&#xA0;: Efface une propriété invité définie précédemment.</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-guestcontrol">
+ <title>VBoxManage guestcontrol</title>
+
+ <para>Les commandes <computeroutput>guestcontrol</computeroutput> vous permettent de contrôler certaines
+ choses de l'invité à partir de l'hôte. Merci de voir <xref
+ linkend="guestadd-guestcontrol" /> pour une présentation.</para>
+
+ <para>En général, la syntaxe est la suivante&#xA0;:</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; &lt;commande&gt;</screen>
+
+ <para>Les sous-commandes suivantes sont disponibles (où
+ <computeroutput>&lt;uuid|nomvm&gt;</computeroutput>, dans tous les cas, peut
+ être le nom ou l'UUID d'une VM comme avec les autres commandes de
+ VBoxManage)&#xA0;:<itemizedlist>
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>execute</computeroutput></emphasis>, qui permet d'exécuter un
+ programme/script (processus) déjà installé et exécutable sur l'invité.
+ Cette commande ne fonctionne que pendant qu'une VM est active et en
+ fonction et sa syntaxe est la suivante&#xA0;:</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; exec[ute]
+ --image &lt;chemin du programme&gt; --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot de passe&gt;]
+ [--environment "&lt;NOM&gt;=&lt;VALEUR&gt; [&lt;NOM&gt;=&lt;VALEUR&gt;]"]
+ [--verbose] [--timeout &lt;msec&gt;]
+ [--wait-exit] [--wait-stdout] [--wait-stderr]
+ [--dos2unix] [--unix2dos]
+ -- [[&lt;argument1&gt;] ... [&lt;argumentN&gt;]]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Le nom ou l'UUID de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--image "&lt;chemin du programme&gt;"</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu et nom du processus à exécuter dans
+ l'invité, comme <computeroutput>C:\Windows\System32\calc.exe</computeroutput></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom de l'utilisateur sous lequel devrait se lancer le
+ processus. Cet utilisateur doit exister sur l'OS invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié, à lire dans
+ le fichier donné. Si vous n'en donnez pas, un mot de passe
+ vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--password &lt;mot de passe&gt;</glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--dos2unix</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Convertit les fins de lignes de la sortie des invités
+ DOS/Windows en fins compatibles UNIX (CR + LF -> LF). Pas
+ encore implémenté.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--environment
+ "&lt;NOM&gt;=&lt;VALEUR&gt;"</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Une ou plusieurs variables d'environnement à définir ou
+ dérégler.</para>
+
+ <para>Par défaut, le nouveau processus de l'invité sera
+ créé avec l'environnement standard de l'OS invité. Cette
+ option permet de modifier cet environnement. Pour définir/modifier
+ une variable, une paire <computeroutput>NOM=VALEUR</computeroutput> doit
+ être spécifiée&#xA0;; pour réinitialiser une certaine variable, le
+ nom sans valeur doit être défini, par exemple
+ <computeroutput>NOM=</computeroutput>.</para>
+
+ <para>Les arguments contenant des espaces doivent être entourés
+ de guillemets. Vous pouvez spécifier plus d'un
+ <computeroutput>--environment</computeroutput> en même temps
+ pour maintenir vierge la ligne de commande.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--timeout &lt;msec&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Valeur (en millisecondes) qui spécifie la durée pendant
+ laquelle le processus démarré est autorisé à fonctionner et
+ combien de temps VBoxManage attend une sortie de ce processus.
+ Si vous ne spécifiez pas de timeout, VBoxManage attendra
+ jusqu'à ce que le processus démarré se termine ou ce qu'une
+ erreur ne survienne.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--unix2dos</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Convertit les fins de lignes de la sortie des invités
+ DOS/Windows en fins compatibles UNIX (CR + LF -> LF). Pas
+ encore implémenté.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--wait-exit</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Attend la fin d'un processus et affiche son code de
+ sortie avec la raison/les drapeaux de sa fin.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--wait-stdout</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Attend la fin d'un processus et affiche son code de
+ sortie avec la raison/les drapeaux de sa fin. En attendant,
+ VBoxManage récupère la sortie du processus sur stdout.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--wait-stderr</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Attend la fin d'un processus et affiche son code de
+ sortie avec la raison/les drapeaux de sa fin. En attendant,
+ VBoxManage récupère la sortie du processus sur stderr.</para> </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>[-- [&lt;argument1s&gt;] ... [&lt;argumentNs&gt;]]</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Un ou plusieurs arguments à passer au processus à
+ exécuter.</para>
+ <para>Les arguments contenant des espaces doivent être entourés
+ de guillemets.</para>
+ </glossdef>
+ </glossentry>
+
+ </glosslist></para>
+
+ <para><note>
+ <para>Sur Windows, il existe certaines limites pour les applications
+ graphiques&#xA0;; merci de voir <xref linkend="KnownIssues" /> pour
+ plus d'informations.</para>
+ </note> Exemples&#xA0;: <screen>VBoxManage --nologo guestcontrol "Ma VM" execute --image "/bin/ls"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout -- -l /usr</screen> <screen>VBoxManage --nologo guestcontrol "My VM" execute --image "c:\\windows\\system32\\ipconfig.exe"
+ --username foo --passwordfile bar.txt --wait-exit --wait-stdout</screen> Remarquez que
+ les deux barres obliques inversées du deuxième exemple ne sont requis
+ que pour les hôtes Unix.</para>
+
+ <para><note>
+ <para>Pour certaines commandes, il faut spécifier le nom d'utilisateur
+ d'un compte utilisateur existant sur l'invité&#xA0;; les exécutions
+ anonymes ne sont pas supportées pour des raisons de sécurité.
+ Néanmoins, le mot de passe d'un compte utilisateur est facultatif
+ et dépend de la politique et des règles de l'invité. Si vous ne
+ spécifiez aucun mot de passe pour un nom d'utilisateur donné,
+ un mot de passe vierge sera utilisé. Sur certains OS comme Windows,
+ il pe peut qu'il faille ajuster la politique de sécurité pour autoriser
+ le paramétrage d'un compte utilisateur avec un mot de passe vierge.
+ En outre, les règles du domaine global pourraient s'appliquer et, donc,
+ on ne peut pas les modifier.</para>
+ </note></para>
+
+ <para>À partir de VirtualBox 4.1.2 l'exécution d'un processus invité
+ par défaut se limite à 5 processus invités en même temps. Si un
+ nouveau processus invité est lancé et dépasserait cette limite, le
+ plus ancien dans l'invité qui ne s'exécute pas sera désactivé afin de
+ pouvoir lancer ce nouveau processus. En outre, la récupération de la
+ sortie de cet ancien processus invité ne sera alors plus possible.
+ Si les 5 processus invités sont toujours actifs et en fonction, le
+ démarrage d'un nouveau processus enverra un message d'erreur circonstancié.</para>
+
+ <para>Pour augmenter ou diminuer la limite d'exécution des processus
+ invité, il faut modifier soit la propriété <computeroutput>/VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept</computeroutput>,
+ soit la ligne de commande ee VBoxService en spécifiant
+ <computeroutput>--control-procs-max-kept</computeroutput>. Il faut
+ ensuite redémarrer l'OS invité. Pour gérer un nombre illimité de
+ processus invités, il faut définir une valeur de <computeroutput>0</computeroutput>
+ (non recommandé).</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>copyto</computeroutput></emphasis>, qui permet de copier
+ des fichiers de l'hôte vers l'invité (seulement si les suppléments invité
+ 4.0 et supérieur sont installés).</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; copyto|cp
+ &lt;source invité&gt; &lt;hôte dest&gt; --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot de passe&gt;]
+ [--dryrun] [--follow] [--recursive] [--verbose]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>source sur l'hôte</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu du/des fichier(s) source(s) de l'hôte
+ sur l'hôte pour copier vers l'invité, comme
+ <computeroutput>C:\Windows\System32\calc.exe</computeroutput>.
+ Il peut s'agir d'une expression joker, comme
+ <computeroutput>C:\Windows\System32\*.dll</computeroutput></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>destination sur l'invité</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin de destination absolu sur l'invité, comme
+ <computeroutput>C:\Temp</computeroutput></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom d'utilisateur sous lequel devrait fonctionner le
+ processus de copie. Cet utilisateur doit exister sur l'OS
+ invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié, à lire dans
+ le fichier donné. Si vous n'en donnez pas, un mot de passe
+ vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot depasse&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--dryrun</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage de ne faire qu'une exécution "sèche" au
+ lieu de copier vraiment les fichiers dans l'invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--follow</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Active le suivi des liens symboliques sur la
+ source de l'hôte.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--recursive</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Copie récursivement les fichiers/répertoires de la
+ source spécifiée.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--flags &lt;drapeaux&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Drapeaux supplémentaires à définir. Ce n'est pas utilisé
+ pour le moment.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>copyfrom</computeroutput></emphasis>,
+ qui permet de copier
+ des fichiers de l'invité vers l'hôte (seulement si les suppléments
+ invité 4.0 et supérieur sont installés). Il prend les mêmes paramètres
+ que <computeroutput>copyto</computeroutput> ci-dessus.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>createdirectory</computeroutput></emphasis>, qui permet de copier
+ des fichiers de l'invité vers l'hôte (seulement si les suppléments
+ invité 4.0 et supérieur sont installés). Il prend les mêmes paramètres
+ que <computeroutput>copyto</computeroutput> ci-dessus.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; createdir[ectory]|mkdir|md
+ &lt;répertoire invité&gt;... --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot de passe&gt;]
+ [--parents] [--mode &lt;mode&gt;] [--verbose]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>répertoire à créer sur l'invité</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu du/des répertoire(s) à créer sur l'invité,
+ comme <computeroutput>D:\Foo\Bar</computeroutput>. Les répertoires
+ Parents doivent exister (comme dans cet exemple
+ <computeroutput>D:\Foo</computeroutput>) si vous ne mettez pas
+ <computeroutput>--parents</computeroutput>. L'utilisateur
+ spécifié doit avoir les droits appropriés pour créer le répertoire
+ spécifié.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom de l'utilisateur sous lequel devrait fonctionner
+ le processus de copie. Cet utilisateur doit exister sur l'OS
+ invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié, à lire dans
+ le fichier donné. Si vous n'en donnez pas, un mot de passe
+ vierge est supposé.</para> </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot de passe&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--parents</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Crée aussi les répertoires parent non encore créés
+ pour le répertoire spécifié, par exemple si le répertoire
+ <computeroutput>D:\Foo</computeroutput> de
+ <computeroutput>D:\Foo\Bar</computeroutput> n'existe pas encore,
+ il sera créé. Si on ne spécifie pas
+ <computeroutput>--parent</computeroutput>, l'action échouerait.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--mode &lt;mode&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Définit les droits du répertoire spécifié. Seules des
+ valeurs octales (comme
+ <computeroutput>0755</computeroutput>) sont supportées pour l'heure.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>removedirectory</computeroutput></emphasis>,
+ qui permet d'effacer des répertoires dans l'invité (seulement ceux où
+ sont installés les suppléments invité 4.3.2 et supérieur).</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; removedir[ectory]|rmdir
+ &lt;répertoire invité&gt;... --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot_de_passe&gt;]
+ [--recursive|-R|-r] [--verbose]</screen>
+
+ <para>où les paramètres signifient : <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>répertoire à supprimer dans l'invité</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu du/des répertoire(s) à supprimer sur
+ l'invité, par exemple <computeroutput>D:\Foo\Bar</computeroutput>.
+ L'utilisateur spécifié doit avoir les bons droits pour effacer
+ le(s) répertoire(s) de l'invité spécifié(s).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom d'utilisateur sous lequel devrait fonctionner le
+ processus de copie. Cet utilisateur doit exister sur l'OS invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié qui lit le
+ fichier donné. Si vous n'en mettez pas, on supposera un mot de
+ passe vide.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot_de_passe&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié par
+ <computeroutput>--username</computeroutput>. Si vous n'en donnez pas, on supposera un mot de
+ passe vide.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--recursive</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Supprime des répertoires et, récursivement, leur contenu.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus bavard.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>removefile</computeroutput></emphasis>,
+ qui permet d'effacer des fichiers sur l'invité (seulement là où sont
+ installés les suppléments invité 4.3.2 et supérieur).</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; removefile|rm
+ &lt;fichier_d_invité&gt;... --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot_de_passe&gt;]
+ [--verbose]</screen>
+
+ <para>où les paramètres signifient : <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>fichier à supprimer dans l'invité</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu du/des fichier(s) à supprimer sur
+ l'invité, comme <computeroutput>D:\Foo\Bar\text.txt</computeroutput>.
+ L'utilisateur spécifié doit avoir les bons droits pour effacer
+ les fichiers spécifiés sur l'invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom d'utilisateur sous lequel devrait fonctionner le
+ processus de copie. Cet utilisateur doit exister sur l'OS invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié qui lit le
+ fichier donné. Si vous n'en mettez pas, on supposera un mot de
+ passe vide.</para>
+
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot_de_passe&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus bavard.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>ren[ame]|mv</computeroutput></emphasis>,
+ qui permet de renommer des fichiers (ou des répertoires) dans l'invité
+ (seulement là où sont installés les suppléments invité 4.3.2 et
+ supérieur).</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; ren[ame]|mv
+ &lt;source&gt;... &lt;dest&gt; --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot_de_passe&gt;]
+ [--verbose]</screen>
+
+ <para>où les paramètres signifient : <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>source</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu d'une ou plusieurs sources à déplacer
+ quelque part. Si vous spécifiez plus d'une source, la destination
+ doit être un répertoire existant sur la VM. L'utilisateur
+ spécifié doit avoir les bons droits d'accès aux fichiers et
+ aux répertoires sources et de destination.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>dest</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Chemin absolu de la destination où déplacer le/les
+ source(s). Il peut s'agir d'un répertoire ou d'un fichier, selon
+ que vous spécifiez une ou plusieurs sources. L'utilisateur
+ spécifié doit avoir les bons droits d'accès au fichier et au
+ répertoire de.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom de l'utilisateur sous lequel fonctionne le processus
+ de copie. Cet utilisateur doit exister sur l'OS invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié d'où lire
+ l'invité donné. Si vous n'en donnez pas, on suppose un mot de
+ paasse vide.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot_de_passe&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, on suppose un mot de passe vide.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus bavard.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>createtemporary</computeroutput></emphasis>,
+ qui permet de copier des fichiers de l'hôte sur l'invité (seulement
+ si les suppléments invités 4.2 ou supérieur sont installés).</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; createtemp[orary]|mktemp
+ &lt;modèle&gt; --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot_de_passe&gt;]
+ [--directory] [--secure] [--tmpdir &lt;répertoire&gt;]
+ [--domain &lt;domaine&gt;] [--mode &lt;mode&gt;] [--verbose]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>modèle</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Un nom de fichier sans chemin et avec au moins trois
+ caractères 'X' consécutifs ou se terminant par 'X'.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--username &lt;nom&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Nom de l'utilisateur sous lequel devrait fonctionner
+ le processus de copie. Cet utilisateur doit exister sur l'OS
+ invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--passwordfile &lt;fichier&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié, à lire dans
+ le fichier donné. Si vous n'en donnez pas, un mot de passe
+ vierge est supposé.</para> </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--password &lt;mot de passe&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--directory</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Crée un répertoire temporaire au lieu d'un fichier.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--secure</computeroutput></glossterm>
+
+ <glossdef>
+ <para>
+ Création sécurisée. Le mode du fichier est
+ <computeroutput>0755</computeroutput>. Et l'opération
+ échouera si elle ne peut s'effectuer en sécurité.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--tmpdir &lt;répertoire&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>
+ Répertoire où le fichier / répertoire sera cRéé.
+ Si vous n'en indiquez pas, répertoire temporaire spécifique
+ 'à la plateforme est utilisé.
+ </para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--mode &lt;mode&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Définit les droits du répertoire spécifié. Seules des
+ valeurs octales (comme
+ <computeroutput>0755</computeroutput>) sont supportées pour l'heure.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>list</computeroutput></emphasis>,
+ qui présente plusieurs informations de contrôle de l'invité telles
+ que les sessions et les fichiers ouverts dans l'invité et les processus de l'invité.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; list
+ &lt;all|sessions|processes|files&gt; [--verbose]</screen>
+
+ <para>où les paramètres signifient&#xA0;:<glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>all|sessions|processes|files</computeroutput></glossterm>
+
+ <glossdef>
+ <para>présenter les sessions dans l'invité, les processus de
+ l'invité, les fichiers dans l'invité ou toutes les informations disponibles.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>process kill</computeroutput></emphasis>,
+ qui termine des processus de l'invité en particulier pour une session
+ de l'invité, à partir soit l'ID de la session, soit du nom de la
+ session.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; process kill
+ --session-id &lt;ID&gt;
+ | --session-name &lt;nom ou modèle&gt;
+ [--verbose]
+ &lt;PID&gt; ... &lt;PID n&gt;</screen>
+
+ <para>où les paramètres signifient&#xA0;: <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-id</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Spécifie la session de l'invité à utiliser par son ID.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-name</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Spécifie la session de l'invité à utiliser par son nom.
+ Vous pouvez spécifier plusieurs sessions en spécifiant les jokers
+ * ou ?.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>&lt;PID&gt; ... &lt;PID n&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Liste les identifiants des processus (PIDs) à terminer.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>[p[s]]kill</computeroutput></emphasis>,
+ qui termine des processus en particulier dans une session de l'invité,
+ à partir soit de l'ID de la session, soit de son nom.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; process kill
+ --session-id &lt;ID&gt;
+ | --session-name &lt;nom ou modèle&gt;
+ [--verbose]
+ &lt;PID&gt; ... &lt;PID n&gt;</screen>
+
+ <para>où les paramètres signifient&#xA0;: <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-id</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Spécifie la session de l'invité à utiliser par son ID.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-name</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Spécifie la session de l'invité à utiliser par son nom. Vous
+ pouvez spécifier plusieurs sessions avec les jokers * ou ?.</para>
+ </glossdef>
+
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>&lt;PID&gt; ... &lt;PID n&gt;</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Liste les identifiants des processus (PIDs) à terminer.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>session close</computeroutput></emphasis>,
+ qui ferme des sessions spécifiques de l'invité à partir de l'ID de la
+ session ou de son nom.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; session close
+ --session-id &lt;ID&gt;
+ | --session-name &lt;nom ou extrait&gt;
+ | --all
+ [--verbose]</screen>
+
+ <para>où les paramètres signifient : <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-id</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ferme une session de ;'invité spécifiée par son ID.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--session-name</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ferme une session de ;'invité spécifiée par son nom. Vous
+ pouvez fermer plusieurs sessions grâce aux jokers * ou ?.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--all</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Ferme toutes les sessions de l'invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>stat</computeroutput></emphasis>, qui affiche l'état d'un
+ fichier ou d'un système de fichiers de l'invité.</para>
+
+ <screen>VBoxManage guestcontrol &lt;nomvm&gt;|&lt;uuid&gt; stat
+ &lt;file&gt;... --username &lt;nom&gt;
+ [--passwordfile &lt;fichier&gt; | --password &lt;mot de passe&gt;]
+ [--verbose]</screen>
+
+ <para>où les paramètres signifient&#xA0;: <glosslist>
+ <glossentry>
+ <glossterm>uuid|nomvm</glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>élément(s) de fichier à vérifier sur l'invité</glossterm>
+
+ <glossdef>
+ <para>Chemin absolu du/des répertoire(s) à vérifier sur l'invité,
+ comme <computeroutput>/home/foo/a.out</computeroutput>.
+ L'utilisateur spécifié doit avoir les droits adéquats d'accès
+ à/aux élément(s) fichier unique(s).</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--username &lt;nom&gt;</glossterm>
+
+ <glossdef>
+ <para>Nom de l'utilisateur sous lequel devrait s'exécuter le
+ processus de copie. L'utilisateur doit exister sur l'OS invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--passwordfile &lt;fichier&gt;</glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié, à lire dans
+ le fichier donné. Si vous n'en donnez pas, un mot de passe
+ vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--password &lt;mot de passe&gt;</glossterm>
+
+ <glossdef>
+ <para>Mot de passe du compte utilisateur spécifié avec
+ <computeroutput>--username</computeroutput>. Si vous n'en
+ donnez pas, un mot de passe vierge est supposé.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>updateadditions</computeroutput></emphasis>, qui permet de
+ mettre à jour une version des suppléments invité installée sur l'invité
+ (sur les suppléments invité installés 4.0 et supérieur).</para>
+
+ <screen>VBoxManage guestcontrol &lt;nomvm&gt;|&lt;uuid&gt; updateadditions
+ [--source "&lt;fichier des suppléments invité .ISO à utiliser&gt;"] [--verbose]
+ [--wait-start] [-- [&lt;argument1&gt;] ... [&lt;argumentN&gt;]]</screen>
+
+ <para>où les paramètres signifient&#xA0;: <glosslist>
+ <glossentry>
+ <glossterm>uuid|nomvm</glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--source "&lt;fichier des suppléments invité .ISO à
+ utiliser&gt;"</glossterm>
+
+ <glossdef>
+ <para>Chemin complet vers un autre fichier .ISO de suppléments
+ invité à utiliser pour mettre à jour les suppléments invité.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--verbose</glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>--wait-start</glossterm>
+ <glossdef>
+ <para>Démarre le processus normal de mise à jour et attend
+ jusqu'à ce que la mise à jour des suppléments invité soit
+ effectivement démarrée dans l'invité. Cela peut être nécessaire
+ du fait de l'interaction nécessaire avec l'OS invité pendant
+ la phase d'installation.</para>
+ <para>Si vous ne mettez pas ce drapeau, VBoxManage attendra
+ que toute la mise à jour des suppléments invité s'achève.</para>
+ </glossdef>
+ </glossentry>
+ <glossentry>
+ <glossterm>[-- [&lt;argument1s&gt;] ... [&lt;argumentNs&gt;]]</glossterm>
+
+ <glossdef>
+ <para>Arguments en ligne de commandes à utiliser avec l'installeur
+ des suppléments invité. Sert à ajouter des fonctions non
+ installées précédemment sur l'invité.</para>
+ <para>Vous devez entourer les arguments contenant des espaces
+ par des guillemets.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis role="bold"><computeroutput>watch</computeroutput></emphasis>,
+ qui affiche un contrôle de l'activité actuelle de l'invité.</para>
+
+ <screen>VBoxManage guestcontrol &lt;uuid|nomvm&gt; watch
+ [--verbose]</screen>
+
+ <para>où les paramètres signifient : <glosslist>
+ <glossentry>
+ <glossterm><computeroutput>uuid|nomvm</computeroutput></glossterm>
+
+ <glossdef>
+ <para>L'UUID ou le nom de la VM. Obligatoire.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm><computeroutput>--verbose</computeroutput></glossterm>
+
+ <glossdef>
+ <para>Dit à VBoxManage d'être plus verbeux.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist></para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="vboxmanage-debugvm">
+ <title>VBoxManage debugvm</title>
+
+ <para>Les commandes "debugvm" sont pour les experts qui veulent jouer avec
+ les détails exacts de l'exécution d'une machine virtuelle. Comme le débogueur
+ de la VM décrit au <xref linkend="ts_debugger" />, ces commandes ne sont
+ utiles que si vous êtes très familier des détails l'architecture d'une VM et
+ de la façon de déboguer un logiciel.</para>
+
+ <para>Les sous-commandes de "debugvm" fonctionnent sur une machine virtuelle
+ en fonction. Celles suivantes sont disponibles&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Avec <computeroutput>dumpvmcore --filename
+ &lt;nom&gt;</computeroutput>, vous pouvez créer un fichier de renvoi
+ système de la VM en fonction, qui sera écrit dans le fichier donné.
+ Ce fichier aura un format ELF c&#x153;ur standard (avec des sections
+ personnalisées)&#xA0;; voir
+ <xref linkend="ts_guest-core-format" />.</para>
+
+ <para>Cela correspond à la commande
+ <computeroutput>writecore</computeroutput> du débogueur.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>info</computeroutput> est utilisée
+ pour afficher des éléments d'info liés à la VMM, aux émulations de
+ périphérique et aux pilotes associés. Cette commande prend un ou
+ deux arguments&#xA0;: le nom de l'élément d'info, éventuellement suivi
+ d'une chaîne contenant les arguments spécifiques à l'élément d'info.
+ L'élément d'info <computeroutput>help</computeroutput> fournit une liste
+ des éléments disponibles et des astuces sur les arguments supplémentaires.</para>
+
+ <para>Cela correspond à la commande <computeroutput>info</computeroutput>
+ du débogueur.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>injectnmi</computeroutput> provoque
+ une interruption non masquable (<foreignphrase>non-maskable interrupt</foreignphrase>
+ (NMI) dans l'invité, qui pourrait être utile dans certains scénarios
+ de débogage. Ce qui se passe exactement dépend du système d'exploitation
+ invité mais une NMI peut planter tout le système d'exploitation invité.
+ Ne l'utilisez pas, sauf si vous savez ce que vous faites.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>osdetect</computeroutput> lance
+ la fonction de (re)-détection du débogueur de VMM du système d'exploitation
+ de l'invité.</para>
+
+ <para>Cela correspond à la commande <computeroutput>detect</computeroutput>
+ du débogueur.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>osinfo</computeroutput> est utilisée
+ pour afficher des infos sur le système d'exploitation (OS) détecté par
+ le débogueur de la VM.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>getregisters</computeroutput> est
+ utilisée pour afficher le registre du processeur et des périphériques.
+ La commande prend une liste des registres, chacun ayant une des
+ formes suivantes&#xA0;:
+ <itemizedlist>
+ <listitem><para><computeroutput>réglage-registre.nom-registre.sous-champ</computeroutput></para></listitem>
+ <listitem><para><computeroutput>réglage-registre.nom-registre</computeroutput></para></listitem>
+ <listitem><para><computeroutput>nom-registre-processeur.sous-champ</computeroutput></para></listitem>
+ <listitem><para><computeroutput>nom-registre-processeur</computeroutput></para></listitem>
+ <listitem><para><computeroutput>all</computeroutput></para></listitem>
+ </itemizedlist>
+ La forme <computeroutput>all</computeroutput> affichera tous les
+ registres (pas les sous-champs). Les noms des registres sont indifférents
+ à la casse. Quand vous interrogez un registre du processeur, vous
+ pouvez ne pas mettre le réglage du registre, il sera sélectionné en
+ utilisant la valeur de l'option <computeroutput>--cpu</computeroutput>
+ (0 par défaut).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>setregisters</computeroutput> est
+ utilisée pour modifier les registres des périphériques et du processeur.
+ La commande prend une liste d'affectations de registres, chacune ayant
+ une des formes suivantes&#xA0;:
+ <itemizedlist>
+ <listitem><para><computeroutput>réglage-registre.nom-registre.sous-champ=valeur</computeroutput></para></listitem>
+ <listitem><para><computeroutput>réglage-registre.nom-registre=valeur</computeroutput></para></listitem>
+ <listitem><para><computeroutput>nom-registre-processeur.sous-champ=valeur</computeroutput></para></listitem>
+ <listitem><para><computeroutput>nom-registre-processeur=valeur</computeroutput></para></listitem>
+ </itemizedlist>
+ Le format de la valeur devrait être du même genre que ce qu'affiche
+ <computeroutput>getregisters</computeroutput>, sauf qu'on peut utiliser
+ des octets et des décimales au lieu de l'hexadécimal. Le nommage du
+ registre et le réglage par défaut du registre processeur sont gérés
+ de la même manière qu'avec la commande
+ <computeroutput>getregisters</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>statistics</computeroutput> peut
+ être utilisée pour afficher des statistiques VMM sur la ligne de
+ commandes. L'option <computeroutput>--reset</computeroutput> réinitialisera
+ les statistiques. Les statistiques concernées sont filtrables avec l'option
+ <computeroutput>--pattern</computeroutput> qui accepte des jokers en style
+ DOS/NT (<computeroutput>?</computeroutput> et
+ <computeroutput>*</computeroutput>).</para>
+ </listitem>
+ </itemizedlist></para>
+ </sect1>
+
+ <sect1 id="metrics">
+ <title>VBoxManage metrics</title>
+
+ <para>Cette commande supporte la surveillance de l'utilisation des ressources
+ système. Les ressources sont représentées par différents métriques associés
+ au système hôte ou à une VM en particulier. Par exemple, le système hôte a
+ un métrique <computeroutput>CPU/Load/User</computeroutput> qui affiche le
+ pourcentage du temps procceseur passé à tourner en mode utilisateur sur une
+ période spécifique.</para>
+
+ <para>Les données de métrique sont rassemblées et stockées en interne&#xA0;;
+ vous pouvez les récupérer n'importe quand avec la sous-commande
+ <computeroutput>VBoxManage metric query</computeroutput>. Les données sont
+ disponibles tant que le processus en tâche de fond
+ <computeroutput>VBoxSVC</computeroutput> est vivant. Ce processus
+ ce termine peu après que toutes les VMs et les interfaces ont été fermées.</para>
+
+ <para>Par défaut, aucun métrique n'est enregistré. La récupération de
+ métriques ne commence pas avant que <computeroutput>VBoxManage metrics setup</computeroutput>
+ ne soit appelé avec un bon intervalle modèle et que le nombre de métriques
+ n'ait été conservé. On mesure l'intervalle en secondes. Par exemple, pour
+ activer la récupération des métriques de l'utilisation du processeur et de
+ la mémoire hôte toutes les secondes, en gardant les 5 échantillons les plus
+ actuels, vous pouvez utiliser la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage metrics setup --period 1 --samples 5 host CPU/Load,RAM/Usage</screen>
+
+ <para>Le recueil de métriques ne peut être activé que sur des VMs démarrées.
+ Les données et les paramètres de récupération d'une VM en particulier disparaîtront
+ dès que vous éteindrez la VM. Utilisez la sous-commande
+ <computeroutput>VBoxManage metrics list
+ </computeroutput> pour voir les métriques actuellement disponibles. Vous
+ pouvez aussi utiliser l'option <computeroutput>--list</computeroutput> avec
+ une sous-commande modifiant les paramètres de métrique pour chercher les
+ métriques concernés.</para>
+
+ <para>Remarquez que la sous-commande <computeroutput>VBoxManage metrics
+ setup</computeroutput> désactive tous les échantillons qui peuvent avoir été
+ recueillis pour un jeu d'objets et de métriques spécifiques.</para>
+
+ <para>Pour activer ou désactiver la récupération des métriques sans perdre
+ les données, vous pouvez utiliser les sous-commandes
+ <computeroutput>VBoxManage metrics enable</computeroutput> et
+ <computeroutput>VBoxManage metrics disable</computeroutput>. Remarquez que
+ ces sous-commandes attendent en paramètres des métriques, pas des sous-métriques,
+ comme <code>CPU/Load</code> ou <code>RAM/Usage</code>. En d'autres termes,
+ l'activation de <code>CPU/Load/User</code> tout en désactivant <code>CPU/Load/Kernel</code>
+ n'est pas supporté.</para>
+
+ <para>L'hôte et les VMs ont différents ensembles de métriques associés.
+ Vous pouvez lister les métriques disponibles avec
+ <computeroutput>VBoxManage metrics
+ list</computeroutput> subcommand.</para>
+
+ <para>Un nom de métrique complet peut inclure une fonction d'agrégat. Le
+ nom prend la forme suivante&#xA0;:
+ <computeroutput>Catégorie/Métrique[/SousMétrique][:aggrégé]</computeroutput>.
+ Par exemple, <computeroutput>RAM/Usage/Free:min</computeroutput> signifie la
+ quantité minimum de mémoire disponible parmi toutes les données en mémoire
+ , si c'est appliqué à l'objet hôte.</para>
+
+ <para>Les sous-commandes peuvent s'appliquer à tous les objets et les
+ métriques ou se limiter à un objet et/ou une liste de métriques. Si vous
+ ne donnez aucun objet ni métrique en paramètres, les sous-commandes s'appliqueront
+ à tous les métriques disponibles de tous les objets. Vous pouvez utiliser
+ un astérisque ("<computeroutput>*</computeroutput>") pour spécifier explicitement
+ que la commande devrait s'appliquer à tous les objets ou à tous les métriques.
+ Utilisez "host" en nom d'objet pour limiter la cible de la commande aux
+ métriques relatifs à l'hôte. Pour limiter la cible à un sous-ensemble de métriques,
+ utilisez une liste de noms séparés par des virgules.</para>
+
+ <para>Par exemple, pour interroger les données de métriques sur le temps
+ passé par le processeur en modes utilisateur et noyau, sur la machine virtuelle
+ nommée "test", vous pouvez utiliser la commande suivante&#xA0;:</para>
+
+ <screen>VBoxManage metrics query test CPU/Load/User,CPU/Load/Kernel</screen>
+
+ <para>La liste suivante résume les sous-commandes disponibles&#xA0;:</para>
+
+ <glosslist>
+ <glossentry>
+ <glossterm>list</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande affiche les paramètres des métriques
+ existant actuellement. Remarquez que les métriques spécifiques à la VM
+ ne sont disponibles que quand une VM en particulier
+ est en fonction.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>setup</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande définit l'intervalle entre deux prises
+ d'échantillons des données de métriques et le nombre d'échantillons gardés
+ en interne. Les données mémorisées sont disponibles en affichage avec
+ la sous-commande <code>query</code>. L'option <computeroutput>--list
+ </computeroutput> affiche les métriques qui ont été modifiés dans le
+ résultat de l'exécution de la commande.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>enable</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande "réactive le recueil de données après qu'il
+ ait été arrêté avec la sous-commande <code>disable</code>. Remarquez que
+ la spécification de sous-métriques comme paramètres n'activera pas les
+ métriques sous-jacents. Utilisez
+ <computeroutput>--list</computeroutput> pour savoir si la commande a
+ fait ce que vous aviez prévu.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>disable</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande "suspend" le recueil des données sans
+ changer les paramètres de récupération ni altérer les données recueillies.
+ Remarquez que la spécification de sous-métriques en paramètres ne
+ désactivera pas les métriques sous-jacents. Utilisez
+ <computeroutput>--list</computeroutput> pour voir si la commande a fait
+ ce que vous aviez prévu.</para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>query</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande récupère et affiche les données de métriques
+ mémorisés.<note>
+ <para>La sous-commande <code>query</code> ne supprime
+ pas ni ne remet à 0 les données mémorisées. Si vous interrogez
+ assez souvent, vous verrez la vitesse d'évacuation graduelle des
+ anciens échantillons par les nouveaux.</para>
+ </note></para>
+ </glossdef>
+ </glossentry>
+
+ <glossentry>
+ <glossterm>collect</glossterm>
+
+ <glossdef>
+ <para>Cette sous-commande définit l'intervalle entre la prise de deux
+ échantillons de données de métrique et le nombre d'échantillons mémorisés
+ en interne. Les données recueillies s'affichent périodiquement jusqu'à
+ ce que vous appuyiez sur Ctrl-C, sauf si vous spécifiez l'option
+ <computeroutput>--detach</computeroutput>. Avec l'option
+ <computeroutput>--detach</computeroutput>, cette sous-commande agit de
+ la même façon que <code>setup</code>. L'option <computeroutput>--list</computeroutput>
+ affiche les métriques correspondant au filtre spécifié.</para>
+ </glossdef>
+ </glossentry>
+ </glosslist>
+ </sect1>
+
+ <sect1>
+ <title>VBoxManage hostonlyif</title>
+
+ <para>Avec "hostonlyif", vous pouvez changer la configuration de l'IP d'une
+ interface réseau host-only. Pour une description du réseau host-only, merci
+ de vous reporter au <xref linkend="network_hostonly" />. Chaque interface
+ host-only est identifiée par un nom et peut soit utiliser le serveur DHCP interne, soit
+ voir son adresse IP configurée à la main (IP4 et IP6).</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-dhcpserver">
+ <title>VBoxManage dhcpserver</title>
+
+ <para>Les commandes de "dhcpserver" vous permettent de contrôler le serveur
+ DHCP construit dans VirtualBox. Vous pourriez trouver cela utile si vous
+ utilisez le réseau interne ou host-only. (En théorie, vous pouvez
+ l'activer aussi pour un réseau bridgé, mais cela provoquera probablement des
+ conflits avec d'autres serveurs DHCP de votre réseau physique.)</para>
+
+ <para>Utilisez les options suivantes de la ligne de commandes&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Si vous utilisez le réseau interne pour l'adaptateur réseau
+ virtuel d'une machine virtuelle, utilisez <computeroutput>VBoxManage dhcpserver add
+ --netname &lt;nom_réseau&gt;</computeroutput>, où
+ <computeroutput>&lt;nom_réseau&gt;</computeroutput> est le même nom
+ de réseau que celui que vous avez utilisé avec
+ <computeroutput>VBoxManage modifyvm
+ &lt;nomvm&gt; --intnet&lt;X&gt;
+ &lt;nom_réseau&gt;</computeroutput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous utilisez le réseau interne pour l'adaptateur réseau
+ virtuel d'une machine virtuelle, utilisez plutôt <computeroutput>VBoxManage dhcpserver add
+ --ifname &lt;hostonly_if_name&gt;</computeroutput>, où
+ <computeroutput>&lt;hostonly_if_name&gt;</computeroutput> est le même
+ nom de l'interface host-only que vous avez utilisé avec
+ <computeroutput>VBoxManage modifyvm &lt;nomvm&gt;
+ --hostonlyadapter&lt;X&gt;
+ &lt;hostonly_if_name&gt;</computeroutput>.</para>
+
+ <para>Vous pouvez aussi utiliser l'option --netname comme avec les
+ réseaux internes si vous connaissez le nom du réseau host-only&#xA0;;
+ vous pouvez voir les noms avecc <computeroutput>VBoxManage list
+ hostonlyifs</computeroutput> (voir <xref linkend="vboxmanage-list" />
+ ci-dessus).</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Les paramètres suivants supplémentaires sont requis quand vous ajoutez
+ un serveur DHCP pour la première fois&#xA0;:<itemizedlist>
+ <listitem>
+ <para>Avec <computeroutput>--ip</computeroutput>, spécifiez l'adresse
+ IP du serveur DHCP lui-même.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec <computeroutput>--netmask</computeroutput>, spécifiez
+ le masque du réseau.</para>
+ </listitem>
+
+ <listitem>
+ <para>Avec <computeroutput>--lowerip</computeroutput> et
+ <computeroutput>--upperip</computeroutput>, vous pouvez spécifier
+ respectivement l'adresse la plus basse et la plus haute que le serveur
+ DHCP attribuera aux clients.</para>
+ </listitem>
+ </itemizedlist></para>
+
+ <para>Enfin, vous devez spécifier<computeroutput>--enable</computeroutput>,
+ sinon le serveur DHCP sera créé en étant désactivé, ce qui ne fera rien.</para>
+
+ <para>Après cela, VirtualBox démarrera automatiquement le serveu DHCP pour
+ le réseau donné, interne ou host-only, dès que la première machine virtuelle utilisant
+ ce réseau sera démarrée.</para>
+
+ <para>Inversement, utilisez <computeroutput>VBoxManage dhcpserver
+ remove</computeroutput> avec <computeroutput>--netname
+ &lt;nom_réseau&gt;</computeroutput> ou <computeroutput>--ifname
+ &lt;hostonly_if_name&gt;</computeroutput> pour supprimer le serveur DHCP,
+ de nouveau pour le réseau interne ou host-only donné.</para>
+
+ <para>Pour modifier les paramètres d'un serveurDHCP créé précédemment avec
+ <computeroutput>VBoxManage dhcpserver add</computeroutput>, vous pouvez
+ utiliser
+ <computeroutput>VBoxManage dhcpserver modify</computeroutput> pour une
+ interface réseau interne ou host-only donnée.</para>
+ </sect1>
+
+ <sect1 id="vboxmanage-extpack">
+ <title>VBoxManage extpack</title>
+
+ <para>La commande "extpack" vous permet d'ajouter ou de supprimer des packs
+ d'extension de VirtualBox comme décrit au <xref
+ linkend="intro-installing" />.<itemizedlist>
+ <listitem>
+ <para>Pour ajouter un nouveau pack d'extension, utilisez <computeroutput>VBoxManage
+ extpack install &lt;.vbox-extpack&gt;</computeroutput>. Cette commande
+ échouera si une version plus ancienne du même pack d'extension est
+ déjà installée. Vous pouvez utiliser le paramètre optionnel
+ <computeroutput>--replace</computeroutput> pour désinstaller l'ancien
+ paquet avant d'installer le nouveau paquet..</para>
+ </listitem>
+
+ <listitem>
+ <para>Pour supprimer un pack d'extension précédemment installé, utilisez
+ <computeroutput>VBoxManage extpack uninstall
+ &lt;nom&gt;</computeroutput>. Vous pouvez utiliser
+ <computeroutput>VBoxManage list extpacks</computeroutput> pour
+ afficher les noms des pack d'extensions actuellement installés&#xA0;;
+ merci de voir aussi <xref linkend="vboxmanage-list" />. Vous pouvez
+ utiliser le paramètre optionnel <computeroutput>--force</computeroutput>
+ pour surpasser le refus de se désinstaller d'un pack d'extension.</para>
+ </listitem>
+
+ <listitem>
+ <para>La commande <computeroutput>VBoxManage extpack
+ cleanup</computeroutput> peut être utilisée pour supprimer temporairement
+ les fichiers et les répertoires qui peuvent avoir été laissés après
+ l'échec d'une précédente commande d'installation ou de désinstallation.</para>
+ </listitem>
+ </itemizedlist></para>
+ <para>Les commandes suivantes montrent des exemples d'une liste des packs
+ d'extension et de la manière d'en supprimer un&#xA0;:<screen>
+$ VBoxManage list extpacks
+pack d'extensions: 1
+Pack no. 0: Oracle VM VirtualBox pack d'extension
+Version: 4.1.12
+Revision: 77218
+Edition:
+Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
+VRDE Module: VBoxVRDP
+Usable: true
+Why unusable:
+$ VBoxManage extpack uninstall "Oracle VM VirtualBox pack d'extension"
+0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
+Successfully uninstalled "Oracle VM VirtualBox pack d'extension".</screen></para>
+ </sect1>
+</chapter>
diff --git a/doc/manual/fr_FR/user_VirtualBoxAPI.xml b/doc/manual/fr_FR/user_VirtualBoxAPI.xml
new file mode 100644
index 00000000..b182d11f
--- /dev/null
+++ b/doc/manual/fr_FR/user_VirtualBoxAPI.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<chapter id="VirtualBoxAPI">
+ <title>Interfaces de programmation de VirtualBox</title>
+
+ <para>VirtualBox est fourni avec un support complet pour les développeurs
+ tiers. Ce qu'on appelle "l'API principale" de VirtualBox implémente toutes
+ les fonctionnalités du moteur de virtualisation. Elle est complètement documentée
+ et disponible pour n'importe qui souhaitant contrôler VirtualBox en programmant.
+ </para>
+
+ <para>L'API principale est disponible pour des clients C++ via COM (sur les
+ hôtes Windows) ou XPCOM (sur les autres hôtes). Des passerelles existent
+ aussi avec SOAP, Java et Python.</para>
+
+ <para>Toutes les informations sur la programmation (documentation, informations
+ de référence, en-têtes et autres fichiers d'interface ainsi que des modèles)
+ ont été mises dans un <emphasis role="bold">Software Development Kit (SDK),</emphasis>
+ distinct disponible en téléchargement sur <ulink type=""
+ url="http://www.virtualbox.org">http://www.virtualbox.org</ulink>. En
+ particulier, le SDK est fourni avec un "Guide de pogrammation et de Référence"
+ au format PDF contenant entre autres des informations qui se trouvaient jadis
+ dans ce chapitre du manuel de l'utilisateur.</para>
+</chapter>
diff --git a/doc/manual/string.xsl b/doc/manual/string.xsl
new file mode 100644
index 00000000..e6ea7595
--- /dev/null
+++ b/doc/manual/string.xsl
@@ -0,0 +1,1237 @@
+<?xml version="1.0"?>
+
+<!-- This file is taken from the XSLT Standard Library as available
+ from http://xsltsl.sourceforge.net/. Except for this notice, it
+ has not been modified. -->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
+ xmlns:str="http://xsltsl.org/string"
+ extension-element-prefixes="doc str">
+
+ <doc:reference xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: string.xsl $
+ </releaseinfo>
+ <author>
+ <surname>Ball</surname>
+ <firstname>Steve</firstname>
+ </author>
+ <copyright>
+ <year>2002</year>
+ <year>2001</year>
+ <holder>Steve Ball</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>String Processing</title>
+
+ <partintro>
+ <section>
+ <title>Introduction</title>
+
+ <para>This module provides templates for manipulating strings.</para>
+
+ </section>
+ </partintro>
+
+ </doc:reference>
+
+ <!-- Common string constants and datasets as XSL variables -->
+
+ <!-- str:lower and str:upper contain pairs of lower and upper case
+ characters. Below insanely long strings should contain the
+ official lower/uppercase pairs, making this stylesheet working
+ for every language on earth. Hopefully. -->
+ <!-- These values are not enough, however. There are some
+ exceptions, dealt with below. -->
+ <xsl:variable name="xsltsl-str-lower" select="'&#x0061;&#x0062;&#x0063;&#x0064;&#x0065;&#x0066;&#x0067;&#x0068;&#x0069;&#x006A;&#x006B;&#x006C;&#x006D;&#x006E;&#x006F;&#x0070;&#x0071;&#x0072;&#x0073;&#x0074;&#x0075;&#x0076;&#x0077;&#x0078;&#x0079;&#x007A;&#x00B5;&#x00E0;&#x00E1;&#x00E2;&#x00E3;&#x00E4;&#x00E5;&#x00E6;&#x00E7;&#x00E8;&#x00E9;&#x00EA;&#x00EB;&#x00EC;&#x00ED;&#x00EE;&#x00EF;&#x00F0;&#x00F1;&#x00F2;&#x00F3;&#x00F4;&#x00F5;&#x00F6;&#x00F8;&#x00F9;&#x00FA;&#x00FB;&#x00FC;&#x00FD;&#x00FE;&#x00FF;&#x0101;&#x0103;&#x0105;&#x0107;&#x0109;&#x010B;&#x010D;&#x010F;&#x0111;&#x0113;&#x0115;&#x0117;&#x0119;&#x011B;&#x011D;&#x011F;&#x0121;&#x0123;&#x0125;&#x0127;&#x0129;&#x012B;&#x012D;&#x012F;&#x0131;&#x0133;&#x0135;&#x0137;&#x013A;&#x013C;&#x013E;&#x0140;&#x0142;&#x0144;&#x0146;&#x0148;&#x014B;&#x014D;&#x014F;&#x0151;&#x0153;&#x0155;&#x0157;&#x0159;&#x015B;&#x015D;&#x015F;&#x0161;&#x0163;&#x0165;&#x0167;&#x0169;&#x016B;&#x016D;&#x016F;&#x0171;&#x0173;&#x0175;&#x0177;&#x017A;&#x017C;&#x017E;&#x017F;&#x0183;&#x0185;&#x0188;&#x018C;&#x0192;&#x0195;&#x0199;&#x01A1;&#x01A3;&#x01A5;&#x01A8;&#x01AD;&#x01B0;&#x01B4;&#x01B6;&#x01B9;&#x01BD;&#x01BF;&#x01C5;&#x01C6;&#x01C8;&#x01C9;&#x01CB;&#x01CC;&#x01CE;&#x01D0;&#x01D2;&#x01D4;&#x01D6;&#x01D8;&#x01DA;&#x01DC;&#x01DD;&#x01DF;&#x01E1;&#x01E3;&#x01E5;&#x01E7;&#x01E9;&#x01EB;&#x01ED;&#x01EF;&#x01F2;&#x01F3;&#x01F5;&#x01F9;&#x01FB;&#x01FD;&#x01FF;&#x0201;&#x0203;&#x0205;&#x0207;&#x0209;&#x020B;&#x020D;&#x020F;&#x0211;&#x0213;&#x0215;&#x0217;&#x0219;&#x021B;&#x021D;&#x021F;&#x0223;&#x0225;&#x0227;&#x0229;&#x022B;&#x022D;&#x022F;&#x0231;&#x0233;&#x0253;&#x0254;&#x0256;&#x0257;&#x0259;&#x025B;&#x0260;&#x0263;&#x0268;&#x0269;&#x026F;&#x0272;&#x0275;&#x0280;&#x0283;&#x0288;&#x028A;&#x028B;&#x0292;&#x0345;&#x03AC;&#x03AD;&#x03AE;&#x03AF;&#x03B1;&#x03B2;&#x03B3;&#x03B4;&#x03B5;&#x03B6;&#x03B7;&#x03B8;&#x03B9;&#x03BA;&#x03BB;&#x03BC;&#x03BD;&#x03BE;&#x03BF;&#x03C0;&#x03C1;&#x03C2;&#x03C3;&#x03C4;&#x03C5;&#x03C6;&#x03C7;&#x03C8;&#x03C9;&#x03CA;&#x03CB;&#x03CC;&#x03CD;&#x03CE;&#x03D0;&#x03D1;&#x03D5;&#x03D6;&#x03DB;&#x03DD;&#x03DF;&#x03E1;&#x03E3;&#x03E5;&#x03E7;&#x03E9;&#x03EB;&#x03ED;&#x03EF;&#x03F0;&#x03F1;&#x03F2;&#x03F5;&#x0430;&#x0431;&#x0432;&#x0433;&#x0434;&#x0435;&#x0436;&#x0437;&#x0438;&#x0439;&#x043A;&#x043B;&#x043C;&#x043D;&#x043E;&#x043F;&#x0440;&#x0441;&#x0442;&#x0443;&#x0444;&#x0445;&#x0446;&#x0447;&#x0448;&#x0449;&#x044A;&#x044B;&#x044C;&#x044D;&#x044E;&#x044F;&#x0450;&#x0451;&#x0452;&#x0453;&#x0454;&#x0455;&#x0456;&#x0457;&#x0458;&#x0459;&#x045A;&#x045B;&#x045C;&#x045D;&#x045E;&#x045F;&#x0461;&#x0463;&#x0465;&#x0467;&#x0469;&#x046B;&#x046D;&#x046F;&#x0471;&#x0473;&#x0475;&#x0477;&#x0479;&#x047B;&#x047D;&#x047F;&#x0481;&#x048D;&#x048F;&#x0491;&#x0493;&#x0495;&#x0497;&#x0499;&#x049B;&#x049D;&#x049F;&#x04A1;&#x04A3;&#x04A5;&#x04A7;&#x04A9;&#x04AB;&#x04AD;&#x04AF;&#x04B1;&#x04B3;&#x04B5;&#x04B7;&#x04B9;&#x04BB;&#x04BD;&#x04BF;&#x04C2;&#x04C4;&#x04C8;&#x04CC;&#x04D1;&#x04D3;&#x04D5;&#x04D7;&#x04D9;&#x04DB;&#x04DD;&#x04DF;&#x04E1;&#x04E3;&#x04E5;&#x04E7;&#x04E9;&#x04EB;&#x04ED;&#x04EF;&#x04F1;&#x04F3;&#x04F5;&#x04F9;&#x0561;&#x0562;&#x0563;&#x0564;&#x0565;&#x0566;&#x0567;&#x0568;&#x0569;&#x056A;&#x056B;&#x056C;&#x056D;&#x056E;&#x056F;&#x0570;&#x0571;&#x0572;&#x0573;&#x0574;&#x0575;&#x0576;&#x0577;&#x0578;&#x0579;&#x057A;&#x057B;&#x057C;&#x057D;&#x057E;&#x057F;&#x0580;&#x0581;&#x0582;&#x0583;&#x0584;&#x0585;&#x0586;&#x1E01;&#x1E03;&#x1E05;&#x1E07;&#x1E09;&#x1E0B;&#x1E0D;&#x1E0F;&#x1E11;&#x1E13;&#x1E15;&#x1E17;&#x1E19;&#x1E1B;&#x1E1D;&#x1E1F;&#x1E21;&#x1E23;&#x1E25;&#x1E27;&#x1E29;&#x1E2B;&#x1E2D;&#x1E2F;&#x1E31;&#x1E33;&#x1E35;&#x1E37;&#x1E39;&#x1E3B;&#x1E3D;&#x1E3F;&#x1E41;&#x1E43;&#x1E45;&#x1E47;&#x1E49;&#x1E4B;&#x1E4D;&#x1E4F;&#x1E51;&#x1E53;&#x1E55;&#x1E57;&#x1E59;&#x1E5B;&#x1E5D;&#x1E5F;&#x1E61;&#x1E63;&#x1E65;&#x1E67;&#x1E69;&#x1E6B;&#x1E6D;&#x1E6F;&#x1E71;&#x1E73;&#x1E75;&#x1E77;&#x1E79;&#x1E7B;&#x1E7D;&#x1E7F;&#x1E81;&#x1E83;&#x1E85;&#x1E87;&#x1E89;&#x1E8B;&#x1E8D;&#x1E8F;&#x1E91;&#x1E93;&#x1E95;&#x1E9B;&#x1EA1;&#x1EA3;&#x1EA5;&#x1EA7;&#x1EA9;&#x1EAB;&#x1EAD;&#x1EAF;&#x1EB1;&#x1EB3;&#x1EB5;&#x1EB7;&#x1EB9;&#x1EBB;&#x1EBD;&#x1EBF;&#x1EC1;&#x1EC3;&#x1EC5;&#x1EC7;&#x1EC9;&#x1ECB;&#x1ECD;&#x1ECF;&#x1ED1;&#x1ED3;&#x1ED5;&#x1ED7;&#x1ED9;&#x1EDB;&#x1EDD;&#x1EDF;&#x1EE1;&#x1EE3;&#x1EE5;&#x1EE7;&#x1EE9;&#x1EEB;&#x1EED;&#x1EEF;&#x1EF1;&#x1EF3;&#x1EF5;&#x1EF7;&#x1EF9;&#x1F00;&#x1F01;&#x1F02;&#x1F03;&#x1F04;&#x1F05;&#x1F06;&#x1F07;&#x1F10;&#x1F11;&#x1F12;&#x1F13;&#x1F14;&#x1F15;&#x1F20;&#x1F21;&#x1F22;&#x1F23;&#x1F24;&#x1F25;&#x1F26;&#x1F27;&#x1F30;&#x1F31;&#x1F32;&#x1F33;&#x1F34;&#x1F35;&#x1F36;&#x1F37;&#x1F40;&#x1F41;&#x1F42;&#x1F43;&#x1F44;&#x1F45;&#x1F51;&#x1F53;&#x1F55;&#x1F57;&#x1F60;&#x1F61;&#x1F62;&#x1F63;&#x1F64;&#x1F65;&#x1F66;&#x1F67;&#x1F70;&#x1F71;&#x1F72;&#x1F73;&#x1F74;&#x1F75;&#x1F76;&#x1F77;&#x1F78;&#x1F79;&#x1F7A;&#x1F7B;&#x1F7C;&#x1F7D;&#x1F80;&#x1F81;&#x1F82;&#x1F83;&#x1F84;&#x1F85;&#x1F86;&#x1F87;&#x1F90;&#x1F91;&#x1F92;&#x1F93;&#x1F94;&#x1F95;&#x1F96;&#x1F97;&#x1FA0;&#x1FA1;&#x1FA2;&#x1FA3;&#x1FA4;&#x1FA5;&#x1FA6;&#x1FA7;&#x1FB0;&#x1FB1;&#x1FB3;&#x1FBE;&#x1FC3;&#x1FD0;&#x1FD1;&#x1FE0;&#x1FE1;&#x1FE5;&#x1FF3;&#x2170;&#x2171;&#x2172;&#x2173;&#x2174;&#x2175;&#x2176;&#x2177;&#x2178;&#x2179;&#x217A;&#x217B;&#x217C;&#x217D;&#x217E;&#x217F;&#x24D0;&#x24D1;&#x24D2;&#x24D3;&#x24D4;&#x24D5;&#x24D6;&#x24D7;&#x24D8;&#x24D9;&#x24DA;&#x24DB;&#x24DC;&#x24DD;&#x24DE;&#x24DF;&#x24E0;&#x24E1;&#x24E2;&#x24E3;&#x24E4;&#x24E5;&#x24E6;&#x24E7;&#x24E8;&#x24E9;&#xFF41;&#xFF42;&#xFF43;&#xFF44;&#xFF45;&#xFF46;&#xFF47;&#xFF48;&#xFF49;&#xFF4A;&#xFF4B;&#xFF4C;&#xFF4D;&#xFF4E;&#xFF4F;&#xFF50;&#xFF51;&#xFF52;&#xFF53;&#xFF54;&#xFF55;&#xFF56;&#xFF57;&#xFF58;&#xFF59;&#xFF5A;&#x10428;&#x10429;&#x1042A;&#x1042B;&#x1042C;&#x1042D;&#x1042E;&#x1042F;&#x10430;&#x10431;&#x10432;&#x10433;&#x10434;&#x10435;&#x10436;&#x10437;&#x10438;&#x10439;&#x1043A;&#x1043B;&#x1043C;&#x1043D;&#x1043E;&#x1043F;&#x10440;&#x10441;&#x10442;&#x10443;&#x10444;&#x10445;&#x10446;&#x10447;&#x10448;&#x10449;&#x1044A;&#x1044B;&#x1044C;&#x1044D;'"/>
+ <xsl:variable name="xsltsl-str-upper" select="'&#x0041;&#x0042;&#x0043;&#x0044;&#x0045;&#x0046;&#x0047;&#x0048;&#x0049;&#x004A;&#x004B;&#x004C;&#x004D;&#x004E;&#x004F;&#x0050;&#x0051;&#x0052;&#x0053;&#x0054;&#x0055;&#x0056;&#x0057;&#x0058;&#x0059;&#x005A;&#x039C;&#x00C0;&#x00C1;&#x00C2;&#x00C3;&#x00C4;&#x00C5;&#x00C6;&#x00C7;&#x00C8;&#x00C9;&#x00CA;&#x00CB;&#x00CC;&#x00CD;&#x00CE;&#x00CF;&#x00D0;&#x00D1;&#x00D2;&#x00D3;&#x00D4;&#x00D5;&#x00D6;&#x00D8;&#x00D9;&#x00DA;&#x00DB;&#x00DC;&#x00DD;&#x00DE;&#x0178;&#x0100;&#x0102;&#x0104;&#x0106;&#x0108;&#x010A;&#x010C;&#x010E;&#x0110;&#x0112;&#x0114;&#x0116;&#x0118;&#x011A;&#x011C;&#x011E;&#x0120;&#x0122;&#x0124;&#x0126;&#x0128;&#x012A;&#x012C;&#x012E;&#x0049;&#x0132;&#x0134;&#x0136;&#x0139;&#x013B;&#x013D;&#x013F;&#x0141;&#x0143;&#x0145;&#x0147;&#x014A;&#x014C;&#x014E;&#x0150;&#x0152;&#x0154;&#x0156;&#x0158;&#x015A;&#x015C;&#x015E;&#x0160;&#x0162;&#x0164;&#x0166;&#x0168;&#x016A;&#x016C;&#x016E;&#x0170;&#x0172;&#x0174;&#x0176;&#x0179;&#x017B;&#x017D;&#x0053;&#x0182;&#x0184;&#x0187;&#x018B;&#x0191;&#x01F6;&#x0198;&#x01A0;&#x01A2;&#x01A4;&#x01A7;&#x01AC;&#x01AF;&#x01B3;&#x01B5;&#x01B8;&#x01BC;&#x01F7;&#x01C4;&#x01C4;&#x01C7;&#x01C7;&#x01CA;&#x01CA;&#x01CD;&#x01CF;&#x01D1;&#x01D3;&#x01D5;&#x01D7;&#x01D9;&#x01DB;&#x018E;&#x01DE;&#x01E0;&#x01E2;&#x01E4;&#x01E6;&#x01E8;&#x01EA;&#x01EC;&#x01EE;&#x01F1;&#x01F1;&#x01F4;&#x01F8;&#x01FA;&#x01FC;&#x01FE;&#x0200;&#x0202;&#x0204;&#x0206;&#x0208;&#x020A;&#x020C;&#x020E;&#x0210;&#x0212;&#x0214;&#x0216;&#x0218;&#x021A;&#x021C;&#x021E;&#x0222;&#x0224;&#x0226;&#x0228;&#x022A;&#x022C;&#x022E;&#x0230;&#x0232;&#x0181;&#x0186;&#x0189;&#x018A;&#x018F;&#x0190;&#x0193;&#x0194;&#x0197;&#x0196;&#x019C;&#x019D;&#x019F;&#x01A6;&#x01A9;&#x01AE;&#x01B1;&#x01B2;&#x01B7;&#x0399;&#x0386;&#x0388;&#x0389;&#x038A;&#x0391;&#x0392;&#x0393;&#x0394;&#x0395;&#x0396;&#x0397;&#x0398;&#x0399;&#x039A;&#x039B;&#x039C;&#x039D;&#x039E;&#x039F;&#x03A0;&#x03A1;&#x03A3;&#x03A3;&#x03A4;&#x03A5;&#x03A6;&#x03A7;&#x03A8;&#x03A9;&#x03AA;&#x03AB;&#x038C;&#x038E;&#x038F;&#x0392;&#x0398;&#x03A6;&#x03A0;&#x03DA;&#x03DC;&#x03DE;&#x03E0;&#x03E2;&#x03E4;&#x03E6;&#x03E8;&#x03EA;&#x03EC;&#x03EE;&#x039A;&#x03A1;&#x03A3;&#x0395;&#x0410;&#x0411;&#x0412;&#x0413;&#x0414;&#x0415;&#x0416;&#x0417;&#x0418;&#x0419;&#x041A;&#x041B;&#x041C;&#x041D;&#x041E;&#x041F;&#x0420;&#x0421;&#x0422;&#x0423;&#x0424;&#x0425;&#x0426;&#x0427;&#x0428;&#x0429;&#x042A;&#x042B;&#x042C;&#x042D;&#x042E;&#x042F;&#x0400;&#x0401;&#x0402;&#x0403;&#x0404;&#x0405;&#x0406;&#x0407;&#x0408;&#x0409;&#x040A;&#x040B;&#x040C;&#x040D;&#x040E;&#x040F;&#x0460;&#x0462;&#x0464;&#x0466;&#x0468;&#x046A;&#x046C;&#x046E;&#x0470;&#x0472;&#x0474;&#x0476;&#x0478;&#x047A;&#x047C;&#x047E;&#x0480;&#x048C;&#x048E;&#x0490;&#x0492;&#x0494;&#x0496;&#x0498;&#x049A;&#x049C;&#x049E;&#x04A0;&#x04A2;&#x04A4;&#x04A6;&#x04A8;&#x04AA;&#x04AC;&#x04AE;&#x04B0;&#x04B2;&#x04B4;&#x04B6;&#x04B8;&#x04BA;&#x04BC;&#x04BE;&#x04C1;&#x04C3;&#x04C7;&#x04CB;&#x04D0;&#x04D2;&#x04D4;&#x04D6;&#x04D8;&#x04DA;&#x04DC;&#x04DE;&#x04E0;&#x04E2;&#x04E4;&#x04E6;&#x04E8;&#x04EA;&#x04EC;&#x04EE;&#x04F0;&#x04F2;&#x04F4;&#x04F8;&#x0531;&#x0532;&#x0533;&#x0534;&#x0535;&#x0536;&#x0537;&#x0538;&#x0539;&#x053A;&#x053B;&#x053C;&#x053D;&#x053E;&#x053F;&#x0540;&#x0541;&#x0542;&#x0543;&#x0544;&#x0545;&#x0546;&#x0547;&#x0548;&#x0549;&#x054A;&#x054B;&#x054C;&#x054D;&#x054E;&#x054F;&#x0550;&#x0551;&#x0552;&#x0553;&#x0554;&#x0555;&#x0556;&#x1E00;&#x1E02;&#x1E04;&#x1E06;&#x1E08;&#x1E0A;&#x1E0C;&#x1E0E;&#x1E10;&#x1E12;&#x1E14;&#x1E16;&#x1E18;&#x1E1A;&#x1E1C;&#x1E1E;&#x1E20;&#x1E22;&#x1E24;&#x1E26;&#x1E28;&#x1E2A;&#x1E2C;&#x1E2E;&#x1E30;&#x1E32;&#x1E34;&#x1E36;&#x1E38;&#x1E3A;&#x1E3C;&#x1E3E;&#x1E40;&#x1E42;&#x1E44;&#x1E46;&#x1E48;&#x1E4A;&#x1E4C;&#x1E4E;&#x1E50;&#x1E52;&#x1E54;&#x1E56;&#x1E58;&#x1E5A;&#x1E5C;&#x1E5E;&#x1E60;&#x1E62;&#x1E64;&#x1E66;&#x1E68;&#x1E6A;&#x1E6C;&#x1E6E;&#x1E70;&#x1E72;&#x1E74;&#x1E76;&#x1E78;&#x1E7A;&#x1E7C;&#x1E7E;&#x1E80;&#x1E82;&#x1E84;&#x1E86;&#x1E88;&#x1E8A;&#x1E8C;&#x1E8E;&#x1E90;&#x1E92;&#x1E94;&#x1E60;&#x1EA0;&#x1EA2;&#x1EA4;&#x1EA6;&#x1EA8;&#x1EAA;&#x1EAC;&#x1EAE;&#x1EB0;&#x1EB2;&#x1EB4;&#x1EB6;&#x1EB8;&#x1EBA;&#x1EBC;&#x1EBE;&#x1EC0;&#x1EC2;&#x1EC4;&#x1EC6;&#x1EC8;&#x1ECA;&#x1ECC;&#x1ECE;&#x1ED0;&#x1ED2;&#x1ED4;&#x1ED6;&#x1ED8;&#x1EDA;&#x1EDC;&#x1EDE;&#x1EE0;&#x1EE2;&#x1EE4;&#x1EE6;&#x1EE8;&#x1EEA;&#x1EEC;&#x1EEE;&#x1EF0;&#x1EF2;&#x1EF4;&#x1EF6;&#x1EF8;&#x1F08;&#x1F09;&#x1F0A;&#x1F0B;&#x1F0C;&#x1F0D;&#x1F0E;&#x1F0F;&#x1F18;&#x1F19;&#x1F1A;&#x1F1B;&#x1F1C;&#x1F1D;&#x1F28;&#x1F29;&#x1F2A;&#x1F2B;&#x1F2C;&#x1F2D;&#x1F2E;&#x1F2F;&#x1F38;&#x1F39;&#x1F3A;&#x1F3B;&#x1F3C;&#x1F3D;&#x1F3E;&#x1F3F;&#x1F48;&#x1F49;&#x1F4A;&#x1F4B;&#x1F4C;&#x1F4D;&#x1F59;&#x1F5B;&#x1F5D;&#x1F5F;&#x1F68;&#x1F69;&#x1F6A;&#x1F6B;&#x1F6C;&#x1F6D;&#x1F6E;&#x1F6F;&#x1FBA;&#x1FBB;&#x1FC8;&#x1FC9;&#x1FCA;&#x1FCB;&#x1FDA;&#x1FDB;&#x1FF8;&#x1FF9;&#x1FEA;&#x1FEB;&#x1FFA;&#x1FFB;&#x1F88;&#x1F89;&#x1F8A;&#x1F8B;&#x1F8C;&#x1F8D;&#x1F8E;&#x1F8F;&#x1F98;&#x1F99;&#x1F9A;&#x1F9B;&#x1F9C;&#x1F9D;&#x1F9E;&#x1F9F;&#x1FA8;&#x1FA9;&#x1FAA;&#x1FAB;&#x1FAC;&#x1FAD;&#x1FAE;&#x1FAF;&#x1FB8;&#x1FB9;&#x1FBC;&#x0399;&#x1FCC;&#x1FD8;&#x1FD9;&#x1FE8;&#x1FE9;&#x1FEC;&#x1FFC;&#x2160;&#x2161;&#x2162;&#x2163;&#x2164;&#x2165;&#x2166;&#x2167;&#x2168;&#x2169;&#x216A;&#x216B;&#x216C;&#x216D;&#x216E;&#x216F;&#x24B6;&#x24B7;&#x24B8;&#x24B9;&#x24BA;&#x24BB;&#x24BC;&#x24BD;&#x24BE;&#x24BF;&#x24C0;&#x24C1;&#x24C2;&#x24C3;&#x24C4;&#x24C5;&#x24C6;&#x24C7;&#x24C8;&#x24C9;&#x24CA;&#x24CB;&#x24CC;&#x24CD;&#x24CE;&#x24CF;&#xFF21;&#xFF22;&#xFF23;&#xFF24;&#xFF25;&#xFF26;&#xFF27;&#xFF28;&#xFF29;&#xFF2A;&#xFF2B;&#xFF2C;&#xFF2D;&#xFF2E;&#xFF2F;&#xFF30;&#xFF31;&#xFF32;&#xFF33;&#xFF34;&#xFF35;&#xFF36;&#xFF37;&#xFF38;&#xFF39;&#xFF3A;&#x10400;&#x10401;&#x10402;&#x10403;&#x10404;&#x10405;&#x10406;&#x10407;&#x10408;&#x10409;&#x1040A;&#x1040B;&#x1040C;&#x1040D;&#x1040E;&#x1040F;&#x10410;&#x10411;&#x10412;&#x10413;&#x10414;&#x10415;&#x10416;&#x10417;&#x10418;&#x10419;&#x1041A;&#x1041B;&#x1041C;&#x1041D;&#x1041E;&#x1041F;&#x10420;&#x10421;&#x10422;&#x10423;&#x10424;&#x10425;'"/>
+ <xsl:variable name="xsltsl-str-digits" select="'0123456789'"/>
+ <!-- space (#x20) characters, carriage returns, line feeds, or tabs. -->
+ <xsl:variable name="xsltsl-str-ws" select="'&#x20;&#x9;&#xD;&#xA;'"/>
+
+ <doc:template name="str:to-upper" xmlns="">
+ <refpurpose>Make string uppercase</refpurpose>
+
+ <refdescription>
+ <para>Converts all lowercase letters to uppercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be converted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with all uppercase letters.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-upper">
+ <xsl:param name="text"/>
+
+ <!-- Below exception is extracted from unicode's SpecialCasing.txt
+ file. It's the german lowercase "eszett" (the thing looking
+ like a greek beta) that's to become "SS" in uppercase (note:
+ that are *two* characters, that's why it doesn't fit in the
+ list of upper/lowercase characters). There are more
+ characters in that file (103, excluding the locale-specific
+ ones), but they seemed to be much less used to me and they
+ add up to a hellish long stylesheet.... - Reinout -->
+ <xsl:param name="modified-text">
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$text"/>
+ </xsl:with-param>
+ <xsl:with-param name="replace">
+ <xsl:text>&#x00DF;</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="with">
+ <xsl:text>&#x0053;</xsl:text>
+ <xsl:text>&#x0053;</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:value-of select="translate($modified-text, $xsltsl-str-lower, $xsltsl-str-upper)"/>
+ </xsl:template>
+
+ <doc:template name="str:to-lower" xmlns="">
+ <refpurpose>Make string lowercase</refpurpose>
+
+ <refdescription>
+ <para>Converts all uppercase letters to lowercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be converted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with all lowercase letters.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-lower">
+ <xsl:param name="text"/>
+
+ <xsl:value-of select="translate($text, $xsltsl-str-upper, $xsltsl-str-lower)"/>
+ </xsl:template>
+
+ <doc:template name="str:capitalise" xmlns="">
+ <refpurpose>Capitalise string</refpurpose>
+
+ <refdescription>
+ <para>Converts first character of string to an uppercase letter. All remaining characters are converted to lowercase.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be capitalised</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>all</term>
+ <listitem>
+ <para>Boolean controlling whether all words in the string are capitalised.</para>
+ <para>Default is true.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:capitalise">
+ <xsl:param name="text"/>
+ <xsl:param name="all" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$all and (contains($text, ' ') or contains($text, ' ') or contains($text, '&#10;'))">
+ <xsl:variable name="firstword">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$firstword"/>
+ </xsl:with-param>
+ <xsl:with-param name="all" select="false()"/>
+ </xsl:call-template>
+ <xsl:value-of select="substring($text, string-length($firstword) + 1, 1)"/>
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="substring($text, string-length($firstword) + 2)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($text, 1, 1)"/>
+ </xsl:call-template>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="substring($text, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:to-camelcase" xmlns="">
+ <refpurpose>Convert a string to one camelcase word</refpurpose>
+
+ <refdescription>
+ <para>Converts a string to one lowerCamelCase or UpperCamelCase
+ word, depending on the setting of the "upper"
+ parameter. UpperCamelCase is also called MixedCase while
+ lowerCamelCase is also called just camelCase. The template
+ removes any spaces, tabs and slashes, but doesn't deal with
+ other punctuation. It's purpose is to convert strings like
+ "hollow timber flush door" to a term suitable as identifier or
+ XML tag like "HollowTimberFlushDoor".
+ </para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be capitalised</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>upper</term>
+ <listitem>
+ <para>Boolean controlling whether the string becomes an
+ UpperCamelCase word or a lowerCamelCase word.</para>
+ <para>Default is true.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:to-camelcase">
+ <xsl:param name="text"/>
+ <xsl:param name="upper" select="true()"/>
+ <!-- First change all 'strange' characters to spaces -->
+ <xsl:param name="string-with-only-spaces">
+ <xsl:value-of select="translate($text,concat($xsltsl-str-ws,'/'),' ')"/>
+ </xsl:param>
+ <!-- Then process them -->
+ <xsl:param name="before-space-removal">
+ <xsl:variable name="firstword">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$string-with-only-spaces"/>
+ <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$upper">
+ <xsl:call-template name="str:to-upper">
+ <xsl:with-param name="text" select="substring($firstword, 1, 1)"/>
+ </xsl:call-template>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="substring($firstword, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:to-lower">
+ <xsl:with-param name="text" select="$firstword"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="str:capitalise">
+ <xsl:with-param name="text">
+ <xsl:value-of select="substring($string-with-only-spaces, string-length($firstword) + 2)"/>
+ </xsl:with-param>
+ <xsl:with-param name="all" select="true()"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:value-of select="translate($before-space-removal,' ','')"/>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-first" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs before any of the characters in string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-first">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="string-length($chars) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:when test="contains($text, substring($chars, 1, 1))">
+ <xsl:variable name="this" select="substring-before($text, substring($chars, 1, 1))"/>
+ <xsl:variable name="rest">
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($this) &lt; string-length($rest)">
+ <xsl:value-of select="$this"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="str:substring-before-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-after-last" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs after the last of the character in string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-after-last">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="last" select="substring-after($text, $chars)"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($last, $chars)">
+ <xsl:call-template name="str:substring-after-last">
+ <xsl:with-param name="text" select="$last"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$last"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-last" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+
+ <refdescription>
+ <para>Extracts the portion of string 'text' which occurs before the first character of the last occurance of string 'chars'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The string containing characters to find.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-last">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="string-length($chars) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:call-template name="str:substring-before-last-aux">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="str:substring-before-last-aux">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0"/>
+
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="after">
+ <xsl:call-template name="str:substring-before-last-aux">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="substring-before($text, $chars)"/>
+ <xsl:if test="string-length($after) &gt; 0">
+ <xsl:value-of select="$chars"/>
+ <xsl:copy-of select="$after"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise/>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:subst" xmlns="">
+ <refpurpose>String substitution</refpurpose>
+
+ <refdescription>
+ <para>Substitute 'replace' for 'with' in string 'text'.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string upon which to perform substitution.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>replace</term>
+ <listitem>
+ <para>The string to substitute.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>with</term>
+ <listitem>
+ <para>The string to be substituted.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disable-output-escaping</term>
+ <listitem>
+ <para>A value of <literal>yes</literal> indicates that the result should have output escaping disabled. Any other value allows normal escaping of text values. The default is to enable output escaping.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:subst">
+ <xsl:param name="text"/>
+ <xsl:param name="replace"/>
+ <xsl:param name="with"/>
+ <xsl:param name='disable-output-escaping'>no</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="string-length($replace) = 0 and $disable-output-escaping = 'yes'">
+ <xsl:value-of select="$text" disable-output-escaping='yes'/>
+ </xsl:when>
+ <xsl:when test="string-length($replace) = 0">
+ <xsl:value-of select="$text"/>
+ </xsl:when>
+ <xsl:when test="contains($text, $replace)">
+
+ <xsl:variable name="before" select="substring-before($text, $replace)"/>
+ <xsl:variable name="after" select="substring-after($text, $replace)"/>
+
+ <xsl:choose>
+ <xsl:when test='$disable-output-escaping = "yes"'>
+ <xsl:value-of select="$before" disable-output-escaping="yes"/>
+ <xsl:value-of select="$with" disable-output-escaping="yes"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$before"/>
+ <xsl:value-of select="$with"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="str:subst">
+ <xsl:with-param name="text" select="$after"/>
+ <xsl:with-param name="replace" select="$replace"/>
+ <xsl:with-param name="with" select="$with"/>
+ <xsl:with-param name="disable-output-escaping" select="$disable-output-escaping"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test='$disable-output-escaping = "yes"'>
+ <xsl:value-of select="$text" disable-output-escaping="yes"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:count-substring" xmlns="">
+ <refpurpose>Count Substrings</refpurpose>
+
+ <refdescription>
+ <para>Counts the number of times a substring occurs in a string. This can also counts the number of times a character occurs in a string, since a character is simply a string of length 1.</para>
+ </refdescription>
+
+ <example>
+ <title>Counting Lines</title>
+ <programlisting><![CDATA[
+<xsl:call-template name="str:count-substring">
+ <xsl:with-param name="text" select="$mytext"/>
+ <xsl:with-param name="chars" select="'&#x0a;'"/>
+</xsl:call-template>
+]]></programlisting>
+ </example>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The substring to count.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns a non-negative integer value.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:count-substring">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or string-length($chars) = 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($text, $chars)">
+ <xsl:variable name="remaining">
+ <xsl:call-template name="str:count-substring">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$remaining + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-after-at" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+ <refdescription>
+ <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position'.</para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>delimiters</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>position of the elements</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>all</term>
+ <listitem>
+ <para>If true all of the remaining string is returned, otherwise only the element at the given position is returned. Default: false().</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+
+ <xsl:template name="str:substring-after-at">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+ <xsl:param name="position"/>
+ <xsl:param name="all" select='false()'/>
+
+ <xsl:choose>
+ <xsl:when test='number($position) = 0 and $all'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='number($position) = 0 and not($chars)'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='number($position) = 0 and not(contains($text, $chars))'>
+ <xsl:value-of select='$text'/>
+ </xsl:when>
+ <xsl:when test='not(contains($text, $chars))'>
+ </xsl:when>
+ <xsl:when test="number($position) = 0">
+ <xsl:value-of select="substring-before($text, $chars)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:substring-after-at">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ <xsl:with-param name="all" select="$all"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:substring-before-at" xmlns="">
+ <refpurpose>String extraction</refpurpose>
+ <refdescription>
+ <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position' </para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string from which to extract a substring.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>delimiters</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>position of the elements</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:substring-before-at">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+ <xsl:param name="position"/>
+
+ <xsl:choose>
+ <xsl:when test="$position &lt;= 0"/>
+ <xsl:when test="not(contains($text, $chars))"/>
+ <xsl:otherwise>
+ <xsl:value-of select='substring-before($text, $chars)'/>
+ <xsl:value-of select='$chars'/>
+
+ <xsl:call-template name="str:substring-before-at">
+ <xsl:with-param name="text" select="substring-after($text, $chars)"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ <xsl:with-param name="chars" select="$chars"/>
+ </xsl:call-template>
+
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:insert-at" xmlns="">
+ <refpurpose>String insertion</refpurpose>
+ <refdescription>
+ <para>Insert 'chars' into "text' at any given "position'</para>
+ </refdescription>
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string upon which to perform insertion</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>position</term>
+ <listitem>
+ <para>the position where insertion will be performed</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>with</term>
+ <listitem>
+ <para>The string to be inserted</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:insert-at">
+ <xsl:param name="text"/>
+ <xsl:param name="position"/>
+ <xsl:param name="chars"/>
+
+ <xsl:variable name="firstpart" select="substring($text, 0, $position)"/>
+ <xsl:variable name="secondpart" select="substring($text, $position, string-length($text))"/>
+
+ <xsl:value-of select="concat($firstpart, $chars, $secondpart)"/>
+ </xsl:template>
+
+
+ <doc:template name="str:backward" xmlns="">
+ <refpurpose>String reversal</refpurpose>
+
+ <refdescription>
+ <para>Reverse the content of a given string</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to be reversed</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns string.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:backward">
+ <xsl:param name="text"/>
+ <xsl:variable name="mirror">
+ <xsl:call-template name="str:build-mirror">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="position" select="string-length($text)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="substring($mirror, string-length($text) + 1, string-length($text))"/>
+ </xsl:template>
+
+ <xsl:template name="str:build-mirror">
+ <xsl:param name="text"/>
+ <xsl:param name="position"/>
+
+ <xsl:choose>
+ <xsl:when test="$position &gt; 0">
+ <xsl:call-template name="str:build-mirror">
+ <xsl:with-param name="text" select="concat($text, substring($text, $position, 1))"/>
+ <xsl:with-param name="position" select="$position - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:justify" xmlns="">
+ <refpurpose>Format a string</refpurpose>
+
+ <refdescription>
+ <para>Inserts newlines and spaces into a string to format it as a block of text.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>String to be formatted.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>max</term>
+ <listitem>
+ <para>Maximum line length.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>indent</term>
+ <listitem>
+ <para>Number of spaces to insert at the beginning of each line.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>justify</term>
+ <listitem>
+ <para>Justify left, right or both. Not currently implemented (fixed at "left").</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Formatted block of text.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name='str:justify'>
+ <xsl:param name='text'/>
+ <xsl:param name='max' select='"80"'/>
+ <xsl:param name='indent' select='"0"'/>
+ <xsl:param name='justify' select='"left"'/>
+
+ <xsl:choose>
+ <xsl:when test='string-length($text) = 0 or $max &lt;= 0'/>
+
+ <xsl:when test='string-length($text) > $max and contains($text, " ") and string-length(substring-before($text, " ")) > $max'>
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='substring-before($text, " ")'/>
+ <xsl:text>
+</xsl:text>
+ <xsl:call-template name='str:justify'>
+ <xsl:with-param name='text' select='substring-after($text, " ")'/>
+ <xsl:with-param name='max' select='$max'/>
+ <xsl:with-param name='indent' select='$indent'/>
+ <xsl:with-param name='justify' select='$justify'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test='string-length($text) > $max and contains($text, " ")'>
+ <xsl:variable name='first'>
+ <xsl:call-template name='str:substring-before-last'>
+ <xsl:with-param name='text' select='substring($text, 1, $max)'/>
+ <xsl:with-param name='chars' select='" "'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='$first'/>
+ <xsl:text>
+</xsl:text>
+ <xsl:call-template name='str:justify'>
+ <xsl:with-param name='text' select='substring($text, string-length($first) + 2)'/>
+ <xsl:with-param name='max' select='$max'/>
+ <xsl:with-param name='indent' select='$indent'/>
+ <xsl:with-param name='justify' select='$justify'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name='str:generate-string'>
+ <xsl:with-param name='text' select='" "'/>
+ <xsl:with-param name='count' select='$indent'/>
+ </xsl:call-template>
+ <xsl:value-of select='$text'/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:character-first" xmlns="">
+ <refpurpose>Find first occurring character in a string</refpurpose>
+
+ <refdescription>
+ <para>Finds which of the given characters occurs first in a string.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chars</term>
+ <listitem>
+ <para>The characters to search for.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ </doc:template>
+
+ <xsl:template name="str:character-first">
+ <xsl:param name="text"/>
+ <xsl:param name="chars"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or string-length($chars) = 0"/>
+
+ <xsl:when test="contains($text, substring($chars, 1, 1))">
+ <xsl:variable name="next-character">
+ <xsl:call-template name="str:character-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($next-character)">
+ <xsl:variable name="first-character-position" select="string-length(substring-before($text, substring($chars, 1, 1)))"/>
+ <xsl:variable name="next-character-position" select="string-length(substring-before($text, $next-character))"/>
+
+ <xsl:choose>
+ <xsl:when test="$first-character-position &lt; $next-character-position">
+ <xsl:value-of select="substring($chars, 1, 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$next-character"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring($chars, 1, 1)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="str:character-first">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="chars" select="substring($chars, 2)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <doc:template name="str:string-match" xmlns="">
+ <refpurpose>Match A String To A Pattern</refpurpose>
+
+ <refdescription>
+ <para>Performs globbing-style pattern matching on a string.</para>
+ </refdescription>
+
+ <example>
+ <title>Match Pattern</title>
+ <programlisting><![CDATA[
+<xsl:call-template name="str:string-match">
+ <xsl:with-param name="text" select="$mytext"/>
+ <xsl:with-param name="pattern" select="'abc*def?g'"/>
+</xsl:call-template>
+]]></programlisting>
+ </example>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The source string.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pattern</term>
+ <listitem>
+ <para>The pattern to match against. Certain characters have special meaning:</para>
+ <variablelist>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>Matches zero or more characters.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>?</term>
+ <listitem>
+ <para>Matches a single character.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\</term>
+ <listitem>
+ <para>Character escape. The next character is taken as a literal character.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+
+ <refreturn>
+ <para>Returns "1" if the string matches the pattern, "0" otherwise.</para>
+ </refreturn>
+ </doc:template>
+
+ <xsl:template name="str:string-match">
+ <xsl:param name="text"/>
+ <xsl:param name="pattern"/>
+
+ <xsl:choose>
+ <xsl:when test="$pattern = '*'">
+ <!-- Special case: always matches -->
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($text) = 0 and string-length($pattern) = 0">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="string-length($text) = 0 or string-length($pattern) = 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name='before-special'>
+ <xsl:call-template name='str:substring-before-first'>
+ <xsl:with-param name='text' select='$pattern'/>
+ <xsl:with-param name='chars' select='"*?\"'/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='special'>
+ <xsl:call-template name='str:character-first'>
+ <xsl:with-param name='text' select='$pattern'/>
+ <xsl:with-param name='chars' select='"*?\"'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name='new-text' select='substring($text, string-length($before-special) + 1)'/>
+ <xsl:variable name='new-pattern' select='substring($pattern, string-length($before-special) + 1)'/>
+
+ <xsl:choose>
+ <xsl:when test="not(starts-with($text, $before-special))">
+ <!-- Verbatim characters don't match -->
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="$special = '*' and string-length($new-pattern) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:when test="$special = '*'">
+ <xsl:call-template name='str:match-postfix'>
+ <xsl:with-param name='text' select='$new-text'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$special = '?'">
+ <xsl:call-template name="str:string-match">
+ <xsl:with-param name='text' select='substring($new-text, 2)'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$special = '\' and substring($new-text, 1, 1) = substring($new-pattern, 2, 1)">
+ <xsl:call-template name="str:string-match">
+ <xsl:with-param name='text' select='substring($new-text, 2)'/>
+ <xsl:with-param name='pattern' select='substring($new-pattern, 3)'/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$special = '\' and substring($new-text, 1, 1) != substring($new-pattern, 2, 1)">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- There were no special characters in the pattern -->
+ <xsl:choose>
+ <xsl:when test='$text = $pattern'>
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="str:match-postfix">
+ <xsl:param name="text"/>
+ <xsl:param name="pattern"/>
+
+ <xsl:variable name='result'>
+ <xsl:call-template name='str:string-match'>
+ <xsl:with-param name='text' select='$text'/>
+ <xsl:with-param name='pattern' select='$pattern'/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test='$result = "1"'>
+ <xsl:value-of select='$result'/>
+ </xsl:when>
+ <xsl:when test='string-length($text) = 0'>
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name='str:match-postfix'>
+ <xsl:with-param name='text' select='substring($text, 2)'/>
+ <xsl:with-param name='pattern' select='$pattern'/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <doc:template name="str:generate-string" xmlns="">
+ <refpurpose>Create A Repeating Sequence of Characters</refpurpose>
+
+ <refdescription>
+ <para>Repeats a string a given number of times.</para>
+ </refdescription>
+
+ <refparameter>
+ <variablelist>
+ <varlistentry>
+ <term>text</term>
+ <listitem>
+ <para>The string to repeat.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>count</term>
+ <listitem>
+ <para>The number of times to repeat the string.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refparameter>
+ </doc:template>
+
+ <xsl:template name="str:generate-string">
+ <xsl:param name="text"/>
+ <xsl:param name="count"/>
+
+ <xsl:choose>
+ <xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ <xsl:call-template name="str:generate-string">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/doc/manual/titlepage-htmlhelp.xml b/doc/manual/titlepage-htmlhelp.xml
new file mode 100644
index 00000000..cfcf39b8
--- /dev/null
+++ b/doc/manual/titlepage-htmlhelp.xml
@@ -0,0 +1,669 @@
+<!-- This file is taken from Docbook Project as available
+ from http://docbook.sourceforge.net/ (version 1.69.1,
+ file titlepage.templates.xml.
+ It was slightly modified. -->
+
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="article" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="set" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="book" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <edition/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <address/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="part" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="division.title"
+ param:node="ancestor-or-self::part[1]"/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="div">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="reference" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+<!-- uncomment this if you want refentry titlepages
+ <title t:force="1"
+ t:named-template="refentry.title"
+ param:node="ancestor-or-self::refentry[1]"/>
+-->
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator/>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::dedication[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="preface" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="section" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::bibliography[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::glossary[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="index" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::index[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::setindex[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+</t:templates>
diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml
new file mode 100644
index 00000000..f50cf3b0
--- /dev/null
+++ b/doc/manual/user_ChangeLogImpl.xml
@@ -0,0 +1,1269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Release change log structure
+
+Each release has a matching log of changes which were made for that and
+earlier releases. Earlier releases means anything with a lower number (e.g.
+5.0.18 is lower than 5.1.2) which was released before this one. The log is
+kept in the file doc/manual/user_ChangeLogImpl.xml. Anything worth mentioning,
+particularly new features and fixed bugs, with a trac bug number if possible,
+should be added to the top of the change log (that is, the section for the
+upcoming release) for the branch in which it first appears - stable or
+development - before the next release. If you back-port it to older branches
+please add an entry there too. When a new major release is made, change log
+sections for earlier releases are merged in.
+
+Change log sections are split into two groups: major new features (normally
+only for dot zero releases) and fixes. In addition, the entries in each group
+are ordered as follows:
+
+ VMM-related entries (most important)
+ GUI-related entries (most visible for users)
+ Device-related entries
+ VBoxManage/API/Main-related entries
+ Host-related entries
+ Guest-related entries
+ BIOS/EFI/ACPI-related entries
+
+Please do further ordering as seems appropriate by importance and visibility for
+users, e.g. audio before serial ports and generally Windows before Linux. Please
+also try to describe the user impact, not the technical details, and only use
+technical terms if no non-technical ones are clear enough.
+-->
+<chapter>
+
+<!-- HACK ALERT! Seems we must have a single top level element for xi:include to work.
+ So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. -->
+
+ <sect1>
+ <title>Version 6.1.22 (2021-04-29)</title>
+
+ <para>This is a maintenance release. The following items were fixed
+ and/or added:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para></para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Improved performance of 64-bit Windows and Solaris guests when Hyper-V
+ is used on recent Windows 10 hosts</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed frequent crashes of 64-bit Windows Vista and Server 2003 guests when Hyper-V
+ is used</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed regression where user was not able to save unset default shortcuts (bug #20305)</para>
+ </listitem>
+
+ <listitem>
+ <para>Storage: Fixed regression in LsiLogic SAS controller emulation caused VM crash (bug #20323)</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.20 (2021-04-20)</title>
+
+ <para>This is a maintenance release. The following items were fixed
+ and/or added:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>VMM: Fixed extremely poor VM performance depending on the timing of various actions (regression in 6.1.0)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed guest OS hanging under certain circumstances when Hyper-V is present (bug #20141)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed Guru Meditation error when using a nested hypervisor under certain circumstances (bug #20175)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed a SMAP related host panic affecting Solaris 11.4 systems with Intel Haswell CPUs or later (bug #16068)</para>
+ </listitem>
+
+ <listitem>
+ <para>OCI: Add cloud-init support for export to OCI and for OCI instance creation</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed "Delete all files" leaving behind Logs/VBoxUI.log (bug #20235)</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Multiple fixes and enhancements</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Fixed detection of duplex audio devices on macOS (5.0 regression; bug #20171)</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: Fixed link status reporting for "not attached" adapters</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: Fixed connectivity issues with e1000 in OS/2 guests (6.1.18 regression; bug #20148)</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: Fixed VxWorks e1000 driver compatibility issue (bug #20182)</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: Fixed GUI checks for port forwarding rules rejecting IPv6 with "Nat Network" (bug #14847)</para>
+ </listitem>
+
+ <listitem>
+ <para>DHCP: Don't crash in the presence of fixed address assignments (bug #20128)</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Fixed possible VM hang when using the a serial port in disconnected mode (bug #19854)</para>
+ </listitem>
+
+ <listitem>
+ <para>Webcam: Fixed interoperability with v4l2loopback and fixed a crash under certain circumstances (bug #20176)</para>
+ </listitem>
+
+ <listitem>
+ <para>NVMe: Fixed sporadic Windows VM hang or reboot on high CPU load</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Allow changing network adapter attachment of a saved VM with "modifyvm"</para>
+ </listitem>
+
+ <listitem>
+ <para>vboximg-mount: Fix for argument processing to honor the '--root' option (6.0 regression; bug #20073)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Support kernel versions 5.11 (bug #20198) and 5.12</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host: Maximum MTU size increased to 16110 for host-only adapters on Linux kernels 4.10+ (bug #19122)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux Guest Additions: Fix vboxvideo module compilation for kernel version 5.10.x</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux Guest Additions: Fixed kernel module build for RHEL 8.4 beta and CentOS Stream (bug #20289)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux Guest Additions: Fixed issue when it was not possible to run executables from mounted share (bug #20320)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.18 (2021-01-19)</title>
+
+ <para>This is a maintenance release. The following items were fixed
+ and/or added:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Nested VM: Fixed hangs when executing SMP nested-guests under certain
+ conditions on Intel hosts (bug #19315, #19561)</para>
+ </listitem>
+
+ <listitem>
+ <para>OCI integration: Cloud Instance parameters parsing is improved
+ on import (bug #19156)</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: UDP checksum offloading in e1000 no longer produces
+ zero checksums (bug #19930)</para>
+ </listitem>
+
+ <listitem>
+ <para>Network: Fixed Host-Only Ethernet Adapter DHCP, guest os can not
+ get IP on host resume (bug #19620)</para>
+ </listitem>
+
+ <listitem>
+ <para>NAT: Fixed mss parameter handing (bug #15256)</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: Multiple optimizations for BigSur</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Fixed issues with audio playback after host goes to
+ sleep (bug #18594)</para>
+ </listitem>
+
+ <listitem>
+ <para>Documentation: Some content touch-up and table formatting fixes</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Support kernel version 5.10 (bug
+ #20055)</para>
+ </listitem>
+
+ <listitem>
+ <para>Solaris host: Fix regression breaking VGA text mode since version 6.1.0</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed a build failure affecting CentOS
+ 8.2-2004 and later (bug #20091)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed a build failure affecting Linux
+ kernels 3.2.0 through 3.2.50 (bug #20006)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed a VM segfault on copy with shared clipboard
+ with X11 (bug #19226)</para>
+ </listitem>
+
+ <listitem>
+ <para>Shared Folder: Fixed error with remounting on Linux guests</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.16 (2020-10-16)</title>
+
+ <para>This is a maintenance release. The following items were fixed
+ and/or added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>VMM: Fixed random memory corruption and XMM register state
+ corruption inside the VM when Hyper-V is used (bug
+ #19695)</para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed VMSVGA 3D support with Linux guests when Hyper-V
+ is used (bug #19884)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed some Qt related crashes on macOS Big Sur</para>
+ </listitem>
+
+ <listitem>
+ <para>Oracle Cloud Infrastructure integration: Fixed network
+ integration not working behind some proxies</para>
+ </listitem>
+
+ <listitem>
+ <para>USB: Mask out remote wake capability to avoid unresponsive
+ devices</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Fixed issues with audio playback after host goes to
+ sleep (bug #18594)</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Keep transferring data if the status line monitoring
+ fails</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Fixed blocking a re-connect when TCP mode is used
+ (bug #19878)</para>
+ </listitem>
+
+ <listitem>
+ <para>HPET: Fixed inability of guests to use the last timer</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Fixed detection of system locale when running
+ 'VBoxManage unattended install' without --locale (bug
+ #19856)</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: Installer on Big Sur is now reminding user that
+ system has to be rebooted to load the installed KEXTs</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Support kernel version 5.9 (bug
+ #19845)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Workaround to improve resizing of 32-bit VMs
+ with VMSVGA graphics controller, and do not try to use RandR
+ version 1.3 due to bugs causing the X server to hang</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Fixed VBoxService crashing in the CPU hot-plug
+ service under certain circumstances during a CPU hot-unplug
+ event (bugs #19902 and #19903)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Fixed Guest additions build for RHEL 8.3 beta
+ (bug #19863)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.14 (2020-09-04)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI: Fixes file name changes in the File location field when creating Virtual Hard Disk (bug #19286)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VMM: Fixed running VMs which failed to start with VERR_NEM_MISSING_KERNEL_API_2 when Hyper-V
+ is used (bug #19779 and #19804)</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: fix regression in HDA emulation introduced in 6.1.0</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: Fixed webcam passthrough and audio input on Mojave and newer by requesting
+ authorization from the user (bug #19758)</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: VBoxHeadless no longer able to start VMs (6.1.4/6.0.18 regression; bug #19706)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows host: Fixes in serial port implementation</para>
+ </listitem>
+
+ <listitem>
+ <para>Shared Clipboard: Fixed a potential crash when copying HTML data (6.1.2 regression; bug #19226)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Linux kernel version 5.8 support</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI: Fixed reading ISO9660 filesystems on attached media (6.1.0 regression; bug #19682)</para>
+ </listitem>
+
+ <listitem>
+ <para>EFI: Support booting from drives attached to the LsiLogic SCSI and SAS controller emulations</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.12 (2020-07-14)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>UI: Fixed Log-Viewer search-backward icon</para>
+ </listitem>
+
+ <listitem>
+ <para>Devices: Fixes and improvements for the BusLogic SCSI controller emulation</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial Port: Regression fixes in FIFO data handling</para>
+ </listitem>
+
+ <listitem>
+ <para>Oracle Cloud Infrastructure integration: Experimental new type of
+ network attachment, allowing local VM to act as if it was run in cloud</para>
+ </listitem>
+
+ <listitem>
+ <para>API: Improved resource management in the guest control functionality</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Fixed command option parsing for the "snapshot edit"
+ sub-command</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Fixed crash of 'VBoxManage internalcommands repairhd'
+ when processing invalid input (bug #19579)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions, 3D: New experimental GLX graphics output</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions, 3D: Fixed releasing texture objects, which could cause
+ guest crashes</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed writes to a file on a shared folder not being
+ reflected on the host when the file is mmap'ed and the used Linux kernel is
+ between version 4.10.0 and 4.11.x</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed the shared folder driver on 32bit Windows 8 and newer
+ returning an error when flushing writes to a file which is mapped into memory under
+ rare circumstances
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Improved resize coverage for VMSVGA graphics controller</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed issues detecting guest additions ISO at runtime</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed German translation encoding for Windows GA installer</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.10 (2020-06-05)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI: Fixed crash when using Qt on Xwayland sessions
+ (bug #19583)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed mouse pointer doesn't work properly in Windows guests
+ when scaling is on (bug #19597)</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Fixed crash of 'VBoxManage internalcommands repairhd'
+ when processing invalid input (bug #19579)</para>
+ </listitem>
+
+ <listitem>
+ <para>Settings: disable audio input and audio output by default for new VMs
+ (bug #19527)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed resizing and multi monitor handling for
+ Wayland guests. (bug #19496)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed VBoxClient error: The parent session seems
+ to be non-X11. (bug #19590)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Linux kernel version 5.7 support. (bug #19516)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.8 (2020-05-15)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI: Fix several layout and mouse position handling bugs with
+ soft keyboard</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed crash on last VM removed (6.1.4 regression; bug #19568, #19525, #19506,
+ #19490, #19481, #19397)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI and API: Allow renaming VMs which are in saved state</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Fixed slow guest output when using the TCP server mode
+ without anyone being connected</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Restored 'VBoxClient--checkhostversion'
+ functionality (6.1.0 regression; bug #19470)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Fixed resizing and multi monitor handling for X11 guests.
+ (6.1.0 regression; bug #19496)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Additions: Build problems fix with Oracle Linux 8.2
+ (Red Hat compatible kernel) / Red Hat Enterprise Linux 8.2 / CentOS 8.2 (bug #19391)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Control/VBoxManage: Fixed handling of multiple environment variables
+ supplied to 'VBoxManage guestcontrol VM run' (6.1.6/6.0.20 regression; bug #19518)</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Control: Implemented support for long(er) command lines</para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Control: Various stability improvements</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.6 (2020-04-14)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>GUI: Multiple enhancements including visual elements updates</para>
+ </listitem>
+
+ <listitem>
+ <para>Graphics: Fixed monitor resizing and multi-monitor handling bugs on X11 guests with
+ VMSVGA graphics adapter</para>
+ </listitem>
+
+ <listitem>
+ <para>Graphics: Enhancements in 2D and 3D acceleration and rendering</para>
+ </listitem>
+
+ <listitem>
+ <para>USB: Multiple enhancements improving prformance and stability</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial port: Improve error handling and fix hang when host port disappears</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Multiple fixes for guestcontrol operations</para>
+ </listitem>
+
+ <listitem>
+ <para>API: Fix for exception handling bug in Python bindings</para>
+ </listitem>
+
+ <listitem>
+ <para>Shared clipboard: Multiple fixes including possible crash and HTML
+ data support</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Support Linux kernel 5.6 (bug #19312)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+
+ <title>Version 6.1.4 (2020-02-19)</title>
+
+ <para>This is a maintenance release. The following items were fixed and/or
+ added:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Virtualization core: Fixed a rare issue with ICEBP instruction
+ causing guru meditations on Intel hosts (6.1.0 regression;
+ bug #19171)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtualization core: Fixed macOS Catalina guests failing to boot
+ after upgrading to 10.15.2 onwards (bug #19188)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Recent NLS integration and bug fixes for GUI and Qt
+ translation tags</para>
+ </listitem>
+
+ <listitem>
+ <para>USB: Fixed isochronous transfers to the VM for xHCI</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Fixed buffer handling, avoiding receiving stale data
+ when the receive queue is flushed (bug #18671)</para>
+ </listitem>
+
+ <listitem>
+ <para>Serial: Improve host serial port passthrough handling on
+ Windows host</para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Restore old --clipboard option for modifyvm
+ command</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: Use hardened runtime and request the needed
+ entitlements, meeting latest notarization rules which also
+ required moving VirtualBoxVM executable</para>
+ </listitem>
+
+ <listitem>
+ <para>macOS host: Update osxfuse to v3.10.4</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows host: Update Italian translation of installer</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows host: Improve shared folder compatibility with POSIX
+ append semantic (bug #19003)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows host: Restore the ability to run VMs through Hyper-V,
+ at the expense of performance</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Support Linux 5.5 (bug #19145)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Shared folder fix for loopback mounting of
+ images</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS: Always report non-ATA disks as ready</para>
+ </listitem>
+
+ <listitem>
+ <para>BIOS: Report EFI support through DMI table (bug 19144)</para>
+ </listitem>
+
+ <listitem>
+ <para>VGA BIOS: Reduce stack space usage for INT 10h handlers</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.2 (2020-01-14)</title>
+
+ <para>
+ This is a maintenance release. The following items were fixed and/or
+ added:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Virtualization core: Fixed performance issue observed with
+ Windows XP guests on AMD hosts (6.0.0 regression; bug #19152)</para>
+ </listitem>
+
+ <listitem>
+ <para>Virtualization core: Consistent IBRS/IBPB CPUID feature
+ reporting, avoids crash of NetBSD 9.0 RC1 installer (bug
+ #19146)</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: Fixed updating of runtime info</para>
+ </listitem>
+
+ <listitem>
+ <para>GUI: In Display settings, do not show "2D video acceleration"
+ checkbox if it is meaningless for the selected graphics
+ adapter</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Fixed audio input handling when VRDE is enabled</para>
+ </listitem>
+
+ <listitem>
+ <para>Audio: Fixed crash in the HDA emulation when using multi-speaker
+ configurations</para>
+ </listitem>
+
+ <listitem>
+ <para>Storage: Fixed use of encrypted disks with snapshots involved
+ (6.1.0 regression; bug #19160)</para>
+ </listitem>
+
+ <listitem>
+ <para>Storage: Improve performance of virtio-scsi</para>
+ </listitem>
+
+ <listitem>
+ <para>Storage: Read-only support for compressed clusters in QCOW2
+ images</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows installer: Include unintentionally dropped vbox-img.exe
+ utility again</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows host: When installing or removing an extension pack,
+ retry the sometimes failing directory renaming (usually caused by
+ anti-virus software accessing the directory)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host: Support Linux 5.5 (guest additions not yet)</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows guest: Accelerate 2D video decoding (scaling and color
+ space conversion) if the VM is configured to use VBoxSVGA with 3D
+ enabled</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows guest: Fix guest additions installer to upgrade the mouse
+ filter driver reliably</para>
+ </listitem>
+
+ <listitem>
+ <para>Windows guest: When uninstalling older Guest Additions with old
+ 3D support enabled try restoring original Direct3D files</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux guest: Improve resize and multi-monitor handling for VMs
+ using VMSVGA (known remaining issue: do not disable a monitor
+ "in the middle", causes confusion)</para>
+ </listitem>
+
+ </itemizedlist>
+ </sect1>
+
+ <sect1>
+ <title>Version 6.1.0 (2019-12-10)</title>
+
+ <para>
+ This is a major update. The following major new features were
+ added:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Implemented support for importing a virtual machine from Oracle
+ Cloud Infrastructure
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Extended support for exporting a virtual machine to Oracle
+ Cloud Infrastructure, allowing the creation of multiple
+ virtual machines without re-uploading. Also added option to
+ export a VM to the cloud using the more efficient variant
+ "paravirtialized", and to specify free-form tags for cloud
+ images
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Virtualization core: Support for nested hardware-virtualization
+ on Intel CPUs (starting with 5th generation Core i, codename
+ Broadwell), so far tested only with guest running VirtualBox
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Graphics: New style 3D support (with VBoxSVGA and VMSVGA) remains,
+ old style 3D support (with VBoxVGA) has been completely removed
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Shared Clipboard: Implemented experimental support for file transfers
+ (Windows hosts/guests only at the moment). Needs to be enabled via
+ VBoxManage (disabled by default).
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ In addition, the following items were fixed and/or added:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Virtualization core: Drop recompiler, i.e. running VMs now needs
+ a CPU supporting hardware virtualization
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Runtime: Works now on hosts with many CPUs (limit now 1024)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Appliance and Cloud Import: Add field for defining firmware type (not
+ part of OVF spec and thus manual in the Appliance case, for OCI it is
+ automatically taken from the instance information)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Improved the VISO creation and file manager dialogs
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Virtual machine list of VirtualBox Manager was improved. Machine
+ groups are now more obvious visually and VM search functionality
+ has been improved. Global Tools element can now be pinned in place,
+ to avoid scrolling it with rest of machine list
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Virtual machine details pane is now extended with embedded editors
+ for selected VM attributes, allowing user to edit them on-the-fly byi
+ clicking corresponding hyper-links without opening VM settings dialog
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Details pane provides more complete information
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Internal medium enumeration routines were optimized to reduce the load
+ and optimize the performance in cases when user have lots
+ of media registered. Also, we again allowed to add existing media (and create new)
+ via Virtual Media Manager
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: More consistent medium selection (both showing known images
+ and allowing to select using the file picker)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: VM storage settings page was adjusted a bit in usability regard. User is now
+ allowed to change controller bus type and can move attachments between the controllers
+ by using drag and drop
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Storage and Network settings pages bug-fixes and usability optimization
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Added a new soft (virtual) keyboard enabling arbitrary keyboard input to guests,
+ including multimedia keys
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Fixed crash in cloud related wizards when accessibility
+ functionality was enabled
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Show VM CPU load as part of status bar CPU indicator
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Improved and extended the Session Information dialog
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Fixed/improved mouse pointer scaling
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Some issues related to mouse integration cursor scaling were
+ addressed (bug #14366), more to go
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Fix and unify geometry save/restore in various dialogs
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Added the missing restriction options for disabling new
+ functionality such as the VISO creator
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ GUI: Popup messages mouse click fix
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Graphics: Remove 3D support for VBoxVGA (old one deprecated with 6.0)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Graphics: Additional texture format support on Windows host
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Graphics: Improved fix for flickering on Windows host
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Input: Added support for horizontal scrolling in the PS/2 mouse
+ device using the IntelliMouse Explorer protocol. Note that this support
+ is automatically used by Linux guests but not by Windows guests
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>vboximg-mount: Experimental support for direct read-only access
+ to NTFS, FAT and ext2/3/4 filesystems inside a disk image without
+ the need for support on the host
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>vboximg-mount: Now also available on Linux host
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Storage: Experimental support for virtio-scsi, for both hard disks and
+ optical drives (including boot support in BIOS)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Storage: For optical drive emulation fix empty host drive crash
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ USB: Improvements for EHCI controller implementation
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ USB: Filter can now specify port path, uniquely identifying a port
+ in a system
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ NAT: Fix TFTP OACK response, send only if request has options
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ NAT Network: Use non-blocking sockets on Linux for accepted
+ incoming connections (port forwarding)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ PCnet-ISA: Added new network adapter type, currently CLI only
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Audio: Allow changing the host audio backend while the VM is
+ in saved state
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ ACPI: Report NVMe controller
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VGA: Improve hardware and BIOS compatibility
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBoxSVGA/VMSVGA: Support YUV2 and related texture formats with hosts
+ using OpenGL (macOS and Linux), which accelerates video playback
+ when 3D is enabled by delegating the color space conversion to the
+ host GPU
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBoxSVGA/VMSVGA: Several drawing fixes for the 3D case
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VMSVGA 3D: Fixed OpenGL compressed textures
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBoxManage: More cloud functionality coverage, e.g. starting
+ a cloud instance
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ VBoxManage: As part of the guest control feature support moving
+ multiple source files/directories to a target directory
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Guest Control/VBoxManage: Added support for specifying multiple sources
+ when renaming guest files
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxManage: Show "unrestricted guest" and "nested HW
+ virtualization" CPU features when listing the host information</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ API: Reduce the amount of leftovers from Move VM function
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Shared Clipboard: Implemented experimental support for file transfers
+ for Linux hosts on Windows guests (disabled by default)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SMBIOS: Store system UUID in little endian format which is the
+ default for new VMs, while existing VMs stick to the old VirtualBox
+ behavior of storing them in big endian format for backwards
+ compatibility to avoid breaking the activation status of Windows VMs
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>VBoxSDL frontend: Fixed running on Windows hosts</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ macOS host: Fix VM crashes (most visible on macOS Catalina)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Linux host: Improve vboxweb systemd service dependency information
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Linux host: Drop PCI passthrough, the current code is too incomplete
+ (cannot handle PCIe devices at all), i.e. not useful enough
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Support Linux 5.4 (bug #18945)</para>
+ </listitem>
+
+ <listitem>
+ <para>Linux host and guest: Force disabling of kernel module signing
+ during build (user can do it afterwards)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows host: When possible, distinguish USB devices by port number; helps
+ with accurate capturing of devices when multiple otherwise identical devices
+ are connected
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Guest Additions: Many fixes for drawing problems in the
+ driver for VBoxSVGA
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Guest Additions: Fixes for legacy VBoxVGA adapter, restore
+ previously working cases
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows Guest Additions: Restore VHWA functionality for VBoxSVGA
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Windows guest: DXVA implementation for WDDM driver
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Documentation: Updated supported host operating systems, added few
+ new manual pages (more to come later)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EFI: Switch to newer firmware code base and add NVRAM support,
+ should improve compatibility with OSes significantly
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EFI: Added support for booting from APFS
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EFI: Added support for non-standard SATA and NVMe boot device paths
+ created by OS X
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ EFI: Modified updated EFI code base to support older OS X guests again
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
diff --git a/doc/manual/xidl2docbook.xsl b/doc/manual/xidl2docbook.xsl
new file mode 100644
index 00000000..5356d56e
--- /dev/null
+++ b/doc/manual/xidl2docbook.xsl
@@ -0,0 +1,577 @@
+<?xml version="1.0"?>
+
+<!--
+ xidl2docbook.xsl:
+ XSLT stylesheet that generates docbook from
+ VirtualBox.xidl.
+
+ Copyright (C) 2006-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl">
+
+ <xsl:output
+ method="xml"
+ version="1.0"
+ encoding="utf-8"
+ indent="yes"/>
+
+ <xsl:strip-space elements="*"/>
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - -
+ Keys for more efficiently looking up of types.
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
+<xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
+<xsl:key name="G_keyResultsByName" match="//result[@name]" use="@name"/>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ global XSLT variables
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:variable name="G_xsltFilename" select="'glue-jaxws.xsl'" />
+
+<!-- collect all interfaces with "wsmap='suppress'" in a global variable for
+ quick lookup -->
+<xsl:variable name="G_setSuppressedInterfaces"
+ select="//interface[@wsmap='suppress']" />
+
+<xsl:template name="makeLinkId">
+ <xsl:param name="ifname" />
+ <xsl:param name="member" />
+ <xsl:value-of select="concat($ifname, '__', $member)"/>
+</xsl:template>
+
+<xsl:template name="emitType">
+ <xsl:param name="type" />
+ <xsl:choose>
+ <xsl:when test="$type">
+ <xsl:choose>
+ <xsl:when test="count(key('G_keyInterfacesByName',$type)) > 0">
+ <link>
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="translate($type, ':', '_')" />
+ </xsl:attribute>
+ <xsl:value-of select="$type" />
+ </link>
+ </xsl:when>
+ <xsl:when test="count(key('G_keyEnumsByName',$type)) > 0">
+ <link>
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="translate($type, ':', '_')" />
+ </xsl:attribute>
+ <xsl:value-of select="$type" />
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$type" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'void'" />
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="isWebserviceOnly">
+ <xsl:for-each select="ancestor-or-self::*">
+ <xsl:if test="(name()='if') and (@target='wsdl')">
+ <xsl:text>yes</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ root match
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="/idl">
+ <book> <!-- Need a single top-level element for xi:include, we'll skip it using xpointer. -->
+ <chapter id="sdkref_classes">
+ <title>Classes (interfaces)</title>
+ <xsl:for-each select="//interface">
+ <xsl:sort select="@name"/>
+
+ <!-- ignore those interfaces within module sections; they don't have uuid -->
+ <xsl:if test="@uuid">
+ <xsl:variable name="ifname" select="@name" />
+ <xsl:variable name="wsmap" select="@wsmap" />
+ <xsl:variable name="wscpp" select="@wscpp" />
+ <xsl:variable name="wsonly"><xsl:call-template name="isWebserviceOnly" /></xsl:variable>
+ <xsl:variable name="extends" select="@extends" />
+ <xsl:variable name="reportExtends" select="not($extends='$unknown') and not($extends='$errorinfo')" />
+
+ <sect1>
+ <xsl:attribute name="id">
+ <xsl:value-of select="$ifname" />
+ </xsl:attribute>
+ <title><xsl:value-of select="$ifname" />
+ <xsl:if test="$reportExtends">
+ <xsl:value-of select="concat(' (', @extends, ')')" />
+ </xsl:if>
+ </title>
+
+ <xsl:choose>
+ <xsl:when test="$wsmap='suppress'">
+ <para><note><para>
+ This interface is not supported in the web service.
+ </para></note></para>
+ </xsl:when>
+ <xsl:when test="$wsmap='struct'">
+ <para><note><para>With the web service, this interface is mapped to a structure. Attributes that return this interface will not return an object, but a complete structure
+ containing the attributes listed below as structure members.</para></note></para>
+ </xsl:when>
+ <xsl:when test="$wsonly='yes'">
+ <para><note><para>This interface is supported in the web service only, not in COM/XPCOM.</para></note></para>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="$reportExtends">
+ <para><note><para>
+ This interface extends
+ <link>
+ <xsl:attribute name="linkend"><xsl:value-of select="$extends" /></xsl:attribute>
+ <xsl:value-of select="$extends" />
+ </link>
+ and therefore supports all its methods and attributes as well.
+ </para></note></para>
+ </xsl:if>
+
+ <xsl:apply-templates select="desc" />
+
+ <xsl:if test="attribute">
+ <sect2>
+ <title>Attributes</title>
+ <xsl:for-each select="attribute">
+ <xsl:variable name="attrtype" select="@type" />
+ <sect3>
+ <xsl:attribute name="id">
+ <xsl:call-template name="makeLinkId">
+ <xsl:with-param name="ifname" select="$ifname" />
+ <xsl:with-param name="member" select="@name" />
+ </xsl:call-template>
+ </xsl:attribute>
+ <title>
+ <xsl:choose>
+ <xsl:when test="@readonly='yes'">
+ <xsl:value-of select="concat(@name, ' (read-only)')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat(@name, ' (read/write)')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </title>
+ <programlisting>
+ <xsl:call-template name="emitType">
+ <xsl:with-param name="type" select="$attrtype" />
+ </xsl:call-template>
+ <xsl:value-of select="concat(' ', $ifname, '::', @name)" />
+ <xsl:if test="(@array='yes') or (@safearray='yes')">
+ <xsl:text>[]</xsl:text>
+ </xsl:if>
+ </programlisting>
+ <xsl:if test="( ($attrtype=($G_setSuppressedInterfaces/@name)) )">
+ <para><note><para>
+ This attribute is not supported in the web service.
+ </para></note></para>
+ </xsl:if>
+ <xsl:apply-templates select="desc" />
+ </sect3>
+ </xsl:for-each>
+ </sect2>
+ </xsl:if>
+
+ <xsl:if test="method">
+<!-- <sect2> -->
+<!-- <title>Methods</title> -->
+ <xsl:for-each select="method">
+ <xsl:sort select="@name" />
+ <xsl:variable name="returnidltype" select="param[@dir='return']/@type" />
+ <sect2>
+ <xsl:attribute name="id">
+ <xsl:call-template name="makeLinkId">
+ <xsl:with-param name="ifname" select="$ifname" />
+ <xsl:with-param name="member" select="@name" />
+ </xsl:call-template>
+ </xsl:attribute>
+ <title>
+ <xsl:value-of select="@name" />
+ </title>
+ <xsl:if test=" (param[@type=($G_setSuppressedInterfaces/@name)])
+ or (param[@mod='ptr'])" >
+ <para><note><para>
+ This method is not supported in the web service.
+ </para></note></para>
+ </xsl:if>
+ <!-- make a set of all parameters with in and out direction -->
+ <xsl:variable name="paramsinout" select="param[@dir='in' or @dir='out']" />
+ <programlisting>
+ <!--emit return type-->
+ <xsl:call-template name="emitType">
+ <xsl:with-param name="type" select="$returnidltype" />
+ </xsl:call-template>
+ <xsl:if test="(param[@dir='return']/@array='yes') or (param[@dir='return']/@safearray='yes')">
+ <xsl:text>[]</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="concat(' ', $ifname, '::', @name, '(')" />
+ <xsl:if test="$paramsinout">
+ <xsl:for-each select="$paramsinout">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:value-of select="concat(' [', @dir, '] ')" />
+ <xsl:if test="@mod = 'ptr'">
+ <xsl:text>[ptr] </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="emitType">
+ <xsl:with-param name="type" select="@type" />
+ </xsl:call-template>
+ <emphasis role="bold">
+ <xsl:value-of select="concat(' ', @name)" />
+ </emphasis>
+ <xsl:if test="(@array='yes') or (@safearray='yes')">
+ <xsl:text>[]</xsl:text>
+ </xsl:if>
+ <xsl:if test="not(position()=last())">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:text>)</xsl:text>
+ </programlisting>
+
+ <xsl:if test="$paramsinout">
+ <glosslist>
+ <xsl:for-each select="$paramsinout">
+ <glossentry>
+ <glossterm>
+ <xsl:value-of select="@name" />
+ </glossterm>
+ <glossdef>
+ <xsl:if test="not(desc)">
+ <para/>
+ </xsl:if>
+ <xsl:apply-templates select="desc" />
+ </glossdef>
+ </glossentry>
+ </xsl:for-each>
+ </glosslist>
+ </xsl:if>
+
+ <!-- dump the description here -->
+ <xsl:apply-templates select="desc" />
+
+ <xsl:if test="desc/result">
+ <para>If this method fails, the following error codes may be reported:</para>
+ <itemizedlist>
+ <xsl:for-each select="desc/result">
+ <listitem>
+ <para><code><xsl:value-of select="@name" />: </code>
+ <xsl:apply-templates />
+ </para>
+ </listitem>
+ </xsl:for-each>
+ </itemizedlist>
+ </xsl:if>
+ </sect2>
+ </xsl:for-each>
+<!-- </sect2> -->
+ </xsl:if>
+
+ </sect1>
+ </xsl:if>
+ </xsl:for-each>
+ </chapter>
+
+ <chapter id="sdkref_enums">
+ <title>Enumerations (enums)</title>
+ <xsl:for-each select="//enum">
+ <xsl:sort select="@name"/>
+
+ <xsl:variable name="ifname" select="@name" />
+ <xsl:variable name="wsmap" select="@wsmap" />
+ <xsl:variable name="wscpp" select="@wscpp" />
+
+ <sect1>
+ <xsl:attribute name="id">
+ <xsl:value-of select="$ifname" />
+ </xsl:attribute>
+ <title><xsl:value-of select="$ifname" /></title>
+
+ <xsl:apply-templates select="desc" />
+
+ <glosslist>
+ <xsl:for-each select="const">
+ <glossentry>
+ <glossterm>
+ <xsl:attribute name="id">
+ <xsl:call-template name="makeLinkId">
+ <xsl:with-param name="ifname" select="$ifname" />
+ <xsl:with-param name="member" select="@name" />
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </glossterm>
+ <glossdef>
+ <xsl:if test="not(desc)">
+ <para/>
+ </xsl:if>
+ <xsl:apply-templates select="desc" />
+ </glossdef>
+ </glossentry>
+ </xsl:for-each>
+ </glosslist>
+ </sect1>
+ </xsl:for-each>
+ </chapter>
+ </book>
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ if
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<!--
+ * ignore all |if|s except those for WSDL target
+-->
+<xsl:template match="if">
+ <xsl:if test="@target='wsdl'">
+ <xsl:apply-templates/>
+ </xsl:if>
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ cpp
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="cpp">
+<!-- ignore this -->
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ result
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="result">
+ <!-- ignore this, we handle them explicitly in method loops -->
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ library
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="library">
+ <xsl:apply-templates />
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ class
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="module/class">
+<!-- TODO swallow for now -->
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ enum
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="enum">
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ const
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<!--
+<xsl:template match="const">
+ <xsl:apply-templates />
+</xsl:template>
+-->
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ desc
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="desc">
+ <!-- todo: wrapping the entire content in a single para is actually not
+ entirely correct, as it contains empty lines denoting new paragraphs -->
+ <para>
+ <xsl:apply-templates />
+ </para>
+</xsl:template>
+
+<xsl:template name="getCurrentInterface">
+ <xsl:for-each select="ancestor-or-self::*">
+ <xsl:if test="name()='interface'">
+ <xsl:value-of select="@name"/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- <link to="DeviceType::HardDisk"/> -->
+<xsl:template match="link">
+ <link>
+ <xsl:variable name="tmp" select="@to" />
+ <xsl:variable name="enumNameFromCombinedName">
+ <xsl:value-of select="substring-before($tmp, '_')" />
+ </xsl:variable>
+ <xsl:variable name="enumValueFromCombinedName">
+ <xsl:value-of select="substring-after($tmp, '_')" />
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="count(key('G_keyInterfacesByName',$tmp)) > 0 or count(key('G_keyEnumsByName',$tmp)) > 0"><!-- link to interface only -->
+ <xsl:attribute name="linkend"><xsl:value-of select="@to" /></xsl:attribute>
+ <xsl:value-of select="$tmp" />
+ </xsl:when>
+ <xsl:when test="count(key('G_keyEnumsByName',$enumNameFromCombinedName)) > 0">
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="concat($enumNameFromCombinedName, '__', $enumValueFromCombinedName)" />
+ </xsl:attribute>
+ <xsl:value-of select="$enumValueFromCombinedName" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="currentif">
+ <xsl:call-template name="getCurrentInterface" />
+ </xsl:variable>
+ <xsl:variable name="if"><!-- interface -->
+ <xsl:choose>
+ <xsl:when test="contains(@to, '#')">
+ <xsl:value-of select="$currentif" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before(@to, '::')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="member"><!-- member in that interface -->
+ <xsl:choose>
+ <xsl:when test="contains(@to, '#')">
+ <xsl:value-of select="substring-after(@to, '#')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-after(@to, '::')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:attribute name="linkend"><xsl:value-of select="concat($if, '__', $member)" /></xsl:attribute>
+ <xsl:variable name="autotextsuffix">
+ <xsl:choose>
+ <!-- if link points to a method, append "()" -->
+ <xsl:when test="key('G_keyInterfacesByName',$if)/method[@name=$member]">
+ <xsl:value-of select="'()'" />
+ </xsl:when>
+ <!-- if link points to a safearray attribute, append "[]" -->
+ <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]/@safearray = 'yes'">
+ <xsl:value-of select="'[]'" />
+ </xsl:when>
+ <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]"/>
+ <xsl:when test="key('G_keyEnumsByName',$if)/const[@name=$member]"/>
+ <xsl:when test="count(key('G_keyResultsByName',$tmp)) > 0"/>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:value-of select="concat('Invalid link pointing to &quot;', $tmp, '&quot;')" />
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="./text()"><!-- link text given in source -->
+ <xsl:apply-templates />
+ </xsl:when>
+ <xsl:when test="$if=$currentif"><!-- "near" link to method or attribute in current interface -->
+ <xsl:value-of select="concat($member, $autotextsuffix)" />
+ </xsl:when>
+ <xsl:otherwise><!-- "far" link to other method or attribute -->
+ <xsl:value-of select="concat($if, '::', $member, $autotextsuffix)" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </link>
+</xsl:template>
+
+<!-- - - - - - - - - - - - - - - - - - - - - - -
+ note
+ - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template match="note">
+ <xsl:if test="not(@internal='yes')">
+ <note><para>
+ <xsl:apply-templates />
+ </para></note>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="tt">
+ <computeroutput>
+ <xsl:apply-templates />
+ </computeroutput>
+</xsl:template>
+
+<xsl:template match="b">
+ <emphasis role="bold">
+ <xsl:apply-templates />
+ </emphasis>
+</xsl:template>
+
+<xsl:template match="i">
+ <emphasis>
+ <xsl:apply-templates />
+ </emphasis>
+</xsl:template>
+
+<xsl:template match="see">
+ <xsl:text>See also: </xsl:text>
+ <xsl:apply-templates />
+</xsl:template>
+
+<xsl:template match="ul">
+ <itemizedlist>
+ <xsl:apply-templates />
+ </itemizedlist>
+</xsl:template>
+
+<xsl:template match="ol">
+ <orderedlist>
+ <xsl:apply-templates />
+ </orderedlist>
+</xsl:template>
+
+<xsl:template match="li">
+ <listitem>
+ <para>
+ <xsl:apply-templates />
+ </para>
+ </listitem>
+</xsl:template>
+
+<xsl:template match="h3">
+ <emphasis role="bold">
+ <xsl:apply-templates />
+ </emphasis>
+</xsl:template>
+
+<xsl:template match="pre">
+ <screen><xsl:apply-templates /></screen>
+</xsl:template>
+
+<xsl:template match="table">
+ <xsl:apply-templates /> <!-- todo -->
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/manual/xml2tag.xsl b/doc/manual/xml2tag.xsl
new file mode 100644
index 00000000..1a8b8db7
--- /dev/null
+++ b/doc/manual/xml2tag.xsl
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<!--
+ xml2tag.xsl:
+ XSLT stylesheet that extracts just the tags of an XML document.
+
+ Copyright (C) 2018-2020 Oracle Corporation
+
+ This file is part of VirtualBox Open Source Edition (OSE), as
+ available from http://www.virtualbox.org. This file is free software;
+ you can redistribute it and/or modify it under the terms of the GNU
+ General Public License (GPL) as published by the Free Software
+ Foundation, in version 2 as it comes in the "COPYING" file of the
+ VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+-->
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output method="text"/>
+
+ <xsl:strip-space elements="*"/>
+
+ <xsl:template match="*">
+ <xsl:value-of select="name()"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="*"/>
+ </xsl:template>
+
+</xsl:stylesheet>