summaryrefslogtreecommitdiffstats
path: root/doc
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
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 '')
-rw-r--r--doc/.scm-settings39
-rw-r--r--doc/License-gpl-2.0.html390
-rw-r--r--doc/License-gpl-2.0.rtf394
-rw-r--r--doc/License-gpl-2.0.txt379
-rw-r--r--doc/License-gpl-2.html353
-rw-r--r--doc/License-gpl-2.rtf356
-rw-r--r--doc/License-gpl-2.txt339
-rw-r--r--doc/ReadMe-OS2.txt149
-rw-r--r--doc/ReadMe-Solaris.txt47
-rw-r--r--doc/ReadMe-Solaris11.txt55
-rw-r--r--doc/VBox-CodingGuidelines.cpp1021
-rw-r--r--doc/VBox-MakefileGuidelines.cpp206
-rw-r--r--doc/VBox-doc.c190
-rw-r--r--doc/VMM/PDMStorageScsi.odgbin0 -> 22445 bytes
-rw-r--r--doc/VMM/PDMStorageScsi.pngbin0 -> 326026 bytes
-rw-r--r--doc/VMM/VMMContexts.odgbin0 -> 15400 bytes
-rw-r--r--doc/VMM/VMMContexts.pngbin0 -> 357761 bytes
-rw-r--r--doc/kBuild-tricks.txt62
-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
-rw-r--r--doc/technical/Resizing.wiki27
190 files changed, 120115 insertions, 0 deletions
diff --git a/doc/.scm-settings b/doc/.scm-settings
new file mode 100644
index 00000000..e0bc7681
--- /dev/null
+++ b/doc/.scm-settings
@@ -0,0 +1,39 @@
+# $Id: .scm-settings $
+## @file
+# Source code massager settings for the docs.
+#
+
+#
+# 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.
+#
+
+/*.html: --treat-as plaintext
+/*.rtf: --treat-as binary
+/*.doc: --treat-as binary
+/*.odt: --treat-as binary
+/*.ods: --treat-as binary
+/*.odg: --treat-as binary
+/*.sxi: --treat-as binary
+/*.vpp: --treat-as binary
+
+# Abusing --external-copyright.
+/*.txvpck: --treat-as xml --external-copyright --no-convert-eol
+/*.txvStateDiagram20: --treat-as xml --external-copyright --no-convert-eol
+/*.txvComponentDiagram20: --treat-as xml --external-copyright --no-convert-eol
+/*.xmi: --treat-as xml --external-copyright --no-convert-eol
+/*.tpx: --treat-as xml --external-copyright --no-convert-eol
+/*.graphml: --treat-as xml --external-copyright --no-convert-eol
+
+/*.iuml: --treat-as plaintext --add-action copyright-tick-style
+/Changelog.2*: --treat-as plaintext
+
+--filter-out-files /Qt/qt4.darwin.patch
+
diff --git a/doc/License-gpl-2.0.html b/doc/License-gpl-2.0.html
new file mode 100644
index 00000000..110052c4
--- /dev/null
+++ b/doc/License-gpl-2.0.html
@@ -0,0 +1,390 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!-- Translation from RTF performed by UnRTF, version 0.20.1 -->
+<!-- document uses ANSI character set -->
+<!-- font table contains 8 fonts total -->
+<!-- creation date: -->
+<!-- revision date: -->
+<!-- last printed: -->
+<!-- comments: StarWriter -->
+</head>
+<body>Preliminary notes:<br>
+<br>
+1) The majority of code in the VirtualBox Open Source Edition (OSE) is<br>
+copyrighted by Oracle Corporation. This code is combined with third-party code<br>
+that was originally released under licenses which the Free Software Foundation<br>
+considers incompatible with the GPL, such as the Apache License 2.0, the OpenSSL<br>
+license, the Mozilla Public License (MPL) and the Slirp license. (Please see the<br>
+VirtualBox User Manual for a complete list of third-party code and their<br>
+licenses.) As a special exception to the terms and conditions of the GPL listed<br>
+below, Oracle gives you explicit permission to combine its GPL code contained in<br>
+VirtualBox OSE with third-party code under the aforementioned licenses. You may<br>
+copy and distribute such a combination provided that you adhere to the terms and<br>
+conditions of all of the GPL and the licenses of the third-party code; in<br>
+particular, you must include the source code of the entire combination insofar<br>
+as the GPL requires distribution of source code.<br>
+<br>
+2) The GPL listed below does not bind software which uses VirtualBox services by<br>
+merely linking to VirtualBox libraries so long as all VirtualBox interfaces used<br>
+by that software are multi-licensed. A VirtualBox interface is deemed<br>
+multi-licensed if it is declared in a VirtualBox header file that is licensed<br>
+under both the GPL version 2 (below) *and* the Common Development and<br>
+Distribution License Version 1.0 (CDDL), as it comes in the &quot;COPYING.CDDL&quot; file.<br>
+In other words, calling such a multi-licensed interface is merely considered<br>
+normal use of VirtualBox and does not turn the calling code into a derived work<br>
+of VirtualBox. In particular, this applies to code that wants to extend<br>
+VirtualBox by way of the Extension Pack mechanism declared in the ExtPack.h<br>
+header file.<br>
+<br>
+3) Whoever creates or distributes a derived work based on VirtualBox OSE is not<br>
+obligated to grant the above exceptions for such a version. The GPL allows for<br>
+releasing a modified version without the above exception; in addition, Oracle<br>
+hereby also allows you to release a modified version which carries forward these<br>
+exceptions.<br>
+<br>
+Oracle Corporation<br>
+<br>
+-------------------------------------------------------<br>
+<br>
+ GNU GENERAL PUBLIC LICENSE<br>
+ Version 2, June 1991<br>
+<br>
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,<br>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA<br>
+ Everyone is permitted to copy and distribute verbatim copies<br>
+ of this license document, but changing it is not allowed.<br>
+<br>
+ Preamble<br>
+<br>
+ The licenses for most software are designed to take away your<br>
+freedom to share and change it. By contrast, the GNU General Public<br>
+License is intended to guarantee your freedom to share and change free<br>
+software--to make sure the software is free for all its users. This<br>
+General Public License applies to most of the Free Software<br>
+Foundation's software and to any other program whose authors commit to<br>
+using it. (Some other Free Software Foundation software is covered by<br>
+the GNU Lesser General Public License instead.) You can apply it to<br>
+your programs, too.<br>
+<br>
+ When we speak of free software, we are referring to freedom, not<br>
+price. Our General Public Licenses are designed to make sure that you<br>
+have the freedom to distribute copies of free software (and charge for<br>
+this service if you wish), that you receive source code or can get it<br>
+if you want it, that you can change the software or use pieces of it<br>
+in new free programs; and that you know you can do these things.<br>
+<br>
+ To protect your rights, we need to make restrictions that forbid<br>
+anyone to deny you these rights or to ask you to surrender the rights.<br>
+These restrictions translate to certain responsibilities for you if you<br>
+distribute copies of the software, or if you modify it.<br>
+<br>
+ For example, if you distribute copies of such a program, whether<br>
+gratis or for a fee, you must give the recipients all the rights that<br>
+you have. You must make sure that they, too, receive or can get the<br>
+source code. And you must show them these terms so they know their<br>
+rights.<br>
+<br>
+ We protect your rights with two steps: (1) copyright the software, and<br>
+(2) offer you this license which gives you legal permission to copy,<br>
+distribute and/or modify the software.<br>
+<br>
+ Also, for each author's protection and ours, we want to make certain<br>
+that everyone understands that there is no warranty for this free<br>
+software. If the software is modified by someone else and passed on, we<br>
+want its recipients to know that what they have is not the original, so<br>
+that any problems introduced by others will not reflect on the original<br>
+authors' reputations.<br>
+<br>
+ Finally, any free program is threatened constantly by software<br>
+patents. We wish to avoid the danger that redistributors of a free<br>
+program will individually obtain patent licenses, in effect making the<br>
+program proprietary. To prevent this, we have made it clear that any<br>
+patent must be licensed for everyone's free use or not licensed at all.<br>
+<br>
+ The precise terms and conditions for copying, distribution and<br>
+modification follow.<br>
+<br>
+ GNU GENERAL PUBLIC LICENSE<br>
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION<br>
+<br>
+ 0. This License applies to any program or other work which contains<br>
+a notice placed by the copyright holder saying it may be distributed<br>
+under the terms of this General Public License. The &quot;Program&quot;, below,<br>
+refers to any such program or work, and a &quot;work based on the Program&quot;<br>
+means either the Program or any derivative work under copyright law:<br>
+that is to say, a work containing the Program or a portion of it,<br>
+either verbatim or with modifications and/or translated into another<br>
+language. (Hereinafter, translation is included without limitation in<br>
+the term &quot;modification&quot;.) Each licensee is addressed as &quot;you&quot;.<br>
+<br>
+Activities other than copying, distribution and modification are not<br>
+covered by this License; they are outside its scope. The act of<br>
+running the Program is not restricted, and the output from the Program<br>
+is covered only if its contents constitute a work based on the<br>
+Program (independent of having been made by running the Program).<br>
+Whether that is true depends on what the Program does.<br>
+<br>
+ 1. You may copy and distribute verbatim copies of the Program's<br>
+source code as you receive it, in any medium, provided that you<br>
+conspicuously and appropriately publish on each copy an appropriate<br>
+copyright notice and disclaimer of warranty; keep intact all the<br>
+notices that refer to this License and to the absence of any warranty;<br>
+and give any other recipients of the Program a copy of this License<br>
+along with the Program.<br>
+<br>
+You may charge a fee for the physical act of transferring a copy, and<br>
+you may at your option offer warranty protection in exchange for a fee.<br>
+<br>
+ 2. You may modify your copy or copies of the Program or any portion<br>
+of it, thus forming a work based on the Program, and copy and<br>
+distribute such modifications or work under the terms of Section 1<br>
+above, provided that you also meet all of these conditions:<br>
+<br>
+ a) You must cause the modified files to carry prominent notices<br>
+ stating that you changed the files and the date of any change.<br>
+<br>
+ b) You must cause any work that you distribute or publish, that in<br>
+ whole or in part contains or is derived from the Program or any<br>
+ part thereof, to be licensed as a whole at no charge to all third<br>
+ parties under the terms of this License.<br>
+<br>
+ c) If the modified program normally reads commands interactively<br>
+ when run, you must cause it, when started running for such<br>
+ interactive use in the most ordinary way, to print or display an<br>
+ announcement including an appropriate copyright notice and a<br>
+ notice that there is no warranty (or else, saying that you provide<br>
+ a warranty) and that users may redistribute the program under<br>
+ these conditions, and telling the user how to view a copy of this<br>
+ License. (Exception: if the Program itself is interactive but<br>
+ does not normally print such an announcement, your work based on<br>
+ the Program is not required to print an announcement.)<br>
+<br>
+These requirements apply to the modified work as a whole. If<br>
+identifiable sections of that work are not derived from the Program,<br>
+and can be reasonably considered independent and separate works in<br>
+themselves, then this License, and its terms, do not apply to those<br>
+sections when you distribute them as separate works. But when you<br>
+distribute the same sections as part of a whole which is a work based<br>
+on the Program, the distribution of the whole must be on the terms of<br>
+this License, whose permissions for other licensees extend to the<br>
+entire whole, and thus to each and every part regardless of who wrote it.<br>
+<br>
+Thus, it is not the intent of this section to claim rights or contest<br>
+your rights to work written entirely by you; rather, the intent is to<br>
+exercise the right to control the distribution of derivative or<br>
+collective works based on the Program.<br>
+<br>
+In addition, mere aggregation of another work not based on the Program<br>
+with the Program (or with a work based on the Program) on a volume of<br>
+a storage or distribution medium does not bring the other work under<br>
+the scope of this License.<br>
+<br>
+ 3. You may copy and distribute the Program (or a work based on it,<br>
+under Section 2) in object code or executable form under the terms of<br>
+Sections 1 and 2 above provided that you also do one of the following:<br>
+<br>
+ a) Accompany it with the complete corresponding machine-readable<br>
+ source code, which must be distributed under the terms of Sections<br>
+ 1 and 2 above on a medium customarily used for software interchange; or,<br>
+<br>
+ b) Accompany it with a written offer, valid for at least three<br>
+ years, to give any third party, for a charge no more than your<br>
+ cost of physically performing source distribution, a complete<br>
+ machine-readable copy of the corresponding source code, to be<br>
+ distributed under the terms of Sections 1 and 2 above on a medium<br>
+ customarily used for software interchange; or,<br>
+<br>
+ c) Accompany it with the information you received as to the offer<br>
+ to distribute corresponding source code. (This alternative is<br>
+ allowed only for noncommercial distribution and only if you<br>
+ received the program in object code or executable form with such<br>
+ an offer, in accord with Subsection b above.)<br>
+<br>
+The source code for a work means the preferred form of the work for<br>
+making modifications to it. For an executable work, complete source<br>
+code means all the source code for all modules it contains, plus any<br>
+associated interface definition files, plus the scripts used to<br>
+control compilation and installation of the executable. However, as a<br>
+special exception, the source code distributed need not include<br>
+anything that is normally distributed (in either source or binary<br>
+form) with the major components (compiler, kernel, and so on) of the<br>
+operating system on which the executable runs, unless that component<br>
+itself accompanies the executable.<br>
+<br>
+If distribution of executable or object code is made by offering<br>
+access to copy from a designated place, then offering equivalent<br>
+access to copy the source code from the same place counts as<br>
+distribution of the source code, even though third parties are not<br>
+compelled to copy the source along with the object code.<br>
+<br>
+ 4. You may not copy, modify, sublicense, or distribute the Program<br>
+except as expressly provided under this License. Any attempt<br>
+otherwise to copy, modify, sublicense or distribute the Program is<br>
+void, and will automatically terminate your rights under this License.<br>
+However, parties who have received copies, or rights, from you under<br>
+this License will not have their licenses terminated so long as such<br>
+parties remain in full compliance.<br>
+<br>
+ 5. You are not required to accept this License, since you have not<br>
+signed it. However, nothing else grants you permission to modify or<br>
+distribute the Program or its derivative works. These actions are<br>
+prohibited by law if you do not accept this License. Therefore, by<br>
+modifying or distributing the Program (or any work based on the<br>
+Program), you indicate your acceptance of this License to do so, and<br>
+all its terms and conditions for copying, distributing or modifying<br>
+the Program or works based on it.<br>
+<br>
+ 6. Each time you redistribute the Program (or any work based on the<br>
+Program), the recipient automatically receives a license from the<br>
+original licensor to copy, distribute or modify the Program subject to<br>
+these terms and conditions. You may not impose any further<br>
+restrictions on the recipients' exercise of the rights granted herein.<br>
+You are not responsible for enforcing compliance by third parties to<br>
+this License.<br>
+<br>
+ 7. If, as a consequence of a court judgment or allegation of patent<br>
+infringement or for any other reason (not limited to patent issues),<br>
+conditions are imposed on you (whether by court order, agreement or<br>
+otherwise) that contradict the conditions of this License, they do not<br>
+excuse you from the conditions of this License. If you cannot<br>
+distribute so as to satisfy simultaneously your obligations under this<br>
+License and any other pertinent obligations, then as a consequence you<br>
+may not distribute the Program at all. For example, if a patent<br>
+license would not permit royalty-free redistribution of the Program by<br>
+all those who receive copies directly or indirectly through you, then<br>
+the only way you could satisfy both it and this License would be to<br>
+refrain entirely from distribution of the Program.<br>
+<br>
+If any portion of this section is held invalid or unenforceable under<br>
+any particular circumstance, the balance of the section is intended to<br>
+apply and the section as a whole is intended to apply in other<br>
+circumstances.<br>
+<br>
+It is not the purpose of this section to induce you to infringe any<br>
+patents or other property right claims or to contest validity of any<br>
+such claims; this section has the sole purpose of protecting the<br>
+integrity of the free software distribution system, which is<br>
+implemented by public license practices. Many people have made<br>
+generous contributions to the wide range of software distributed<br>
+through that system in reliance on consistent application of that<br>
+system; it is up to the author/donor to decide if he or she is willing<br>
+to distribute software through any other system and a licensee cannot<br>
+impose that choice.<br>
+<br>
+This section is intended to make thoroughly clear what is believed to<br>
+be a consequence of the rest of this License.<br>
+<br>
+ 8. If the distribution and/or use of the Program is restricted in<br>
+certain countries either by patents or by copyrighted interfaces, the<br>
+original copyright holder who places the Program under this License<br>
+may add an explicit geographical distribution limitation excluding<br>
+those countries, so that distribution is permitted only in or among<br>
+countries not thus excluded. In such case, this License incorporates<br>
+the limitation as if written in the body of this License.<br>
+<br>
+ 9. The Free Software Foundation may publish revised and/or new versions<br>
+of the General Public License from time to time. Such new versions will<br>
+be similar in spirit to the present version, but may differ in detail to<br>
+address new problems or concerns.<br>
+<br>
+Each version is given a distinguishing version number. If the Program<br>
+specifies a version number of this License which applies to it and &quot;any<br>
+later version&quot;, you have the option of following the terms and conditions<br>
+either of that version or of any later version published by the Free<br>
+Software Foundation. If the Program does not specify a version number of<br>
+this License, you may choose any version ever published by the Free Software<br>
+Foundation.<br>
+<br>
+ 10. If you wish to incorporate parts of the Program into other free<br>
+programs whose distribution conditions are different, write to the author<br>
+to ask for permission. For software which is copyrighted by the Free<br>
+Software Foundation, write to the Free Software Foundation; we sometimes<br>
+make exceptions for this. Our decision will be guided by the two goals<br>
+of preserving the free status of all derivatives of our free software and<br>
+of promoting the sharing and reuse of software generally.<br>
+<br>
+ NO WARRANTY<br>
+<br>
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY<br>
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN<br>
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES<br>
+PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED<br>
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br>
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS<br>
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE<br>
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,<br>
+REPAIR OR CORRECTION.<br>
+<br>
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING<br>
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR<br>
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,<br>
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING<br>
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED<br>
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY<br>
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER<br>
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE<br>
+POSSIBILITY OF SUCH DAMAGES.<br>
+<br>
+ END OF TERMS AND CONDITIONS<br>
+<br>
+ How to Apply These Terms to Your New Programs<br>
+<br>
+ If you develop a new program, and you want it to be of the greatest<br>
+possible use to the public, the best way to achieve this is to make it<br>
+free software which everyone can redistribute and change under these terms.<br>
+<br>
+ To do so, attach the following notices to the program. It is safest<br>
+to attach them to the start of each source file to most effectively<br>
+convey the exclusion of warranty; and each file should have at least<br>
+the &quot;copyright&quot; line and a pointer to where the full notice is found.<br>
+<br>
+ &lt;one line to give the program's name and a brief idea of what it does.&gt;<br>
+ Copyright (C) &lt;year&gt; &lt;name of author&gt;<br>
+<br>
+ This program is free software; you can redistribute it and/or modify<br>
+ it under the terms of the GNU General Public License as published by<br>
+ the Free Software Foundation; either version 2 of the License, or<br>
+ (at your option) any later version.<br>
+<br>
+ This program is distributed in the hope that it will be useful,<br>
+ but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
+ GNU General Public License for more details.<br>
+<br>
+ You should have received a copy of the GNU General Public License along<br>
+ with this program; if not, write to the Free Software Foundation, Inc.,<br>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.<br>
+<br>
+Also add information on how to contact you by electronic and paper mail.<br>
+<br>
+If the program is interactive, make it output a short notice like this<br>
+when it starts in an interactive mode:<br>
+<br>
+ Gnomovision version 69, Copyright (C) year name of author<br>
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.<br>
+ This is free software, and you are welcome to redistribute it<br>
+ under certain conditions; type `show c' for details.<br>
+<br>
+The hypothetical commands `show w' and `show c' should show the appropriate<br>
+parts of the General Public License. Of course, the commands you use may<br>
+be called something other than `show w' and `show c'; they could even be<br>
+mouse-clicks or menu items--whatever suits your program.<br>
+<br>
+You should also get your employer (if you work as a programmer) or your<br>
+school, if any, to sign a &quot;copyright disclaimer&quot; for the program, if<br>
+necessary. Here is a sample; alter the names:<br>
+<br>
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program<br>
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.<br>
+<br>
+ &lt;signature of Ty Coon&gt;, 1 April 1989<br>
+ Ty Coon, President of Vice<br>
+<br>
+This General Public License does not permit incorporating your program into<br>
+proprietary programs. If your program is a subroutine library, you may<br>
+consider it more useful to permit linking proprietary applications with the<br>
+library. If this is what you want to do, use the GNU Lesser General<br>
+Public License instead of this License.<br>
+</body>
+</html>
diff --git a/doc/License-gpl-2.0.rtf b/doc/License-gpl-2.0.rtf
new file mode 100644
index 00000000..37c4b896
--- /dev/null
+++ b/doc/License-gpl-2.0.rtf
@@ -0,0 +1,394 @@
+{\rtf1\ansi\deff1\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset128 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Bitstream Vera Sans;}{\f3\fnil\fprq0\fcharset128 Palatino Linotype;}{\f4\froman\fprq2\fcharset0 Times New Roman;}{\f5\fswiss\fprq2\fcharset0 Arial;}{\f6\fmodern\fprq1\fcharset0 Bitstream Vera Sans Mono;}{\f7\fmodern\fprq1\fcharset0 Bitstream Vera Sans;}}
+{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
+{\stylesheet{\s1\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\snext1 Normal;}
+{\s2\sb240\sa120\keepn\rtlch\af5\afs28\lang1081\ltrch\dbch\af1\langfe2052\hich\f5\fs28\lang1031\loch\f5\fs28\lang1031\sbasedon1\snext3 Heading;}
+{\s3\sa120\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon1\snext3 Body Text;}
+{\s4\sa120\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon3\snext4 List;}
+{\s5\sb120\sa120\rtlch\afs24\lang1081\ai\ltrch\dbch\af2\langfe2052\hich\f3\fs24\lang1031\i\loch\f3\fs24\lang1031\i\sbasedon1\snext5 caption;}
+{\s6\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon1\snext6 Index;}
+{\s7\sb120\sa120\rtlch\afs24\lang1081\ai\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\i\loch\fs24\lang1031\i\sbasedon1\snext7 caption;}
+{\s8\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031\sbasedon1\snext8 Preformatted Text;}
+}
+{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3200}}\deftab709
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
+{\*\pgdscno0}\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 {\*\bkmkstart __DdeLink__5_501511993}Preliminary notes:{\*\bkmkend }}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 1) The majority of code in the VirtualBox Open Source Edition (OSE) is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 copyrighted by Oracle Corporation. This code is combined with third-party code}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that was originally released under licenses which the Free Software Foundation}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 considers incompatible with the GPL, such as the Apache License 2.0, the OpenSSL}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 license, the Mozilla Public License (MPL) and the Slirp license. (Please see the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 VirtualBox User Manual for a complete list of third-party code and their}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 licenses.) As a special exception to the terms and conditions of the GPL listed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 below, Oracle gives you explicit permission to combine its GPL code contained in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 VirtualBox OSE with third-party code under the aforementioned licenses. You may}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 copy and distribute such a combination provided that you adhere to the terms and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 conditions of all of the GPL and the licenses of the third-party code; in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 particular, you must include the source code of the entire combination insofar}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 as the GPL requires distribution of source code.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 2) The GPL listed below does not bind software which uses VirtualBox services by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 merely linking to VirtualBox libraries so long as all VirtualBox interfaces used}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 by that software are multi-licensed. A VirtualBox interface is deemed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 multi-licensed if it is declared in a VirtualBox header file that is licensed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under both the GPL version 2 (below) *and* the Common Development and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Distribution License Version 1.0 (CDDL), as it comes in the "COPYING.CDDL" file.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 In other words, calling such a multi-licensed interface is merely considered}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 normal use of VirtualBox and does not turn the calling code into a derived work}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of VirtualBox. In particular, this applies to code that wants to extend}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 VirtualBox by way of the Extension Pack mechanism declared in the ExtPack.h}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 header file.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 3) Whoever creates or distributes a derived work based on VirtualBox OSE is not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 obligated to grant the above exceptions for such a version. The GPL allows for}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 releasing a modified version without the above exception; in addition, Oracle}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 hereby also allows you to release a modified version which carries forward these}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 exceptions.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Oracle Corporation}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\*\bkmkstart __DdeLink__0_501511993}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 -------------------------------------------------------}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\*\bkmkend }
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU GENERAL PUBLIC LICENSE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Version 2, June 1991}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Everyone is permitted to copy and distribute verbatim copies}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of this license document, but changing it is not allowed.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Preamble}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The licenses for most software are designed to take away your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 freedom to share and change it. By contrast, the GNU General Public}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License is intended to guarantee your freedom to share and change free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 software--to make sure the software is free for all its users. This}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 General Public License applies to most of the Free Software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Foundation's software and to any other program whose authors commit to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 using it. (Some other Free Software Foundation software is covered by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the GNU Lesser General Public License instead.) You can apply it to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 your programs, too.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 When we speak of free software, we are referring to freedom, not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 price. Our General Public Licenses are designed to make sure that you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 have the freedom to distribute copies of free software (and charge for}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this service if you wish), that you receive source code or can get it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 if you want it, that you can change the software or use pieces of it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 in new free programs; and that you know you can do these things.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 To protect your rights, we need to make restrictions that forbid}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 anyone to deny you these rights or to ask you to surrender the rights.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 These restrictions translate to certain responsibilities for you if you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute copies of the software, or if you modify it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 For example, if you distribute copies of such a program, whether}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 gratis or for a fee, you must give the recipients all the rights that}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 you have. You must make sure that they, too, receive or can get the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code. And you must show them these terms so they know their}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 rights.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 We protect your rights with two steps: (1) copyright the software, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 (2) offer you this license which gives you legal permission to copy,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute and/or modify the software.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Also, for each author's protection and ours, we want to make certain}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that everyone understands that there is no warranty for this free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 software. If the software is modified by someone else and passed on, we}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 want its recipients to know that what they have is not the original, so}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that any problems introduced by others will not reflect on the original}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 authors' reputations.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Finally, any free program is threatened constantly by software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patents. We wish to avoid the danger that redistributors of a free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 program will individually obtain patent licenses, in effect making the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 program proprietary. To prevent this, we have made it clear that any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patent must be licensed for everyone's free use or not licensed at all.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The precise terms and conditions for copying, distribution and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 modification follow.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU GENERAL PUBLIC LICENSE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 0. This License applies to any program or other work which contains}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a notice placed by the copyright holder saying it may be distributed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under the terms of this General Public License. The "Program", below,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 refers to any such program or work, and a "work based on the Program"}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 means either the Program or any derivative work under copyright law:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that is to say, a work containing the Program or a portion of it,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 either verbatim or with modifications and/or translated into another}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 language. (Hereinafter, translation is included without limitation in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the term "modification".) Each licensee is addressed as "you".}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Activities other than copying, distribution and modification are not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 covered by this License; they are outside its scope. The act of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 running the Program is not restricted, and the output from the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 is covered only if its contents constitute a work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program (independent of having been made by running the Program).}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Whether that is true depends on what the Program does.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 1. You may copy and distribute verbatim copies of the Program's}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code as you receive it, in any medium, provided that you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 conspicuously and appropriately publish on each copy an appropriate}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 copyright notice and disclaimer of warranty; keep intact all the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 notices that refer to this License and to the absence of any warranty;}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 and give any other recipients of the Program a copy of this License}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 along with the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You may charge a fee for the physical act of transferring a copy, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 you may at your option offer warranty protection in exchange for a fee.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 2. You may modify your copy or copies of the Program or any portion}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of it, thus forming a work based on the Program, and copy and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute such modifications or work under the terms of Section 1}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 above, provided that you also meet all of these conditions:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a) You must cause the modified files to carry prominent notices}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 stating that you changed the files and the date of any change.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 b) You must cause any work that you distribute or publish, that in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 whole or in part contains or is derived from the Program or any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 part thereof, to be licensed as a whole at no charge to all third}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parties under the terms of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 c) If the modified program normally reads commands interactively}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 when run, you must cause it, when started running for such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 interactive use in the most ordinary way, to print or display an}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 announcement including an appropriate copyright notice and a}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 notice that there is no warranty (or else, saying that you provide}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a warranty) and that users may redistribute the program under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 these conditions, and telling the user how to view a copy of this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License. (Exception: if the Program itself is interactive but}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 does not normally print such an announcement, your work based on}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Program is not required to print an announcement.)}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 These requirements apply to the modified work as a whole. If}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 identifiable sections of that work are not derived from the Program,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 and can be reasonably considered independent and separate works in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 themselves, then this License, and its terms, do not apply to those}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 sections when you distribute them as separate works. But when you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute the same sections as part of a whole which is a work based}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 on the Program, the distribution of the whole must be on the terms of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License, whose permissions for other licensees extend to the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 entire whole, and thus to each and every part regardless of who wrote it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Thus, it is not the intent of this section to claim rights or contest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 your rights to work written entirely by you; rather, the intent is to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 exercise the right to control the distribution of derivative or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 collective works based on the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 In addition, mere aggregation of another work not based on the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 with the Program (or with a work based on the Program) on a volume of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a storage or distribution medium does not bring the other work under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the scope of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 3. You may copy and distribute the Program (or a work based on it,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under Section 2) in object code or executable form under the terms of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Sections 1 and 2 above provided that you also do one of the following:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a) Accompany it with the complete corresponding machine-readable}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code, which must be distributed under the terms of Sections}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 1 and 2 above on a medium customarily used for software interchange; or,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 b) Accompany it with a written offer, valid for at least three}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 years, to give any third party, for a charge no more than your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 cost of physically performing source distribution, a complete}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 machine-readable copy of the corresponding source code, to be}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distributed under the terms of Sections 1 and 2 above on a medium}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 customarily used for software interchange; or,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 c) Accompany it with the information you received as to the offer}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to distribute corresponding source code. (This alternative is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 allowed only for noncommercial distribution and only if you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 received the program in object code or executable form with such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 an offer, in accord with Subsection b above.)}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The source code for a work means the preferred form of the work for}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 making modifications to it. For an executable work, complete source}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 code means all the source code for all modules it contains, plus any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 associated interface definition files, plus the scripts used to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 control compilation and installation of the executable. However, as a}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 special exception, the source code distributed need not include}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 anything that is normally distributed (in either source or binary}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 form) with the major components (compiler, kernel, and so on) of the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 operating system on which the executable runs, unless that component}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 itself accompanies the executable.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If distribution of executable or object code is made by offering}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 access to copy from a designated place, then offering equivalent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 access to copy the source code from the same place counts as}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribution of the source code, even though third parties are not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 compelled to copy the source along with the object code.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 4. You may not copy, modify, sublicense, or distribute the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 except as expressly provided under this License. Any attempt}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 otherwise to copy, modify, sublicense or distribute the Program is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 void, and will automatically terminate your rights under this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 However, parties who have received copies, or rights, from you under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License will not have their licenses terminated so long as such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parties remain in full compliance.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 5. You are not required to accept this License, since you have not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 signed it. However, nothing else grants you permission to modify or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute the Program or its derivative works. These actions are}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 prohibited by law if you do not accept this License. Therefore, by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 modifying or distributing the Program (or any work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program), you indicate your acceptance of this License to do so, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 all its terms and conditions for copying, distributing or modifying}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Program or works based on it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 6. Each time you redistribute the Program (or any work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program), the recipient automatically receives a license from the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 original licensor to copy, distribute or modify the Program subject to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 these terms and conditions. You may not impose any further}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 restrictions on the recipients' exercise of the rights granted herein.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You are not responsible for enforcing compliance by third parties to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 7. If, as a consequence of a court judgment or allegation of patent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 infringement or for any other reason (not limited to patent issues),}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 conditions are imposed on you (whether by court order, agreement or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 otherwise) that contradict the conditions of this License, they do not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 excuse you from the conditions of this License. If you cannot}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute so as to satisfy simultaneously your obligations under this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License and any other pertinent obligations, then as a consequence you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 may not distribute the Program at all. For example, if a patent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 license would not permit royalty-free redistribution of the Program by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 all those who receive copies directly or indirectly through you, then}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the only way you could satisfy both it and this License would be to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 refrain entirely from distribution of the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If any portion of this section is held invalid or unenforceable under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 any particular circumstance, the balance of the section is intended to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 apply and the section as a whole is intended to apply in other}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 circumstances.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 It is not the purpose of this section to induce you to infringe any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patents or other property right claims or to contest validity of any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 such claims; this section has the sole purpose of protecting the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 integrity of the free software distribution system, which is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 implemented by public license practices. Many people have made}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 generous contributions to the wide range of software distributed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 through that system in reliance on consistent application of that}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 system; it is up to the author/donor to decide if he or she is willing}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to distribute software through any other system and a licensee cannot}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 impose that choice.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This section is intended to make thoroughly clear what is believed to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be a consequence of the rest of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 8. If the distribution and/or use of the Program is restricted in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 certain countries either by patents or by copyrighted interfaces, the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 original copyright holder who places the Program under this License}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 may add an explicit geographical distribution limitation excluding}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 those countries, so that distribution is permitted only in or among}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 countries not thus excluded. In such case, this License incorporates}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the limitation as if written in the body of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 9. The Free Software Foundation may publish revised and/or new versions}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of the General Public License from time to time. Such new versions will}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be similar in spirit to the present version, but may differ in detail to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 address new problems or concerns.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Each version is given a distinguishing version number. If the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 specifies a version number of this License which applies to it and "any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 later version", you have the option of following the terms and conditions}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 either of that version or of any later version published by the Free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Software Foundation. If the Program does not specify a version number of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License, you may choose any version ever published by the Free Software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Foundation.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 10. If you wish to incorporate parts of the Program into other free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 programs whose distribution conditions are different, write to the author}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to ask for permission. For software which is copyrighted by the Free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Software Foundation, write to the Free Software Foundation; we sometimes}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 make exceptions for this. Our decision will be guided by the two goals}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of preserving the free status of all derivatives of our free software and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of promoting the sharing and reuse of software generally.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 NO WARRANTY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 REPAIR OR CORRECTION.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 POSSIBILITY OF SUCH DAMAGES.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 END OF TERMS AND CONDITIONS}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 How to Apply These Terms to Your New Programs}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If you develop a new program, and you want it to be of the greatest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 possible use to the public, the best way to achieve this is to make it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 free software which everyone can redistribute and change under these terms.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 To do so, attach the following notices to the program. It is safest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to attach them to the start of each source file to most effectively}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 convey the exclusion of warranty; and each file should have at least}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the "copyright" line and a pointer to where the full notice is found.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 <one line to give the program's name and a brief idea of what it does.>}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Copyright (C) <year> <name of author>}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This program is free software; you can redistribute it and/or modify}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 it under the terms of the GNU General Public License as published by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Free Software Foundation; either version 2 of the License, or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 (at your option) any later version.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This program is distributed in the hope that it will be useful,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 but WITHOUT ANY WARRANTY; without even the implied warranty of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU General Public License for more details.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You should have received a copy of the GNU General Public License along}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 with this program; if not, write to the Free Software Foundation, Inc.,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Also add information on how to contact you by electronic and paper mail.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If the program is interactive, make it output a short notice like this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 when it starts in an interactive mode:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Gnomovision version 69, Copyright (C) year name of author}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This is free software, and you are welcome to redistribute it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under certain conditions; type `show c' for details.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The hypothetical commands `show w' and `show c' should show the appropriate}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parts of the General Public License. Of course, the commands you use may}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be called something other than `show w' and `show c'; they could even be}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 mouse-clicks or menu items--whatever suits your program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You should also get your employer (if you work as a programmer) or your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 school, if any, to sign a "copyright disclaimer" for the program, if}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 necessary. Here is a sample; alter the names:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Yoyodyne, Inc., hereby disclaims all copyright interest in the program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 `Gnomovision' (which makes passes at compilers) written by James Hacker.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 <signature of Ty Coon>, 1 April 1989}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Ty Coon, President of Vice}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This General Public License does not permit incorporating your program into}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 proprietary programs. If your program is a subroutine library, you may}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 consider it more useful to permit linking proprietary applications with the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 library. If this is what you want to do, use the GNU Lesser General}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Public License instead of this License.}
+\par } \ No newline at end of file
diff --git a/doc/License-gpl-2.0.txt b/doc/License-gpl-2.0.txt
new file mode 100644
index 00000000..7904835d
--- /dev/null
+++ b/doc/License-gpl-2.0.txt
@@ -0,0 +1,379 @@
+Preliminary notes:
+
+1) The majority of code in the VirtualBox Open Source Edition (OSE) is
+copyrighted by Oracle Corporation. This code is combined with third-party code
+that was originally released under licenses which the Free Software Foundation
+considers incompatible with the GPL, such as the Apache License 2.0, the OpenSSL
+license, the Mozilla Public License (MPL) and the Slirp license. (Please see the
+VirtualBox User Manual for a complete list of third-party code and their
+licenses.) As a special exception to the terms and conditions of the GPL listed
+below, Oracle gives you explicit permission to combine its GPL code contained in
+VirtualBox OSE with third-party code under the aforementioned licenses. You may
+copy and distribute such a combination provided that you adhere to the terms and
+conditions of all of the GPL and the licenses of the third-party code; in
+particular, you must include the source code of the entire combination insofar
+as the GPL requires distribution of source code.
+
+2) The GPL listed below does not bind software which uses VirtualBox services by
+merely linking to VirtualBox libraries so long as all VirtualBox interfaces used
+by that software are multi-licensed. A VirtualBox interface is deemed
+multi-licensed if it is declared in a VirtualBox header file that is licensed
+under both the GPL version 2 (below) *and* the Common Development and
+Distribution License Version 1.0 (CDDL), as it comes in the "COPYING.CDDL" file.
+In other words, calling such a multi-licensed interface is merely considered
+normal use of VirtualBox and does not turn the calling code into a derived work
+of VirtualBox. In particular, this applies to code that wants to extend
+VirtualBox by way of the Extension Pack mechanism declared in the ExtPack.h
+header file.
+
+3) Whoever creates or distributes a derived work based on VirtualBox OSE is not
+obligated to grant the above exceptions for such a version. The GPL allows for
+releasing a modified version without the above exception; in addition, Oracle
+hereby also allows you to release a modified version which carries forward these
+exceptions.
+
+Oracle Corporation
+
+---
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 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".
+
+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.
+
+ 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.
+
+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.
+
+ 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:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ 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.
+
+ 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.)
+
+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.
+
+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.
+
+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.
+
+ 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:
+
+ 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,
+
+ 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,
+
+ 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.)
+
+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.
+
+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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+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.
+
+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.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 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.
+
+ 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.
+
+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.
+
+ 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.
+
+ NO WARRANTY
+
+ 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.
+
+ 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.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/doc/License-gpl-2.html b/doc/License-gpl-2.html
new file mode 100644
index 00000000..ae5e2d0e
--- /dev/null
+++ b/doc/License-gpl-2.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!-- Translation from RTF performed by UnRTF, version 0.20.1 -->
+<!-- document uses ANSI character set -->
+<!-- font table contains 8 fonts total -->
+<!-- creation date: -->
+<!-- revision date: -->
+<!-- last printed: -->
+<!-- comments: StarWriter -->
+</head>
+<body>
+ GNU GENERAL PUBLIC LICENSE<br>
+ Version 2, June 1991<br>
+<br>
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,<br>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA<br>
+ Everyone is permitted to copy and distribute verbatim copies<br>
+ of this license document, but changing it is not allowed.<br>
+<br>
+ Preamble<br>
+<br>
+ The licenses for most software are designed to take away your<br>
+freedom to share and change it. By contrast, the GNU General Public<br>
+License is intended to guarantee your freedom to share and change free<br>
+software--to make sure the software is free for all its users. This<br>
+General Public License applies to most of the Free Software<br>
+Foundation's software and to any other program whose authors commit to<br>
+using it. (Some other Free Software Foundation software is covered by<br>
+the GNU Lesser General Public License instead.) You can apply it to<br>
+your programs, too.<br>
+<br>
+ When we speak of free software, we are referring to freedom, not<br>
+price. Our General Public Licenses are designed to make sure that you<br>
+have the freedom to distribute copies of free software (and charge for<br>
+this service if you wish), that you receive source code or can get it<br>
+if you want it, that you can change the software or use pieces of it<br>
+in new free programs; and that you know you can do these things.<br>
+<br>
+ To protect your rights, we need to make restrictions that forbid<br>
+anyone to deny you these rights or to ask you to surrender the rights.<br>
+These restrictions translate to certain responsibilities for you if you<br>
+distribute copies of the software, or if you modify it.<br>
+<br>
+ For example, if you distribute copies of such a program, whether<br>
+gratis or for a fee, you must give the recipients all the rights that<br>
+you have. You must make sure that they, too, receive or can get the<br>
+source code. And you must show them these terms so they know their<br>
+rights.<br>
+<br>
+ We protect your rights with two steps: (1) copyright the software, and<br>
+(2) offer you this license which gives you legal permission to copy,<br>
+distribute and/or modify the software.<br>
+<br>
+ Also, for each author's protection and ours, we want to make certain<br>
+that everyone understands that there is no warranty for this free<br>
+software. If the software is modified by someone else and passed on, we<br>
+want its recipients to know that what they have is not the original, so<br>
+that any problems introduced by others will not reflect on the original<br>
+authors' reputations.<br>
+<br>
+ Finally, any free program is threatened constantly by software<br>
+patents. We wish to avoid the danger that redistributors of a free<br>
+program will individually obtain patent licenses, in effect making the<br>
+program proprietary. To prevent this, we have made it clear that any<br>
+patent must be licensed for everyone's free use or not licensed at all.<br>
+<br>
+ The precise terms and conditions for copying, distribution and<br>
+modification follow.<br>
+<br>
+ GNU GENERAL PUBLIC LICENSE<br>
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION<br>
+<br>
+ 0. This License applies to any program or other work which contains<br>
+a notice placed by the copyright holder saying it may be distributed<br>
+under the terms of this General Public License. The &quot;Program&quot;, below,<br>
+refers to any such program or work, and a &quot;work based on the Program&quot;<br>
+means either the Program or any derivative work under copyright law:<br>
+that is to say, a work containing the Program or a portion of it,<br>
+either verbatim or with modifications and/or translated into another<br>
+language. (Hereinafter, translation is included without limitation in<br>
+the term &quot;modification&quot;.) Each licensee is addressed as &quot;you&quot;.<br>
+<br>
+Activities other than copying, distribution and modification are not<br>
+covered by this License; they are outside its scope. The act of<br>
+running the Program is not restricted, and the output from the Program<br>
+is covered only if its contents constitute a work based on the<br>
+Program (independent of having been made by running the Program).<br>
+Whether that is true depends on what the Program does.<br>
+<br>
+ 1. You may copy and distribute verbatim copies of the Program's<br>
+source code as you receive it, in any medium, provided that you<br>
+conspicuously and appropriately publish on each copy an appropriate<br>
+copyright notice and disclaimer of warranty; keep intact all the<br>
+notices that refer to this License and to the absence of any warranty;<br>
+and give any other recipients of the Program a copy of this License<br>
+along with the Program.<br>
+<br>
+You may charge a fee for the physical act of transferring a copy, and<br>
+you may at your option offer warranty protection in exchange for a fee.<br>
+<br>
+ 2. You may modify your copy or copies of the Program or any portion<br>
+of it, thus forming a work based on the Program, and copy and<br>
+distribute such modifications or work under the terms of Section 1<br>
+above, provided that you also meet all of these conditions:<br>
+<br>
+ a) You must cause the modified files to carry prominent notices<br>
+ stating that you changed the files and the date of any change.<br>
+<br>
+ b) You must cause any work that you distribute or publish, that in<br>
+ whole or in part contains or is derived from the Program or any<br>
+ part thereof, to be licensed as a whole at no charge to all third<br>
+ parties under the terms of this License.<br>
+<br>
+ c) If the modified program normally reads commands interactively<br>
+ when run, you must cause it, when started running for such<br>
+ interactive use in the most ordinary way, to print or display an<br>
+ announcement including an appropriate copyright notice and a<br>
+ notice that there is no warranty (or else, saying that you provide<br>
+ a warranty) and that users may redistribute the program under<br>
+ these conditions, and telling the user how to view a copy of this<br>
+ License. (Exception: if the Program itself is interactive but<br>
+ does not normally print such an announcement, your work based on<br>
+ the Program is not required to print an announcement.)<br>
+<br>
+These requirements apply to the modified work as a whole. If<br>
+identifiable sections of that work are not derived from the Program,<br>
+and can be reasonably considered independent and separate works in<br>
+themselves, then this License, and its terms, do not apply to those<br>
+sections when you distribute them as separate works. But when you<br>
+distribute the same sections as part of a whole which is a work based<br>
+on the Program, the distribution of the whole must be on the terms of<br>
+this License, whose permissions for other licensees extend to the<br>
+entire whole, and thus to each and every part regardless of who wrote it.<br>
+<br>
+Thus, it is not the intent of this section to claim rights or contest<br>
+your rights to work written entirely by you; rather, the intent is to<br>
+exercise the right to control the distribution of derivative or<br>
+collective works based on the Program.<br>
+<br>
+In addition, mere aggregation of another work not based on the Program<br>
+with the Program (or with a work based on the Program) on a volume of<br>
+a storage or distribution medium does not bring the other work under<br>
+the scope of this License.<br>
+<br>
+ 3. You may copy and distribute the Program (or a work based on it,<br>
+under Section 2) in object code or executable form under the terms of<br>
+Sections 1 and 2 above provided that you also do one of the following:<br>
+<br>
+ a) Accompany it with the complete corresponding machine-readable<br>
+ source code, which must be distributed under the terms of Sections<br>
+ 1 and 2 above on a medium customarily used for software interchange; or,<br>
+<br>
+ b) Accompany it with a written offer, valid for at least three<br>
+ years, to give any third party, for a charge no more than your<br>
+ cost of physically performing source distribution, a complete<br>
+ machine-readable copy of the corresponding source code, to be<br>
+ distributed under the terms of Sections 1 and 2 above on a medium<br>
+ customarily used for software interchange; or,<br>
+<br>
+ c) Accompany it with the information you received as to the offer<br>
+ to distribute corresponding source code. (This alternative is<br>
+ allowed only for noncommercial distribution and only if you<br>
+ received the program in object code or executable form with such<br>
+ an offer, in accord with Subsection b above.)<br>
+<br>
+The source code for a work means the preferred form of the work for<br>
+making modifications to it. For an executable work, complete source<br>
+code means all the source code for all modules it contains, plus any<br>
+associated interface definition files, plus the scripts used to<br>
+control compilation and installation of the executable. However, as a<br>
+special exception, the source code distributed need not include<br>
+anything that is normally distributed (in either source or binary<br>
+form) with the major components (compiler, kernel, and so on) of the<br>
+operating system on which the executable runs, unless that component<br>
+itself accompanies the executable.<br>
+<br>
+If distribution of executable or object code is made by offering<br>
+access to copy from a designated place, then offering equivalent<br>
+access to copy the source code from the same place counts as<br>
+distribution of the source code, even though third parties are not<br>
+compelled to copy the source along with the object code.<br>
+<br>
+ 4. You may not copy, modify, sublicense, or distribute the Program<br>
+except as expressly provided under this License. Any attempt<br>
+otherwise to copy, modify, sublicense or distribute the Program is<br>
+void, and will automatically terminate your rights under this License.<br>
+However, parties who have received copies, or rights, from you under<br>
+this License will not have their licenses terminated so long as such<br>
+parties remain in full compliance.<br>
+<br>
+ 5. You are not required to accept this License, since you have not<br>
+signed it. However, nothing else grants you permission to modify or<br>
+distribute the Program or its derivative works. These actions are<br>
+prohibited by law if you do not accept this License. Therefore, by<br>
+modifying or distributing the Program (or any work based on the<br>
+Program), you indicate your acceptance of this License to do so, and<br>
+all its terms and conditions for copying, distributing or modifying<br>
+the Program or works based on it.<br>
+<br>
+ 6. Each time you redistribute the Program (or any work based on the<br>
+Program), the recipient automatically receives a license from the<br>
+original licensor to copy, distribute or modify the Program subject to<br>
+these terms and conditions. You may not impose any further<br>
+restrictions on the recipients' exercise of the rights granted herein.<br>
+You are not responsible for enforcing compliance by third parties to<br>
+this License.<br>
+<br>
+ 7. If, as a consequence of a court judgment or allegation of patent<br>
+infringement or for any other reason (not limited to patent issues),<br>
+conditions are imposed on you (whether by court order, agreement or<br>
+otherwise) that contradict the conditions of this License, they do not<br>
+excuse you from the conditions of this License. If you cannot<br>
+distribute so as to satisfy simultaneously your obligations under this<br>
+License and any other pertinent obligations, then as a consequence you<br>
+may not distribute the Program at all. For example, if a patent<br>
+license would not permit royalty-free redistribution of the Program by<br>
+all those who receive copies directly or indirectly through you, then<br>
+the only way you could satisfy both it and this License would be to<br>
+refrain entirely from distribution of the Program.<br>
+<br>
+If any portion of this section is held invalid or unenforceable under<br>
+any particular circumstance, the balance of the section is intended to<br>
+apply and the section as a whole is intended to apply in other<br>
+circumstances.<br>
+<br>
+It is not the purpose of this section to induce you to infringe any<br>
+patents or other property right claims or to contest validity of any<br>
+such claims; this section has the sole purpose of protecting the<br>
+integrity of the free software distribution system, which is<br>
+implemented by public license practices. Many people have made<br>
+generous contributions to the wide range of software distributed<br>
+through that system in reliance on consistent application of that<br>
+system; it is up to the author/donor to decide if he or she is willing<br>
+to distribute software through any other system and a licensee cannot<br>
+impose that choice.<br>
+<br>
+This section is intended to make thoroughly clear what is believed to<br>
+be a consequence of the rest of this License.<br>
+<br>
+ 8. If the distribution and/or use of the Program is restricted in<br>
+certain countries either by patents or by copyrighted interfaces, the<br>
+original copyright holder who places the Program under this License<br>
+may add an explicit geographical distribution limitation excluding<br>
+those countries, so that distribution is permitted only in or among<br>
+countries not thus excluded. In such case, this License incorporates<br>
+the limitation as if written in the body of this License.<br>
+<br>
+ 9. The Free Software Foundation may publish revised and/or new versions<br>
+of the General Public License from time to time. Such new versions will<br>
+be similar in spirit to the present version, but may differ in detail to<br>
+address new problems or concerns.<br>
+<br>
+Each version is given a distinguishing version number. If the Program<br>
+specifies a version number of this License which applies to it and &quot;any<br>
+later version&quot;, you have the option of following the terms and conditions<br>
+either of that version or of any later version published by the Free<br>
+Software Foundation. If the Program does not specify a version number of<br>
+this License, you may choose any version ever published by the Free Software<br>
+Foundation.<br>
+<br>
+ 10. If you wish to incorporate parts of the Program into other free<br>
+programs whose distribution conditions are different, write to the author<br>
+to ask for permission. For software which is copyrighted by the Free<br>
+Software Foundation, write to the Free Software Foundation; we sometimes<br>
+make exceptions for this. Our decision will be guided by the two goals<br>
+of preserving the free status of all derivatives of our free software and<br>
+of promoting the sharing and reuse of software generally.<br>
+<br>
+ NO WARRANTY<br>
+<br>
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY<br>
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN<br>
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES<br>
+PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED<br>
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br>
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS<br>
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE<br>
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,<br>
+REPAIR OR CORRECTION.<br>
+<br>
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING<br>
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR<br>
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,<br>
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING<br>
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED<br>
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY<br>
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER<br>
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE<br>
+POSSIBILITY OF SUCH DAMAGES.<br>
+<br>
+ END OF TERMS AND CONDITIONS<br>
+<br>
+ How to Apply These Terms to Your New Programs<br>
+<br>
+ If you develop a new program, and you want it to be of the greatest<br>
+possible use to the public, the best way to achieve this is to make it<br>
+free software which everyone can redistribute and change under these terms.<br>
+<br>
+ To do so, attach the following notices to the program. It is safest<br>
+to attach them to the start of each source file to most effectively<br>
+convey the exclusion of warranty; and each file should have at least<br>
+the &quot;copyright&quot; line and a pointer to where the full notice is found.<br>
+<br>
+ &lt;one line to give the program's name and a brief idea of what it does.&gt;<br>
+ Copyright (C) &lt;year&gt; &lt;name of author&gt;<br>
+<br>
+ This program is free software; you can redistribute it and/or modify<br>
+ it under the terms of the GNU General Public License as published by<br>
+ the Free Software Foundation; either version 2 of the License, or<br>
+ (at your option) any later version.<br>
+<br>
+ This program is distributed in the hope that it will be useful,<br>
+ but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
+ GNU General Public License for more details.<br>
+<br>
+ You should have received a copy of the GNU General Public License along<br>
+ with this program; if not, write to the Free Software Foundation, Inc.,<br>
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.<br>
+<br>
+Also add information on how to contact you by electronic and paper mail.<br>
+<br>
+If the program is interactive, make it output a short notice like this<br>
+when it starts in an interactive mode:<br>
+<br>
+ Gnomovision version 69, Copyright (C) year name of author<br>
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.<br>
+ This is free software, and you are welcome to redistribute it<br>
+ under certain conditions; type `show c' for details.<br>
+<br>
+The hypothetical commands `show w' and `show c' should show the appropriate<br>
+parts of the General Public License. Of course, the commands you use may<br>
+be called something other than `show w' and `show c'; they could even be<br>
+mouse-clicks or menu items--whatever suits your program.<br>
+<br>
+You should also get your employer (if you work as a programmer) or your<br>
+school, if any, to sign a &quot;copyright disclaimer&quot; for the program, if<br>
+necessary. Here is a sample; alter the names:<br>
+<br>
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program<br>
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.<br>
+<br>
+ &lt;signature of Ty Coon&gt;, 1 April 1989<br>
+ Ty Coon, President of Vice<br>
+<br>
+This General Public License does not permit incorporating your program into<br>
+proprietary programs. If your program is a subroutine library, you may<br>
+consider it more useful to permit linking proprietary applications with the<br>
+library. If this is what you want to do, use the GNU Lesser General<br>
+Public License instead of this License.<br>
+</body>
+</html>
diff --git a/doc/License-gpl-2.rtf b/doc/License-gpl-2.rtf
new file mode 100644
index 00000000..aef99d38
--- /dev/null
+++ b/doc/License-gpl-2.rtf
@@ -0,0 +1,356 @@
+{\rtf1\ansi\deff1\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset128 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Bitstream Vera Sans;}{\f3\fnil\fprq0\fcharset128 Palatino Linotype;}{\f4\froman\fprq2\fcharset0 Times New Roman;}{\f5\fswiss\fprq2\fcharset0 Arial;}{\f6\fmodern\fprq1\fcharset0 Bitstream Vera Sans Mono;}{\f7\fmodern\fprq1\fcharset0 Bitstream Vera Sans;}}
+{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
+{\stylesheet{\s1\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\snext1 Normal;}
+{\s2\sb240\sa120\keepn\rtlch\af5\afs28\lang1081\ltrch\dbch\af1\langfe2052\hich\f5\fs28\lang1031\loch\f5\fs28\lang1031\sbasedon1\snext3 Heading;}
+{\s3\sa120\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon1\snext3 Body Text;}
+{\s4\sa120\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon3\snext4 List;}
+{\s5\sb120\sa120\rtlch\afs24\lang1081\ai\ltrch\dbch\af2\langfe2052\hich\f3\fs24\lang1031\i\loch\f3\fs24\lang1031\i\sbasedon1\snext5 caption;}
+{\s6\rtlch\afs24\lang1081\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\loch\fs24\lang1031\sbasedon1\snext6 Index;}
+{\s7\sb120\sa120\rtlch\afs24\lang1081\ai\ltrch\dbch\af2\langfe2052\hich\fs24\lang1031\i\loch\fs24\lang1031\i\sbasedon1\snext7 caption;}
+{\s8\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031\sbasedon1\snext8 Preformatted Text;}
+}
+{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3200}}\deftab709
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
+{\*\pgdscno0}\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU GENERAL PUBLIC LICENSE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Version 2, June 1991}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Everyone is permitted to copy and distribute verbatim copies}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of this license document, but changing it is not allowed.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Preamble}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The licenses for most software are designed to take away your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 freedom to share and change it. By contrast, the GNU General Public}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License is intended to guarantee your freedom to share and change free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 software--to make sure the software is free for all its users. This}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 General Public License applies to most of the Free Software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Foundation's software and to any other program whose authors commit to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 using it. (Some other Free Software Foundation software is covered by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the GNU Lesser General Public License instead.) You can apply it to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 your programs, too.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 When we speak of free software, we are referring to freedom, not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 price. Our General Public Licenses are designed to make sure that you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 have the freedom to distribute copies of free software (and charge for}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this service if you wish), that you receive source code or can get it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 if you want it, that you can change the software or use pieces of it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 in new free programs; and that you know you can do these things.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 To protect your rights, we need to make restrictions that forbid}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 anyone to deny you these rights or to ask you to surrender the rights.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 These restrictions translate to certain responsibilities for you if you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute copies of the software, or if you modify it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 For example, if you distribute copies of such a program, whether}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 gratis or for a fee, you must give the recipients all the rights that}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 you have. You must make sure that they, too, receive or can get the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code. And you must show them these terms so they know their}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 rights.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 We protect your rights with two steps: (1) copyright the software, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 (2) offer you this license which gives you legal permission to copy,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute and/or modify the software.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Also, for each author's protection and ours, we want to make certain}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that everyone understands that there is no warranty for this free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 software. If the software is modified by someone else and passed on, we}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 want its recipients to know that what they have is not the original, so}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that any problems introduced by others will not reflect on the original}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 authors' reputations.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Finally, any free program is threatened constantly by software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patents. We wish to avoid the danger that redistributors of a free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 program will individually obtain patent licenses, in effect making the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 program proprietary. To prevent this, we have made it clear that any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patent must be licensed for everyone's free use or not licensed at all.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The precise terms and conditions for copying, distribution and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 modification follow.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU GENERAL PUBLIC LICENSE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 0. This License applies to any program or other work which contains}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a notice placed by the copyright holder saying it may be distributed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under the terms of this General Public License. The "Program", below,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 refers to any such program or work, and a "work based on the Program"}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 means either the Program or any derivative work under copyright law:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 that is to say, a work containing the Program or a portion of it,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 either verbatim or with modifications and/or translated into another}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 language. (Hereinafter, translation is included without limitation in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the term "modification".) Each licensee is addressed as "you".}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Activities other than copying, distribution and modification are not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 covered by this License; they are outside its scope. The act of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 running the Program is not restricted, and the output from the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 is covered only if its contents constitute a work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program (independent of having been made by running the Program).}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Whether that is true depends on what the Program does.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 1. You may copy and distribute verbatim copies of the Program's}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code as you receive it, in any medium, provided that you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 conspicuously and appropriately publish on each copy an appropriate}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 copyright notice and disclaimer of warranty; keep intact all the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 notices that refer to this License and to the absence of any warranty;}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 and give any other recipients of the Program a copy of this License}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 along with the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You may charge a fee for the physical act of transferring a copy, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 you may at your option offer warranty protection in exchange for a fee.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 2. You may modify your copy or copies of the Program or any portion}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of it, thus forming a work based on the Program, and copy and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute such modifications or work under the terms of Section 1}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 above, provided that you also meet all of these conditions:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a) You must cause the modified files to carry prominent notices}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 stating that you changed the files and the date of any change.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 b) You must cause any work that you distribute or publish, that in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 whole or in part contains or is derived from the Program or any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 part thereof, to be licensed as a whole at no charge to all third}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parties under the terms of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 c) If the modified program normally reads commands interactively}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 when run, you must cause it, when started running for such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 interactive use in the most ordinary way, to print or display an}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 announcement including an appropriate copyright notice and a}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 notice that there is no warranty (or else, saying that you provide}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a warranty) and that users may redistribute the program under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 these conditions, and telling the user how to view a copy of this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License. (Exception: if the Program itself is interactive but}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 does not normally print such an announcement, your work based on}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Program is not required to print an announcement.)}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 These requirements apply to the modified work as a whole. If}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 identifiable sections of that work are not derived from the Program,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 and can be reasonably considered independent and separate works in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 themselves, then this License, and its terms, do not apply to those}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 sections when you distribute them as separate works. But when you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute the same sections as part of a whole which is a work based}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 on the Program, the distribution of the whole must be on the terms of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License, whose permissions for other licensees extend to the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 entire whole, and thus to each and every part regardless of who wrote it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Thus, it is not the intent of this section to claim rights or contest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 your rights to work written entirely by you; rather, the intent is to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 exercise the right to control the distribution of derivative or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 collective works based on the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 In addition, mere aggregation of another work not based on the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 with the Program (or with a work based on the Program) on a volume of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a storage or distribution medium does not bring the other work under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the scope of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 3. You may copy and distribute the Program (or a work based on it,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under Section 2) in object code or executable form under the terms of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Sections 1 and 2 above provided that you also do one of the following:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 a) Accompany it with the complete corresponding machine-readable}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 source code, which must be distributed under the terms of Sections}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 1 and 2 above on a medium customarily used for software interchange; or,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 b) Accompany it with a written offer, valid for at least three}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 years, to give any third party, for a charge no more than your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 cost of physically performing source distribution, a complete}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 machine-readable copy of the corresponding source code, to be}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distributed under the terms of Sections 1 and 2 above on a medium}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 customarily used for software interchange; or,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 c) Accompany it with the information you received as to the offer}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to distribute corresponding source code. (This alternative is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 allowed only for noncommercial distribution and only if you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 received the program in object code or executable form with such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 an offer, in accord with Subsection b above.)}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The source code for a work means the preferred form of the work for}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 making modifications to it. For an executable work, complete source}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 code means all the source code for all modules it contains, plus any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 associated interface definition files, plus the scripts used to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 control compilation and installation of the executable. However, as a}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 special exception, the source code distributed need not include}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 anything that is normally distributed (in either source or binary}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 form) with the major components (compiler, kernel, and so on) of the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 operating system on which the executable runs, unless that component}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 itself accompanies the executable.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If distribution of executable or object code is made by offering}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 access to copy from a designated place, then offering equivalent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 access to copy the source code from the same place counts as}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribution of the source code, even though third parties are not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 compelled to copy the source along with the object code.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 4. You may not copy, modify, sublicense, or distribute the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 except as expressly provided under this License. Any attempt}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 otherwise to copy, modify, sublicense or distribute the Program is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 void, and will automatically terminate your rights under this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 However, parties who have received copies, or rights, from you under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License will not have their licenses terminated so long as such}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parties remain in full compliance.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 5. You are not required to accept this License, since you have not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 signed it. However, nothing else grants you permission to modify or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute the Program or its derivative works. These actions are}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 prohibited by law if you do not accept this License. Therefore, by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 modifying or distributing the Program (or any work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program), you indicate your acceptance of this License to do so, and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 all its terms and conditions for copying, distributing or modifying}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Program or works based on it.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 6. Each time you redistribute the Program (or any work based on the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Program), the recipient automatically receives a license from the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 original licensor to copy, distribute or modify the Program subject to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 these terms and conditions. You may not impose any further}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 restrictions on the recipients' exercise of the rights granted herein.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You are not responsible for enforcing compliance by third parties to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 7. If, as a consequence of a court judgment or allegation of patent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 infringement or for any other reason (not limited to patent issues),}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 conditions are imposed on you (whether by court order, agreement or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 otherwise) that contradict the conditions of this License, they do not}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 excuse you from the conditions of this License. If you cannot}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 distribute so as to satisfy simultaneously your obligations under this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 License and any other pertinent obligations, then as a consequence you}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 may not distribute the Program at all. For example, if a patent}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 license would not permit royalty-free redistribution of the Program by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 all those who receive copies directly or indirectly through you, then}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the only way you could satisfy both it and this License would be to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 refrain entirely from distribution of the Program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If any portion of this section is held invalid or unenforceable under}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 any particular circumstance, the balance of the section is intended to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 apply and the section as a whole is intended to apply in other}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 circumstances.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 It is not the purpose of this section to induce you to infringe any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 patents or other property right claims or to contest validity of any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 such claims; this section has the sole purpose of protecting the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 integrity of the free software distribution system, which is}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 implemented by public license practices. Many people have made}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 generous contributions to the wide range of software distributed}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 through that system in reliance on consistent application of that}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 system; it is up to the author/donor to decide if he or she is willing}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to distribute software through any other system and a licensee cannot}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 impose that choice.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This section is intended to make thoroughly clear what is believed to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be a consequence of the rest of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 8. If the distribution and/or use of the Program is restricted in}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 certain countries either by patents or by copyrighted interfaces, the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 original copyright holder who places the Program under this License}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 may add an explicit geographical distribution limitation excluding}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 those countries, so that distribution is permitted only in or among}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 countries not thus excluded. In such case, this License incorporates}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the limitation as if written in the body of this License.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 9. The Free Software Foundation may publish revised and/or new versions}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of the General Public License from time to time. Such new versions will}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be similar in spirit to the present version, but may differ in detail to}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 address new problems or concerns.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Each version is given a distinguishing version number. If the Program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 specifies a version number of this License which applies to it and "any}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 later version", you have the option of following the terms and conditions}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 either of that version or of any later version published by the Free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Software Foundation. If the Program does not specify a version number of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 this License, you may choose any version ever published by the Free Software}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Foundation.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 10. If you wish to incorporate parts of the Program into other free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 programs whose distribution conditions are different, write to the author}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to ask for permission. For software which is copyrighted by the Free}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Software Foundation, write to the Free Software Foundation; we sometimes}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 make exceptions for this. Our decision will be guided by the two goals}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of preserving the free status of all derivatives of our free software and}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 of promoting the sharing and reuse of software generally.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 NO WARRANTY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 REPAIR OR CORRECTION.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 POSSIBILITY OF SUCH DAMAGES.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 END OF TERMS AND CONDITIONS}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 How to Apply These Terms to Your New Programs}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If you develop a new program, and you want it to be of the greatest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 possible use to the public, the best way to achieve this is to make it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 free software which everyone can redistribute and change under these terms.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 To do so, attach the following notices to the program. It is safest}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 to attach them to the start of each source file to most effectively}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 convey the exclusion of warranty; and each file should have at least}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the "copyright" line and a pointer to where the full notice is found.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 <one line to give the program's name and a brief idea of what it does.>}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Copyright (C) <year> <name of author>}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This program is free software; you can redistribute it and/or modify}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 it under the terms of the GNU General Public License as published by}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 the Free Software Foundation; either version 2 of the License, or}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 (at your option) any later version.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This program is distributed in the hope that it will be useful,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 but WITHOUT ANY WARRANTY; without even the implied warranty of}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 GNU General Public License for more details.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You should have received a copy of the GNU General Public License along}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 with this program; if not, write to the Free Software Foundation, Inc.,}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Also add information on how to contact you by electronic and paper mail.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 If the program is interactive, make it output a short notice like this}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 when it starts in an interactive mode:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Gnomovision version 69, Copyright (C) year name of author}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This is free software, and you are welcome to redistribute it}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 under certain conditions; type `show c' for details.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 The hypothetical commands `show w' and `show c' should show the appropriate}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 parts of the General Public License. Of course, the commands you use may}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 be called something other than `show w' and `show c'; they could even be}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 mouse-clicks or menu items--whatever suits your program.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 You should also get your employer (if you work as a programmer) or your}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 school, if any, to sign a "copyright disclaimer" for the program, if}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 necessary. Here is a sample; alter the names:}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Yoyodyne, Inc., hereby disclaims all copyright interest in the program}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 `Gnomovision' (which makes passes at compilers) written by James Hacker.}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 <signature of Ty Coon>, 1 April 1989}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Ty Coon, President of Vice}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 This General Public License does not permit incorporating your program into}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 proprietary programs. If your program is a subroutine library, you may}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 consider it more useful to permit linking proprietary applications with the}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 library. If this is what you want to do, use the GNU Lesser General}
+\par \pard\plain \ltrpar\s8\ql\rtlch\af6\afs20\lang1081\ltrch\dbch\af7\langfe2052\hich\f6\fs20\lang1031\loch\f6\fs20\lang1031 {\rtlch \ltrch\loch\f6\fs20\lang1031\i0\b0 Public License instead of this License.}
+\par }
diff --git a/doc/License-gpl-2.txt b/doc/License-gpl-2.txt
new file mode 100644
index 00000000..d511905c
--- /dev/null
+++ b/doc/License-gpl-2.txt
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ 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 Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 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".
+
+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.
+
+ 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.
+
+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.
+
+ 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:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ 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.
+
+ 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.)
+
+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.
+
+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.
+
+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.
+
+ 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:
+
+ 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,
+
+ 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,
+
+ 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.)
+
+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.
+
+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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+ 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.
+
+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.
+
+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.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 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.
+
+ 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.
+
+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.
+
+ 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.
+
+ NO WARRANTY
+
+ 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.
+
+ 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.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/doc/ReadMe-OS2.txt b/doc/ReadMe-OS2.txt
new file mode 100644
index 00000000..8a9dc31c
--- /dev/null
+++ b/doc/ReadMe-OS2.txt
@@ -0,0 +1,149 @@
+
+VirtualBox for OS/2 OSE Edition ALPHA
+=====================================
+
+Version 1.5.51_OSE_27858
+
+03.02.2008
+
+
+This is an early development build of VirtualBox OSE Edition for OS/2.
+Please backup your data and don't expect everything to be highly polished
+and tuned just yet. If you find a *new* problem, meaning something
+not listed below, please report it at http://forums.virtualbox.org.
+
+This package is an official unofficial build of VirtualBox for OS/2.
+It means that it is coordinated by volunteers from Sun Microsystems that
+are still in touch with OS/2 and keep patching VirtualBox at their spare
+time to make sure it runs and more or less works under OS/2.
+
+PLEASE NOTE THAT THE OS/2 HOST (AND THEREFORE THE OS/2 VERSION OF
+VIRTUALBOX) IS NOT OFFICIALLY SUPPORTED BY SUN MICROSYSTEMS! DO NOT
+CONTACT SUN MICROSYSTEMS REGARDING THE OS/2 VERSION OF VIRTUALBOX NO
+MATTER WHAT YOUR QUESTION IS ABOUT! THANK YOU FOR UNDERSTANDING.
+
+
+Current Issues / TODOs
+----------------------
+
+* FE/Qt (Qt GUI frontend):
+
+ - Mouse pointer shape in mouse integration mode.
+ - NumLock/ScrollLock synchronization.
+ - Seamless mode (no top-level window transparency on OS/2).
+ - Keyboard driver to intercept system key combinations
+ (Alt+Tab etc.)
+
+* Devices:
+
+ - Host Floppy/DVD.
+ - Audio.
+ - Host interface networking.
+ - Internal networking.
+ - USB proxying.
+
+* Misc:
+
+ - Shared clipboard.
+ - Starting more than one VM simultaneously.
+ - Installer.
+ - VMX support.
+ - VBoxSDL (resizing/scaling/keyboard/slowness).
+ - Very slow Resume after Pause in real mode guest applications.
+
+Also, please pay attention to the section called "OS/2 Specific Features"
+below.
+
+
+How to "Install" and Run
+------------------------
+
+1. Unpack this archive somewhere.
+
+2. Make sure you have a dot (.) in your LIBPATH statement in CONFIG.SYS.
+
+3. Put the following line at the beginning of your CONFIG.SYS
+ and reboot:
+
+ DEVICE=<somewhere>\VBoxDrv.sys
+
+4. Go to <somewhere> and run VirtualBox.exe (Qt GUI frontend).
+
+5. Note that by default VirtualBox stores all user data in the
+ %HOME%\.VirtualBox directory. If %HOME% is not set, it will use
+ the <boot_drive>:\.VirtualBox directory. In either case, you may
+ overwrite the location of this directory using the VBOX_USER_HOME
+ environment variable.
+
+6. For best performance, it is recommended to install the VirtualBox
+ Guest Additions to the guest OS. The archive containing the ISO
+ image with Guest Additions for supported guest OSes (Windows,
+ Linux, OS/2) is named
+
+ VBoxGuestAdditions_XXXXX.zip
+
+ where XXXXX is the version number (it's best if it matches the version
+ number of this VirtualBox package).
+
+ Download this ZIP from the same location you took this archive from
+ and unpack the contents to the directory containing VirtualBox.exe.
+ After that, you can mount the Additions ISO in the Qt GUI by selecting
+ Devices -> Install Guest Additions... from the menu.
+
+
+Documentation and Support
+-------------------------
+
+Please visit http://www.virtualbox.org where you can find a lot of useful
+information about VirtualBox. There is a Community section where you can
+try to request some help from other OS/2 users of VirtualBox.
+
+You can download the User Manual for the latest official release of
+VirtualBox using this URL:
+
+ http://www.virtualbox.org/download/UserManual.pdf
+
+
+OS/2 Specific Features
+----------------------
+
+This section describes the features that are specific to the OS/2 version
+of VirtualBox and may be absent in versions for other platforms.
+
+1. System key combinations such as Alt+Tab, Ctrl+Esc are currently always
+ grabbed by the host and never reach the guest even when the keyboard
+ is captured. In order to send these combinations to the guest OS, use
+ the following shortcuts (where Host is the host key defined in the
+ global settings dialog):
+
+ Host+` (Tilde/Backquote) => Ctrl+Esc
+ Host+1 => Alt+Tab
+ Host+2 => Alt+Shift+Tab
+
+2. If you use two or more keyboard layouts on the OS/2 host (e.g. English
+ and Russian), make sure that the keyboard is switched to the English
+ layer when you work in the VirtualBox VM console window. Otherwise, some
+ shortcuts that involve the Host key (in particluar, all Host+<latin_letter>
+ shortcuts like Host+Q) may not work. Please note that the guest keyboard
+ layout has nothing to do with the host layout so you will still be able to
+ switch layouts in the guest using its own means.
+
+3. Make sure you do not do 'set LIBPATHSTRICT=T' in the environment you start
+ VirtualBox from: it will make the VirtualBox keyboard hook screw up your
+ host desktop (a workaround is to be found).
+
+
+History of Changes
+------------------
+
+* 03.02.2008
+
+ - Initial release.
+
+* XX.XX.XXXX
+
+ - Fixed: VirtualBox would hang or crash frequently on SMP machines in
+ ACPI mode.
+
+ - Fixed: VBoxSDL keyboard key event to scan code conversion [contributed
+ by Paul Smedley].
diff --git a/doc/ReadMe-Solaris.txt b/doc/ReadMe-Solaris.txt
new file mode 100644
index 00000000..93b98e61
--- /dev/null
+++ b/doc/ReadMe-Solaris.txt
@@ -0,0 +1,47 @@
+
+@VBOX_PRODUCT@ for Oracle Solaris (TM) Operating System
+--------------------------------------------------------
+
+Upgrading:
+----------
+
+If you have an existing VirtualBox installation and you are upgrading to
+a newer version of VirtualBox, please uninstall the previous version
+before installing a newer one. Please refer to the "Uninstalling" section
+at the end of this document for details.
+
+
+Installing:
+-----------
+
+After extracting the contents of the tar.gz file perform the following steps:
+
+1. Login as root using the "su" command.
+
+2. Install the VirtualBox package:
+
+ pkgadd -d VirtualBox-@VBOX_VERSION_STRING@-SunOS-@BUILD_TARGET_ARCH@-r@VBOX_SVN_REV@.pkg
+
+ To perform an unattended (non-interactive) installation of this
+ package, add "-n -a autoresponse SUNWvbox" (without quotes)
+ to the end of the above pkgadd command.
+
+3. For each package, the installer will ask you to "Select package(s) you
+ wish to process". In response, type "1".
+
+4. Type "y" when asked about continuing the installation.
+
+At this point, all the required files should be installed on your system.
+You can launch VirtualBox by running 'VirtualBox' from the terminal.
+
+
+Uninstalling:
+-------------
+
+To remove VirtualBox from your system, perform the following steps:
+
+1. Login as root using the "su" command.
+
+2. To remove VirtualBox, run the command:
+ pkgrm SUNWvbox
+
diff --git a/doc/ReadMe-Solaris11.txt b/doc/ReadMe-Solaris11.txt
new file mode 100644
index 00000000..7440b265
--- /dev/null
+++ b/doc/ReadMe-Solaris11.txt
@@ -0,0 +1,55 @@
+
+@VBOX_PRODUCT@ for Oracle Solaris 11 (TM) Operating System
+----------------------------------------------------------------
+
+Installing:
+-----------
+
+After extracting the contents of the tar.xz file install the VirtualBox
+package with the following command:
+
+ $ sudo pkg install -g VirtualBox-@VBOX_VERSION_STRING@-SunOS-@KBUILD_TARGET_ARCH@-r@VBOX_SVN_REV@.p5p virtualbox
+
+Of course you can add options for performing the install in a different boot
+environment or in a separate Solaris install.
+
+Normally you need to reboot the system to load the drivers which have been
+added by the VirtualBox package.
+
+If you want to have VirtualBox immediately usable on your system you can run
+the script /opt/VirtualBox/ipsinstall.sh which sets up everything immediately.
+
+At this point, all the required files should be installed on your system.
+You can launch VirtualBox by running 'VirtualBox' from the terminal.
+
+
+Upgrading:
+----------
+
+If you want to upgrade from an older to a newer version of the VirtualBox IPS
+package you can use the following command after extracting the contents of the
+tar.xz file:
+
+ $ sudo pkg update -g VirtualBox-@VBOX_VERSION_STRING@-SunOS-@KBUILD_TARGET_ARCH@-r@VBOX_SVN_REV@.p5p virtualbox
+
+If you want to upgrade from the SysV package of VirtualBox to the IPS one,
+please uninstall the previous package before installing the IPS one. Please
+refer to the "Uninstalling" and "Installing" sections of this document for
+details.
+
+It is your responsibility to ensure that no VirtualBox VMs or other related
+activities are running. One possible way is using the command pgrep VBoxSVC. If
+this shows no output then it is safe to upgrade VirtualBox.
+
+
+Uninstalling:
+-------------
+
+To remove VirtualBox from your system, run the following command:
+
+ $ sudo pkg uninstall virtualbox
+
+It is your responsibility to ensure that no VirtualBox VMs or other related
+activities are running. One possible way is using the command pgrep VBoxSVC. If
+this shows no output then it is safe to uninstall VirtualBox.
+
diff --git a/doc/VBox-CodingGuidelines.cpp b/doc/VBox-CodingGuidelines.cpp
new file mode 100644
index 00000000..aca8ec4b
--- /dev/null
+++ b/doc/VBox-CodingGuidelines.cpp
@@ -0,0 +1,1021 @@
+/* $Id: VBox-CodingGuidelines.cpp $ */
+/** @file
+ * VBox - Coding Guidelines.
+ */
+
+/*
+ * 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.
+ */
+
+/** @page pg_vbox_guideline VBox Coding Guidelines
+ *
+ * The compulsory sections of these guidelines are to be followed in all of the
+ * VBox sources. Please note that local guidelines in parts of the VBox source
+ * tree may promote the optional ones to compulsory status. The VBox tree also
+ * contains some 3rd party sources where it is good to follow the local coding
+ * style while keeping these guidelines in mind.
+ *
+ * Contents:
+ * - @ref sec_vbox_guideline_compulsory
+ * - @ref sec_vbox_guideline_compulsory_sub64
+ * - @ref sec_vbox_guideline_compulsory_cppmain
+ * - @ref sec_vbox_guideline_compulsory_cppqtgui
+ * - @ref sec_vbox_guideline_compulsory_xslt
+ * - @ref sec_vbox_guideline_compulsory_doxygen
+ * - @ref sec_vbox_guideline_compulsory_guest
+ * - @ref sec_vbox_guideline_optional
+ * - @ref sec_vbox_guideline_optional_layout
+ * - @ref sec_vbox_guideline_optional_prefix
+ * - @ref sec_vbox_guideline_optional_misc
+ * - @ref sec_vbox_guideline_warnings
+ * - @ref sec_vbox_guideline_warnings_signed_unsigned_compare
+ * - @ref sec_vbox_guideline_svn
+ *
+ * Local guidelines overrides:
+ * - src/VBox/VMM/: @ref pg_vmm_guideline (src/VBox/VMM/Docs-CodingGuidelines.cpp)
+ * - src/VBox/ValidationKit/: @ref pg_validationkit_guideline (src/VBox/ValidationKit/ValidationKitCodingGuidelines.cpp)
+ * - src/VBox/Runtime/: All of @ref sec_vbox_guideline_optional is mandatory.
+ * - src/VBox/Main/: @ref sec_vbox_guideline_compulsory_cppmain
+ * - src/VBox/Frontends/VirtualBox/: @ref sec_vbox_guideline_compulsory_cppqtgui
+ *
+ *
+ * @section sec_vbox_guideline_compulsory Compulsory
+ *
+ * <ul>
+ *
+ * <li> The indentation size is 4 chars.
+ *
+ * <li> Tabs are only ever used in makefiles.
+ *
+ * <li> Use RT and VBOX types.
+ *
+ * <li> Use Runtime functions.
+ *
+ * <li> Use the standard bool, uintptr_t, intptr_t and [u]int[1-9+]_t types.
+ *
+ * <li> Avoid using plain unsigned and int.
+ *
+ * <li> Use static wherever possible. This makes the namespace less polluted
+ * and avoids nasty name clash problems which can occur, especially on
+ * Unix-like systems. (1) It also simplifies locating callers when
+ * changing it (single source file vs entire VBox tree).
+ *
+ * <li> Public names are of the form Domain[Subdomain[]]Method, using mixed
+ * casing to mark the words. The main domain is all uppercase.
+ * (Think like java, mapping domain and subdomain to packages/classes.)
+ *
+ * <li> Public names are always declared using the appropriate DECL macro. (2)
+ *
+ * <li> Internal names starts with a lowercased main domain.
+ *
+ * <li> Defines are all uppercase and separate words with underscore.
+ * This applies to enum values too.
+ *
+ * <li> Typedefs are all uppercase and contain no underscores to distinguish
+ * them from defines. Alternatively, all uppercase, separate words with
+ * underscores and ending with '_T'. The latter is not allowed in IPRT.
+ *
+ * <li> Pointer typedefs start with 'P'. If pointer to const then 'PC'.
+ *
+ * <li> Function typedefs start with 'FN'. If pointer to FN then 'PFN'.
+ *
+ * <li> All files are case sensitive.
+ *
+ * <li> Slashes are unix slashes ('/') runtime converts when necessary.
+ *
+ * <li> char strings are UTF-8.
+ *
+ * <li> Strings from any external source must be treated with utmost care as
+ * they do not have to be valid UTF-8. Only trust internal strings.
+ *
+ * <li> All functions return VBox status codes. There are three general
+ * exceptions from this:
+ *
+ * <ol>
+ * <li>Predicate functions. These are function which are boolean in
+ * nature and usage. They return bool. The function name will
+ * include 'Has', 'Is' or similar.
+ * <li>Functions which by nature cannot possibly fail.
+ * These return void.
+ * <li>"Get"-functions which return what they ask for.
+ * A get function becomes a "Query" function if there is any
+ * doubt about getting what is ask for.
+ * </ol>
+ *
+ * <li> VBox status codes have three subdivisions:
+ * <ol>
+ * <li> Errors, which are VERR_ prefixed and negative.
+ * <li> Warnings, which are VWRN_ prefixed and positive.
+ * <li> Informational, which are VINF_ prefixed and positive.
+ * </ol>
+ *
+ * <li> Platform/OS operation are generalized and put in the IPRT.
+ *
+ * <li> Other useful constructs are also put in the IPRT.
+ *
+ * <li> The code shall not cause compiler warnings. Check this on ALL
+ * the platforms.
+ *
+ * <li> The use of symbols leading with single or double underscores is
+ * forbidden as that intrudes on reserved compiler/system namespace. (3)
+ *
+ * <li> All files have file headers with $Id and a file tag which describes
+ * the file in a sentence or two.
+ * Note: Use the svn-ps.cmd/svn-ps.sh utility with the -a option to add
+ * new sources with keyword expansion and exporting correctly
+ * configured.
+ *
+ * <li> All public functions are fully documented in Doxygen style using the
+ * javadoc dialect (using the 'at' instead of the 'slash' as
+ * commandprefix.)
+ *
+ * <li> All structures in header files are described, including all their
+ * members. (Doxygen style, of course.)
+ *
+ * <li> All modules have a documentation '\@page' in the main source file
+ * which describes the intent and actual implementation.
+ *
+ * <li> Code which is doing things that are not immediately comprehensible
+ * shall include explanatory comments.
+ *
+ * <li> Documentation and comments are kept up to date.
+ *
+ * <li> Headers in /include/VBox shall not contain any slash-slash C++
+ * comments, only ANSI C comments!
+ *
+ * <li> Comments on \#else indicates what begins while the comment on a
+ * \#endif indicates what ended. Only add these when there are more than
+ * a few lines (6-10) of \#ifdef'ed code, otherwise they're just clutter.
+ *
+ * <li> \#ifdefs around a single function shall be tight, i.e. no empty
+ * lines between it and the function documentation and body.
+ *
+ * <li> \#ifdefs around more than one function shall be relaxed, i.e. leave at
+ * least one line before the first function's documentation comment and
+ * one line after the end of the last function.
+ *
+ * <li> No 'else' after if block ending with 'return', 'break', or 'continue'.
+ *
+ * <li> The term 'last' is inclusive, whereas the term 'end' is exclusive.
+ *
+ * <li> Go through all of this: https://www.slideshare.net/olvemaudal/deep-c/
+ *
+ * <li> Avoid throwing exceptions, always prefer returning statuses.
+ * Crappy exception handling is rewared by a glass of water in the face.
+ *
+ * </ul>
+ *
+ * (1) It is common practice on Unix to have a single symbol namespace for an
+ * entire process. If one is careless symbols might be resolved in a
+ * different way that one expects, leading to weird problems.
+ *
+ * (2) This is common practice among most projects dealing with modules in
+ * shared libraries. The Windows / PE __declspect(import) and
+ * __declspect(export) constructs are the main reason for this.
+ * OTOH, we do perhaps have a bit too detailed graining of this in VMM...
+ *
+ * (3) There are guys out there grepping public sources for symbols leading with
+ * single and double underscores as well as gotos and other things
+ * considered bad practice. They'll post statistics on how bad our sources
+ * are on some mailing list, forum or similar.
+ *
+ *
+ * @subsection sec_vbox_guideline_compulsory_sub64 64-bit and 32-bit
+ *
+ * Here are some amendments which address 64-bit vs. 32-bit portability issues.
+ *
+ * Some facts first:
+ *
+ * <ul>
+ *
+ * <li> On 64-bit Windows the type long remains 32-bit. On nearly all other
+ * 64-bit platforms long is 64-bit.
+ *
+ * <li> On all 64-bit platforms we care about, int is 32-bit, short is 16 bit
+ * and char is 8-bit.
+ * (I don't know about any platforms yet where this isn't true.)
+ *
+ * <li> size_t, ssize_t, uintptr_t, ptrdiff_t and similar are all 64-bit on
+ * 64-bit platforms. (These are 32-bit on 32-bit platforms.)
+ *
+ * <li> There is no inline assembly support in the 64-bit Microsoft compilers.
+ *
+ * </ul>
+ *
+ * Now for the guidelines:
+ *
+ * <ul>
+ *
+ * <li> Never, ever, use int, long, ULONG, LONG, DWORD or similar to cast a
+ * pointer to integer. Use uintptr_t or intptr_t. If you have to use
+ * NT/Windows types, there is the choice of ULONG_PTR and DWORD_PTR.
+ *
+ * <li> Avoid where ever possible the use of the types 'long' and 'unsigned
+ * long' as these differs in size between windows and the other hosts
+ * (see above).
+ *
+ * <li> RT_OS_WINDOWS is defined to indicate Windows. Do not use __WIN32__,
+ * __WIN64__ and __WIN__ because they are all deprecated and scheduled
+ * for removal (if not removed already). Do not use the compiler
+ * defined _WIN32, _WIN64, or similar either. The bitness can be
+ * determined by testing ARCH_BITS.
+ * Example:
+ * @code
+ * #ifdef RT_OS_WINDOWS
+ * // call win32/64 api.
+ * #endif
+ * #ifdef RT_OS_WINDOWS
+ * # if ARCH_BITS == 64
+ * // call win64 api.
+ * # else // ARCH_BITS == 32
+ * // call win32 api.
+ * # endif // ARCH_BITS == 32
+ * #else // !RT_OS_WINDOWS
+ * // call posix api
+ * #endif // !RT_OS_WINDOWS
+ * @endcode
+ *
+ * <li> There are RT_OS_xxx defines for each OS, just like RT_OS_WINDOWS
+ * mentioned above. Use these defines instead of any predefined
+ * compiler stuff or defines from system headers.
+ *
+ * <li> RT_ARCH_X86 is defined when compiling for the x86 the architecture.
+ * Do not use __x86__, __X86__, __[Ii]386__, __[Ii]586__, or similar
+ * for this purpose.
+ *
+ * <li> RT_ARCH_AMD64 is defined when compiling for the AMD64 architecture.
+ * Do not use __AMD64__, __amd64__ or __x64_86__.
+ *
+ * <li> Take care and use size_t when you have to, esp. when passing a pointer
+ * to a size_t as a parameter.
+ *
+ * <li> Be wary of type promotion to (signed) integer. For example the
+ * following will cause u8 to be promoted to int in the shift, and then
+ * sign extended in the assignment 64-bit:
+ * @code
+ * uint8_t u8 = 0xfe;
+ * uint64_t u64 = u8 << 24;
+ * // u64 == 0xfffffffffe000000
+ * @endcode
+ *
+ * </ul>
+ *
+ * @subsubsection sec_vbox_guideline_compulsory_sub64_comp Comparing the GCC and MSC calling conventions
+ *
+ * GCC expects the following (cut & past from page 20 in the ABI draft 0.96):
+ *
+ * @verbatim
+ %rax temporary register; with variable arguments passes information about the
+ number of SSE registers used; 1st return register.
+ [Not preserved]
+ %rbx callee-saved register; optionally used as base pointer.
+ [Preserved]
+ %rcx used to pass 4th integer argument to functions.
+ [Not preserved]
+ %rdx used to pass 3rd argument to functions; 2nd return register
+ [Not preserved]
+ %rsp stack pointer
+ [Preserved]
+ %rbp callee-saved register; optionally used as frame pointer
+ [Preserved]
+ %rsi used to pass 2nd argument to functions
+ [Not preserved]
+ %rdi used to pass 1st argument to functions
+ [Not preserved]
+ %r8 used to pass 5th argument to functions
+ [Not preserved]
+ %r9 used to pass 6th argument to functions
+ [Not preserved]
+ %r10 temporary register, used for passing a function's static chain
+ pointer [Not preserved]
+ %r11 temporary register
+ [Not preserved]
+ %r12-r15 callee-saved registers
+ [Preserved]
+ %xmm0-%xmm1 used to pass and return floating point arguments
+ [Not preserved]
+ %xmm2-%xmm7 used to pass floating point arguments
+ [Not preserved]
+ %xmm8-%xmm15 temporary registers
+ [Not preserved]
+ %mmx0-%mmx7 temporary registers
+ [Not preserved]
+ %st0 temporary register; used to return long double arguments
+ [Not preserved]
+ %st1 temporary registers; used to return long double arguments
+ [Not preserved]
+ %st2-%st7 temporary registers
+ [Not preserved]
+ %fs Reserved for system use (as thread specific data register)
+ [Not preserved]
+ @endverbatim
+ *
+ * Direction flag is preserved as cleared.
+ * The stack must be aligned on a 16-byte boundary before the 'call/jmp' instruction.
+ *
+ * MSC expects the following:
+ * @verbatim
+ rax return value, not preserved.
+ rbx preserved.
+ rcx 1st argument, integer, not preserved.
+ rdx 2nd argument, integer, not preserved.
+ rbp preserved.
+ rsp preserved.
+ rsi preserved.
+ rdi preserved.
+ r8 3rd argument, integer, not preserved.
+ r9 4th argument, integer, not preserved.
+ r10 scratch register, not preserved.
+ r11 scratch register, not preserved.
+ r12-r15 preserved.
+ xmm0 1st argument, fp, return value, not preserved.
+ xmm1 2st argument, fp, not preserved.
+ xmm2 3st argument, fp, not preserved.
+ xmm3 4st argument, fp, not preserved.
+ xmm4-xmm5 scratch, not preserved.
+ xmm6-xmm15 preserved.
+ @endverbatim
+ *
+ * Dunno what the direction flag is...
+ * The stack must be aligned on a 16-byte boundary before the 'call/jmp' instruction.
+ *
+ *
+ * @subsection sec_vbox_guideline_compulsory_cppmain C++ guidelines for Main
+ *
+ * Since the Main API code is a large amount of C++ code, it is allowed but
+ * not required to use C++ style comments (as permanent comments, beyond the
+ * temporary use allowed by the general coding guideline). This is a weak
+ * preference, i.e. large scale comment style changes are not encouraged.
+ *
+ * Main is currently (2009) full of hard-to-maintain code that uses complicated
+ * templates. The new mid-term goal for Main is to have less custom templates
+ * instead of more for the following reasons:
+ *
+ * <ul>
+ *
+ * <li> Template code is harder to read and understand. Custom templates create
+ * territories which only the code writer understands.
+ *
+ * <li> Errors in using templates create terrible C++ compiler messages.
+ *
+ * <li> Template code is really hard to look at in a debugger.
+ *
+ * <li> Templates slow down the compiler a lot.
+ *
+ * </ul>
+ *
+ * In particular, the following bits should be considered deprecated and should
+ * NOT be used in new code:
+ *
+ * <ul>
+ *
+ * <li> everything in include/iprt/cpputils.h (auto_ref_ptr, exception_trap_base,
+ * char_auto_ptr and friends)
+ *
+ * </ul>
+ *
+ * Generally, in many cases, a simple class with a proper destructor can achieve
+ * the same effect as a 1,000-line template include file, and the code is
+ * much more accessible that way.
+ *
+ * Using standard STL templates like std::list, std::vector and std::map is OK.
+ * Exceptions are:
+ *
+ * <ul>
+ *
+ * <li> Guest Additions because we don't want to link against libstdc++ there.
+ *
+ * <li> std::string should not be used because we have iprt::MiniString and
+ * com::Utf8Str which can convert efficiently with COM's UTF-16 strings.
+ *
+ * <li> std::auto_ptr<> in general; that part of the C++ standard is just broken.
+ * Write a destructor that calls delete.
+ *
+ * </ul>
+ *
+ * @subsection sec_vbox_guideline_compulsory_cppqtgui C++ guidelines for the Qt GUI
+ *
+ * The Qt GUI is currently (2010) on its way to become more compatible to the
+ * rest of VirtualBox coding style wise. From now on, all the coding style
+ * rules described in this file are also mandatory for the Qt GUI. Additionally
+ * the following rules should be respected:
+ *
+ * <ul>
+ *
+ * <li> GUI classes which correspond to GUI tasks should be prefixed by UI (no VBox anymore)
+ *
+ * <li> Classes which extents some of the Qt classes should be prefix by QI
+ *
+ * <li> General task classes should be prefixed by C
+ *
+ * <li> Slots are prefixed by slt -> sltName
+ *
+ * <li> Signals are prefixed by sig -> sigName
+ *
+ * <li> Use Qt classes for lists, strings and so on, the use of STL classes should
+ * be avoided
+ *
+ * <li> All files like .cpp, .h, .ui, which belong together are located in the
+ * same directory and named the same
+ *
+ * </ul>
+ *
+ *
+ * @subsection sec_vbox_guideline_compulsory_xslt XSLT
+ *
+ * XSLT (eXtensible Stylesheet Language Transformations) is used quite a bit in
+ * the Main API area of VirtualBox to generate sources and bindings to that API.
+ * There are a couple of common pitfalls worth mentioning:
+ *
+ * <ul>
+ *
+ * <li> Never do repeated //interface[\@name=...] and //enum[\@name=...] lookups
+ * because they are expensive. Instead delcare xsl:key elements for these
+ * searches and do the lookup using the key() function. xsltproc uses
+ * (per current document) hash tables for each xsl:key, i.e. very fast.
+ *
+ * <li> When output type is 'text' make sure to call xsltprocNewlineOutputHack
+ * from typemap-shared.inc.xsl every few KB of output, or xsltproc will
+ * end up wasting all the time reallocating the output buffer.
+ *
+ * </ul>
+ *
+ *
+ * @subsection sec_vbox_guideline_compulsory_doxygen Doxygen Comments
+ *
+ * As mentioned above, we shall use doxygen/javadoc style commenting of public
+ * functions, typedefs, classes and such. It is mandatory to use this style
+ * everywhere!
+ *
+ * A couple of hints on how to best write doxygen comments:
+ *
+ * <ul>
+ *
+ * <li> A good class, method, function, structure or enum doxygen comment
+ * starts with a one line sentence giving a brief description of the
+ * item. Details comes in a new paragraph (after blank line).
+ *
+ * <li> Except for list generators like \@todo, \@cfgm, \@gcfgm and others,
+ * all doxygen comments are related to things in the code. So, for
+ * instance you DO NOT add a doxygen \@note comment in the middle of a
+ * because you've got something important to note, you add a normal
+ * comment like 'Note! blah, very importan blah!'
+ *
+ * <li> We do NOT use TODO/XXX/BUGBUG or similar markers in the code to flag
+ * things needing fixing later, we always use \@todo doxygen comments.
+ *
+ * <li> There is no colon after the \@todo. And it is ALWAYS in a doxygen
+ * comment.
+ *
+ * <li> The \@retval tag is used to explain status codes a method/function may
+ * returns. It is not used to describe output parameters, that is done
+ * using the \@param or \@param[out] tag.
+ *
+ * </ul>
+ *
+ * See https://www.stack.nl/~dimitri/doxygen/manual/index.html for the official
+ * doxygen documention.
+ *
+ *
+ *
+ * @subsection sec_vbox_guideline_compulsory_guest Handling of guest input
+ *
+ * First, guest input should ALWAYS be consider to be TOXIC and constructed with
+ * MALICIOUS intent! Max paranoia level!
+ *
+ * Second, when getting inputs from memory shared with the guest, be EXTREMELY
+ * careful to not re-read input from shared memory after validating it, because
+ * that will create TOCTOU problems. So, after reading input from shared memory
+ * always use the RT_UNTRUSTED_NONVOLATILE_COPY_FENCE() macro. For more details
+ * on TOCTOU: https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use
+ *
+ * Thirdly, considering the recent speculation side channel issues, spectre v1
+ * in particular, we would like to be ready for future screwups. This means
+ * having input validation in a separate block of code that ends with one (or
+ * more) RT_UNTRUSTED_VALIDATED_FENCE().
+ *
+ * So the rules:
+ *
+ * <ul>
+ *
+ * <li> Mark all pointers to shared memory with RT_UNTRUSTED_VOLATILE_GUEST.
+ *
+ * <li> Copy volatile data into local variables or heap before validating
+ * them (see RT_COPY_VOLATILE() and RT_BCOPY_VOLATILE().
+ *
+ * <li> Place RT_UNTRUSTED_NONVOLATILE_COPY_FENCE() after a block copying
+ * volatile data.
+ *
+ * <li> Always validate untrusted inputs in a block ending with a
+ * RT_UNTRUSTED_VALIDATED_FENCE().
+ *
+ * <li> Use the ASSERT_GUEST_XXXX macros from VBox/AssertGuest.h to validate
+ * guest input. (Do NOT use iprt/assert.h macros.)
+ *
+ * <li> Validation of an input B may require using another input A to look up
+ * some data, in which case its necessary to insert an
+ * RT_UNTRUSTED_VALIDATED_FENCE() after validating A and before A is used
+ * for the lookup.
+ *
+ * For example A is a view identifier, idView, and B is an offset into
+ * the view's framebuffer area, offView. To validate offView (B) it is
+ * necessary to get the size of the views framebuffer region:
+ * @code
+ * uint32_t const idView = pReq->idView; // A
+ * uint32_t const offView = pReq->offView; // B
+ * RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
+ *
+ * ASSERT_GUEST_RETURN(idView < pThis->cView,
+ * VERR_INVALID_PARAMETER);
+ * RT_UNTRUSTED_VALIDATED_FENCE();
+ * const MYVIEW *pView = &pThis->aViews[idView];
+ * ASSERT_GUEST_RETURN(offView < pView->cbFramebufferArea,
+ * VERR_OUT_OF_RANGE);
+ * RT_UNTRUSTED_VALIDATED_FENCE();
+ * @endcode
+ *
+ * <li> Take care to make sure input check are not subject to integer overflow problems.
+ *
+ * For instance when validating an area, you must not just add cbDst + offDst
+ * and check against pThis->offEnd or something like that. Rather do:
+ * @code
+ * uint32_t const offDst = pReq->offDst;
+ * uint32_t const cbDst = pReq->cbDst;
+ * RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
+ *
+ * ASSERT_GUEST_RETURN( cbDst <= pThis->cbSrc
+ * && offDst < pThis->cbSrc - cbDst,
+ * VERR_OUT_OF_RANGE);
+ * RT_UNTRUSTED_VALIDATED_FENCE();
+ * @endcode
+ *
+ * <li> Input validation does not only apply to shared data cases, but also to
+ * I/O port and MMIO handlers.
+ *
+ * <li> Ditto for kernel drivers working with usermode inputs.
+ *
+ * </ul>
+ *
+ *
+ * Problem patterns:
+ * - https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use
+ * - https://googleprojectzero.blogspot.de/2018/01/reading-privileged-memory-with-side.html
+ * (Variant 1 only).
+ * - https://en.wikipedia.org/wiki/Integer_overflow
+ *
+ *
+ *
+ * @section sec_vbox_guideline_optional Optional
+ *
+ * First part is the actual coding style and all the prefixes. The second part
+ * is a bunch of good advice.
+ *
+ *
+ * @subsection sec_vbox_guideline_optional_layout The code layout
+ *
+ * <ul>
+ *
+ * <li> Max line length is 130 chars. Exceptions are table-like
+ * code/initializers and Log*() statements (don't waste unnecessary
+ * vertical space on debug logging).
+ *
+ * <li> Comments should try stay within the usual 80 columns as these are
+ * denser and too long lines may be harder to read.
+ *
+ * <li> Curly brackets are not indented. Example:
+ * @code
+ * if (true)
+ * {
+ * Something1();
+ * Something2();
+ * }
+ * else
+ * {
+ * SomethingElse1().
+ * SomethingElse2().
+ * }
+ * @endcode
+ *
+ * <li> Space before the parentheses when it comes after a C keyword.
+ *
+ * <li> No space between argument and parentheses. Exception for complex
+ * expression. Example:
+ * @code
+ * if (PATMR3IsPatchGCAddr(pVM, GCPtr))
+ * @endcode
+ *
+ * <li> The else of an if is always the first statement on a line. (No curly
+ * stuff before it!)
+ *
+ * <li> else and if go on the same line if no { compound statement }
+ * follows the if. Example:
+ * @code
+ * if (fFlags & MYFLAGS_1)
+ * fFlags &= ~MYFLAGS_10;
+ * else if (fFlags & MYFLAGS_2)
+ * {
+ * fFlags &= ~MYFLAGS_MASK;
+ * fFlags |= MYFLAGS_5;
+ * }
+ * else if (fFlags & MYFLAGS_3)
+ * @endcode
+ *
+ * <li> Slightly complex boolean expressions are split into multiple lines,
+ * putting the operators first on the line and indenting it all according
+ * to the nesting of the expression. The purpose is to make it as easy as
+ * possible to read. Example:
+ * @code
+ * if ( RT_SUCCESS(rc)
+ * || (fFlags & SOME_FLAG))
+ * @endcode
+ *
+ * <li> When 'if' or 'while' statements gets long, the closing parentheses
+ * goes right below the opening parentheses. This may be applied to
+ * sub-expression. Example:
+ * @code
+ * if ( RT_SUCCESS(rc)
+ * || ( fSomeStuff
+ * && fSomeOtherStuff
+ * && fEvenMoreStuff
+ * )
+ * || SomePredicateFunction()
+ * )
+ * {
+ * ...
+ * }
+ * @endcode
+ *
+ * <li> The case is indented from the switch (to avoid having the braces for
+ * the 'case' at the same level as the 'switch' statement).
+ *
+ * <li> If a case needs curly brackets they contain the entire case, are not
+ * indented from the case, and the break or return is placed inside them.
+ * Example:
+ * @code
+ * switch (pCur->eType)
+ * {
+ * case PGMMAPPINGTYPE_PAGETABLES:
+ * {
+ * unsigned iPDE = pCur->GCPtr >> PGDIR_SHIFT;
+ * unsigned iPT = (pCur->GCPtrEnd - pCur->GCPtr) >> PGDIR_SHIFT;
+ * while (iPT-- > 0)
+ * if (pPD->a[iPDE + iPT].n.u1Present)
+ * return VERR_HYPERVISOR_CONFLICT;
+ * break;
+ * }
+ * }
+ * @endcode
+ *
+ * <li> In a do while construction, the while is on the same line as the
+ * closing "}" if any are used.
+ * Example:
+ * @code
+ * do
+ * {
+ * stuff;
+ * i--;
+ * } while (i > 0);
+ * @endcode
+ *
+ * <li> Comments are in C style. C++ style comments are used for temporary
+ * disabling a few lines of code.
+ *
+ * <li> No unnecessary parentheses in expressions (just don't over do this
+ * so that gcc / msc starts bitching). Find a correct C/C++ operator
+ * precedence table if needed.
+ *
+ * <li> 'for (;;)' is preferred over 'while (true)' and 'while (1)'.
+ *
+ * <li> Parameters are indented to the start parentheses when breaking up
+ * function calls, declarations or prototypes. (This is in line with
+ * how 'if', 'for' and 'while' statements are done as well.) Example:
+ * @code
+ * RTPROCESS hProcess;
+ * int rc = RTProcCreateEx(papszArgs[0],
+ * papszArgs,
+ * RTENV_DEFAULT,
+ * fFlags,
+ * NULL, // phStdIn
+ * NULL, // phStdOut
+ * NULL, // phStdErr
+ * NULL, // pszAsUser
+ * NULL, // pszPassword
+ * NULL, // pExtraData
+ * &hProcess);
+ * @endcode
+ *
+ * <li> That Dijkstra is dead is no excuse for using gotos.
+ *
+ * <li> Using do-while-false loops to avoid gotos is considered very bad form.
+ * They create hard to read code. They tend to be either too short (i.e.
+ * pointless) or way to long (split up the function already), making
+ * tracking the state is difficult and prone to bugs. Also, they cause
+ * the compiler to generate suboptimal code, because the break branches
+ * are by preferred over the main code flow (MSC has no branch hinting!).
+ * Instead, do make use the 130 columns (i.e. nested ifs) and split
+ * the code up into more functions!
+ *
+ * <li> Avoid code like
+ * @code
+ * int foo;
+ * int rc;
+ * ...
+ * rc = FooBar();
+ * if (RT_SUCCESS(rc))
+ * {
+ * foo = getFoo();
+ * ...
+ * pvBar = RTMemAlloc(sizeof(*pvBar));
+ * if (!pvBar)
+ * rc = VERR_NO_MEMORY;
+ * }
+ * if (RT_SUCCESS(rc))
+ * {
+ * buzz = foo;
+ * ...
+ * }
+ * @endcode
+ * The intention of such code is probably to save some horizontal space
+ * but unfortunately it's hard to read and the scope of certain varables
+ * (e.g. foo in this example) is not optimal. Better use the following
+ * style:
+ * @code
+ * int rc;
+ * ...
+ * rc = FooBar();
+ * if (RT_SUCCESS(rc))
+ * {
+ * int foo = getFoo();
+ * ...
+ * pvBar = RTMemAlloc(sizeof(*pvBar));
+ * if (pvBar)
+ * {
+ * buzz = foo;
+ * ...
+ * }
+ * else
+ * rc = VERR_NO_MEMORY;
+ * }
+ * @endcode
+ *
+ * </ul>
+ *
+ * @subsection sec_vbox_guideline_optional_prefix Variable / Member Prefixes
+ *
+ * Prefixes are meant to provide extra context clues to a variable/member, we
+ * therefore avoid using prefixes that just indicating the type if a better
+ * choice is available.
+ *
+ *
+ * The prefixes:
+ *
+ * <ul>
+ *
+ * <li> The 'g_' (or 'g') prefix means a global variable, either on file or module level.
+ *
+ * <li> The 's_' (or 's') prefix means a static variable inside a function or
+ * class. This is not used for static variables on file level, use 'g_'
+ * for those (logical, right).
+ *
+ * <li> The 'm_' (or 'm') prefix means a class data member.
+ *
+ * In new code in Main, use "m_" (and common sense). As an exception,
+ * in Main, if a class encapsulates its member variables in an anonymous
+ * structure which is declared in the class, but defined only in the
+ * implementation (like this: 'class X { struct Data; Data *m; }'), then
+ * the pointer to that struct is called 'm' itself and its members then
+ * need no prefix, because the members are accessed with 'm->member'
+ * already which is clear enough.
+ *
+ * <li> The 'a_' prefix means a parameter (argument) variable. This is
+ * sometimes written 'a' in parts of the source code that does not use
+ * the array prefix.
+ *
+ * <li> The 'p' prefix means pointer. For instance 'pVM' is pointer to VM.
+ *
+ * <li> The 'r' prefix means that something is passed by reference.
+ *
+ * <li> The 'k' prefix means that something is a constant. For instance
+ * 'enum { kStuff };'. This is usually not used in combination with
+ * 'p', 'r' or any such thing, it's main main use is to make enums
+ * easily identifiable.
+ *
+ * <li> The 'a' prefix means array. For instance 'aPages' could be read as
+ * array of pages.
+ *
+ * <li> The 'c' prefix means count. For instance 'cbBlock' could be read,
+ * count of bytes in block. (1)
+ *
+ * <li> The 'cx' prefix means width (count of 'x' units).
+ *
+ * <li> The 'cy' prefix means height (count of 'y' units).
+ *
+ * <li> The 'x', 'y' and 'z' prefix refers to the x-, y- , and z-axis
+ * respectively.
+ *
+ * <li> The 'off' prefix means offset.
+ *
+ * <li> The 'i' or 'idx' prefixes usually means index. Although the 'i' one
+ * can sometimes just mean signed integer.
+ *
+ * <li> The 'i[1-9]+' prefix means a fixed bit size variable. Frequently
+ * used with the int[1-9]+_t types where the width is really important.
+ * In most cases 'i' is more appropriate. [type]
+ *
+ * <li> The 'e' (or 'enm') prefix means enum.
+ *
+ * <li> The 'u' prefix usually means unsigned integer. Exceptions follows.
+ *
+ * <li> The 'u[1-9]+' prefix means a fixed bit size variable. Frequently
+ * used with the uint[1-9]+_t types and with bitfields where the width is
+ * really important. In most cases 'u' or 'b' (byte) would be more
+ * appropriate. [type]
+ *
+ * <li> The 'b' prefix means byte or bytes. [type]
+ *
+ * <li> The 'f' prefix means flags. Flags are unsigned integers of some kind
+ * or booleans.
+ *
+ * <li> TODO: need prefix for real float. [type]
+ *
+ * <li> The 'rd' prefix means real double and is used for 'double' variables.
+ * [type]
+ *
+ * <li> The 'lrd' prefix means long real double and is used for 'long double'
+ * variables. [type]
+ *
+ * <li> The 'ch' prefix means a char, the (signed) char type. [type]
+ *
+ * <li> The 'wc' prefix means a wide/windows char, the RTUTF16 type. [type]
+ *
+ * <li> The 'uc' prefix means a Unicode Code point, the RTUNICP type. [type]
+ *
+ * <li> The 'uch' prefix means unsigned char. It's rarely used. [type]
+ *
+ * <li> The 'sz' prefix means zero terminated character string (array of
+ * chars). (UTF-8)
+ *
+ * <li> The 'wsz' prefix means zero terminated wide/windows character string
+ * (array of RTUTF16).
+ *
+ * <li> The 'usz' prefix means zero terminated Unicode string (array of
+ * RTUNICP).
+ *
+ * <li> The 'str' prefix means C++ string; either a std::string or, in Main,
+ * a Utf8Str or, in Qt, a QString. When used with 'p', 'r', 'a' or 'c'
+ * the first letter should be capitalized.
+ *
+ * <li> The 'bstr' prefix, in Main, means a UTF-16 Bstr. When used with 'p',
+ * 'r', 'a' or 'c' the first letter should be capitalized.
+ *
+ * <li> The 'pfn' prefix means pointer to function. Common usage is 'pfnCallback'
+ * and such like.
+ *
+ * <li> The 'psz' prefix is a combination of 'p' and 'sz' and thus means
+ * pointer to a zero terminated character string. (UTF-8)
+ *
+ * <li> The 'pcsz' prefix is used to indicate constant string pointers in
+ * parts of the code. Most code uses 'psz' for const and non-const
+ * string pointers, so please ignore this one.
+ *
+ * <li> The 'l' prefix means (signed) long. We try avoid using this,
+ * expecially with the 'LONG' types in Main as these are not 'long' on
+ * 64-bit non-Windows platforms and can cause confusion. Alternatives:
+ * 'i' or 'i32'. [type]
+ *
+ * <li> The 'ul' prefix means unsigned long. We try avoid using this,
+ * expecially with the 'ULONG' types in Main as these are not 'unsigned
+ * long' on 64-bit non-Windows platforms and can cause confusion.
+ * Alternatives: 'u' or 'u32'. [type]
+ *
+ * </ul>
+ *
+ * (1) Except in the occasional 'pcsz' prefix, the 'c' prefix is never ever
+ * used in the meaning 'const'.
+ *
+ *
+ * @subsection sec_vbox_guideline_optional_misc Misc / Advice / Stuff
+ *
+ * <ul>
+ *
+ * <li> When writing code think as the reader.
+ *
+ * <li> When writing code think as the compiler. (2)
+ *
+ * <li> When reading code think as if it's full of bugs - find them and fix them.
+ *
+ * <li> Pointer within range tests like:
+ * @code
+ * if ((uintptr_t)pv >= (uintptr_t)pvBase && (uintptr_t)pv < (uintptr_t)pvBase + cbRange)
+ * @endcode
+ * Can also be written as (assuming cbRange unsigned):
+ * @code
+ * if ((uintptr_t)pv - (uintptr_t)pvBase < cbRange)
+ * @endcode
+ * Which is shorter and potentially faster. (1)
+ *
+ * <li> Avoid unnecessary casting. All pointers automatically cast down to
+ * void *, at least for non class instance pointers.
+ *
+ * <li> It's very very bad practise to write a function larger than a
+ * screen full (1024x768) without any comprehensibility and explaining
+ * comments.
+ *
+ * <li> More to come....
+ *
+ * </ul>
+ *
+ * (1) Important, be very careful with the casting. In particular, note that
+ * a compiler might treat pointers as signed (IIRC).
+ *
+ * (2) "A really advanced hacker comes to understand the true inner workings of
+ * the machine - he sees through the language he's working in and glimpses
+ * the secret functioning of the binary code - becomes a Ba'al Shem of
+ * sorts." (Neal Stephenson "Snow Crash")
+ *
+ *
+ *
+ * @section sec_vbox_guideline_warnings Compiler Warnings
+ *
+ * The code should when possible compile on all platforms and compilers without any
+ * warnings. That's a nice idea, however, if it means making the code harder to read,
+ * less portable, unreliable or similar, the warning should not be fixed.
+ *
+ * Some of the warnings can seem kind of innocent at first glance. So, let's take the
+ * most common ones and explain them.
+ *
+ *
+ * @subsection sec_vbox_guideline_warnings_signed_unsigned_compare Signed / Unsigned Compare
+ *
+ * GCC says: "warning: comparison between signed and unsigned integer expressions"
+ * MSC says: "warning C4018: '<|<=|==|>=|>' : signed/unsigned mismatch"
+ *
+ * The following example will not output what you expect:
+@code
+#include <stdio.h>
+int main()
+{
+ signed long a = -1;
+ unsigned long b = 2294967295;
+ if (a < b)
+ printf("%ld < %lu: true\n", a, b);
+ else
+ printf("%ld < %lu: false\n", a, b);
+ return 0;
+}
+@endcode
+ * If I understood it correctly, the compiler will convert a to an
+ * unsigned long before doing the compare.
+ *
+ *
+ *
+ * @section sec_vbox_guideline_svn Subversion Commit Rules
+ *
+ *
+ * Before checking in:
+ *
+ * <ul>
+ *
+ * <li> Check Tinderbox and make sure the tree is green across all platforms. If it's
+ * red on a platform, don't check in. If you want, warn in the \#vbox channel and
+ * help make the responsible person fix it.
+ * NEVER CHECK IN TO A BROKEN BUILD.
+ *
+ * <li> When checking in keep in mind that a commit is atomic and that the Tinderbox and
+ * developers are constantly checking out the tree. Therefore do not split up the
+ * commit unless it's into 100% independent parts. If you need to split it up in order
+ * to have sensible commit comments, make the sub-commits as rapid as possible.
+ *
+ * <li> If you make a user visible change, such as fixing a reported bug,
+ * make sure you add an entry to doc/manual/user_ChangeLogImpl.xml.
+ *
+ * <li> If you are adding files make sure set the right attributes.
+ * svn-ps.sh/cmd was created for this purpose, please make use of it.
+ *
+ * </ul>
+ *
+ * After checking in:
+ *
+ * <ul>
+ *
+ * <li> After checking-in, you watch Tinderbox until your check-ins clear. You do not
+ * go home. You do not sleep. You do not log out or experiment with drugs. You do
+ * not become unavailable. If you break the tree, add a comment saying that you're
+ * fixing it. If you can't fix it and need help, ask in the \#innotek channel or back
+ * out the change.
+ *
+ * </ul>
+ *
+ * (Inspired by mozilla tree rules.)
+ *
+ *
+ */
+
diff --git a/doc/VBox-MakefileGuidelines.cpp b/doc/VBox-MakefileGuidelines.cpp
new file mode 100644
index 00000000..3997b567
--- /dev/null
+++ b/doc/VBox-MakefileGuidelines.cpp
@@ -0,0 +1,206 @@
+/* $Id: VBox-MakefileGuidelines.cpp $ */
+/** @file
+ * VBox - Makefile Guidelines.
+ */
+
+/*
+ * Copyright (C) 2009-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.
+ */
+
+/** @page pg_vbox_makefile_guidelines VBox Makefile Guidelines
+ *
+ * These guidelines apply to all the Makefile.kmk files in the tree.
+ * No exceptions.
+ *
+ * All these makefiles are ultimately the responsiblity of bird. Since there
+ * are currently more than three hundred files and the number is growing, they
+ * have to be very kept uniform or it will become very difficult to maintain
+ * them and impossible do bulk refactoring. Thus these guidelines have no bits
+ * that are optional unlike the coding guidelines, and should be thought of as
+ * rules rather than guidelines.
+ *
+ * Note! The guidelines do not apply to the non-kBuild makefiles found in the
+ * source tree, like the ones shipped in the SDK and the ones for the
+ * linux kernel modules.
+ *
+ *
+ * @section sec_vbox_makefile_guidelines_kbuild kBuild
+ *
+ * kBuild is way older than VirtualBox, at least as a concept, but the
+ * VirtualBox project was a push to get something done about it again. It's
+ * maintained by bird in his spare time because: "We don't make buildsystems, we
+ * make virtual machines". So, kBuild makes progress when there is spare time
+ * or when there is an urgent need for something.
+ *
+ * The kBuild docs are in the process of being written. The current items and
+ * their status per 2018-10-29:
+ * - kmk Quick Reference [completed]:
+ * http://svn.netlabs.org/kbuild/wiki/kmk%20Quick%20Reference
+ * - kBuild Quick Reference [just started]:
+ * http://svn.netlabs.org/kbuild/wiki/kBuild%20Quick%20Reference
+ *
+ * Local copies of the docs can be found in kBuild/docs, just keep in mind that
+ * they might be slightly behind the online version.
+ *
+ *
+ * @section sec_vbox_makefile_guidelines_example Example Makefiles
+ *
+ * Let me point to some good sample makefiles:
+ * - src/VBox/Additions/common/VBoxService/Makefile.kmk
+ * - src/VBox/Debugger/Makefile.kmk
+ * - src/VBox/Disassembler/Makefile.kmk
+ *
+ * And some bad ones:
+ * - src/lib/xpcom18a4/Makefile.kmk
+ * - src/recompiler/Makefile.kmk
+ * - src/VBox/Devices/Makefile.kmk
+ * - src/VBox/Main/Makefile.kmk
+ * - src/VBox/Runtime/Makefile.kmk
+ *
+ *
+ * @section sec_vbox_makefile_guidelines Guidelines
+ *
+ * First one really important fact:
+ *
+ * Everything is global because all makefiles
+ * are virtually one single makefile.
+ *
+ * The rules:
+ *
+ * - Using bits defined by a sub-makefile is fine, using anything defined
+ * by a parent, sibling, uncle, cousine, or remoter relatives is not
+ * Okay. It may break sub-tree building which is not acceptable.
+ *
+ * - Template names starts with VBox and are camel cased, no
+ * underscores or other separators. (Note this used to be all upper
+ * case, fixing this incomplete.)
+ *
+ * - Makefile variables shall be prefixed with VBOX or VB to avoid clashes
+ * with environment and kBuild variables.
+ *
+ * - Makefile variables are all upper cased and uses underscores to
+ * separate the words.
+ *
+ * - All variables are global. Make sure they are globally unique, but try
+ * not make them incredible long.
+ *
+ * - Makefile variables goes after the inclusion of the header and
+ * usually after including sub-makefiles.
+ *
+ * - Variables that are used by more than one makefile usually ends up
+ * in the monster file, Config.kmk. However, see if there are any
+ * sub-tree specific Config.kmk files that could do the job first.
+ *
+ * - Targets are lower or camel cased and as a rule the same as the
+ * resulting binary.
+ *
+ * - Install targets frequently have a -inst in their name, and a name that
+ * gives some idea what they install
+ *
+ * - Always use templates (mytarget_TEMPLATE = VBoxSomething).
+ *
+ * - Comment each target with a 3+ line block as seen in
+ * src/VBox/Debugger/Makefile.kmk.
+ *
+ * - No space between the comment block and the target definition.
+ *
+ * - Try fit all the custom recipes after the target they apply to.
+ *
+ * - Custom recipes that apply to more than one target should be placed at
+ * the bottom of the makefile, before the footer inclusion when possible.
+ *
+ * - Do NOT use custom recipes to install stuff, use install targets.
+ * Generate files to inst-target_0_OUTDIR. (Yes, there are a lot places
+ * where we don't do this yet.)
+ *
+ * - Always break SOURCES, LIBS, long target list and other lists the
+ * manner Debugger_SOURCES is broken into multiple lines in
+ * src/VBox/Debugger/Makefile.kmk. I.e. exactly one tab, the file name /
+ * list item, another space, the slash and then the newline.
+ *
+ * - Line continuation slashes shall never ever be aligned vertically (that
+ * always goes crooked sooner or later), but have exactly one space
+ * before them.
+ *
+ * - The last element of an broken list shall not have a slash-newline,
+ * otherwise we risk getting the next variable into the list.
+ *
+ * - When if'ed blocks come into play, we will only indent the conditional
+ * makefile directives (if, ifeq, ifneq, if1of, ifn1of, ifdef, ifndef,
+ * else, endif, ++), one space for each level. (Note! We used to indent
+ * non-directives, which made emacs upset as we'd have both tabs and
+ * spaces on as indentation on the same line. There are a lot of cases
+ * of this still around.)
+ *
+ * - \$(NO_SUCH_VARIABLE) should be when you need to put nothing somewhere,
+ * for instance to prevent inherting an attribute.
+ *
+ * - Always put the defines in the DEFS properties, never use the FLAGS
+ * properties for this. Doing so may screw up depenencies and object
+ * caches.
+ *
+ * - Mark each section and target of the file with a 3+ lines comment
+ * block.
+ *
+ * - Document variables that are not immediately obvious using double hash
+ * comments, doxygen style.
+ *
+ * - Each an every Makefile.kmk shall have a file header with Id, file
+ * description and copyright/license exactly like in the examples. (The
+ * SCM tool will complain if you don't.)
+ *
+ * - Multiple blank lines in a makefile is very seldom there without a
+ * reason and shall be preserved.
+ *
+ * - Inserting blank lines between target properties is all right if the
+ * target definition is long and/or crooked.
+ *
+ * - if1of and ifn1of shall always have a space after the comma, while ifeq
+ * and ifneq shall not. That way they are easier to tell apart.
+ *
+ * - Do a svn diff before committing makefile changes.
+ *
+ *
+ * @section sec_vbox_makefile_guidelines_reminders Helpful reminders
+ *
+ * - Do not be afraid to ask for help on IRC or in the defect you're
+ * working on. There are usually somebody around that know how to best do
+ * something.
+ *
+ * - Watch out for "Heads Up!" bugtracker messages concerning the build
+ * system.
+ *
+ * - To remove bits from a template you're using you have to create a new
+ * template that extends the existing one and creatively use
+ * \$(filter-out) or \$(patsubst).
+ *
+ * - You can build sub-trees.
+ *
+ * - You don't have to cd into sub-trees: kmk -C src/recompiler
+ *
+ * - You can build individual targets: kmk VBoxRT
+ *
+ * - Even install targets: kmk nobin
+ *
+ * - You can compile individual source files: kmk ConsoleImpl.o
+ *
+ * - You can tell kmk to continue on failure: kmk -k
+ *
+ * - You can tell kmk to run at low priority: kmk --nice
+ *
+ * - The --pretty-command-printing option is useful for seeing exactly
+ * what's passed to the tools.
+ *
+ * - You can invoke recipes in the root makefile more efficiently via the
+ * Maintenance.kmk file: kmk -f Maintenance.kmk incs
+ *
+ */
+
diff --git a/doc/VBox-doc.c b/doc/VBox-doc.c
new file mode 100644
index 00000000..ecf26779
--- /dev/null
+++ b/doc/VBox-doc.c
@@ -0,0 +1,190 @@
+/* $Id: VBox-doc.c $ */
+/** @file
+ * VirtualBox Top Level Documentation File.
+ */
+
+/*
+ * 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.
+ */
+
+
+/** @mainpage VirtualBox
+ *
+ * (add introduction here)
+ *
+ * @section pg_main_comp Components
+ *
+ * - VM / @ref pg_vmm "VMM" / GVM / @ref pg_gvmm "GVMM" - Virtual Machine
+ * Monitor.
+ * - @ref pg_cfgm
+ * - @ref pg_cpum
+ * - @ref pg_dbgf
+ * - @ref pg_dbgf_addr_space
+ * - @ref pg_dbgf_vmcore
+ * - @ref pg_dbgf_module
+ * - @ref pg_dbgc
+ * - VBoxDbg - Debugger GUI (Qt).
+ * - @ref grp_dis
+ * - @ref pg_em
+ * - @ref pg_gim
+ * - @ref pg_hm
+ * - @ref pg_iem
+ * - @ref pg_nem
+ * - @ref pg_gmm
+ * - @ref pg_mm
+ * - @ref pg_pgm
+ * - @ref pg_pgm_phys
+ * - @ref pg_pgm_pool
+ * - @ref pg_selm
+ * - @ref pg_iom
+ * - @ref pg_pdm
+ * - Devices / USB Devices, Drivers and their public interfaces.
+ * - Async I/O Completion API.
+ * - Async Task API.
+ * - Critical Section API.
+ * - Queue API.
+ * - Thread API.
+ * - @ref pg_pdm_block_cache
+ * - @ref pg_ssm
+ * - @ref pg_stam
+ * - @ref pg_tm
+ * - @ref pg_trpm
+ * - VMM docs:
+ * - @ref pg_vmm_guideline
+ * - @ref pg_raw
+ * - Pluggable Components (via PDM).
+ * - DevPCArch - PC Architecture Device (chipset, legacy ++).
+ * - DevPCBios - Basic Input Output System.
+ * - DevDMAC - DMA Controller.
+ * - DevPIC - Programmable Interrupt Controller.
+ * - DevPIT - Programmable Interval Timer (i8254).
+ * - DevRTC - Real Time Clock.
+ * - DevVGA - Video Graphic Array.
+ * - DevPCI - Peripheral Component Interface (Bus).
+ * - VBoxDev - Special PCI Device which serves as an interface between
+ * the VMM and the guest OS for the additions.
+ * - Networking:
+ * - DevPCNet - AMD PCNet Device Emulation.
+ * - DevE1000 - Intel E1000 Device Emulation.
+ * - DevEEPROM - Intel E1000 EPROM Device Emulation.
+ * - SrvINetNetR0 - Internal Networking Ring-0 Service.
+ * - DevINIP - IP Stack Service for the internal networking.
+ * - DrvIntNet - Internal Networking Driver.
+ * - DrvNetSniffer - Wireshark Compatible Sniffer Driver (pass thru).
+ * - DrvNAT - Network Address Translation Driver.
+ * - DrvTAP - Host Interface Networking Driver.
+ * - Storage:
+ * - DevATA - ATA ((E)IDE) Device Emulation.
+ * - @ref pg_dev_ahci
+ * - DevFDC - Floppy Controller Device Emulation.
+ * - DrvBlock - Intermediate block driver.
+ * - DrvHostBase - Common code for the host drivers.
+ * - DrvHostDVD - Host DVD drive driver.
+ * - DrvHostFloppy - Host floppy drive driver.
+ * - DrvHostRawDisk - Host raw disk drive driver.
+ * - DrvMediaISO - ISO media driver.
+ * - DrvRawImage - Raw image driver (floppy images etc).
+ * - DrvVD - Intermediate Virtual Drive (Media) driver.
+ * - DrvVDI - VirtualBox Drive Image Container Driver.
+ * - DrvVmdk - VMDK Drive Image Container Driver.
+ * - USB:
+ * - @ref pg_dev_ohci
+ * - @ref pg_dev_ehci
+ * - @ref pg_dev_vusb
+ * - @ref pg_dev_vusb_old
+ * - Host Drivers.
+ * - SUPDRV - The Support driver (aka VBoxDrv).
+ * - @ref pg_sup
+ * - @ref pg_netflt
+ * - @ref pg_netadp
+ * - VBoxUSB - The USB support driver.
+ * - @ref pg_netflt
+ * - @ref pg_rawpci
+ * - Host Services.
+ * - @ref pg_hostclip Shared Clipboard.
+ * - Shared Folders.
+ * - @ref pg_svc_guest_properties
+ * - @ref pg_svc_guest_control
+ * - Guest Additions.
+ * - VBoxGuest.
+ * - @ref pg_guest_lib
+ * - @ref pg_vgsvc
+ * - @ref pg_vgsvc_timesync
+ * - @ref pg_vgsvc_vminfo
+ * - @ref pg_vgsvc_vmstats
+ * - @ref pg_vgsvc_gstctrl
+ * - @ref pg_vgsvc_pagesharing
+ * - @ref pg_vgsvc_memballoon
+ * - @ref pg_vgsvc_cpuhotplug
+ * - @ref pg_vgsvc_automount
+ * - @ref pg_vgsvc_clipboard
+ * - VBoxControl.
+ * - VBoxVideo.
+ * - crOpenGL.
+ * - VBoxClient / VBoxTray.
+ * - pam.
+ * - ...
+ * - Network Services:
+ * - @ref pg_net_dhcp
+ * - NAT
+ * - @ref pg_main
+ * - @ref pg_main_events
+ * - @ref pg_vrdb_usb
+ * - Frontends:
+ * - VirtualBox - The default Qt-based GUI.
+ * - VBoxHeadless - The headless frontend.
+ * - VBoxManage - The CLI.
+ * - VBoxShell - An interactive shell written in python.
+ * - VBoxSDL - A very simple GUI.
+ * - VBoxBFE - A bare metal edition which does not use COM/XPCOM (barely
+ * maintained atm).
+ * - IPRT - Runtime Library for hiding host OS differences.
+ * - Validation Kit:
+ * - @ref pg_validationkit_guideline
+ * - @ref pg_bs3kit
+ * - @ref pg_vbox_guideline
+ *
+ * @todo Make links to the components.
+ *
+ *
+ *
+ * @section Execution Contexts
+ *
+ * VirtualBox defines a number of different execution context, this can be
+ * confusing at first. So, to start with take a look at this diagram:
+ *
+ * @image html VMMContexts.png
+ *
+ * Context definitions:
+ * - Host context (HC) - This is the context where the host OS runs and
+ * runs VirtualBox within it. The absense of IN_RC and IN_GUEST
+ * indicates that we're in HC. IN_RING0 indicates ring-0 (kernel) and
+ * IN_RING3 indicates ring-3.
+ * - Raw-mode Context (RC) - This is the special VMM context where we
+ * execute the guest code directly on the CPU. Kernel code is patched
+ * and execute in ring-1 instead of ring-0 (ring compression). Ring-3
+ * code execute unmodified. Only VMMs use ring-1, so we don't need to
+ * worry about that (it's guarded against in the scheduler (EM)). We can
+ * in theory run ring-2 there, but since practially only only OS/2 uses
+ * ring-2, it is of little importance. The macro IN_RC indicates that
+ * we're compiling something for RC.
+ * Note! This used to be called GC (see below) earlier, so a bunch of RC
+ * things are using GC markers.
+ * - Guest Context (GC) - This is where the guest code is executed. When
+ * compiling, IN_GUEST indicates that it's for GC. IN_RING0 and
+ * IN_RING3 are also set when applicable, these are accompanied by
+ * IN_GUEST_R0 and IN_GUEST_R3 respecitively.
+ * - Intermediate context - This is a special memory context used within
+ * the world switchers (HC -> RC and back), it features some identity
+ * mapped code pages so we can switch to real mode if necessary.
+ *
+ */
+
diff --git a/doc/VMM/PDMStorageScsi.odg b/doc/VMM/PDMStorageScsi.odg
new file mode 100644
index 00000000..af912b80
--- /dev/null
+++ b/doc/VMM/PDMStorageScsi.odg
Binary files differ
diff --git a/doc/VMM/PDMStorageScsi.png b/doc/VMM/PDMStorageScsi.png
new file mode 100644
index 00000000..519c0488
--- /dev/null
+++ b/doc/VMM/PDMStorageScsi.png
Binary files differ
diff --git a/doc/VMM/VMMContexts.odg b/doc/VMM/VMMContexts.odg
new file mode 100644
index 00000000..5cd9f6b3
--- /dev/null
+++ b/doc/VMM/VMMContexts.odg
Binary files differ
diff --git a/doc/VMM/VMMContexts.png b/doc/VMM/VMMContexts.png
new file mode 100644
index 00000000..21f371be
--- /dev/null
+++ b/doc/VMM/VMMContexts.png
Binary files differ
diff --git a/doc/kBuild-tricks.txt b/doc/kBuild-tricks.txt
new file mode 100644
index 00000000..ac6ceecd
--- /dev/null
+++ b/doc/kBuild-tricks.txt
@@ -0,0 +1,62 @@
+
+kBuild / VBox Build Tricks
+==========================
+
+
+Introduction
+------------
+
+This document is written in reStructuredText (rst) which just happens to
+be used by Python, the primary language for this revamp. For more information
+on reStructuredText: http://docutils.sourceforge.net/rst.html
+
+
+Changing the output directory
+-----------------------------
+
+When switch between different VBox build settings it can be nice to have
+different output directories to avoid having to rebuild the whole source tree
+everything. One typical example is hardening, another is guest additions using
+crossbuild gcc w/ SDK. The latter is is simpler so that's the first example:
+
+.. code:: makefile
+
+ ifdef VBOX_WITH_COMPATIBLE_LINUX_GUEST_PACKAGE
+ PATH_OUT_BASE = $(PATH_ROOT)/add-out
+ endif
+
+The following example is the typical developer setup, i.e. disable hardening by
+default but respect command line overrides (kmk VBOX_WITH_HARDENING=1):
+
+.. code:: make
+
+ VBOX_WITH_HARDENING :=
+ ifeq ($(VBOX_WITH_HARDENING),)
+ VBOX_WITHOUT_HARDENING=1
+ else
+ PATH_OUT_BASE = $(PATH_ROOT)/hard-out
+ endif
+
+
+Share tools download directory between trunk and branches
+---------------------------------------------------------
+
+To avoid filling up your disk with unnecessary tool zip and tar.gz files, set
+the FETCHDIR variable in LocalConfig.kmk to point to a common directory for all
+VBox checkouts.
+
+.. code:: make
+
+ FETCHDIR = $(HOME)/Downloads/FetchDir
+
+
+-----
+
+.. [1] no such footnote
+
+
+-----
+
+:Status: $Id: kBuild-tricks.txt $
+:Copyright: Copyright (C) 2006-2020 Oracle Corporation.
+
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>
diff --git a/doc/technical/Resizing.wiki b/doc/technical/Resizing.wiki
new file mode 100644
index 00000000..b6245ba3
--- /dev/null
+++ b/doc/technical/Resizing.wiki
@@ -0,0 +1,27 @@
+Please feel free to send documentation patches to the vbox-dev [https://www.virtualbox.org/wiki/Mailing_lists mailing list].
+
+= Mechanics of host-guest dynamic resizing =
+
+In normal use, with the standard graphical user interface and with Guest Additions installed, !VirtualBox resizes guest desktops to match whenever the host window is resized. This document describes the way the mechanism is supposed to - and usually does - work. It also points out the tricky parts which might potentially fail.
+
+== The guest video device ==
+
+!VirtualBox virtual machines contain an emulated graphics card which can currently support up to 64 monitor outputs (the actual number is set by the user before starting the machine). Each output can be set to any resolution which the configured video RAM size will support (potentially using overlapping video RAM areas). Normally it will be controlled by the Guest Additions video driver or the Linux VMSVGA driver, but it can also be controlled by a VGA driver or using the VESA BIOS, which can only set a limit set of the resolutions that the card can handle, and only on the first screen. When the guest sets a new resolution on a given monitor output the user interface resizes the matching window to fit. This only happens once for each resolution change. If it appears to be repeating, the guest has probably got stuck setting and resetting resolutions.
+
+== Resizing triggered by the host ==
+
+Virtual machines typically display into windows on the host computer, so it is convenient if the guest operating system can be told to adjust its display to fit well into the windows. This is done by simulating monitors with preferred resolutions of the host window sizes, and simulating monitor re-plugs when the host windows are resized. There are currently two ways that the guest can read the monitor size, depending on its driver and helper set-up. The VBox(S)VGA device gives the guest the information directly, whereas when the VMSVGA device is in use a helper has to read the monitor information from the so-called VMM (virtual machine monitor) device and tell the driver. There is no guarantee that the guest will actually use the preferred size, but it usually does.
+
+In Linux guests, the VBox(S)VGA drivers generate a random monitor serial number each time the size changes, because those guests remember monitors by serial number and may set a different resolution if a monitor they have seen before is connected. (There is a good reason for this on a physical computer of course, but we do not want it in our virtual ones.) The serial number trick does not work with VMSVGA, which can cause resizing to fail. Deleting the file ~/config/Monitors.xml in the guest helps. Another known problem is that on older Linux guests without kernel graphics drivers we send an ACPI monitor change notification, which a few older guests interpret as a request to cycle to the next available resolution after the resize has already taken place. No modern Linux system is known to be affected, and as of X.Org Server 1.19 in the guest we require use of the kernel driver.
+
+Legacy drivers, including the ones in the BIOS and EFI, are not able to read the preferred size. That should be fixable, but no one has yet found time to do it. Once the guest loads a more capable driver it reads the last preferred size requested by the host and adjusts to that (this currently does not work as expected with the Windows drivers, but should be fixed soon).
+
+== Guest Additions components ==
+=== Windows guests ===
+ * VBoxVideo: the main graphics driver loaded into the kernel. It can tell how many screens (that is, screen connectors) the guest currently supports, and can enable and disable them as well as setting resolutions to them. It reports this information to Windows on the guest. It can not receive information from the host about screen changes (mode hints, monitor unplug or hotplug) itself, but provides an interface for a user-space tool which can to provide that information. It remembers information received in the Windows registry and simply assumes when it loads that the configuration has not changed since it was last used.
+ * VBoxTray: a user-space daemon which is loaded when a user logs into Windows on the guest and runs as part of that session. It can receive screen change information from the host and forward it to VBoxVideo. It also handles seamless mode and other unrelated guest functionality.
+
+=== X.Org/Wayland guests ===
+ * vboxvideo.ko: the main graphics driver loaded into the kernel, currently Linux-only (3.11 and later). It is known to be supported by X.Org Server 1.17 and later and by GNOME Shell/Wayland as of at least Fedora 25. It can receive information from the host about screen changes (mode hints, monitor unplug or hotplug) itself, though it depends on user-space to handle that. All half-recent GNOME Shell versions (X.Org and Wayland), Ubuntu Unity versions and KDE versions do that.
+ * VBoxClient: a user-space daemon which is loaded when a user logs into X.Org on the guest. It is loaded by the desktop environment and works with most known ones. For desktop environments which cannot handle screen changes themselves it does that for them (it waits two seconds before responding to the change to give the environment a chance to respond itself, rather than trying to guess which can and which can't). It cannot do this before log-in of course. It also handles seamless mode and other unrelated guest functionality.
+ * vboxvideo_drv.so: the main graphics driver, but a different version which runs inside X.Org/XFree86 in user-space. It cannot co-exist with vboxvideo.ko, but does roughly the same job. It is supported up to X.Org Server 1.18. So X.Org 1.19 and later cannot be used with Linux 3.10 and earlier except with fall-back graphics. This is not expected to be a problem.