Oracle VM VirtualBox. User Manual (Version 7.0.18) - page 5

 

  Index      Manuals     Oracle VM VirtualBox. User Manual (Version 7.0.18)

 

Search            copyright infringement  

 

   

 

   

 

Content      ..     3      4      5      6     ..

 

 

 

Oracle VM VirtualBox. User Manual (Version 7.0.18) - page 5

 

 

10 Advanced Topics
Minor namespaces:
• rock: rock ridge on previous major namespace (iso / joliet)
• iso-rock: rock ridge extensions on primary ISO 9660 namespace
• joliet-rock: rock ridge on joliet namespace (just for fun)
• trans-tbl: translation table file on previous major namespace
• iso-trans-tbl
• joliet-trans-tbl
• udf-trans-tbl
• hfs-trans-tbl
--name-setup-from-import
This is for use following one or more --import-iso operations and will pick a configu-
ration matching the imported content as best we can. If the imported ISOs only had a
iso9660 namespace, the joliet, udf and hfs namespaces will be removed. This is useful
when adding additional files to the ISO and will prevent guest from picking a namespace
without the imported ISO content when mounting it.
--push-iso=<iso-file>
--push-iso-no-joliet=<iso-file>
--push-iso-no-rock-<iso-file>
--push-iso-no-rock-no-joliet=<iso-file>
Open the specified ISO file and use it as source file system until the corresponding --pop
options is encountered. The variations are for selecting which namespace on the ISO to
(not) access. These options are handy for copying files/directories/stuff from an ISO with-
out having to extract them first or using the :iprtvfs: syntax.
--pop
Pops a --push-iso of the source file system stack.
--import-iso=<iso-file>
Imports everything on the given ISO file, including boot configuration and system area
(first 16 sectors) content. You can use --name-setup to omit namespaces.
Namespaces
--iso-level=<0|1|2|3>
Sets the ISO level:
• 0: Disable primary ISO namespace.
• 1: ISO level 1: Filenames 8.3 format and limited to 4GB - 1.
• 2: ISO level 2: 31 char long names and limited to 4GB - 1.
• 3: ISO level 3: 31 char long names and support for >=4GB files. (default)
• 4: Fictive level used by other tools. Not yet implemented.
--rock-ridge
--limited-rock-ridge
--no-rock-ridge
Enables or disables rock ridge support for the primary ISO 9660 namespace. The
--limited-rock-ridge option omits a couple of bits in the root directory that would
make Linux pick rock ridge over joliet.
Default: --limited-rock-ridge
-J
--joliet
--no-joliet
Enables or disable the joliet namespace. This option must precede any file specifications.
Default: --joliet
386
10 Advanced Topics
--joliet-ucs-level=<1|2|3>
--ucs-level=<1|2|3>
Set the Joliet UCS support level. This is currently only flagged in the image but not enforced
on the actual path names.
Default level: 3
File Attributes
--rational-attribs
Enables rational file attribute handling (default):
• Owner ID is set to zero
• Group ID is set to zero
• Mode is set to 0444 for non-executable files.
• Mode is set to 0555 for executable files.
• Mode is set to 0555 for directories, preserving stick bits.
--strict-attribs
Counters --rational-attribs and causes attributes to be recorded exactly as they appear
in the source.
--file-mode=<mode>
--no-file-mode
Controls the forced file mode mask for rock ridge, UDF and HFS.
--dir-mode=<mode>
--no-dir-mode
Controls the forced directory mode mask for rock ridge, UDF and HFS.
--new-dir-mode=<mode>
Controls the default mode mask (rock ridge, UDF, HFS) for directories that are created
implicitly. The --dir-mode option overrides this.
--chmod=<mode>:<on-iso-file>
Explictily sets the rock ridge, UDF and HFS file mode for a file/dir/whatever that has
already been added to the ISO. The mode can be octal, ra+x, a+r, or a+rx. (Support for
more complicated mode specifications may be implemented at a later point.)
Note that only namespaces in the current -name-setup are affected.
--chown=<owner-id>:<on-iso-file>
Explictily sets the rock ridge, UDF and HFS file owner ID (numeric) for a file/dir/whatever
that has already been added to the ISO.
Note that only namespaces in the current -name-setup are affected.
-chgrp=group-id:on-iso-file
Explictily sets the rock ridge, UDF and HFS file group ID (numeric) for a file/dir/whatever
that has already been added to the ISO.
Note that only namespaces in the current -name-setup are affected.
Booting
--eltorito-new-entry
--eltorito-alt-boot
Starts a new El Torito boot entry.
--eltorito-add-image=<filespec>
File specification of a file that should be added to the image and used as the El Torito boot
image of the current boot entry.
387
10 Advanced Topics
-b <on-iso-file>
--eltorito-boot=<on-iso-file>
Specifies a file on the ISO as the El Torito boot image for the current boot entry.
--eltorito-floppy-12
--eltorito-floppy-144
--eltorito-floppy-288
--no-emulation-boot
--hard-disk-boot
Sets the boot image emulation type of the current El Torito boot entry.
--boot-load-seg=<seg>
Specify the image load segment for the current El Torito boot entry.
Default: 0x7c0
--boot-load-size=<sectors>
Specify the image load size in emulated sectors for the current El Torito boot entry.
Default: 4 (sectors of 512 bytes)
--no-boot
Indicates that the current El Torito boot entry isn’t bootable. (The BIOS will allegedly
configure the emulation, but not attempt booting.)
--boot-info-table
Write a isolinux/syslinux boot info table into the boot image for the current El Torito boot
entry.
--eltorito-platform-id=<id>
Set the El Torito platform ID of the current entry, a new entry of the verification entry
depending on when it’s used. The ID must be one of: x86, PPC, Mac, efi
-c <namespec>
--boot-catalog=<namespec>
Enters the El Torito boot catalog into the namespaces as a file. The namespec uses the
same format as a ’filespec’, but omits the final source file system name component.
-G <file>
--generic-boot=<file>
Specifies a file that should be loaded at offset 0 in the ISO image. The file must not be larger
than 32KB. When creating a hybrid image, parts of this may be regenerated by partition
tables and such.
String properties (applied to active namespaces only)
--abstract=<file-id>
The name of the abstract file in the root dir.
-A <text|_file-id>
--application-id=<text|_file-id>
Application ID string or root file name. The latter must be prefixed with an underscore.
--biblio=<file-id>
The name of the bibliographic file in the root dir.
--copyright=<file-id>
The name of the copyright file in the root dir.
388
10 Advanced Topics
-P <text|_file-id>
--publisher=<text|_file-id>
Publisher ID string or root file name. The latter must be prefixed with an underscore.
-p <text|_file-id>
--preparer=<text|_file-id>
Data preparer ID string or root file name. The latter must be prefixed with an underscore.
--sysid=<text>
System ID string.
--volid=<text>
--volume-id=<text>
Volume ID string (label). (It is possible to set different labels for primary ISO 9660, joliet,
UDF and HFS by changing the active namespaces using the --name-setup option between
--volume-id occurences.)
--volset=<text>
Volume set ID string.
Compatibility:
--graft-points
Alias for -name-setup iso+joliet+udf+hfs.
-l
--long-names
Allow 31 charater filenames. Just ensure ISO level >= 2 here.
-R
--rock
Same as --rock-ridge and --strict-attribs.
-r
--rational-rock
Same as --rock-ridge and --rational-attribs.
VISO Specific:
--iprt-iso-maker-file-marker=<UUID>
--iprt-iso-maker-file-marker-bourne=<UUID>
--iprt-iso-maker-file-marker-bourne-sh=<UUID>
Used as first option in a VISO file to specify the file UUID and that it is formatted using
bourne-shell argument quoting & escaping style.
--iprt-iso-maker-file-marker-ms=<UUID>
--iprt-iso-maker-file-marker-ms-sh=<UUID>
Used as first option in a VISO file to specify the file UUID and that it is formatted using
microsoft CRT argument quoting & escaping style.
Testing (not applicable to VISO):
--output-buffer-size=<bytes>
Selects a specific output buffer size for testing virtual image reads.
--random-output-buffer-size
Enables randomized buffer size for each virtual image read, using the current output buffer
size (--output-buffer-size) as maximum.
389
10 Advanced Topics
--random-order-verification=<size>
Enables verification pass of the image that compares blocks of the given size in random
order from the virtual and output images.
390
11 Technical Background
This chapter provides additional information for readers who are familiar with computer ar-
chitecture and technology and wish to find out more about how Oracle VM VirtualBox works
under the hood. The contents of this chapter are not required reading in order to use Oracle VM
VirtualBox successfully.
11.1 Where Oracle VM VirtualBox Stores its Files
In Oracle VM VirtualBox, 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 chapter 11.1.1, The Machine
Folder, page 391.
Global configuration data for Oracle VM VirtualBox is maintained in another location on the
host. See chapter 11.1.2, Global Settings, page 392.
11.1.1 The Machine Folder
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 .vbox file extension, and its disk images. This
is called the machine folder.
By default, this machine folder is located in a common folder called VirtualBox VMs, which
Oracle VM VirtualBox 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:
• On Windows, this is the location returned by the SHGetFolderPath function of the
Windows system library Shell32.dll, asking for the user profile. A typical location is
C:\Users\username.
• On Linux, macOS, and Oracle Solaris, this is generally taken from the environment variable
$HOME, except for the user root where it is taken from the account database. This is
a workaround for the frequent trouble caused by users using Oracle VM VirtualBox in
combination with the tool sudo, which by default does not reset the environment variable
$HOME.
A typical location on Linux and Oracle Solaris is /home/username and on macOS is
/Users/username.
For simplicity, we abbreviate the location of the home directory as $HOME. Using that conven-
tion, the common folder for all virtual machines is $HOME/VirtualBox VMs.
As an example, when you create a virtual machine called “Example VM”, Oracle VM VirtualBox
creates the following:
• A machine folder: $HOME/VirtualBox VMs/Example VM/
• In the machine folder, a settings file: Example VM.vbox
• In the machine folder, a virtual disk image: Example VM.vdi.
391
11 Technical Background
This is the default layout if you use the Create New Virtual Machine wizard described in
chapter 2.8, Creating Your First Virtual Machine, page 13. Once you start working with the
VM, additional files are added. Log files are in a subfolder called Logs, and if you have taken
snapshots, they are in a Snapshots subfolder. For each VM, you can change the location of its
snapshots folder in the VM settings.
You can change the default machine folder by selecting Preferences from the File menu in the
Oracle VM VirtualBox main window. Then, in the displayed window, click on the General tab.
Alternatively, use the VBoxManage setproperty machinefolder command. See chapter 9.40,
VBoxManage setproperty, page 275.
11.1.2 Global Settings
In addition to the files for the virtual machines, Oracle VM VirtualBox maintains global configu-
ration data in the following directory:
Linux and Oracle Solaris: $HOME/.config/VirtualBox.
Windows: $HOME/.VirtualBox.
macOS: $HOME/Library/VirtualBox.
Oracle VM VirtualBox creates this configuration directory automatically, if necessary. You
can specify an alternate configuration directory by either setting the VBOX_USER_HOME environ-
ment variable, or on Linux or Oracle Solaris by using the standard XDG_CONFIG_HOME variable.
Since the global VirtualBox.xml settings file points to all other configuration files, this enables
switching between several Oracle VM VirtualBox configurations.
In this configuration directory, Oracle VM VirtualBox stores its global settings file, an XML file
called VirtualBox.xml. This file includes global configuration options and a list of registered
virtual machines with pointers to their XML settings files.
11.1.3 Summary of Configuration Data Locations
The following table gives a brief overview of the configuration data locations on an Oracle VM
VirtualBox host.
Setting
Location
Default machines
$HOME/VirtualBox VMs
folder
Default disk image
In each machine’s folder
location
Machine settings
.vbox
file extension
Media registry
Each machine settings file Media registration is done automatically
when a storage medium is attached to a VM
11.1.4 Oracle VM VirtualBox XML Files
Oracle VM VirtualBox uses XML for both the machine settings files and the global configuration
file, VirtualBox.xml.
All Oracle VM VirtualBox XML files are versioned. When a new settings file is created, for
example because a new virtual machine is created, Oracle VM VirtualBox automatically uses the
settings format of the current Oracle VM VirtualBox version. These files may not be readable
if you downgrade to an earlier version of Oracle VM VirtualBox. However, when Oracle VM
VirtualBox encounters a settings file from an earlier version, such as after upgrading Oracle VM
VirtualBox, it attempts to preserve the settings format as much as possible. It will only silently
392
11 Technical Background
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 Oracle VM
VirtualBox.
In such cases, Oracle VM VirtualBox backs up the old settings file in the virtual machine’s
configuration directory. If you need to go back to the earlier version of Oracle VM VirtualBox,
then you will need to manually copy these backup files back.
We intentionally do not document the specifications of the Oracle VM VirtualBox 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. Oracle VM VirtualBox provides complete access to its configuration
data through its the VBoxManage command line tool, see chapter 9, VBoxManage, page 154 and
its API, see chapter 12, Oracle VM VirtualBox Programming Interfaces, page 398.
11.2 Oracle VM VirtualBox Executables and Components
Oracle VM VirtualBox was designed to be modular and flexible. When the Oracle VM VirtualBox
graphical user interface (GUI) is opened and a VM is started, at least the following three pro-
cesses are running:
VBoxSVC, the Oracle VM VirtualBox service process which always runs in the background.
This process is started automatically by the first Oracle VM VirtualBox client process and
exits a short time after the last client exits. The first Oracle VM VirtualBox service can be
VirtualBox Manager, VBoxManage, VBoxHeadless, the web service amongst others. The
service is responsible for bookkeeping, maintaining the state of all VMs, and for provid-
ing communication between Oracle VM VirtualBox components. This communication is
implemented using COM/XPCOM.
Note: When we refer to clients here, we mean the local clients of a particular VBoxSVC
server process, not clients in a network. Oracle VM VirtualBox employs its own
client/server design to allow its processes to cooperate, but all these processes run un-
der the same user account on the host operating system, and this is totally transparent
to the user.
• The GUI process, VirtualBoxVM, a client application based on the cross-platform Qt library.
When started without the --startvm option, this application acts as VirtualBox Manager,
displaying the VMs and their settings. It then communicates settings and state changes to
VBoxSVC and also reflects changes effected through other means, such as the VBoxManage
command.
• If the VirtualBoxVM client application is started with the --startvm 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.
Any Oracle VM VirtualBox 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.
The Oracle VM VirtualBox GUI application, called VirtualBox Manager, is only one of sev-
eral available front ends, or clients. The complete list shipped with Oracle VM VirtualBox is as
follows:
VirtualBoxVM: The Qt front end implementing VirtualBox Manager and running VMs.
393
11 Technical Background
VBoxManage: A less user-friendly but more powerful alternative. See chapter 9, VBoxMan-
age, page 154.
VBoxHeadless: 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 chapter 8.1.2, VBoxHeadless, the Remote Desktop Server, page 144.
vboxwebsrv: The Oracle VM VirtualBox web service process which enables control of an
Oracle VM VirtualBox host remotely. This is described in detail in the Oracle VM VirtualBox
Software Development Kit (SDK) reference. See chapter 12, Oracle VM VirtualBox Program-
ming Interfaces, page 398.
• The Oracle VM VirtualBox Python shell: A Python alternative to VBoxManage. This is also
described in the SDK reference.
Internally, Oracle VM VirtualBox consists of many more or less separate components. You may
encounter these when analyzing Oracle VM VirtualBox internal error messages or log files. These
include the following:
IPRT: A portable runtime library which abstracts file access, threading, and string manipu-
lation. Whenever Oracle VM VirtualBox accesses host operating features, it does so through
this library for cross-platform portability.
VMM (Virtual Machine Monitor): The heart of the hypervisor.
EM (Execution Manager): Controls execution of guest code.
TRPM (Trap Manager): Intercepts and processes guest traps and exceptions.
HM (Hardware Acceleration Manager): Provides support for VT-x and AMD-V.
GIM (Guest Interface Manager): Provides support for various paravirtualization interfaces
to the guest.
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 Oracle VM VirtualBox without having to change Oracle VM VirtualBox itself.
PGM (Page Manager): A component that controls guest paging.
TM (Time Manager): Handles timers and all aspects of time inside guests.
CFGM (Configuration Manager): Provides a tree structure which holds configuration set-
tings for the VM and all emulated devices.
SSM (Saved State Manager): Saves and loads VM state.
VUSB (Virtual USB): A USB layer which separates emulated USB controllers from the con-
trollers on the host and from USB devices. This component also enables remote USB.
DBGF (Debug Facility): A built-in VM debugger.
Oracle VM VirtualBox emulates a number of devices to provide the hardware environment
that various guests need. Most of these are standard devices found in many PC compati-
ble 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 un-
derlying hardware. These devices are managed by PDM.
Guest Additions for various guest operating systems. This is code that is installed from
within a virtual machine. See chapter 5, Guest Additions, page 89.
394
11 Technical Background
• The “Main” component is special. It ties all the above bits together and is the only public
API that Oracle VM VirtualBox provides. All the client processes listed above use only this
API and never access the hypervisor components directly. As a result, third-party appli-
cations that use the Oracle VM VirtualBox Main API can rely on the fact that it is always
well-tested and that all capabilities of Oracle VM VirtualBox are fully exposed. It is this API
that is described in the Oracle VM VirtualBox SDK. See chapter 12, Oracle VM VirtualBox
Programming Interfaces, page 398.
11.3 Hardware Virtualization
Oracle VM VirtualBox 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, Oracle VM VirtualBox steps in and takes action. In particular,
for lots of hardware that the guest believes to be accessing, Oracle VM VirtualBox simulates
a certain virtual environment according to how you have configured a virtual machine. For
example, when the guest attempts to access a hard disk, Oracle VM VirtualBox 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.
Unfortunately, the x86 platform was never designed to be virtualized. Detecting situations
in which Oracle VM VirtualBox needs to take control over the guest code that is executing, as
described above, is difficult. To achieve this, Oracle VM VirtualBox uses hardware virtualization.
Intel and AMD processors have support for hardware virtualization. This means that these
processors can help Oracle VM VirtualBox 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.
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.
Note: On many systems, the hardware virtualization features first need to be enabled
in the BIOS before Oracle VM VirtualBox can use them.
Enabling hardware virtualization is required in the following scenarios:
• Certain rare guest operating systems like OS/2 make use of very esoteric processor instruc-
tions. For virtual machines that are configured to use such an operating system, hardware
virtualization is enabled automatically.
• Oracle VM VirtualBox’s 64-bit guest and multiprocessing (SMP) support both require hard-
ware 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.
Warning: Do not run other hypervisors, either open source or commercial virtual-
ization products, together with Oracle VM VirtualBox. While several hypervisors can
normally be installed in parallel, do not attempt to run several virtual machines from
competing hypervisors at the same time. Oracle VM VirtualBox 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.
See chapter 11.4, Details About Hardware Virtualization, page 396 for a technical discussion of
hardware virtualization.
395
11 Technical Background
11.4 Details About Hardware Virtualization
With Intel VT-x, there are two distinct modes of CPU operation: VMX root mode and non-root
mode.
• 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.
• 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 Con-
trol Structure) now controls the CPU operation and determines how certain instructions
behave. Non-root mode is where guest systems run.
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.
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.
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.
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.
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 soft-
ware. This typically only includes firmware and OS loaders, but nevertheless complicates VT-x
hypervisor implementation. AMD-V does not have this restriction.
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 re-
quires 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.
11.5 Paravirtualization Providers
Oracle VM VirtualBox 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 Oracle VM VirtualBox hypervisor.
396
11 Technical Background
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.
Exposing a paravirtualization provider to the guest operating system does not rely on the
choice of host platforms. For example, the Hyper-V paravirtualization provider can be used for
VMs to run on any host platform supported by Oracle VM VirtualBox and not just Windows.
Oracle VM VirtualBox provides the following interfaces:
Minimal: 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.
KVM: Presents a Linux KVM hypervisor interface which is recognized by Linux kernels
version 2.6.25 or later. Oracle VM VirtualBox’s implementation currently supports paravir-
tualized clocks and SMP spinlocks. This provider is recommended for Linux guests.
Hyper-V: Presents a Microsoft Hyper-V hypervisor interface which is recognized by Win-
dows 7 and newer operating systems. Oracle VM VirtualBox’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.
11.6 Nested Paging and VPIDs
In addition to normal hardware virtualization, your processor may also support the following
additional sophisticated techniques:
• 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.
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.
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.
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.
If nested paging is enabled, the Oracle VM VirtualBox hypervisor can also use large pages
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 VBoxManage modifyvm --large-pages
command. See chapter 9.10, VBoxManage modifyvm, page 180.
If you have an Intel CPU with EPT, please consult chapter 14.4.1, CVE-2018-3646, page
419 for security concerns regarding EPT.
• 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).
To enable these features for a VM, you use the VBoxManage modifyvm --vtx-vpid and
VBoxManage modifyvm --large-pages commands. See chapter 9.10, VBoxManage mod-
ifyvm, page 180.
397
12 Oracle VM VirtualBox Programming
Interfaces
Oracle VM VirtualBox comes with comprehensive support for third-party developers. The so-
called Main API of Oracle VM VirtualBox exposes the entire feature set of the virtualization
engine. It is completely documented and available to anyone who wishes to control Oracle VM
VirtualBox programmatically.
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.
All programming information such as documentation, reference information, header and other
interface files, as well as samples have been split out to a separate Software Development Kit
(SDK). The SDK is available for download from 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.
398
13 Troubleshooting
This chapter provides answers to commonly asked questions. In order to improve your user
experience with Oracle VM VirtualBox, it is recommended to read this section to learn more
about common pitfalls and get recommendations on how to use the product.
13.1 Procedures and Tools
13.1.1 Categorizing and Isolating Problems
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.
If a true Oracle VM VirtualBox 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:
• 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.
• Is the problem specific to a certain host OS? Problems are usually not host OS specific, be-
cause most of the Oracle VM VirtualBox 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.
• 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.
• 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.
• 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?
• 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 configura-
tions of external servers such as DHCP or PXE may expose problems which do not occur
with other, similar servers.
• Is the problem a regression? Knowing that an issue is a regression usually makes it signifi-
cantly easier to find the solution. In this case, it is crucial to know which version is affected
and which is not.
399
13 Troubleshooting
13.1.2 Collecting Debugging Information
For problem determination, it is often important to collect debugging information which can be
analyzed by Oracle VM VirtualBox support. This section contains information about what kind
of information can be obtained.
Every time Oracle VM VirtualBox starts up a VM, a so-called release log file is created, con-
taining lots of information about the VM configuration and runtime events. The log file is called
VBox.log and resides in the VM log file folder, which is $HOME/VirtualBox VMs/VM-name/Logs
by default.
When starting a VM, the configuration file of the last run will be renamed to .1, up to .3.
Sometimes when there is a problem, it is useful to have a look at the logs. Also when requesting
support for Oracle VM VirtualBox, supplying the corresponding log file is mandatory.
For convenience, for each virtual machine, VirtualBox Manager can show these logs in a win-
dow. Select a virtual machine from the machine list on the left and click Logs in the machine
tools menu.
The release log file, VBox.log, contains a wealth of diagnostic information, such as Host OS
type and version, Oracle VM VirtualBox 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.
In case of crashes, it is very important to collect crash dumps. This is true for both host and
guest crashes. For information about enabling core dumps on Linux, Oracle Solaris, and macOS
systems, refer to the following core dump article on the Oracle VM VirtualBox website:
http://www.virtualbox.org/wiki/Core_dump.
You can also use VBoxManage debugvm to create a dump of a complete virtual machine. See
chapter 9.45, VBoxManage debugvm, page 295.
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.
Oracle VM VirtualBox provides an ability to capture network traffic only on a specific VM’s
network adapter. Refer to the following network tracing article on the Oracle VM VirtualBox
website for information on enabling this capture:
http://www.virtualbox.org/wiki/Network_tips.
The trace files created by Oracle VM VirtualBox are in .pcap format and can be easily analyzed
with Wireshark.
13.1.3 Using the VBoxBugReport Command to Collect Debug
Information Automatically
The VBoxBugReport command is used to collect debug information automatically for an Oracle
VM VirtualBox installation. This command can be useful when you need to gather information
to send to Oracle Support.
The following examples show how to use VBoxBugReport.
By default, the command collects VBoxSVC process logs, device settings, and global configura-
tion data for an Oracle VM VirtualBox host.
$ VBoxBugReport
0% - collecting VBoxSVC.log.10...
7% - collecting VBoxSVC.log.9
64% - collecting VBoxSVC.log.1...
71% - collecting VBoxSVC.log...
78% - collecting VirtualBox.xml...
400
13 Troubleshooting
85% - collecting HostUsbDevices...
92% - collecting HostUsbFilters...
100% - compressing...
Report was written to ’2019-03-26-13-32-02-bugreport.tgz’
The results are saved as a compressed tar file archive in the same directory where the command
is run.
To specify a different output file location:
$ VBoxBugReport --output ~/debug/bug004.tgz
To output all debug information to a single text file, rather than a tgz file:
$ VBoxBugReport --text
To collect information for a specific VM, called Windows_10:
$ VBoxBugReport Windows_10
This command collects machine settings, guest properties, and log files for the specified VM.
Global configuration information for the host is also included.
To collect information for several VMs, called Windows_7, Windows_8, and Windows_10:
$ VBoxBugReport Windows_7 Windows_8 Windows_10
To collect information for all VMs:
$ VBoxBugReport --all
To show a full list of the available command options, run VBoxBugReport --help.
13.1.4 The Built-In VM Debugger
Oracle VM VirtualBox 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.
Warning: 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.
The VM debugger is available in all regular production versions of Oracle VM VirtualBox, but
it is disabled by default because the average user will have little use for it. There are two ways
to access the debugger:
• Using a debugger console window displayed alongside the VM
• Using the telnet protocol on port 5000
The debugger can be enabled in the following ways:
• Start the VM directly using VirtualBoxVM --startvm, with an additional --dbg,
--debug, or --debug-command-line argument. See the VirtualBoxVM --help com-
mand usage help for details.
401
13 Troubleshooting
• Set the VBOX_GUI_DBG_ENABLED or VBOX_GUI_DBG_AUTO_SHOW environment variable to
true before launching the Oracle VM VirtualBox process. Setting these variables, only
their presence is checked, is effective even when the first Oracle VM VirtualBox process
is the VM selector window. VMs subsequently launched from the selector will have the
debugger enabled.
• Set the GUI/Dbg/Enabled extra data item to true before launching the VM. This can be
set globally or on a per VM basis.
A new Debug menu entry is added to the Oracle VM VirtualBox application. This menu enables
the user to open the debugger console.
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 debug-
ger will find the Oracle VM VirtualBox VM debugger familiar.
The most important command is help. This will print brief usage help for all debugger com-
mands. The set of commands supported by the VM debugger changes frequently and the help
command is always up-to-date.
A brief summary of frequently used commands is as follows:
stop: Stops the VM execution and enables single stepping
g: Continue VM execution
t: Single step an instruction
rg, rh, and r: Print the guest, hypervisor, and current registers
kg, kh, and k: Print the guest, hypervisor, and current call stack
da, db, dw, dd, dq: Print memory contents as ASCII, bytes, words, dwords, and qwords
u: Unassemble memory
dg: Print the guest’s GDT
di: Print the guest’s IDT
dl: Print the guest’s LDT
dt: Print the guest’s TSS
dp*: Print the guest’s page table structures
bp and br: Set a normal and recompiler breakpoint
bl: List breakpoints
bc: Clear a breakpoint
writecore: Write a VM core file to disk. See chapter 13.1.5, VM Core Format, page 403
See the built-in help for other available commands.
The VM debugger supports symbolic debugging, although symbols for guest code are often not
available. For Oracle Solaris guests, the detect command automatically determines the guest
OS version and locates kernel symbols in guest’s memory. Symbolic debugging is then available.
For Linux guests, the detect commands also determines the guest OS version, but there are
no symbols in the guest’s memory. Kernel symbols are available in the file /proc/kallsyms
on Linux guests. This file must be copied to the host, for example using scp. The loadmap
debugger command can be used to make the symbol information available to the VM debugger.
402
13 Troubleshooting
Note that the kallsyms 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.
For all guests, a simple way to verify that the correct symbols are loaded is the k 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.
Another group of debugger commands is the set of info commands. Running info help
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
info commands, the right command to use depends entirely on the problem being investigated.
Some of the info commands are as follows:
cfgm: Print a branch of the configuration tree
cpuid: Display the guest CPUID leaves
ioport: Print registered I/O port ranges
mmio: Print registered MMIO ranges
mode: Print the current paging mode
pit: Print the i8254 PIT state
pic: Print the i8259A PIC state
ohci, ehci, xhci: Print a subset of the OHCI, EHCI, and xHCI USB controller state
pcnet0: Print the PCnet state
vgatext: Print the contents of the VGA framebuffer formatted as standard text mode
timers: Print all VM timers
The output of the info commands generally requires in-depth knowledge of the emulated
device or Oracle VM VirtualBox VMM internals. However, when used properly, the information
provided can be invaluable.
13.1.5 VM Core Format
Oracle VM VirtualBox uses the
64-bit ELF format for its VM core files created by
VBoxManage debugvm, see chapter 9.45, VBoxManage debugvm, page 295. 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:
http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf.
The overall layout of the VM core format is as follows:
[ ELF 64 Header]
[ Program Header, type PT_NOTE ]
offset to COREDESCRIPTOR
[ Program Header, type PT_LOAD ] - one for each contiguous physical memory range
Memory offset of range
File offset
[ Note Header, type NT_VBOXCORE ]
[ COREDESCRIPTOR ]
Magic
VM core file version
VBox version
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 ]
403
13 Troubleshooting
The memory descriptors contain physical addresses relative to the guest and not virtual ad-
dresses. Regions of memory such as MMIO regions are not included in the core file.
The relevant data structures and definitions can be found in the Oracle VM VirtualBox sources
under the following header files: include/VBox/dbgfcorefmt.h, include/iprt/x86.h and
src/VBox/Runtime/include/internal/ldrELFCommon.h.
The VM core file can be inspected using elfdump and GNU readelf or other similar utilities.
13.2 General Troubleshooting
13.2.1 Guest Shows IDE/SATA Errors for File-Based Images on Slow Host
File System
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.
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.
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.
For IDE disks use the following command:
VBoxManage setextradata <VM-name>
"VBoxInternal/Devices/piix3ide/0/LUN#[<x>]/Config/FlushInterval" [<b>]
For SATA disks use the following command:
VBoxManage setextradata <VM-name>
"VBoxInternal/Devices/ahci/0/LUN#[<x>]/Config/FlushInterval" [<b>]
[x] specifies the disk. For IDE, 0 represents device 0 on the primary channel, 1 represents de-
vice 1 on the primary channel, 2 represents device 0 on the secondary channel, and 3 represents
device 1 on the secondary channel. For SATA, use values between 0 and 29. This configuration
option applies to disks only. Do not use this option for CD or DVD drives.
The unit of the interval ([b]) 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 op-
timal 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.
Providing a value of 0 for [b] is treated as an infinite flush interval, effectively disabling this
workaround. Removing the extra data key by specifying no value for [b] has the same effect.
13.2.2 Responding to Guest IDE/SATA Flush Requests
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.
To enable flushing for IDE disks, issue the following command:
404
13 Troubleshooting
$ VBoxManage setextradata <VM-name> "VBoxInternal/Devices/piix3ide/0/LUN#[<x>]/Config/IgnoreFlush" 0
[x] specifies the disk. Enter 0 for device 0 on the primary channel, 1 for device 1 on the
primary channel, 2 for device 0 on the secondary channel, or 3 for device 1 on the secondary
channel.
To enable flushing for SATA disks, issue the following command:
$ VBoxManage setextradata <VM-name> "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/IgnoreFlush" 0
The value [x] that selects the disk can be a value between 0 and 29.
Note that this does not affect the flushes performed according to the configuration described
in chapter 13.2.1, Guest Shows IDE/SATA Errors for File-Based Images on Slow Host File System,
page 404. Restoring the default of ignoring flush commands is possible by setting the value to 1
or by removing the key.
13.2.3 Performance Variation with Frequency Boosting
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.
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.
13.2.4 Frequency Scaling Effect on CPU Usage
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.
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.
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.
13.2.5 Inaccurate Windows CPU Usage Reporting
CPU usage reporting tools which come with Windows, such as Task Manager or Resource Moni-
tor, 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.
This problem affects Windows as both host and guest OS. Sysinternals tools, such as Process
Explorer, do not suffer from this problem.
13.2.6 Poor Performance Caused by Host Power Management
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.
405
13 Troubleshooting
Some of the problems may be caused by firmware and/or host operating system bugs. There-
fore, updating the firmware and applying operating systems fixes is recommended.
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 Intel C State setting should be disabled. Disabling other power man-
agement settings may also improve performance. However, a balance between performance and
power consumption must always be considered.
13.2.7 GUI: 2D Video Acceleration Option is Grayed Out
To use 2D Video Acceleration within Oracle VM VirtualBox, your host’s video card should support
certain OpenGL extensions. On startup, Oracle VM VirtualBox checks for those extensions, and,
if the test fails, this option is silently grayed out.
To find out why it has failed, you can manually execute the following command:
$ VBoxTestOGL --log "log_file_name" --test 2D
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.
13.3 Windows Guests
13.3.1 No USB 3.0 Support in Windows 7 Guests
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.
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.
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.
13.3.2 Windows Bluescreens After Changing VM Configuration
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.
This applies in particular to the following settings:
• The ACPI and I/O APIC settings should never be changed after installing Windows. De-
pending 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 hard-
ware 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.
• 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 Oracle VM VirtualBox
to a new virtual machine. The default subtype of IDE controller hardware used by Oracle
VM VirtualBox is PIIX4. Make sure that the storage controller settings are identical.
406
13 Troubleshooting
13.3.3 Windows 0x101 Bluescreens with SMP Enabled (IPI Timeout)
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.
According to Microsoft, this is due to a race condition in Windows. A hotfix is available from
Microsoft.
If this does not help, please reduce the number of virtual processors to 1.
13.3.4 Windows 2000 Installation Failures
When installing Windows 2000 guests, you might run into one of the following issues:
• Installation reboots, usually during component registration.
• Installation fills the whole hard disk with empty log files.
• Installation complains about a failure installing msgina.dll.
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:
$ VBoxManage setextradata <VM-name> "VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1
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.
13.3.5 How to Record Bluescreen Information from Windows Guests
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.
Oracle VM VirtualBox provides a method of halting a guest when it wants to perform a reset.
In order to enable this feature, use the following command:
$ VBoxManage setextradata <VM-name> "VBoxInternal/PDM/HaltOnReset" 1
13.3.6 No Networking in Windows Vista Guests
With Windows Vista, Microsoft dropped support for the AMD PCNet card that legacy versions of
Oracle VM VirtualBox used to provide as the default virtual network card. For Windows Vista
guests, Oracle VM VirtualBox now uses an Intel E1000 card by default.
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 chapter 5.3, Shared Folders, page 97.
407
13 Troubleshooting
13.3.7 Windows Guests may Cause a High CPU Load
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.
13.3.8 Long Delays When Accessing Shared Folders
The performance for accesses to shared folders from a Windows guest might be decreased due
to delays during the resolution of the Oracle VM VirtualBox shared folders name service. To fix
these delays, add the following entries to the file \windows\system32\drivers\etc\lmhosts
of the Windows guest:
255.255.255.255
VBOXSVR #PRE
255.255.255.255
VBOXSRV #PRE
After doing this change, a reboot of the guest is required.
13.3.9 USB Tablet Coordinates Wrong in Windows 98 Guests
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.
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:
$ VBoxManage setextradata <VM-name> "VBoxInternal/USB/HidMouse/0/Config/CoordShift" 0
To restore the default behavior, remove the key or set its value to 1.
13.3.10 Windows Guests are Removed From an Active Directory Domain
After Restoring a Snapshot
If a Windows guest is a member of an Active Directory domain and the snapshot feature of Oracle
VM VirtualBox is used, it could be removed from the Active Direcory domain after you restore
an older snapshot.
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: http://support.microsoft.com/kb/154501.
13.3.11 Windows 3.x Limited to 64 MB RAM
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 man-
ager, shipped with MS-DOS and Microsoft Windows 3.x can only use up to 64 MB on standard
PCs.
This is a known HIMEM.SYS limitation. Windows 3.1 memory limits are described in detail in
Microsoft Knowledge base article KB 84388.
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.
408
13 Troubleshooting
13.4 Linux and X11 Guests
13.4.1 Linux Guests May Cause a High CPU load
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.
Linux kernels shipped with Red Hat Enterprise Linux, as well as kernels of related Linux distri-
butions, such as CentOS and Oracle Linux, support a kernel parameter divider=N. Hence, such
kernels support a lower timer frequency without recompilation. We suggest you add the kernel
parameter divider=10 to select a guest kernel timer frequency of 100Hz.
13.4.2 Buggy Linux 2.6 Kernel Versions
The following bugs in Linux kernels prevent them from executing correctly in Oracle VM
VirtualBox, causing VM boot crashes:
• The Linux kernel version 2.6.18, and some 2.6.17 versions, introduced a race condition
that can cause boot crashes in Oracle VM VirtualBox. Please use a kernel version 2.6.19 or
later.
• With hardware virtualization and the I/O APIC enabled, kernels before 2.6.24-rc6 may
panic on boot with the following message:
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
If you see this message, either disable hardware virtualization or the I/O APIC as described
in chapter 4.5, System Settings, page 74, or upgrade the guest to a newer kernel.
See
msg30813.html for details about the kernel fix.
13.4.3 Shared Clipboard, Auto-Resizing, and Seamless Desktop in X11
Guests
Guest desktop services in guests running the X11 window system such as Oracle Solaris and
Linux, are provided by a guest service called VBoxClient, 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.
$ VBoxClient --clipboard
$ VBoxClient --display
$ VBoxClient --seamless
If a particular desktop service is not working correctly, it is worth checking whether the process
which should provide it is running.
The VBoxClient processes create files in the user’s home directory with names of the form
.vboxclient-*.pid 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.
409
13 Troubleshooting
13.5 Oracle Solaris Guests
13.5.1 Certain Oracle Solaris 10 Releases May Take a Long Time to Boot
with SMP
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.
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.
13.5.2 Older Solaris Releases Do Not Work with E1000 Ethernet
Solaris releases before Solaris 10 1/06, including Solaris 9, Solaris 10 1/05 (GA), and Solaris
10 3/05 (HW2), are unable to communicate through the Intel E1000 card. The Solaris e1000g
driver does not enable PCI bus mastering for the network adapter and is therefore unable to send
and receive data. This problem appears to be specific to the e1000g driver and does not reflect
general Solaris driver behavior.
The AMD PCnet emulation (using the Solaris pcn driver) can be used instead of Intel E1000.
Solaris 10 1/06 (U1) and later releases do not have this problem and work with the emulated
E1000 ethernet controller.
13.6 Windows Hosts
13.6.1 Drag’n Drop not Working
Microsoft Windows uses technologies like UAC (User Account Control) and UIPI (User Interface
Privilege Isolation) to prevent and/or mitigate security issues. By default, UAC and UIPI are
enabled.
When a Oracle VM VirtualBox VM process is running with a higher so-called privilege level
than another process that wants to interact with the VM process via drag’n drop (or system
clipboard), Windows prevents this by default due to security reasons. This results in Oracle VM
VirtualBox not being able to receive any Windows messages for drag’n drop.
To make this work, the Oracle VM VirtualBox VM process must be running with the same (or
lower) privilege level as the process its interacting with using drag’n drop.
Disabling UAC and/or UIPI is not recommended.
13.6.2 VBoxSVC Out-of-Process COM Server Issues
Oracle VM VirtualBox makes use of the Microsoft Component Object Model (COM) for interpro-
cess and intraprocess communication. This enables Oracle VM VirtualBox to share a common
configuration among different virtual machine processes and provide several user interface op-
tions based on a common architecture. All global status information and configuration is main-
tained by the process VBoxSVC.exe, which is an out-of-process COM server. Whenever an Oracle
VM VirtualBox process is started, it requests access to the COM server and Windows automati-
cally starts the process. Note that it should never be started by the end user.
When the last process disconnects from the COM server, it will terminate itself after some
seconds. The Oracle VM VirtualBox configuration XML files are maintained and owned by the
COM server and the files are locked whenever the server runs.
410
13 Troubleshooting
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 VBoxSVC.exe.
13.6.3 CD and DVD Changes Not Recognized
In case you have assigned a physical CD or DVD drive to a guest and the guest does not no-
tice 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:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdrom\Autorun
Certain applications may disable this key against Microsoft’s advice. If it is set to 0, change
it to 1 and reboot your system. Oracle VM VirtualBox relies on Windows notifying it of media
changes.
13.6.4 Sluggish Response When Using Microsoft RDP Client
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.
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.
Depending whether the setting should be changed for an individual user or for the system, set
either of the following.
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Min Send Interval
HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client\Min Send Interval
13.6.5 Running an iSCSI Initiator and Target on a Single System
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.
Setting the VBOX_DISABLE_HOST_DISK_CACHE environment variable to 1 enables a
workaround for this problem until Microsoft addresses the issue. For example, open a command
prompt window and start Oracle VM VirtualBox like this:
set VBOX_DISABLE_HOST_DISK_CACHE=1
VirtualBox
While this will decrease guest disk performance, especially writes, it does not affect the per-
formance of other applications running on the host.
411
13 Troubleshooting
13.6.6 Bridged Networking Adapters Missing
If no bridged adapters show up in the Networking 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:
• The maximum allowed filter count was reached on the host. In this case, the MSI log
would mention the 0x8004a029 error code returned on NetFlt network component install,
as follows:
VBoxNetCfgWinInstallComponent: Install failed, hr (0x8004a029)
You can try to increase the maximum filter count in the Windows registry using the follow-
ing key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\MaxNumFilters
The maximum number allowed is 14. After a reboot, try to reinstall Oracle VM VirtualBox.
• The INF cache is corrupt. In this case, the install log at %windir%\inf\setupapi.dev.log
would typically mention the failure to find a suitable driver package for either the
sun_VBoxNetFlt or sun_VBoxNetFltmp components. The solution then is to uninstall
Oracle VM VirtualBox, remove the INF cache (%windir%\inf\INFCACHE.1), reboot and
try to reinstall Oracle VM VirtualBox.
13.6.7 Host-Only Networking Adapters Cannot be Created
If a host-only adapter cannot be created, either with the VirtualBox Manager or the
VBoxManage command, then the INF cache is probably corrupt. In this case, the install log at
%windir%\inf\setupapi.dev.log would typically mention the failure to find a suitable driver
package for the sun_VBoxNetAdp component. Again, as with the bridged networking prob-
lem described above, the solution is to uninstall Oracle VM VirtualBox, remove the INF cache
(%windir%\inf\INFCACHE.1), reboot and try to reinstall Oracle VM VirtualBox.
13.7 Linux Hosts
13.7.1 Linux Kernel Module Refuses to Load
If the Oracle VM VirtualBox kernel module, vboxdrv, refuses to load you may see an Error
inserting vboxdrv: Invalid argument message. As root, check the output of the dmesg
command to find out why the load failed. Most probably the kernel disagrees with the version
of gcc used to compile the module. Make sure that you use the same compiler that was used to
build the kernel.
13.7.2 Linux Host CD/DVD or Floppy Disk Drive Not Found
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 /dev/hdc,
/dev/scd0, /dev/cdrom or similar. On most distributions, the user must be added to a corre-
sponding group, usually called cdrom or cdrw or floppy.
On supported Linux distributions, Oracle VM VirtualBox uses udev to locate hardware such as
CD/DVD drives and floppy disk drives.
412
13 Troubleshooting
13.7.3 Strange Guest IDE Error Messages When Writing to CD or DVD
If the experimental CD or DVD writer support is enabled with an incorrect host or guest config-
uration, 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.
Oracle VM VirtualBox performs the usual consistency checks when a VM is powered up. In par-
ticular, 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 Oracle VM VirtualBox cannot detect all misconfigurations. The
necessary host and guest OS configuration is not specific for Oracle VM VirtualBox, but a few
frequent problems are listed here which occurred in connection with Oracle VM VirtualBox.
Special care must be taken to use the correct device. The configured host CD or DVD device
file name, in most cases /dev/cdrom, 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 /dev/scd0. Even for IDE CD or DVD writer units this must
refer to the appropriate SCSI CD-ROM device node, such as /dev/scd0, if the ide-scsi 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. Oracle VM
VirtualBox supports the use of IDE device files, such as /dev/hdc, provided the kernel supports
this and the ide-scsi module is not loaded.
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.
13.7.4 VBoxSVC IPC Issues
On Linux, Oracle VM VirtualBox makes use of a custom version of Mozilla XPCOM (cross platform
component object model) for interprocess and intraprocess communication (IPC). The process
VBoxSVC serves as a communication hub between different Oracle VM VirtualBox processes and
maintains the global configuration, such as the XML database. When starting an Oracle VM
VirtualBox component, the processes VBoxSVC and VBoxXPCOMIPCD are started automatically.
They are only accessible from the user account they are running under. VBoxSVC owns the Oracle
VM VirtualBox configuration database which normally resides in ~/.config/VirtualBox, or the
appropriate configuration directory for your operating system. While it is running, the configura-
tion files are locked. Communication between the various Oracle VM VirtualBox components and
VBoxSVC is performed through a local domain socket residing in /tmp/.vbox-username-ipc.
In case there are communication problems, such as an Oracle VM VirtualBox application can-
not communicate with VBoxSVC, terminate the daemons and remove the local domain socket
directory.
13.7.5 USB Not Working
If USB is not working on your Linux host, make sure that the current user is a member of the
vboxusers group. Please keep in mind that group membership does not take effect immediately
but rather at the next login. If available, the newgrp command may avoid the need for a logout
and login.
13.7.6 PAX/grsec Kernels
Linux kernels including the grsec patch, see http://www.grsecurity.net/ , and derivates have
to disable PAX_MPROTECT for the VBox binaries to be able to start a VM. The reason is that
Oracle VM VirtualBox has to create executable code on anonymous memory.
413
13 Troubleshooting
13.7.7 Linux Kernel vmalloc Pool Exhausted
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 vmalloc=256MB 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 failed to mount the root partition,
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:
uppermem 524288
13.8 Oracle Solaris Hosts
13.8.1 Cannot Start VM, Not Enough Contiguous Memory
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
Oracle VM VirtualBox VMs from being started. We recommend to limit the ZFS cache by adding
the following line to /etc/system, where xxxx bytes is the amount of memory usable for the
ZFS cache.
set zfs:zfs_arc_max = xxxx
414
14 Security Guide
14.1 General Security Principles
The following principles are fundamental to using any application securely.
Keep software up to date. One of the principles of good security practise is to keep
all software versions and patches up to date. Activate the Oracle VM VirtualBox update
notification to get notified when a new Oracle VM VirtualBox release is available. When
updating Oracle VM VirtualBox, do not forget to update the Guest Additions. Keep the host
operating system as well as the guest operating system up to date.
Restrict network access to critical services. 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.
Follow the principle of least privilege. The principle of least privilege states that users
should be given the least amount of privilege necessary to perform their jobs. Always
execute Oracle VM VirtualBox as a regular user. We strongly discourage anyone from
executing Oracle VM VirtualBox with system privileges.
Choose restrictive permissions when creating configuration files, for instance when creating
/etc/default/virtualbox, see chapter 3.3.3.7, Automatic Installation Options, page 63. Mode
0600 is preferred.
Monitor system activity. System security builds on three pillars: good security proto-
cols, 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.
Keep up to date on latest security information. Oracle continually improves its software
and documentation. Check this note yearly for revisions.
14.2 Secure Installation and Configuration
14.2.1 Installation Overview
The Oracle VM VirtualBox base package should be downloaded only from a trusted source, for
instance the official website 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.
General Oracle VM VirtualBox installation instructions for the supported hosts can be found in
chapter 3, Installation Details, page 55.
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 chapter
3.1, Installing on Windows Hosts, page 55. 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 Oracle VM VirtualBox
API is to be used by external Python applications. In particular USB support and support for the
415
14 Security Guide
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.
The general case is to install the complete Oracle VM VirtualBox package. The installation
must be done with system privileges. All Oracle VM VirtualBox binaries should be executed as a
regular user and never as a privileged user.
The Oracle VM VirtualBox Extension Pack provides additional features and must be down-
loaded and installed separately, see chapter 2.5, Installing Oracle VM VirtualBox and Extension
Packs, page 6. As for the base package, the SHA256 checksum of the extension pack should be
verified. As the installation requires system privileges, Oracle VM VirtualBox will ask for the
system password during the installation of the extension pack.
14.2.2 Post Installation Configuration
Normally there is no post installation configuration of Oracle VM VirtualBox components re-
quired. However, on Oracle Solaris and Linux hosts it is necessary to configure the proper per-
missions for users executing VMs and who should be able to access certain host resources. For
instance, Linux users must be member of the vboxusers 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.
14.3 Security Features
This section outlines the specific security mechanisms offered by Oracle VM VirtualBox.
14.3.1 The Security Model
One property of virtual machine monitors (VMMs) like Oracle VM VirtualBox 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 chapter 4.4, General Settings,
page 73.
14.3.2 Secure Configuration of Virtual Machines
Several aspects of a virtual machine configuration are subject to security considerations.
14.3.2.1 Networking
The default networking mode for VMs is NAT which means that the VM acts like a computer
behind a router, see chapter 7.3, Network Address Translation (NAT), page 130. 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.
If bridged networking is used, the VM acts like a computer inside the same network as the
host, see chapter 7.5, Bridged Networking, page 134. 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
416
14 Security Guide
computers. In some cases it is worth considering using a forwarding rule for a specific port in
NAT mode instead of using bridged networking.
Some setups do not require a VM to be connected to the public network at all. Internal
networking, see chapter 7.6, Internal Networking, page 135, or host-only networking, see chapter
7.7, Host-Only Networking, page 136, are often sufficient to connect VMs among each other or to
connect VMs only with the host but not with the public network.
14.3.2.2 VRDP Remote Desktop Authentication
When using the Oracle VM VirtualBox Extension Pack provided by Oracle for VRDP remote desk-
top 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 chapter 8.1.5, RDP
Authentication, page 147.
14.3.2.3 Clipboard
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.
If the guest is able to read from and/or write to the host clipboard then a remote user con-
necting 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.
14.3.2.4 Shared Folders
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.
14.3.2.5 3D Graphics Acceleration
Enabling 3D graphics using the Guest Additions exposes the host to additional security risks. See
chapter 5.5.1, Hardware 3D Acceleration (OpenGL and Direct3D 8/9), page 102.
14.3.2.6 CD/DVD Passthrough
Enabling CD/DVD passthrough enables the guest to perform advanced operations on the
CD/DVD drive, see chapter 6.9, CD/DVD Support, page 124. This could induce a security risk as
a guest could overwrite data on a CD/DVD medium.
14.3.2.7 USB Passthrough
Passing USB devices to the guest provides the guest full access to these devices, see chapter
4.11.1, USB Settings, page 83. 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.
14.3.3 Configuring and Using Authentication
The following components of Oracle VM VirtualBox can use passwords for authentication:
417
14 Security Guide
• When using remote iSCSI storage and the storage server requires authentication, an
initiator secret can optionally be supplied with the VBoxManage storageattach com-
mand. As long as no settings password is provided, by using the command line option
--settingspwfile, then this secret is stored unencrypted in the machine configuration
and is therefore potentially readable on the host. See chapter 6.10, iSCSI Servers, page 125
and chapter 9.26, VBoxManage storageattach, page 252.
• When using the Oracle VM VirtualBox web service to control an Oracle VM VirtualBox
host remotely, connections to the web service are authenticated in various ways. This is
described in detail in the Oracle VM VirtualBox Software Development Kit (SDK) reference.
See chapter 12, Oracle VM VirtualBox Programming Interfaces, page 398.
14.3.4 Potentially Insecure Operations
The following features of Oracle VM VirtualBox can present security problems:
Enabling 3D graphics using the Guest Additions exposes the host to additional security
risks. See chapter 5.5.1, Hardware 3D Acceleration (OpenGL and Direct3D 8/9), page 102.
When teleporting a machine, the data stream through which the machine’s memory con-
tents 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.
If the network is not sufficiently trusted, the password should be changed for each tele-
portation as the a 3rd party could snoop up the unecrypted password hash when it is
transferred between the target and source host machines.
When Page Fusion, see chapter 5.10.2, Page Fusion, page 109, 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.
When using the Oracle VM VirtualBox web service to control an Oracle VM VirtualBox 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 chapter 12, Oracle VM VirtualBox Programming
Interfaces, page 398.
The web services are not started by default. See chapter 10.18, Starting the Oracle VM
VirtualBox Web Service Automatically, page 365 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.
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.
Because of shortcomings in older Windows versions, using Oracle VM VirtualBox on Win-
dows versions older than Vista with Service Pack 1 is not recommended.
418
14 Security Guide
14.3.5 Encryption
The following components of Oracle VM VirtualBox use encryption to protect sensitive data:
• When using the Oracle VM VirtualBox Extension Pack provided by Oracle for VRDP remote
desktop support, RDP data can optionally be encrypted. See chapter 8.1.6, RDP Encryption,
page 148. 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.
• When using the Oracle VM VirtualBox Extension Pack provided by Oracle for disk en-
cryption, the data stored in disk images can optionally be encrypted. See chapter 10.29,
Encryption of Disk Images, page 376. 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.
14.4 Security Recommendations
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.
14.4.1 CVE-2018-3646
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.
For more information about nested paging, see chapter 11.6, Nested Paging and VPIDs, page
397.
The following mitigation options are available.
14.4.1.1 Disable Nested Paging
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.
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.
14.4.1.2 Flushing the Level 1 Data Cache
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.
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.
419
14 Security Guide
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.
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.
A more aggressive flushing option is provided via the VBoxManage modifyvm
--l1d-flush-on-vm-entry 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.
For users not concerned by this security issue, the default mitigation can be disabled using the
VBoxManage modifyvm name --l1d-flush-on-sched off command.
14.4.2 CVE-2018-12126, CVE-2018-12127, CVE-2018-12130,
CVE-2019-11091
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 Oracle VM VirtualBox is therefore not
affected. Leaks only happens when entering and leaving C states.
The following mitigation option is available.
14.4.2.1 Buffer Overwriting and Disabling Hyper-Threading
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.
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.
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.
The default action taken by Oracle VM VirtualBox 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.
The VBoxManage modifyvm command provides a more aggressive flushing option is provided
by means of the --mds-clear-on-vm-entry 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.
For users not concerned by this security issue, the default mitigation can be disabled using the
VBoxManage modifyvm name --mds-clear-on-sched off command.
420
15 Known Limitations
15.1 Experimental Features
Some Oracle VM VirtualBox 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:
• Hardware 3D acceleration support for Windows, Linux, and Oracle Solaris guests
• Hardware 2D video playback acceleration support for Windows guests
• Mac OS X guests (macOS hosts only)
• ICH9 chipset emulation
• EFI firmware
• Host CD/DVD drive passthrough
• Support of iSCSI using internal networking
• Using Oracle VM VirtualBox and Hyper-V on the same host
15.2 Known Issues
The following section describes known problems with this release of Oracle VM VirtualBox. Un-
less marked otherwise, these issues are planned to be fixed in later releases.
• The macOS installer packages for Oracle VM VirtualBox 7 currently do not include the In-
ternal Networking feature, which is available on all other platforms. This will be addressed
with an update of Oracle VM VirtualBox 7. For setups which depend on this functionality
it is best to keep using Oracle VM VirtualBox 6.1.
• Poor performance when using Oracle VM VirtualBox and Hyper-V 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.
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:
.\DG_Readiness_Tool_vX.X.ps1 -Disable -AutoReboot
Note: 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.
• The following Guest SMP (multiprocessor) limitations exist:
421
15 Known Limitations
- Poor performance 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.
- Poor performance 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.
NX (no execute, data execution prevention) only works for guests running on 64-bit
hosts and requires that hardware virtualization be enabled.
Guest control. On Windows guests, a process started using the guest control execute
support will not be able to display a graphical user interface unless the user account under
which it is running is currently logged in and has a desktop session.
Also, to use accounts without or with an empty password, the guest’s group pol-
icy must be changed.
To do so, open the group policy editor on the com-
mand line by typing gpedit.msc, open the key Computer Configuration\Windows
Settings\Security Settings\Local Policies\Security Options and change the
value of Accounts: Limit local account use of blank passwords to console
logon only to Disabled.
Compacting
virtual
disk
images
is
limited
to
VDI
files.
The
VBoxManage modifymedium --compact 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.
OVF import/export:
- OVF localization, with multiple languages in a single OVF file, is not yet supported.
- Some OVF sections like StartupSection, DeploymentOptionSection, and InstallSection
are ignored.
- OVF environment documents, including their property sections and appliance config-
uration with ISO images, are not yet supported.
- Remote files using HTTP or other mechanisms are not yet supported.
Neither scale mode nor seamless mode work correctly with guests using OpenGL 3D
features, such as with Compiz-enabled window managers.
The RDP server in the Oracle VM VirtualBox 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.
Preserving the aspect ratio in scale mode works only on Windows hosts and on macOS
hosts.
On macOS hosts, the following features are not yet implemented:
- Numlock emulation
- CPU frequency metric
- Memory ballooning
macOS/ARM64 (Apple silicon) host package
Mac OS X guests:
422
15 Known Limitations
- Mac OS X guests can only run on a certain host hardware. For details about license
and host hardware limitations. See chapter 4.1.1, Mac OS X Guests, page 69 and check
the Apple software license conditions.
- Oracle VM VirtualBox does not provide Guest Additions for Mac OS X at this time.
- The graphics resolution currently defaults to 1024x768 as Mac OS X falls back to the
built-in EFI display support. See chapter 4.14.1, Video Modes in EFI, page 86 for more
information on how to change EFI video modes.
- Mac OS X guests only work with one CPU assigned to the VM. Support for SMP will
be provided in a future release.
- 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.
- By default, the Oracle VM VirtualBox 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:
$ VBoxManage setextradata <VM-name> "VBoxInternal2/EfiBootArgs" " "
To revert to the previous behavior, use the following command:
$ VBoxManage setextradata <VM-name> "VBoxInternal2/EfiBootArgs" ""
- It is currently not possible to start a Mac OS X guest in safe mode by specifying the -x
option in VBoxInternal2/EfiBootArgs extradata.
Oracle Solaris hosts:
- 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.
- 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.
- No ACPI information, such as battery status or power source, is reported to the guest.
- No support for using wireless adapters with bridged networking.
- Crossbow-based bridged networking on Oracle Solaris 11 hosts does not work directly
with aggregate links. However, you can use dladm 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.
Neither virtio nor Intel PRO/1000 drivers for Windows XP guests 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.
Guest Additions for OS/2. Seamless windows and automatic guest resizing will probably
never be implemented due to inherent limitations of the OS/2 graphics system.
Some guest operating systems predating ATAPI CD-ROMs may exhibit long delays or en-
tirely 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.
Affected operating systems are MS OS/2 1.21: fails to boot with an error message referenc-
ing 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.
423
16 Change Log
This section summarizes the changes between Oracle VM VirtualBox versions. Note that this
change log is not exhaustive and not all changes are listed.
Oracle VM VirtualBox 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 repre-
sents an internal development or test build. In addition, each build contains a revision number.
16.1 Version 7.0.18 (2024-05-07)
This is a maintenance release. The following items were fixed and/or added:
• Networking: Fixed an issue which caused host system crash when VM was using bridged
or host-only network adapter (bug #22045)
• Linux Guest Additions: Added more fixes to prevent UBSAN warnings (bug #21877)
• Linux Guest Additions: Fixed issue when time stamps were displayed incorrectly within
mounted shared folder (bug #22047)
16.2 Version 7.0.16 (2024-04-16)
This is a maintenance release. The following items were fixed and/or added:
• VMM: Fixed a guru meditation executing nested-guests using the KVM hypervisor in the
guest on Intel hosts (bug #21805)
• VMM: Fixed Linux VM crash on some recent AMD models
• USB: Fixed issue when EHCI controller was mishandling short packets (bug #20726)
• Audio: Introduced general improvements
• VBoxManage and vboximg-mount: Updated usage information and documentation (bugs
#21895, #21992 and #21993)
• Guest Control: Fixed starting Windows guest processes in the correct Windows session (7.0
regression)
• Linux Host: Fixed issue when VBox.sh was deleting wrong VBoxSVC IPC socket when VM
was started using sudo (bug #20928)
• Linux Host: Fixed kernel modules build failure when using GCC 13.2
• macOS Host: Fixed issue when App Nap was affecting VM performance (bug #18678)
• Linux Host and Guest: Added fixes related to UBSAN warnings discovered on recent Linux
distributions (bug #21877)
• Linux Host and Guest: Added possibility to prevent kernel module from automatic loading
during system boot by adding mod_name.disabled=1 into kernel command line
424
16 Change Log
• Linux Host and Guest: Added initial support for kernel 6.9 (bug #22033)
• Linux Host and Guest: Fixed mk_pte warning introduced in kernel 6.6 (bug #21898)
• Linux Guest Additions: Added initial support for kernel 6.8
• Windows Guest Additions: Introduced general improvements in graphics area
16.3 Version 7.0.14 (2024-01-16)
This is a maintenance release. The following items were fixed and/or added:
• Audio: Added more fixes for switching host audio devices on Windows hosts using the WAS
backend
• 3D: Added general improvements
• OCI: Fixed wrong guest RAM unit usage in VirtualSystemDescription, memory is provided
in bytes, “Byte” is the base unit
• Main: OVF Import/Export: Added support for importing and exporting VMs containing
NVMe storage controllers (bug #19320)
• Main: OVF Import/Export: Added support for exporting a VM which contains a medium
inserted into a virtual CD/DVD drive which is attached to a Virtio-SCSI controller
• Devices: Fixed a problem where Windows guests “forget” in-progress touch events when
the user holds down a finger without moving it for a period of time
• macOS Host USB: Added support for newer storage devices
• macOS Host: Fixed memory Leak in the VBoxIntNetSwitch process when VM was config-
ured to use ’Internal Networking’ (bug #21752)
• Linux Host and Guest: Added initial support for RHEL 9.4 kernel
• Linux Guest Additions: Fixed kernel panic on RHEL 8.9 kernel caused by vboxvideo (bugs
#10381 and #21911)
• Solaris Guest Additions: Added support for the Additions to be installed into an alternate
root path (’pkgadd -R’)
• Solaris Guest Additions: Removed requirement to reboot VM after uninstalling GAs
• RDP: Fix possible crash when connecting with the Apple Silicon variant of the Microsoft
Remote Desktop application (bug #21820)
• BIOS: Fixed handle number used for DMI OEM table (bug #19781)
16.4 Version 7.0.12 (2023-10-17)
This is a maintenance release. The following items were fixed and/or added:
• VMM: Fixed using a debugger inside the guest under certain circumstances (bugs #21413
and #21546)
• VMM: Fixed detection of VT-x being used by other hypervisors (bug #21867)
425
16 Change Log
VMM: Introduced additional improvements in Split Lock Detection feature of recent Intel
CPUs on Linux hosts (bug #20180)
GUI: Fixed issue when the nested hardware virtualization setting was not displayed in the
VM details panel (bug #21707)
GUI: Introduced NLS update for Croatian, Indonesian, Italian, Japanese, Korean, Dutch
and Turkish languages as well as added general look-and-feel improvements
Devices: Fixed black screen in Windows guests with multiple guest screens when 3D is
disabled (7.0.10 regression)
Devices: Fixed PCI device identifiers for the VirtIO network interface (bug #21516)
Devices: Fixed VLAN support for the VirtIO network interface (bug #21778)
Devices: Fixed loading saved states when a TPM is configured (7.0.10 regression, bug
#21773)
Networking: Fixed memory leaks in the VBoxIntNetSwitch process on macOS (bug
#21752)
Networking: Fixed TCP connections with IP addresses ending on .2 when the NAT network
attachment is used (bug #21513)
Audio: Fixed switching host audio devices on Windows hosts using the WAS backend (bugs
#20431, #21517, #20630 and #20723)
VRDP: Added general improvements
VBoxManage: Added improvements for “list usbfilters” command
Unattended: Added kick start file support for Oracle Linux 8 and Oracle Linux 9
Main: Added more Linux OS subtypes
Host Services: Fixed Guest Properties service crash under rare circumstance
Linux Host and Guest: Fixed few “field-spanning write” kernel warnings (bugs #21410
and #21862)
Linux Guest Additions: Added more fixes for RHEL 8.9 and 9.3 kernel
Linux Guest Additions: Added more fixes for kernel 6.4
Linux Guest Additions: Added initial support for OpenSUSE 15.5 kernel
Linux Guest Additions: Added initial support for kernels 6.5 and 6.6
Linux Guest Additions: Added version reporting for “rcvboxadd status-kernel” and “rcvbox-
add status-user” commands
BIOS: Restored support for ISA SCSI HBAs in the BIOS (bug #21736)
426
16 Change Log
16.5 Version 7.0.10 (2023-07-18)
This is a maintenance release. The following items were fixed and/or added:
OCI: Introduced general improvements
VMM: Fixed sluggish performance starting with macOS Ventura 13.3 (bug #21563,
bug#21596)
VMM: Fixed a bug while walking page tables while executing nested VMs causing flooding
of the release log as a consequence (Intel hosts only, bug #21551)
GUI: Added general improvements
TPM: Fixed a crash when a VM has a TPM version 1.2 configured (bug #21622)
3D: Initial support for OpenGL 4.1
3D: Fixed various graphics issues with Windows 11 guests (bugs #21136, #21515)
Guest Control/VBoxManage: Fixed parameter “-ignore-orphaned-processes”
Guest Control/VBoxManage: One can now explicitly specify an executable argument 0 via
“-arg0” with the “run” and “start” commands. See VBoxManage help for examples
Audio: Also use the PulseAudio backend when pipewire-pulse is running instead of falling
back to ALSA (bug #21575)
NAT: Adjusted UDP proxy timeout from 18-21 to 21-24 range to respect intended 20 second
timeout (bug #21560)
Linux Host: Added initial support for Indirect Branch Tracking (bug #21435)
Linux Host: Added initial support for kernel 6.5 (NOTE: Guest Additions do not support
kernel 6.5 yet)
Solaris Host: Introduced general improvements in the installer area
Linux Host and Guest: Improved condition check when kernel modules need to be signed
Linux Host and Guest: Added initial support for RHEL 8.8 (bug #21692), 8.9 (bug
#21690) and 9.3 (bugs #21598 and #21671) kernels
MacOS Host and Guest: Introduced general improvements in the installer area
Windows Host and Guest: Introduced ECDSA support (bug #21621)
Linux Guest Additions: Fixed issue when kernel modules were rebuilt on each boot when
guest system has no X11 installed
Linux Guest Additions: Added initial support for kernel 6.4
Linux Guest Additions: Fixed issue when vboxvideo module reloading caused kernel panic
in some guests (bug #21740)
Linux Guest Additions: Introduced general improvements in the installer area
Windows Guest Additions: Introduced general improvements in graphics drivers area
427
16 Change Log
16.6 Version 7.0.8 (2023-04-18)
This is a maintenance release. The following items were fixed and/or added:
VMM: Fixed EFLAGS.TF handling for CPUID instructions when Hyper-V is used (bug
#17961)
VMM: Fixed MONITOR/MWAIT crash with Solaris guests when Hyper-V is used on Win-
dows 11
VMM: Introduced general improvements in nested visualization area
VMM: Fixed triple fault related guru meditations for UEFI guests starting with macOS
Ventura 13.3 (bug #21563)
GUI: Brought back Restore current snapshot checkbox of Close VM dialog (bugs #21189,
#21491)
GUI: Fixes and validation for VM settings USB filters editor, filter port value is now properly
saved/restored
GUI: Fixes for VM name and OS type embedded editors of Details pane
GUI: Cloud related wizards should now propose enabled profiles before disabled
Oracle VM VirtualBox Extension Pack: Fixed shipping the cryptographic support module
for full VM encryption
E1000: Fixed possible guru meditation when changing network attachments (bug #21488)
virtio-net: Follow up fixes for FreeBSD 12.3 and pfSense 2.6.0 (bug #21201)
3D: Fixed various graphics issues with Windows 7 guests (bugs #21129, #21196, #21208,
#21521)
Main/UefiVariableStore: Added API to add signatures to the MOK list (Machine Owner
Key)
VBoxManage: Introduced modifynvram enrollmok sub-command to enroll Machine Owner
Key into NVRAM, so Linux guest kernel can pick it up in order to verify signature of modules
signed with this key
Guest Control/Main: Fixed deleting files via built-in toolbox
Linux host: Added possibility to bypass kernel modules signature verification once
VBOX_BYPASS_MODULES_SIGNATURE_CHECK=“1” is specified in /etc/vbox/vbox.cfg,
useful in case if Linux distribution does not provide necessary tools to verify kernel module
signature
Linux Guest Additions and host Installer: Improved detection if system is running systemd
as the init process
Linux Guest Additions and host drivers: Introduce initial support for kernel 6.3
Linux Guest Additions: Added possibility to bypass kernel modules signature verification
once VBOX_BYPASS_MODULES_SIGNATURE_CHECK=“1” is specified in /etc/virtualbox-
guest-additions.conf, useful in case if Linux distribution does not provide necessary tools
to verify kernel module signature
428
16 Change Log
• Linux Guest Additions: Added experimental support for kernel modules and user services
reloading in the end of installation process, thus guest system reboot after Guest Additions
(7.0.8 and newer) upgrade is no longer required in general case
• Linux Guest Additions: Fixed vboxvideo build issue with RHEL 8.7, 9.1 and 9.2 kernels
(bugs #21446 and #21450)
16.7 Version 7.0.6 (2023-01-17)
This is a maintenance release. The following items were fixed and/or added:
• VMM: Fixed guru running the FreeBSD loader on older Intel CPUs without unrestricted
guest support (bug #21332)
• GUI: Fixed virtual machines grouping when VM was created or modified in command line
(bugs #11500, #20933)
• GUI: Introduced generic changes in settings dialogs
• VirtioNet: Fixed broken network after loading saved state (bug #21172)
• Storage: Added support for increasing the size of the following VMDK image variants:
monolithicFlat, monolithicSparse, twoGbMaxExtentSparse, twoGbMaxExtentFlat
• VBoxManage: Added missing -directory switch for guestcontrol mktemp command
• Mouse Integration: Guest was provided with extended host mouse state (bug #21139)
• DnD: Introduced generic improvements
• Guest Control: Fixed handling creation mode for temporary directories (bug #21394)
• Linux Host and Guest: Added initial support for building UEK7 kernel on Oracle Linux 8
• Linux Host and Guest: Added initial support for RHEL 9.1 kernel
• Windows Host: Fixed support for VM autostart (bug#21349)
• Linux Guest Additions: Added initial support for kernel 6.2 for vboxvideo
• Audio: The “-audio” option in VBoxManage is now marked as deprecated; please use “-
audio-driver” and “-audio-enabled” instead. This will allow more flexibility when changing
the driver and/or controlling the audio functionality
16.8 Version 7.0.4 (2022-11-18)
This is a maintenance release. The following items were fixed and/or added:
• VMM: Added nested paging support for nested virtualization (Intel hosts only)
• VMM: Fixed rare guru meditations with certain guests on macOS 10.15 (Catalina) (bug
#21237)
• VMM: Fixed possible VM process crash on Windows hosts when Hyper-V is used with cer-
tain guests (bug #21174)
• VMM: Fixed Windows XP guest hang or BSOD on AMD CPUs under certain circumstances
(bug #21256)
429
16 Change Log
GUI: Various bugfixes for the Guest Control file manager
GUI: Added more informative file operations in the Guest Control file manager
GUI: Added an option to the global settings (the display page) to resize user interface font
GUI: Fixed a regression in new vm wizard. Selected virtual disks are no longer deleted
when the wizard is cancelled (bug #21244)
GUI: Added a new menu item to the devices menu to optionally upgrade the guest additions
VirtioSCSI: Fixed recognition of the virtio SCSI controller by the EFI firmware (bug
#21200)
VirtioSCSI: Fixed hang when shutting down the VM if the virtio SCSI controller is used
(bug #21144)
virtio-net: Workaround a bug in the virtio-net driver included in FreeBSD version up to
12.3 which renders the device non functional (bug #21201)
Storage: Fixed I/O errors with the VirtioSCSI controller when the host I/O cache is enabled
(bug #19717)
VBoxManage: Fixed regression when ’createmedium disk -variant RawDisk’ command re-
sulted in invalid .vmdk file (bug #21125)
Main: Restored input pointing device behavior in multi-monitor VM configuration (bug
#21137)
Main: Fixed progress indication during automatic Linux Guest Additions installation
Guest Control: Fixed path handling issues (bug #21095)
3D: Fixed VM process crash on macOS with 3D enabled (bug #21232)
Linux Host and Guest: General improvements in startup scripts
Linux Guest Additions: Introduced initial support for RHEL 8.7 and 9.2 kernels (bug
#21272, #21258)
Linux Guest Additions: Introduced initial support for SLES 15.4 kernels
Linux Guest Additions: Fixed kernel modules rebuild behavior on system shutdown
16.9 Version 7.0.2 (2022-10-20)
This is a maintenance release. The following items were fixed and/or added:
• Known issue: VMs having more than one vCPU configured will not work properly on ma-
cOS Catalina due to an unknown memory corruption issue. Either lower the number of
vCPUs to 1 or upgrade to BigSur or later where the issue does not occur
• Main: Fixed issue when VBoxSVC could become unresponsive if Extension Pack was not
installed (bug #21167)
• macOS hosts: Added workaround for a bug in the Hypervisor framework on Catalina caus-
ing VERR_NEM_MAP_PAGES_FAILED errors when starting a VM. (bug #21128)
• macOS hosts: Re-introduced support for internal networking, this is considered a bit ex-
perimental still
430
16 Change Log
• macOS hosts: Fixed VM crash when the guest tries to access a microphone or webcam
• Windows host: Shared Clipboard: Fixed issue when only 4Kb of host clipboard buffer was
accessible to guest (bug #21149)
• Linux Guest Additions: Introduced initial support for kernel 6.1
• Linux Guest Additions: Fixed issue when VBoxClient seamless service caused a crash of
some X11 applications (bug #21132)
• Windows hosts: GUI: Fixed missing Qt libraries for vista style and sql driver (bug #21155)
• GUI: Fixed a glitch in the log viewer which was causing wrong log file to be saved (bug
#21156)
16.10 Version 7.0.0 (2022-10-10)
This is a major update. The following major new features were added:
Virtual machines can be fully encrypted now, including the VM config logs and saved states
(CLI only for now)
OCI: Cloud virtual machines can be added to Virtual Machine Manager and controlled as
local VMs
OCI: Cloud networks can now be configured via Network Manager tool same way as it is
done for Host-only and NAT networks
GUI: Added a new utility similar to “top” or “resource monitor” which lists peformance
statistics (CPU usage, RAM usage, disk I/O rate, etc.) of running guests
GUI: Reworked the new vm wizard to integrate the unattended guest OS installation and
to have a more streamlined work flow
GUI: Added a new help viewer widget which enables the user manual to be navigated and
searched
GUI: Adding new notification center unifying most of running progresses and error report-
ing around the GUI
GUI: Improved theme support on all platforms. Linux and macOS use native engine while
for Windows host it is separately implemented
GUI: Large icon update
Audio recording: Now using Vorbis as the default audio format for WebM containers. Opus
is no longer being used
Audio: Added “default” host driver type to make it possible to move VMs (appliances)
between different platforms without the need of changing the audio driver explicitly. When
the “default” driver is selected, the best audio backend option for a platform will be used.
This is the default for newly created VMs
Guest Control: Implemented initial support for automatic updating of Guest Additions for
Linux guests
Guest Control: Implemented ability to wait for and/or reboot the guest when updating
Guest Additions via VBoxManage
431
16 Change Log
• VBoxManage: Added Guest Control “waitrunlevel” sub-command to make it possible to
wait for a guest to reach a certain run level
• Windows hosts: Added experimental support of running autostarted VMs in session 0, to
allow running VMS even when a usser is not being logged in (disabled by default, please
consult the manual)
• macOS host: Dropped all kernel extensions. VirtualBox relies fully on the hypervisor and
vmnet frameworks provided by Apple now. At the moment the implementation lacks “In-
ternal Networking” functionality. This will be provided at a later date
• macOS host: Providing a Developer Preview package for systems with an Apple silicon CPU.
This is unsupported work in progress, and is known to have very modest performance
• Linux Guest Additions: Reworked guest screen re-size functionality, added basic integration
with some of guest Desktop Environments
• Devices: Implemented new 3D support based on DirectX 11 (and DXVK on non Windows
hosts)
• Devices: Added virtual IOMMU devices (Intel and AMD variant)
• Devices: Added virtual TPM 1.2 and 2.0 devices
• Devices: The EHCI and XHCI USB controller devices are now part of the open source base
package
• EFI: Added support for Secure Boot
• Debugging: Added experimental support for guest debugging through GDB and highly
experimental support for guest debugging through KD/WinDbg
In addition, the following items were fixed and/or added:
• OCI: Cloud networking functionality is enhanced for local VMs, now local VMs could be
connected to cloud networking
• GUI: Improved behavior of the virtual machine list and various VM related tools in case
multiple items are selected
• GUI: On available platforms, added a new option to disable the host’s screensaver
• GUI: Reworked global preferences, machine settings and the wizards to improve stability
and usability
• GUI: Improving mouse handling in multi-monitor case on X11 platform
• GUI: Medium enumeration engine was reworked to improve permormance
• GUI: NAT Network stuff was moved from global preferences to global Network Manager
tool
• GUI: Extension Pack Manager was moved from global preferences to global tools
• GUI: Improved overall accessibility
• GUI: Migrating to recent Qt versions
432
16 Change Log
16.11 Change Logs for Legacy Versions
To view the change log for a legacy version of VirtualBox see the documentation for the relevant
Oracle VM VirtualBox release.
Change logs are also available at:
https://www.virtualbox.org/wiki/Changelog.
433
17 Third-Party Materials and Licenses
Oracle VM VirtualBox incorporates materials from several Open Source software projects. There-
fore the use of these materials by Oracle VM VirtualBox 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.
The source code for the materials listed below as well as the rest of the Oracle VM VirtualBox
code which is released as open source are available at http://www.virtualbox.org , both as
tarballs for particular releases and as a live SVN repository.
17.1 Third-Party Materials
• Oracle VM VirtualBox contains portions of QEMU which is governed by the licenses in
chapter 17.2.5, X Consortium License (X11) (variant 1), page 459 and chapter 17.2.2, GNU
Lesser General Public License (LGPL), page 447 and
(C) 2003 Jocelyn Mayer
• Oracle VM VirtualBox contains code from the X Window System which is governed by the
license in chapter 17.2.5, X Consortium License (X11) (variant 1), page 459 and
• Oracle VM VirtualBox contains code from the BOCHS VGA BIOS which is governed by the
license in chapter 17.2.2, GNU Lesser General Public License (LGPL), page 447 and
• Oracle VM VirtualBox contains code from the BOCHS ROM BIOS which is governed by the
license in chapter 17.2.2, GNU Lesser General Public License (LGPL), page 447 and
• Oracle VM VirtualBox contains the zlib library which is governed by the license in chapter
17.2.7, zlib License, page 460 and
• Oracle VM VirtualBox contains OpenSSL 3.0 or later which is governed by the license in
chapter 17.2.8, Apache License v2, page 460 and
• Oracle VM VirtualBox contains OpenSSL before 3.0 which is governed by the license in
chapter 17.2.9, OpenSSL License, page 462 and
1998 Eric Young (eay@cryptsoft.com). This product includes software written by Tim
Hudson (tjh@cryptsoft.com).
434
17 Third-Party Materials and Licenses
Oracle VM VirtualBox may contain NSPR and XPCOM which is governed by the license in
chapter 17.2.3, Mozilla Public License (MPL), page 453 and
Oracle VM VirtualBox contains Slirp which is governed by the license in chapter 17.2.10,
Slirp License, page 463 and was written by Danny Gasparovski.
Oracle VM VirtualBox contains liblzf which is governed by the license in chapter 17.2.11,
liblzf License, page 463 and
Oracle VM VirtualBox may contain iPXE which is governed by the license in chapter 17.2.1,
GNU General Public License (GPL), page 444 and
Oracle VM VirtualBox contains code from Wine which is governed by the license in chapter
17.2.2, GNU Lesser General Public License (LGPL), page 447 and
Oracle VM VirtualBox contains code from lwIP which is governed by the license in chapter
17.2.13, lwIP License, page 464 and
Oracle VM VirtualBox contains libxml2 which is governed by the license in chapter 17.2.14,
libxml License, page 464 and
Oracle VM VirtualBox contains code from the gSOAP XML web services tools, which are
licensed under the license in chapter 17.2.15, gSOAP Public License Version 1.3a, page 465
and
Oracle VM VirtualBox contains libcurl which is governed by the license in chapter 17.2.16,
curl License, page 470 and
Oracle VM VirtualBox contains dnsproxy which is governed by the license in chapter 17.2.4,
MIT License, page 459 and
Oracle VM VirtualBox contains some code from libgd which is governed by the license in
chapter 17.2.17, libgd License, page 470 and
Joye (pierre@libgd.org). For complete copyright information, see the license.
Oracle VM VirtualBox contains code from the EFI Development Kit II (EDK II) which is
governed by the licenses in chapter 17.2.18, BSD License from Intel, page 471 and chapter
17.2.4, MIT License, page 459 and
435
17 Third-Party Materials and Licenses
Portions copyright (c) 2010, 2011, Apple Inc. All rights reserved.
Oracle VM VirtualBox contains libjpeg-turbo which is governed by the licenses in chapter
17.2.19, IJG (Independent JPEG Group) License, page 472 and chapter 17.2.20, libjpeg-turbo
Modified (3-clause) BSD License, page 472 and
Reserved.
Oracle VM VirtualBox may contain the libjpeg-turbo x86 SIMD extensions which is gov-
erned by the license in chapter 17.2.7, zlib License, page 460 and
Oracle VM VirtualBox may ship a copy of Qt which is governed by the license in chapter
17.2.2, GNU Lesser General Public License (LGPL), page 447 and
Oracle VM VirtualBox contains parts of the FreeBSD kernel which is governed by the license
in chapter 17.2.21, FreeBSD License, page 473 and
Oracle VM VirtualBox contains parts of the NetBSD kernel which is governed by the license
in chapter 17.2.22, NetBSD License, page 473 and
Oracle VM VirtualBox may contain code from the WebM VP8 Codec SDK which is governed
by the license in chapter 17.2.23, VPX License, page 474 and
Oracle VM VirtualBox may contain code from libvorbis (“Vorbis”) which is governed by the
license in chapter 17.2.24, Vorbis License, page 474 and
Monty <monty@xiph.org>
and the rest of the Xiph.org Foundation.
Oracle VM VirtualBox contains code from cURL which is governed by the license in chapter
17.2.25, curl License, page 475 and
Oracle VM VirtualBox contains documentation generated using the DocBook XML DTD
which is governed by the license in chapter 17.2.26, DocBook XML DTD License, page 475
and
Inc., Fujitsu Software Associates, Inc., ArborText, Inc., Fujitsu Software Corporation, Nor-
man Walsh, Sun Microsystems, Inc., and the Organization for the Advancement of Struc-
tured Information Standards (OASIS).
Oracle VM VirtualBox contains documentation generated using DocBook XSL Stylesheets
which is governed by the license in chapter 17.2.27, DocBook XSL Stylesheets License, page
475 and
436
17 Third-Party Materials and Licenses
Oracle VM VirtualBox contains code from the ACPI Component Architecture (ACPICA)
project which is governed by the license in chapter 17.2.28, Intel ACPI Component Architec-
ture (ACPICA) License, page 476 and
Oracle VM VirtualBox contains code from the Independent JPEG (IJG) Group which is
governed by the license in chapter 17.2.19, IJG (Independent JPEG Group) License, page
472 and
Oracle VM VirtualBox contains code from the Linux kernel which is governed by the license
in chapter 17.2.1, GNU General Public License (GPL), page 444
Oracle VM VirtualBox contains makeself which is governed by the license in chapter 17.2.1,
GNU General Public License (GPL), page 444
Oracle VM VirtualBox contains code from the Mesa 3D graphics library which is governed
by the default Mesa license in chapter 17.2.32, Default Mesa 3D Graphics Library License,
page 479 and
tion, see the license.
Oracle VM VirtualBox contains code from the Microsoft Windows Driver Kit (WDK) which
is governed by the license in chapter 17.2.33, Microsoft Software License, page 481 and
tion, see the license.
Oracle VM VirtualBox contains code from MoltenVK which is governed by the license in
chapter 17.2.8, Apache License v2, page 460 and
Oracle VM VirtualBox contains code from the NSIS AccessControl plugin which is governed
by the license in chapter 17.2.7, zlib License, page 460 and
mann <mathias@taschenorakel.de>
Oracle VM VirtualBox contains code from the NSIS NsProcess plugin which is governed by
the license in chapter 17.2.7, zlib License, page 460 and
Oracle VM VirtualBox contains code from the Khronos OpenGL Registry which is governed
by the license in chapter 17.2.29, Khronos License, page 477 and
Oracle VM VirtualBox contains code from Python which is governed by the license in chap-
ter 17.2.34, Python License, page 485 and
Centrum. All rights reserved.
Oracle VM VirtualBox contains code from the SPIR-V Registry which is governed by the
license in chapter 17.2.29, Khronos License, page 477 and
437
17 Third-Party Materials and Licenses
Oracle VM VirtualBox contains code from SPIRV-Cross which is governed by the license in
chapter 17.2.8, Apache License v2, page 460 and
Oracle VM VirtualBox contains code from the SPIR-V Tools project which is governed by
the license in chapter 17.2.8, Apache License v2, page 460 and
vanced Micro Devices, Inc. All rights reserved.
Oracle VM VirtualBox contains code from Berkeley SoftFloat which is governed by the
license in chapter 17.2.35, License for Berkeley SoftFloat Release 3e, page 488 and
of California. All rights reserved.
Oracle VM VirtualBox contains code from the Vulkan Header files and API registry which is
governed by the license in chapter 17.2.8, Apache License v2, page 460 and
Oracle VM VirtualBox contains code from the Vulkan tools which is governed by the license
in chapter 17.2.8, Apache License v2, page 460 and
Oracle VM VirtualBox contains code from Glslang which is governed by the licenses in
chapter 17.2.36, BSD 3-Clause License for Glslang, page 489 and chapter 17.2.37, BSD 2-
Clause License for Glslang, page 489 and chapter 17.2.4, MIT License, page 459 and chapter
17.2.8, Apache License v2, page 460 and chapter 17.2.38, GNU General Public License (GPL)
License with Bison Exception for Glslang, page 490 and chapter 17.2.125, NVIDIA License for
Glslang, page 529 and chapter 17.2.126, The Khronos Group Inc. License for Glslang, page
530 and
rights reserved.
Oracle VM VirtualBox contains code from the EGL-Registry repository which is governed
by the licenses in chapter 17.2.8, Apache License v2, page 460 and chapter 17.2.127, The
Khronos Group Inc. License for the EGL Registry Repository, page 530 and
Oracle VM VirtualBox contains code from the Wayland project which is governed by the
license in chapter 17.2.4, MIT License, page 459 and
Oracle VM VirtualBox contains code from the WiX toolset which is governed by the license
in chapter 17.2.39, WiX Toolset License, page 497 and
438
17 Third-Party Materials and Licenses
Oracle VM VirtualBox contains code from the XFree86-VidModeExtension which is gov-
erned by the license in chapter 17.2.40, XFree86 License (variant 1), page 499 and
Oracle VM VirtualBox contains code from the Advanced Linux Sound Architecture (ALSA)
project which is governed by the license in chapter 17.2.2, GNU Lesser General Public License
(LGPL), page 447 and
Oracle VM VirtualBox contains code from the cereal C++11 serialization library which is
governed by the license in chapter 17.2.42, Cereal License, page 499 and
reserved.
Oracle VM VirtualBox contains code from the X Composite Extension which is governed
by the licenses in chapter 17.2.5, X Consortium License (X11) (variant 1), page 459 and
chapter 17.2.43, Keith Packard License, page 500 and
Keith Packard, Noah Levitt
Oracle VM VirtualBox contains code from the X Damage Extension which is governed by
the license in chapter 17.2.43, Keith Packard License, page 500 and
Oracle VM VirtualBox contains code from the X Direct Rendering Infrastructure (DRI) 2
Extension which is governed by the license in chapter 17.2.44, X Direct Rendering Infras-
tructure (DRI) 2 Extension License, page 500 and
Oracle VM VirtualBox contains code from the X Fixes Extension which is governed by the
licenses in chapter 17.2.5, X Consortium License (X11) (variant 1), page 459 and chapter
17.2.43, Keith Packard License, page 500 and
Oracle VM VirtualBox contains code from the X Fonts Extension which is governed by the
licenses in chapter 17.2.45, Network Computing Devices and DEC License, page 501 and
439
17 Third-Party Materials and Licenses
chapter 17.2.46, MIT Open Group Variant License, page 501 and chapter 17.2.47, Digital
Equipment Corporation License (variant 1), page 501 and chapter 17.2.40, XFree86 License
(variant 1), page 499 and
Project Inc.
Oracle VM VirtualBox contains code from the X OpenGL Extension (GLX) which is governed
by the license in chapter 17.2.30, SGI Free Software License B, page 478 and
Oracle VM VirtualBox contains code from the X Input Extension which is governed by the
licenses in chapter 17.2.46, MIT Open Group Variant License, page 501 and chapter 17.2.51,
Hewlett-Packard License (variant 1), page 503 and
Palo Alto, California.
Oracle VM VirtualBox contains code from the X Keyboard Extension which is governed by
the license in chapter 17.2.55, Silicon Graphics License, page 504 and
Oracle VM VirtualBox contains code from the X Resize and Rotate Extension (RandR) Ex-
tension which is governed by the license in chapter 17.2.56, X Resize and Rotate Extension
(RandR) License, page 504 and
Oracle VM VirtualBox contains code from the X Rendering Extension which is governed by
the license in chapter 17.2.57, SuSE License, page 505 and
Oracle VM VirtualBox contains code from the X XExt Extension which is governed by the
licenses in chapter 17.2.46, MIT Open Group Variant License, page 501 and chapter 17.2.55,
Silicon Graphics License, page 504 and chapter 17.2.58, Network Computing Devices (NCD)
License (variant 1), page 505 and chapter 17.2.52, Hewlett-Packard License (variant 2),
page 503 and chapter 17.2.48, Digital Equipment Corporation License (variant 2), page 502
and chapter 17.2.59, Network Computing Devices (NCD) License (variant 2), page 505 and
chapter 17.2.61, Digital Equipment Corporation and Olivetti Research Limited License, page
506 and chapter 17.2.53, Hewlett-Packard License (variant 3), page 503 and chapter 17.2.4,
MIT License, page 459 and chapter 17.2.5, X Consortium License (X11) (variant 1), page 459
and
Packard Corporation
Oracle VM VirtualBox contains code from the XFree86 Direct Rendering Infrastructure
(DRI) Extension which is governed by the license in chapter 17.2.4, MIT License, page
459 and
Systems, Inc.; All Rights Reserved.
440
17 Third-Party Materials and Licenses
Oracle VM VirtualBox contains code from the libXcomposite library which is governed by
the licenses in chapter 17.2.43, Keith Packard License, page 500 and chapter 17.2.4, MIT
License, page 459 and
ates. All rights reserved.
Oracle VM VirtualBox contains code from the libXdamage library which is governed by the
licenses in chapter 17.2.43, Keith Packard License, page 500 and
Oracle VM VirtualBox contains code from the libXext library which is governed by the
licenses in chapter 17.2.46, MIT Open Group Variant License, page 501 and chapter 17.2.55,
Silicon Graphics License, page 504 and chapter 17.2.58, Network Computing Devices (NCD)
License (variant 1), page 505 and chapter 17.2.52, Hewlett-Packard License (variant 2),
page 503 and chapter 17.2.48, Digital Equipment Corporation License (variant 2), page 502
and chapter 17.2.61, Digital Equipment Corporation and Olivetti Research Limited License,
page 506 and chapter 17.2.53, Hewlett-Packard License (variant 3), page 503 and chapter
17.2.4, MIT License, page 459 and chapter 17.2.62, X Consortium, DEC, Intergraph, Silicon
Graphics, and Hewlett-Packard License, page 506 and
1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts, and Olivetti Re-
and Hewlett-Packard Company.
Oracle VM VirtualBox contains code from the libXfixes library which is governed by the
license in chapter 17.2.43, Keith Packard License, page 500 and
Oracle VM VirtualBox contains code from the X libpciaccess library which is governed by
the licenses in chapter 17.2.4, MIT License, page 459 and chapter 17.2.63, Sun Microsystems
License, page 506 and chapter 17.2.64, X libpciaccess Library License, page 507 and chapter
17.2.40, XFree86 License (variant 1), page 499 and
Oracle VM VirtualBox contains code from the libxshmfence library which is governed by
the license in chapter 17.2.65, X libxshmfence License, page 507 and
Oracle VM VirtualBox contains code from the pixman library which is governed by the
license in chapter 17.2.4, MIT License, page 459 and
441
17 Third-Party Materials and Licenses
Oracle VM VirtualBox contains code from the xf86-input-mouse driver which is governed
by the licenses in chapter 17.2.66, X xf86-input-mouse driver License, page 507 and chapter
17.2.67, Kazutaka YOKOTA License, page 508 and
Oracle VM VirtualBox contains code from the xf86-video-vesa driver which is governed by
the license in chapter 17.2.68, Conectiva License, page 508 and
Pereira de Andrade <pcpa@conectiva.com.br> David Dawes <dawes@xfree86.org>
Oracle VM VirtualBox contains code from the Xorg X server which is governed by the li-
censes in chapter 17.2.4, MIT License, page 459 and chapter 17.2.40, XFree86 License (vari-
ant 1), page 499 and chapter 17.2.41, XFree86 License (variant 2), page 499 and chapter
17.2.46, MIT Open Group Variant License, page 501 and chapter 17.2.57, SuSE License,
page 505 and chapter 17.2.47, Digital Equipment Corporation License (variant 1), page
501 and chapter 17.2.50, Digital Equipment Corporation and QuarterDeck Office Systems
License, page 502 and chapter 17.2.49, Digital Equipment Corporation License (variant 3),
page 502 and chapter 17.2.48, Digital Equipment Corporation License (variant 2), page 502
and chapter 17.2.30, SGI Free Software License B, page 478 and chapter 17.2.52, Hewlett-
Packard License (variant 2), page 503 and chapter 17.2.51, Hewlett-Packard License (vari-
ant 1), page 503 and chapter 17.2.69, Red Hat and SuSE License, page 509 and chapter
17.2.70, Red Hat License, page 509 and chapter 17.2.71, X Consortium and Red Hat License,
page 509 and chapter 17.2.72, Precision Insight License, page 510 and chapter 17.2.73, VA
Linux and IBM License, page 510 and chapter 17.2.74, IBM License, page 511 and chapter
17.2.75, Metro Link License (variant 1), page 511 and chapter 17.2.76, Metro Link License
(variant 2), page 511 and chapter 17.2.77, Metro Link License (variant 3), page 512 and
chapter 17.2.68, Conectiva License, page 508 and chapter 17.2.78, NVIDIA License, page
512 and chapter 17.2.79, Vrije Universiteit License, page 512 and chapter 17.2.80, Concur-
rent Computer Corporation License, page 513 and chapter 17.2.81, Nokia License, page 513
and chapter 17.2.82, Adobe License, page 513 and chapter 17.2.60, Network Computing
Devices (NCD) License (variant 3), page 506 and chapter 17.2.83, University of California
License (variant 1), page 514 and chapter 17.2.85, OMRON Corporation and Data General
Corporation License, page 515 and chapter 17.2.43, Keith Packard License, page 500 and
chapter 17.2.86, X11 Legacy License (variant 1), page 515 and chapter 17.2.100, Davor
Matic License, page 521 and chapter 17.2.101, Harold L Hunt II License, page 521 and
chapter 17.2.102, Thomas Roell License, page 521 and chapter 17.2.103, Thomas Roell and
David Wexelblat License, page 522 and chapter 17.2.104, Thomas Roell and SGCS (Snitily
Graphics Consulting Services) License, page 522 and chapter 17.2.105, Alan Hourihane Li-
cense, page 522 and chapter 17.2.106, Kaleb S. Keithley License, page 523 and chapter
17.2.107, Matthieu Herrb License, page 523 and chapter 17.2.108, Egbert Eich License, page
523 and chapter 17.2.109, David Wexelblat License, page 524 and chapter 17.2.110, Orest
442
17 Third-Party Materials and Licenses
Zborowski and David Wexelblat License, page 524 and chapter 17.2.111, Orest Zborowski
and David Dawes License, page 525 and chapter 17.2.112, Frederic Lepied License, page 525
and chapter 17.2.113, Rich Murphey and David Wexelblat License, page 525 and chapter
17.2.114, Rich Murphey and David Dawes License, page 526 and chapter 17.2.115, Anders
Carlsson License, page 526 and chapter 17.2.116, Eric Anholt License, page 526 and chapter
17.2.117, Todd C. Miller License, page 527 and chapter 17.2.118, Philip Blundell License,
page 527 and chapter 17.2.40, XFree86 License (variant 1), page 499 and chapter 17.2.87,
X11 Legacy License (variant 2), page 515 and chapter 17.2.88, X11 Legacy License (variant
3), page 516 and chapter 17.2.89, X11 Legacy License (variant 4), page 516 and chapter
17.2.90, X11 Legacy License (variant 5), page 517 and chapter 17.2.91, X11 Legacy License
(variant 6), page 517 and chapter 17.2.92, X11 Legacy License (variant 7), page 518 and
chapter 17.2.93, X11 Legacy License (variant 8), page 518 and chapter 17.2.94, X11 Legacy
License (variant 9), page 518 and chapter 17.2.96, X11 Legacy License (variant 11), page
519 and chapter 17.2.119, Marc Aurele La France License, page 527 and chapter 17.2.97,
X11 Legacy License (variant 12), page 519 and chapter 17.2.120, J. Kean Johnston License,
page 528 and chapter 17.2.121, Jakub Jelinek License, page 528 and chapter 17.2.122,
UCHIYAMA Yasushi License, page 528 and chapter 17.2.98, X11 Legacy License (variant 13),
page 520 and chapter 17.2.99, X11 Legacy License (variant 14), page 520 and chapter
17.2.123, OpenedHand Ltd License, page 529 and chapter 17.2.84, University of California
License (variant 2), page 514 and
gen. For complete copyright information, see the individual licenses.
Oracle VM VirtualBox contains code from the X Window System Core Protocol which is gov-
erned by the licenses in chapter 17.2.124, Oracle License, page 529 and chapter 17.2.46,
MIT Open Group Variant License, page 501 and chapter 17.2.47, Digital Equipment Corpo-
ration License (variant 1), page 501 and chapter 17.2.54, Hewlett-Packard License (variant
4), page 504 and chapter 17.2.40, XFree86 License (variant 1), page 499 and
Oracle VM VirtualBox contains code from the xset utility which is governed by the license
in chapter 17.2.46, MIT Open Group Variant License, page 501 and
Oracle VM VirtualBox contains code from the libdrm library which is governed by the
license in chapter 17.2.4, MIT License, page 459 and
Systems, Inc., Sunnyvale, California. All Rights Reserved.
Oracle VM VirtualBox contains code from the libdevmapper library which is governed by
the license in chapter 17.2.1, GNU General Public License (GPL), page 444 and
reserved.
443
17 Third-Party Materials and Licenses
• Oracle VM VirtualBox contains code from DXVK Native which is governed by the license in
chapter 17.2.7, zlib License, page 460 and
• Oracle VM VirtualBox contains code from PulseAudio which is governed by the license in
chapter 17.2.2, GNU Lesser General Public License (LGPL), page 447 and
• Oracle VM VirtualBox contains code from libtpms which is governed by the license in chap-
ter 17.2.128, The IBM Corporation License for the libtpms library, page 531 and
2016
• Oracle VM VirtualBox contains code from libssh which is governed by the license in chapter
17.2.2, GNU Lesser General Public License (LGPL), page 447 and
Schneider <asn@cryptomilk.org>
17.2 Third-Party Licenses
17.2.1 GNU General Public License (GPL)
GNU GENERAL PUBLIC LICENSE Version 2, June 1991
51 Franklin St, 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 under-
stands 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
444
17 Third-Party Materials and Licenses
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 trans-
lated 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.
445
17 Third-Party Materials and Licenses
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 correspond-
ing 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 Pro-
gram 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 circum-
stance, the balance of the section is intended to apply and the section as a whole is intended to
apply in other circumstances.
446
17 Third-Party Materials and Licenses
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 pro-
tecting 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 num-
ber 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 copy-
righted 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 OTH-
ERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE
THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IM-
PLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABIL-
ITY 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 DEFEC-
TIVE, 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 RE-
DISTRIBUTE 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 PRO-
GRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
17.2.2 GNU Lesser General Public License (LGPL)
GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
447
17 Third-Party Materials and Licenses
MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
[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.]
Preamble
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.
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.
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.
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 responsibili-
ties for you if you distribute copies of the library or if you modify it.
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.
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.
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.
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.
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 li-
braries, 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.
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.
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.
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
448
17 Third-Party Materials and Licenses
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.
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.
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 where-
withal to run that program using a modified version of the Library.
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.
GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRI-
BUTION AND MODIFICATION
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”.
A “library” means a collection of software functions and/or data prepared so as to be conve-
niently linked with application programs (which use some of those functions and data) to form
executables.
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, ei-
ther verbatim or with modifications and/or translated straightforwardly into another language.
(Hereinafter, translation is included without limitation in the term “modification”.)
“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.
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.
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.
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 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:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices stating that you changed the
files and the date of any change.
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.
449
17 Third-Party Materials and Licenses
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.
(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.)
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.
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.
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.
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.
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.
This option is useful when you wish to copy part of the code of the Library into a program that
is not a library.
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.
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.
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.
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.
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
450
17 Third-Party Materials and Licenses
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.
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.
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.
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:
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.)
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.
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.
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.
e) Verify that the user has already received a copy of these materials or that you have already
sent this user a copy.
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.
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.
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:
451
17 Third-Party Materials and Licenses
a) Accompany the combined library with a copy of the same work based on the Library, uncom-
bined with any other library facilities. This must be distributed under the terms of the Sections
above.
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.
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.
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.
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.
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.
If any portion of this section is held invalid or unenforceable under any particular circum-
stance, 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 protect-
ing 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 dis-
tributed 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.
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.
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.
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
452
17 Third-Party Materials and Licenses
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.
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.
NO WARRANTY
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 OTHER-
WISE 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 PER-
FORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
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 REDIS-
TRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUD-
ING 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.
END OF TERMS AND CONDITIONS
17.2.3 Mozilla Public License (MPL)
MOZILLA PUBLIC LICENSE Version 1.1
1. Definitions.
1.0.1. “Commercial Use” means distribution or otherwise making the Covered Code available
to a third party.
1.1. “Contributor” means each entity that creates or contributes to the creation of Modifica-
tions.
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.
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.
1.4. “Electronic Distribution Mechanism” means a mechanism generally accepted in the soft-
ware development community for the electronic transfer of data.
1.5. “Executable” means Covered Code in any form other than Source Code.
1.6. “Initial Developer” means the individual or entity identified as the Initial Developer in the
Source Code notice required by Exhibit A.
1.7. “Larger Work” means a work which combines Covered Code or portions thereof with code
not governed by the terms of this License.
1.8. “License” means this document.
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.
453
17 Third-Party Materials and Licenses
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:
A. Any addition to or deletion from the contents of a file containing Original Code or previous
Modifications.
B. Any new file that contains any part of the Original Code or previous Modifications.
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.
1.10.1. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, in-
cluding without limitation, method, process, and apparatus claims, in any patent Licensable by
grantor.
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 Contribu-
tor’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.
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.
2. Source Code License.
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:
(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
(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).
(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.
(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.
2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor
hereby grants You a world-wide, royalty-free, non-exclusive license
(a) under intellectual property rights (other than patent or trademark) Licensable by Con-
tributor, 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
(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).
454
17 Third-Party Materials and Licenses
(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.
(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.
3. Distribution Obligations.
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.
3.2. Availability of Source Code. Any Modification which You create or to which You con-
tribute 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 partic-
ular 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.
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.
3.4. Intellectual Property Matters
(a) Third Party Claims. If Contributor has knowledge that a license under a third party’s in-
tellectual 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 re-
cipient 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.
(b) Contributor APIs. If Contributor’s Modifications include an application programming in-
terface 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.
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
455
17 Third-Party Materials and Licenses
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.
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.
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.
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 max-
imum 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 dis-
tributions 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.
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.
6. Versions of the License.
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.
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.
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 Li-
cense), 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 (ex-
cept 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.)
7. DISCLAIMER OF WARRANTY.
456
17 Third-Party Materials and Licenses
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WAR-
RANTY 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 CONTRIB-
UTOR) 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.
8. TERMINATION.
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.
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:
(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.
(b) any software, hardware, or device, other than such Participant’s Contributor Version, di-
rectly 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, dis-
tributed, or had made, Modifications made by that Participant.
8.3. If You assert a patent infringement claim against Participant alleging that such Partici-
pant’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.
8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agree-
ments (excluding distributors and resellers) which have been validly granted by You or any
distributor hereunder prior to termination shall survive termination.
9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THE-
ORY, 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 IN-
CLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE,
COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAM-
AGES 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 EX-
TENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT AL-
LOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
457
17 Third-Party Materials and Licenses
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.
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.
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 dis-
tribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed
to constitute any admission of liability.
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.
EXHIBIT A -Mozilla Public License.
“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
Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WAR-
RANTY OF ANY KIND, either express or implied. See the License for the specific language gov-
erning rights and limitations under the License.
The Original Code is
______________________________________
The Initial Developer of the Original Code is
________________________. Portions created
by
______________________
_______________________. All Rights
Reserved.
Contributor(s):
______________________________________
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.“
[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.]
458
17 Third-Party Materials and Licenses
17.2.4 MIT License
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, in-
cluding 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:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LI-
ABILITY, 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.
17.2.5 X Consortium License (X11) (variant 1)
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, in-
cluding 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:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LI-
ABILITY, 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.
17.2.6 X Consortium License (X11) (variant 2)
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 restric-
tion, 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:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X
CONSORTIUM 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.
Except as contained in this notice, the name of the X Consortium shall not be used in advertis-
ing or otherwise to promote the sale, use or other dealings in this Software without prior written
authorization from the X Consortium.
459
17 Third-Party Materials and Licenses
17.2.7 zlib License
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.
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:
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.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as
being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly
Mark Adler
jloup@gzip.org
madler@alumni.caltech.edu
17.2.8 Apache License v2
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
“License” shall mean the terms and conditions for use, reproduction, and distribution as de-
fined by Sections 1 through 9 of this document.
“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is
granting the License.
“Legal Entity” shall mean the union of the acting entity and all other entities that control, are
controlled by, or are under common control with that entity. For the purposes of this definition,
“control” means (i) the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by
this License.
“Source” form shall mean the preferred form for making modifications, including but not
limited to software source code, documentation source, and configuration files.
“Object” form shall mean any form resulting from mechanical transformation or translation of
a Source form, including but not limited to compiled object code, generated documentation, and
conversions to other media types.
“Work” shall mean the work of authorship, whether in Source or Object form, made available
under the License, as indicated by a copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
“Derivative Works” shall mean any work, whether in Source or Object form, that is based on
(or derived from) the Work and for which the editorial revisions, annotations, elaborations, or
other modifications represent, as a whole, an original work of authorship. For the purposes of
this License, Derivative Works shall not include works that remain separable from, or merely link
(or bind by name) to the interfaces of, the Work and Derivative Works thereof.
“Contribution” shall mean any work of authorship, including the original version of the Work
and any modifications or additions to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or
Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this
definition, “submitted” means any form of electronic, verbal, or written communication sent to
the Licensor or its representatives, including but not limited to communication on electronic
mailing lists, source code control systems, and issue tracking systems that are managed by, or
on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding
communication that is conspicuously marked or otherwise designated in writing by the copyright
owner as “Not a Contribution.“
460
17 Third-Party Materials and Licenses
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a
Contribution has been received by Licensor and subsequently incorporated within the Work.
Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly
perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contribu-
tor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevo-
cable (except as stated in this section) patent license to make, have made, use, offer to sell, sell,
import, and otherwise transfer the Work, where such license applies only to those patent claims
licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by
combination of their Contribution(s) with the Work to which such Contribution(s) was submit-
ted. If You institute patent litigation against any entity (including a cross-claim or counterclaim
in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes
direct or contributory patent infringement, then any patent licenses granted to You under this
License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works
thereof in any medium, with or without modifications, and in Source or Object form, provided
that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
and
(b) You must cause any modified files to carry prominent notices stating that You changed the
files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copy-
right, patent, trademark, and attribution notices from the Source form of the Work, excluding
those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative
Works that You distribute must include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not pertain to any part of the Deriva-
tive Works, in at least one of the following places: within a NOTICE text file distributed as part
of the Derivative Works; within the Source form or documentation, if provided along with the
Derivative Works; or, within a display generated by the Derivative Works, if and wherever such
third-party notices normally appear. The contents of the NOTICE file are for informational pur-
poses only and do not modify the License. You may add Your own attribution notices within
Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the
Work, provided that such additional attribution notices cannot be construed as modifying the
License.
You may add Your own copyright statement to Your modifications and may provide additional
or different license terms and conditions for use, reproduction, or distribution of Your modi-
fications, or for any such Derivative Works as a whole, provided Your use, reproduction, and
distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution in-
tentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms
and conditions of this License, without any additional terms or conditions. Notwithstanding the
above, nothing herein shall supersede or modify the terms of any separate license agreement you
may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for reasonable and customary
use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor
provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITH-
OUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, with-
out limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABIL-
461
17 Third-Party Materials and Licenses
ITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any risks associated with Your
exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including
negligence), contract, or otherwise, unless required by applicable law (such as deliberate and
grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages,
including any direct, indirect, special, incidental, or consequential damages of any character
arising as a result of this License or out of the use or inability to use the Work (including but not
limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any
and all other commercial damages or losses), even if such Contributor has been advised of the
possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative
Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty,
indemnity, or other liability obligations and/or rights consistent with this License. However, in
accepting such obligations, You may act only on Your own behalf and on Your sole responsibility,
not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each
Contributor harmless for any liability incurred by, or claims asserted against, such Contributor
by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
17.2.9 OpenSSL License
This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The imple-
mentation was written so as to conform with Netscape’s SSL.
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).
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.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the copyright notice, this list of conditions and
the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided with
the distribution.
3. All advertising materials mentioning features or use of this software must display the fol-
lowing 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 :-).
4. If you include any Windows specific code (or a derivative thereof) from the apps direc-
tory (application code) you must include an acknowledgement: “This product includes software
written by Tim Hudson (tjh@cryptsoft.com)“
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG “AS IS” AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDEN-
TAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROF-
462
17 Third-Party Materials and Licenses
ITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
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.]
17.2.10 Slirp License
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided with
the distribution.
3. 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 permis-
sion.
THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, IN-
CLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DANNY GAS-
PAROVSKI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
CIAL, 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 OTH-
ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
17.2.11 liblzf License
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided with
the distribution.
3. The name of the author may not be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR “AS IS” AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEM-
PLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS IN-
TERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CON-
TRACT, 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.
463
17 Third-Party Materials and Licenses
17.2.12 libpng License
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.
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:
1. The origin of this source code must not be misrepresented.
2. Altered versions must be plainly marked as such and must not be misrepresented as being
the original source.
distribution.
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.
17.2.13 lwIP License
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided with
the distribution.
3. The name of the author may not be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR “AS IS” AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEM-
PLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS IN-
TERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CON-
TRACT, 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.
17.2.14 libxml License
Except where otherwise noted in the source code (e.g. the files hash.c, list.c and the trio files,
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 restric-
tion, 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:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Software.
464
17 Third-Party Materials and Licenses
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS 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 CON-
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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.
The file hash.c is:
The file list.c is:
The trio files are:
The license for hash.c, list.c, and the trio files is:
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.
THIS SOFTWARE IS PROVIDED “AS IS” AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MER-
CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND CONTRIB-
UTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
17.2.15 gSOAP Public License Version 1.3a
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).
1 DEFINITIONS
1.1. “Contributor” means each entity that creates or contributes to the creation of Modifica-
tions.
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.
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.
1.4. “Electronic Distribution Mechanism” means a mechanism generally accepted in the soft-
ware development community for the electronic transfer of data.
1.5. “Executable” means Covered Code in any form other than Source Code.
1.6. “Initial Developer” means the individual or entity identified as the Initial Developer in the
Source Code notice required by Exhibit A.
1.7. “Larger Work” means a work which combines Covered Code or portions thereof with code
not governed by the terms of this License.
1.8. “License” means this document.
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.
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:
A. Any addition to or deletion from the contents of a file containing Original Code or previous
Modifications.
B. Any new file that contains any part of the Original Code, or previous Modifications.
465
17 Third-Party Materials and Licenses
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.
1.10.1. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, in-
cluding without limitation, method, process, and apparatus claims, in any patent Licensable by
grantor.
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 Contribu-
tor’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.
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.
2 SOURCE CODE LICENSE.
2.1. The Initial Developer Grant.
The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, sub-
ject to third party intellectual property claims:
(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
(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.
(c)
(d)
2.2. Contributor Grant.
Subject to third party intellectual property claims, each Contributor hereby grants You a world-
wide, royalty-free, non-exclusive license
(a) under intellectual property rights (other than patent or trademark) Licensable by Con-
tributor, 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
(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).
(c)
(d)
3 DISTRIBUTION OBLIGATIONS.
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
466
17 Third-Party Materials and Licenses
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.
3.2. Availability of Source Code.
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.
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.
3.4. Intellectual Property Matters.
(a) Third Party Claims. If Contributor has knowledge that a license under a third party’s in-
tellectual 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 re-
cipient 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.
(b) Contributor APIs. If Contributor’s Modifications include an application programming in-
terface 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.
(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.
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.
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.
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.
467
17 Third-Party Materials and Licenses
3.8. Restrictions. You may not remove any product identification, copyright, proprietary no-
tices or labels from gSOAP.
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.
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.
6 VERSIONS OF THE LICENSE.
6.1. New Versions.
Grantor may publish revised and/or new versions of the License from time to time. Each
version will be given a distinguishing version number.
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.
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 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.)
7 DISCLAIMER OF WARRANTY.
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WAR-
RANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTIC-
ULAR 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 SOFT-
WARE 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, INCIDEN-
TAL, 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 LIMI-
TATION ON DAMAGES INCLUDES, BUT IS NOT LIMITED TO, DAMAGES FOR LOSS OF GOOD-
WILL, 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 EQUIP-
MENT IN HAZARDOUS ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR FACILITIES, AIR-
CRAFT NAVIGATION OR CONTROL, OR LIFE-CRITICAL APPLICATIONS. THE AUTHORS EX-
468
17 Third-Party Materials and Licenses
PRESSLY DISCLAIM ANY LIABILITY RESULTING FROM USE OF THE SOFTWARE IN ANY SUCH
ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RE-
SPECT 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 WAR-
RANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8 TERMINATION.
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.
8.2.
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.
8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agree-
ments (excluding distributors and resellers) which have been validly granted by You or any
distributor hereunder prior to termination shall survive termination.
9 LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUD-
ING 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, INCIDEN-
TAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITA-
TION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MAL-
FUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMI-
TATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RE-
SULTING 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.
10 U.S. GOVERNMENT END USERS.
11 MISCELLANEOUS.
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.
EXHIBIT A.
“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 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
469
17 Third-Party Materials and Licenses
express or implied. See the License for the specific language governing rights and limitations
under the License.
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, stld-
eque.h, stllist.h, stlvector.h, stlset.h.
The Initial Developer of the Original Code is Robert A. van Engelen. Portions created by
Rights Reserved.
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.]
EXHIBIT B.
“Part of the software embedded in this product is gSOAP software. Portions created by gSOAP
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, PROCURE-
MENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSI-
NESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARIS-
ING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBIL-
ITY OF SUCH DAMAGE.“
17.2.16 curl License
COPYRIGHT AND PERMISSION NOTICE
All rights reserved.
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.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS 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 OTH-
ERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be used in advertis-
ing or otherwise to promote the sale, use or other dealings in this Software without prior written
authorization of the copyright holder.
17.2.17 libgd License
Credits and license terms:
In order to resolve any possible confusion regarding the authorship of gd, the following copy-
right statement covers all of the authors who have required such a statement. If you are aware
of any oversights in this copyright notice, please contact Pierre-A. Joye who will be pleased to
correct them.
470
17 Third-Party Materials and Licenses
Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by
Cold Spring Harbor Laboratory. Funded under Grant P41-RR02188 by the National Institutes of
Health.
Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Boutell.Com,
Inc.
Portions relating to GD2 format copyright 1999, 2000, 2001, 2002, 2003, 2004 Philip Warner.
Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003, 2004 Greg Roelofs.
Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002, 2003, 2004 John Ellson (ell-
son@graphviz.org).
Portions relating to gdft.c copyright
2001,
2002,
2003,
2004
John Ellson (ell-
son@graphviz.org).
Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Pierre-Alain Joye
(pierre@libgd.org).
Portions relating to JPEG and to color quantization copyright 2000, 2001, 2002, 2003, 2004,
Doug Becker and copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004 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.
Portions relating to GIF compression copyright 1989 by Jef Poskanzer and David Rowley, with
modifications for thread safety by Thomas Boutell.
Portions relating to GIF decompression copyright 1990, 1991, 1993 by David Koblas, with
modifications for thread safety by Thomas Boutell.
Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004 Maurice Szmurlo and
Johan Van den Brande.
Portions relating to GIF animations copyright 2004 Jaakko HyvÃd’tti (jaakko.hyvatti@iki.fi)
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 sup-
porting documentation.
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.
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.
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.
17.2.18 BSD License from Intel
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
• 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.
471
17 Third-Party Materials and Licenses
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 LI-
ABLE 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.
17.2.19 IJG (Independent JPEG Group) License
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 soft-
ware is provided “AS IS”, and you, its user, assume the entire risk as to its quality and accuracy.
This software is copyright (C) 1991-2021, Thomas G. Lane, Guido Vollbeding. All Rights
Reserved except as specified below.
Permission is hereby granted to use, copy, modify, and distribute this software (or portions
thereof) for any purpose, without fee, subject to these conditions:
(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.
(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”.
(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.
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.
Permission is NOT granted for the use of any IJG author’s name or company name in adver-
tising 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”.
We specifically permit and encourage the use of this software as the basis of commercial prod-
ucts, provided that all warranty or liability claims are assumed by the product vendor.
17.2.20 libjpeg-turbo Modified (3-clause) BSD License
SzathmÃary. All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
3. Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS
IS”, AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
472
17 Third-Party Materials and Licenses
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSE-
QUENTIAL 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.
17.2.21 FreeBSD License
The compilation of software known as FreeBSD is distributed under the following terms:
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
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 DIS-
CLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DI-
RECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (IN-
CLUDING, 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 (IN-
CLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those of the au-
thors and should not be interpreted as representing official policies, either expressed or implied,
of the FreeBSD Project.
17.2.22 NetBSD License
This code is derived from software contributed to The NetBSD Foundation by
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 PUR-
POSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LI-
ABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
473
17 Third-Party Materials and Licenses
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.
17.2.23 VPX License
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
• 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.
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 LI-
ABLE 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.
17.2.24 Vorbis License
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of con-
ditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
• Neither the name of the Xiph.org Foundation nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM-
PLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
474
17 Third-Party Materials and Licenses
(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 (IN-
CLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17.2.25 curl License
THANKS file.
All rights reserved.
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.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS 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 OTH-
ERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be used in advertis-
ing or otherwise to promote the sale, use or other dealings in this Software without prior written
authorization of the copyright holder.
17.2.26 DocBook XML DTD License
Fujitsu Software Corporation, Norman Walsh, Sun Microsystems, Inc., and the Organization for
the Advancement of Structured Information Standards (OASIS).
$Id: user_ThirdParty.xml 155244 2023-01-17 14:15:46Z bird $
Permission to use, copy, modify and distribute the DocBook XML DTD and its accompanying
documentation for any purpose and without fee is hereby granted in perpetuity, provided that
the above copyright notice and this paragraph appear in all copies. The copyright holders make
no representation about the suitability of the DTD for any purpose. It is provided “as is” without
expressed or implied warranty.
If you modify the DocBook DTD in any way, except for declaring and referencing additional sets
of general entities and declaring additional notations, label your DTD as a variant of DocBook.
See the maintenance documentation for more information.
Please direct all questions, bug reports, or suggestions for changes to the docbook@lists.oasis-
open.org mailing list. For more information, see http://www.oasis-open.org/docbook/.
17.2.27 DocBook XSL Stylesheets License
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 restric-
tion, 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:
• The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
475
17 Third-Party Materials and Licenses
• Except as contained in this notice, the names of individuals credited with contribution to
this software shall not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization from the individuals in
question.
• Any stylesheet derived from this Software that is publically distributed will be identified
with a different name and the version strings in any derived Software will be changed so
that no possibility of confusion between the derived package and this Software will exist.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL NOR-
MAN WALSH OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARIS-
ING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
These stylesheets are maintained by Norman Walsh, <ndw@nwalsh.com>.
17.2.28 Intel ACPI Component Architecture (ACPICA) License
• 2. License
- 2.1. This is your license from Intel Corp. under its intellectual property rights. You
may have additional license terms from the party that provided you this software,
covering your right to use that party’s intellectual property rights.
- 2.2. Intel grants, free of charge, to any person (“Licensee”) obtaining a copy of the
source code appearing in this file (“Covered Code”) an irrevocable, perpetual, world-
wide license under Intel’s copyrights in the base code distributed originally by Intel
(“Original Intel Code”) to copy, make derivatives, distribute, use and display any por-
tion of the Covered Code in any form, with the right to sublicense such rights; and
- 2.3. Intel grants Licensee a non-exclusive and non-transferable patent license (with
the right to sublicense), under only those claims of Intel patents that are infringed
by the Original Intel Code, to make, use, sell, offer to sell, and import the Covered
Code and derivative works thereof solely to the minimum extent necessary to exercise
the above copyright license, and in no event shall the patent license extend to any
additions to or modifications of the Original Intel Code. No other license or right is
granted directly or by implication, estoppel or otherwise;
• 3. Conditions
- 3.1. Redistribution of Source with Rights to Further Distribute Source. Redistribu-
tion of source code of any substantial portion of the Covered Code or modification
above License, this list of Conditions, and the following Disclaimer and Export Compli-
ance provision. In addition, Licensee must cause all Covered Code to which Licensee
contributes to contain a file documenting the changes Licensee made to create that
Covered Code and the date of any change. Licensee must include in that file the doc-
umentation of any changes made by any predecessor Licensee. Licensee must include
a prominent statement that the modification is derived, directly or indirectly, from
Original Intel Code.
476
17 Third-Party Materials and Licenses
- 3.2. Redistribution of Source with no Rights to Further Distribute Source. Redistri-
bution of source code of any substantial portion of the Covered Code or modification
without rights to further distribute source must include the following Disclaimer and
Export Compliance provision in the documentation and/or other materials provided
with distribution. In addition, Licensee may not authorize further sublicense of source
of any portion of the Covered Code, and must include terms to the effect that the li-
cense from Licensee to its licensee is limited to the intellectual property embodied in
the software Licensee provides to its licensee, and not to intellectual property embod-
ied in modifications its licensee may make.
- 3.3. Redistribution of Executable. Redistribution in executable form of any substan-
Notice, and the following Disclaimer and Export Compliance provision in the docu-
mentation and/or other materials provided with the distribution.
- 3.4. Intel retains all right, title, and interest in and to the Original Intel Code.
- 3.5. Neither the name Intel nor any other trademark owned or controlled by Intel
shall be used in advertising or otherwise to promote the sale, use or other dealings in
products derived from or relating to the Covered Code without prior written autho-
rization from Intel.
• 4. Disclaimer and Export Compliance
- 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE
PROVIDED HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM
INTEL SOFTWARE IS PROVIDED “AS IS,“ AND INTEL WILL NOT PROVIDE ANY SUP-
PORT, ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL
NOT PROVIDE ANY UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIF-
ICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONIN-
FRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
- 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF
USE OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR
FOR ANY INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THIS AGREEMENT, UNDER ANY CAUSE OF ACTION OR THEORY OF LIABILITY, AND
IRRESPECTIVE OF WHETHER INTEL HAS ADVANCE NOTICE OF THE POSSIBILITY
OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE
FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.
- 4.3. Licensee shall not export, either directly or indirectly, any of this software or sys-
tem incorporating such software without first obtaining any required license or other
approval from the U. S. Department of Commerce or any other agency or department
of the United States Government. In the event Licensee exports any such software
from the United States or re-exports any such software from a foreign destination,
Licensee shall ensure that the distribution and export/re-export of the software is in
compliance with all laws, regulations, orders, or other restrictions of the U.S. Export
Administration Regulations. Licensee agrees that neither it nor any of its subsidiaries
will export/re-export any technical data, process, software, or service, directly or in-
directly, to any country for which the United States government or any agency thereof
requires an export license, other governmental approval, or letter of assurance, with-
out first obtaining such license, approval or letter.
17.2.29 Khronos License
477
17 Third-Party Materials and Licenses
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and/or associated documentation files (the “Materials”), to deal in the Materials without re-
striction, including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Materials.
THE MATERIALS ARE 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 LI-
ABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS IN
THE MATERIALS.
17.2.30 SGI Free Software License B
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 restric-
tion, 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:
The above copyright notice including the dates of first publication and either this permission
notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON
GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Silicon Graphics, Inc. shall not be used in
advertising or otherwise to promote the sale, use or other dealings in this Software without prior
written authorization from Silicon Graphics, Inc.
17.2.31 Boost Software License
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization obtaining a copy
of the software and accompanying documentation covered by this license (the “Software”) to
use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative
works of the Software, and to permit third-parties to whom the Software is furnished to do so,
all subject to the following:
• The copyright notices in the Software and this entire statement, including the above license
grant, this restriction and the following disclaimer, must be included in all copies of the
Software, in whole or in part, and all derivative works of the Software, unless such copies
or derivative works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
478
17 Third-Party Materials and Licenses
THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY
DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEAL-
INGS IN THE SOFTWARE.
17.2.32 Default Mesa 3D Graphics Library License
The Mesa distribution consists of several components. Different copyrights and licenses apply
to different components. For example, the GLX client code uses the SGI Free Software License
B, and some of the Mesa device drivers are copyrighted by their authors. See below for a list of
Mesa’s main components and the license for each.
The core Mesa library is licensed according to the terms of the MIT license. This allows inte-
gration with the XFree86, Xorg and DRI projects.
The default Mesa license is as follows:
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 restric-
tion, 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:
The above copyright notice and this permission notice shall be included in all copies or sub-
stantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LI-
ABILITY, 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.
Attention, Contributors
When contributing to the Mesa project you must agree to the licensing terms of the component
to which you’re contributing. The following section lists the primary components of the Mesa
distribution and their respective licenses.
Mesa Component Licenses
Component
Location
License
Main Mesa
src/mesa/
chapter 17.2.4, MIT License, page 459
code
Device drivers
src/mesa/drivers/*
chapter 17.2.4, MIT License, page 459,
generally
Gallium code
src/gallium/
chapter 17.2.4, MIT License, page 459
Ext headers
include/GL/glext.h
chapter 17.2.29, Khronos License, page
include/GL/glxext.h
477
GLX client
src/glx/
chapter 17.2.30, SGI Free Software
code
License B, page 478
C11 thread
include/c11/threads*.h
chapter 17.2.31, Boost Software License,
emulation
page 478 (permissive)
Additional copyrights:
2015,
479
17 Third-Party Materials and Licenses
2010,
2013
Christoph Bumiller;
2010
2017
Dylan Baker;
2013
Gabriele
2015
2012
480
17 Third-Party Materials and Licenses
2001 ATI Technologies Inc., Ontario, Canada, and$ VA Linux Systems Inc., Fremont, California.;
tur Huillet <arthur.huillet@free.fr> (ahuillet), Ben Skeggs (darktama, darktama_), B. R.
<koala_br@users.sourceforge.net> (koala_br), Carlos Martin <carlosmn@users.sf.net> (car-
losmn), Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr), Dawid
Gajownik <gajownik@users.sf.net> (gajownik), Dmitry Baryshkov, Dmitry Eremin,Solenikov
<lumag@users.sf.net> (lumag), EdB <edb_@users.sf.net> (edb_), Erik Waling <erikwail-
ing@users.sf.net> (erikwaling), Francisco Jerez <currojerez@riseup.net> (curro), imirkin
<imirkin@users.sf.net> (imirkin), jb17bsome <jb17bsome@bellsouth.net> (jb17bsome),
Jeremy Kolb <kjeremy@users.sf.net> (kjeremy), Laurent Carlier <lordheavym@gmail.com>
(lordheavy), Luca Barbieri <luca@luca,barbieri.com> (lb, lb1), Maarten Maathuis <mad-
man2003@gmail.com>
(stillunknown),
Marcin
KoÅŻcielnicki
<koriakin@0x04.net>
(mwk, koriakin), Mark Carey <mark.carey@gmail.com> (careym), Matthieu Castet
<matthieu.castet@parrot.com> (mat,c), nvidiaman <nvidiaman@users.sf.net> (nvidia-
man), Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata), Pekka Paalanen
<pq@iki.fi> (pq, ppaalanen), Peter Popov <ironpeter@users.sf.net> (ironpeter), Richard
Hughes <hughsient@users.sf.net> (hughsient), Rudi Cilibrasi <cilibrar@users.sf.net>
(cilibrar), Serge Martin, Simon Raffeiner, Stephane Loeuillet <leroutier@users.sf.net>
(leroutier), Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu), sturmflut
<sturmflut@users.sf.net> (sturmflut), Sylvain Munaut <tnt@246tNt.com>, Victor Stinner
<victor.stinner@haypocalc.com> (haypo), Wladmir van der Laan <laanwj@gmail.com>
(miathan6), Younes Manton <younes.m@gmail.com> (ymanton)
17.2.33 Microsoft Software License
MICROSOFT SOFTWARE LICENSE TERMS
MICROSOFT WINDOWS DRIVER KIT
These license terms are an agreement between Microsoft Corporation (or based on where you
live, one of its affiliates) and you. Please read them. They apply to the software named above,
which includes the media on which you received it, if any. The terms also apply to any Microsoft
• updates,
• supplements,
• Internet-based services, and
• support services
481
17 Third-Party Materials and Licenses
for this software, unless other terms accompany those items. If so, those terms apply. By using
the software, you accept these terms. If you do not accept them, do not use the software.
If you comply with these license terms, you have the rights below.
1. INSTALLATION AND USE RIGHTS.
a) Installation and Use. One user may install and use any number of copies of the soft-
ware on your devices to design, develop and test your programs.
b) Included Microsoft Programs. The software contains other Microsoft programs. In
some cases, those programs and the license terms that apply to your use of them
are addressed specifically in these license terms. For all other included Microsoft
programs, these license terms govern your use.
c) Device Simulation Framework. One user may install and use any number of copies
of the Device Simulation Framework on your devices for the sole purpose of testing
the interoperability of your devices, drivers and firmware with Windows. For the
avoidance of doubt, the Device Simulation Framework shall not be used for testing
software you have designed and developed using a software development kit other
than the Windows Driver Kit.
d) Third Party Programs. The software contains third party programs. These license
terms as well as any license terms accompanying the third party program files apply
to your use of them.
2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
a) Distributable Code. The software contains code that you are permitted to distribute
in programs you develop if you comply with the terms below.
i. Right to Use and Distribute. The code and text files listed below are âĂIJDis-
tributable Code.âĂI
• REDIST.TXT Files. You may copy and distribute the object code form of code
listed in REDIST.TXT files.
• Sample Code. You may modify, copy and distribute only in object code form
the sample code found in the SRC directory of the Windows Driver Kit, except
that you may also modify, copy, and distribute in source code form the sample
code listed in the SAMPLES.TXT file.
• Third Party Distribution. You may permit distributors of your programs to
copy and distribute the Distributable Code as part of those programs.
ii. Distribution Requirements. For any Distributable Code you distribute, you must
• add significant primary functionality to it in your programs;
• require distributors and external end users to agree to terms that protect it at
least as much as this agreement;
• display your valid copyright notice on your programs; and
• indemnify, defend, and hold harmless Microsoft from any claims, including
attorneysâĂZ fees, related to the distribution or use of your programs.
iii. Distribution Restrictions. You may not
• alter any copyright, trademark or patent notice in the Distributable Code;
• use MicrosoftâĂZs trademarks in your programsâĂZ names or in a way that
suggests your programs come from or are endorsed by Microsoft;
• distribute Distributable Code to run on a platform other than the Windows
platform;
482
17 Third-Party Materials and Licenses
• include Distributable Code in malicious, deceptive or unlawful programs; or
• modify or distribute the source code of any Distributable Code so that any
part of it becomes subject to an Excluded License. An Excluded License is one
that requires, as a condition of use, modification or distribution, that
• the code be disclosed or distributed in source code form; or
• others have the right to modify it.
3.
Scope of License. The software is licensed, not sold. This agreement only gives you some
rights to use the software. Microsoft reserves all other rights. Unless applicable law gives
you more rights despite this limitation, you may use the software only as expressly permit-
ted in this agreement. In doing so, you must comply with any technical limitations in the
software that only allow you to use it in certain ways. You may not
• work around any technical limitations in the software;
• reverse engineer, decompile or disassemble the software, except and only to the extent
that applicable law expressly permits, despite this limitation;
• make more copies of the software than specified in this agreement or allowed by
applicable law, despite this limitation;
• publish the software for others to copy;
• rent, lease or lend the software;
• transfer the software or this agreement to any third party; or
• use the software for commercial software hosting services.
4.
BACKUP COPY. You may make one backup copy of the software. You may use it only to
reinstall the software.
5.
DOCUMENTATION. Any person that has valid access to your computer or internal network
may copy and use the documentation for your internal, reference purposes.
6.
Export Restrictions. The software is subject to United States export laws and regulations.
You must comply with all domestic and international export laws and regulations that apply
to the software. These laws include restrictions on destinations, end users and end use. For
additional information, see www.microsoft.com/exporting.
7.
SUPPORT SERVICES. Because this software is âĂIJas is,âĂ˙I we may not provide support
services for it.
8.
Entire Agreement. This agreement, and the terms for supplements, updates, Internet-based
services and support services that you use, are the entire agreement for the software and
support services
9.
Applicable Law.
a) United States. If you acquired the software in the United States, Washington state
law governs the interpretation of this agreement and applies to claims for breach
of it, regardless of conflict of laws principles. The laws of the state where you live
govern all other claims, including claims under state consumer protection laws, unfair
competition laws, and in tort.
b) Outside the United States. If you acquired the software in any other country, the laws
of that country apply.
10.
Legal Effect. This agreement describes certain legal rights. You may have other rights
under the laws of your country. You may also have rights with respect to the party from
whom you acquired the software. This agreement does not change your rights under the
laws of your country if the laws of your country do not permit it to do so.
483
17 Third-Party Materials and Licenses
11. Disclaimer of Warranty. The software is licensed âĂIJas-is.âĂ˙I You bear the risk of using
it. Microsoft gives no express warranties, guarantees or conditions. You may have ad-
ditional consumer rights under your local laws which this agreement cannot change. To
the extent permitted under your local laws, Microsoft excludes the implied warranties of
merchantability, fitness for a particular purpose and non-infringement.
12. Limitation on and Exclusion of Remedies and Damages. You can recover from Microsoft
and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other
damages, including consequential, lost profits, special, indirect or incidental damages. This
limitation applies to
• anything related to the software, services, content (including code) on third party
Internet sites, or third party programs; and
• claims for breach of contract, breach of warranty, guarantee or condition, strict liabil-
ity, negligence, or other tort to the extent permitted by applicable law.
It also applies even if Microsoft knew or should have known about the possibility of the
damages. The above limitation or exclusion may not apply to you because your country
may not allow the exclusion or limitation of incidental, consequential or other damages.
Please note: As this software is distributed in Quebec, Canada, some of the clauses in this
agreement are provided below in French.
Remarque : Ce logiciel Ãl’tant distribuÃl’ au QuÃl’bec, Canada, certaines des clauses dans ce
contrat sont fournies ci-dessous en franÃğais.
EXONÃL’RATION DE GARANTIE. Le logiciel visÃl’ par une licence est offert Ân tel quel ÂŻ.
Toute utilisation de ce logiciel est Ãă votre seule risque et pÃl’ril. Microsoft nâĂZaccorde aucune
autre garantie expresse. Vous pouvez bÃl’nÃl’ficier de droits additionnels en vertu du droit local
sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises
par le droit locale, les garanties implicites de qualitÃl’ marchande, dâĂZadÃl’quation Ãă un usage
particulier et dâĂZabsence de contrefaÃğon sont exclues.
LIMITATION DES DOMMAGES-INTÃL’RÃŁTS ET EXCLUSION DE RESPONSABILITÃL’ POUR
LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation
en cas de dommages directs uniquement Ãă hauteur de 5,00 $ US. Vous ne pouvez prÃl’ten-
dre Ãă aucune indemnisation pour les autres dommages, y compris les dommages spÃl’ciaux,
indirects ou accessoires et pertes de bÃl’nÃl’fices.
Cette limitation concerne :
• tout ce qui est reliÃl’ au logiciel, aux services ou au contenu (y compris le code) figurant
sur des sites Internet tiers ou dans des programmes tiers ; et
• les rÃl’clamations au titre de violation de contrat ou de garantie, ou au titre de responsabil-
itÃl’ stricte, de nÃl’gligence ou dâĂZune autre faute dans la limite autorisÃl’e par la loi en
vigueur.
Elle sâĂZapplique Ãl’galement, mÃłme si Microsoft connaissait ou devrait connaÃőtre
lâĂZÃl’ventualitÃl’ dâĂZun tel dommage. Si votre pays nâĂZautorise pas lâĂZexclusion ou la
limitation de responsabilitÃl’ pour les dommages indirects, accessoires ou de quelque nature que
ce soit, il se peut que la limitation ou lâĂZexclusion ci-dessus ne sâĂZappliquera pas Ãă votre
Ãl’gard.
EFFET JURIDIQUE. Le prÃl’sent contrat dÃl’crit certains droits juridiques. Vous pourriez avoir
dâĂZautres droits prÃl’vus par les lois de votre pays. Le prÃl’sent contrat ne modifie pas les droits
que vous confôlrent les lois de votre pays si celles-ci ne le permettent pas.
484
17 Third-Party Materials and Licenses
17.2.34 Python License
A. HISTORY OF THE SOFTWARE ==========================
Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Cen-
trum (CWI, see http://www.cwi.nl) in the Netherlands as a successor of a language called ABC.
Guido remains Python’s principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for National Research Ini-
tiatives (CNRI, see http://www.cnri.reston.va.us) in Reston, Virginia where he released several
versions of the software.
In May 2000, Guido and the Python core development team moved to BeOpen.com to form the
BeOpen PythonLabs team. In October of the same year, the PythonLabs team moved to Digital
Creations, which became Zope Corporation. In 2001, the Python Software Foundation (PSF, see
https://www.python.org/psf/) was formed, a non-profit organization created specifically to own
Python-related Intellectual Property. Zope Corporation was a sponsoring member of the PSF.
All Python releases are Open Source (see http://www.opensource.org for the Open Source
Definition). Historically, most, but not all, Python releases have also been GPL-compatible; the
table below summarizes the various releases.
Release
Derived from
Year
Owner
GPL-compatible? (1)
0.9.0 thru 1.2
1991-1995
CWI
yes
0.9.0 thru 1.2
1991-1995
CWI
yes
1.3 thru 1.5.2
1.2
1995-1999
CNRI
yes
1.6
1.5.2
2000
CNRI
no
2.0
1.6
2000
BeOpen.com
no
1.6.1
1.6
2001
CNRI
yes (2)
2.1
2.0+1.6.1
2001
PSF
yes
2.0.1
2.0+1.6.1
2001
PSF
yes
2.1.1
2.1+2.0.1
2001
PSF
yes
2.1.2
2.1.1
2002
PSF
yes
2.1.3
2.1.2
2002
PSF
yes
2.2 and above
2.1.1
2001-now
PSF
yes
Footnotes:
(1) GPL-compatible doesn’t mean that we’re distributing Python under the GPL. All Python
licenses, unlike the GPL, let you distribute a modified version without making your changes open
source. The GPL-compatible licenses make it possible to combine Python with other software that
is released under the GPL; the others don’t.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, because its license has a
choice of law clause. According to CNRI, however, Stallman’s lawyer has told CNRI’s lawyer that
1.6.1 is “not incompatible” with the GPL.
Thanks to the many outside volunteers who have worked under Guido’s direction to make
these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
=============================================================
Python software and documentation are licensed under the Python Software Foundation Li-
cense Version 2.
Starting with Python 3.8.6, examples, recipes, and other code in the documentation are dual
licensed under the PSF License Version 2 and the Zero-Clause BSD license.
Some software incorporated into Python is under different licenses. The licenses are listed
with code falling under that license.
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 ---------------
1. This LICENSE AGREEMENT is between the Python Software Foundation (“PSF”), and the
Individual or Organization (“Licensee”) accessing and otherwise using this software (“Python”)
in source or binary form and its associated documentation.
485

 

 

 

 

 

 

 

Content      ..     3      4      5      6     ..