上一章介绍了 Oracle VirtualBox 的入门以及在虚拟机中安装操作系统。对于任何严肃和交互式的使用,Oracle VirtualBox 增强功能(Guest Additions)将通过在主机和客户机之间提供更紧密的集成并提高客户机系统的交互性能,从而使您的操作更加便捷。本章将详细介绍增强功能。
如术语中所述,增强功能(Guest Additions)旨在客户操作系统安装完成后,安装在虚拟机的内部。它们由设备驱动程序和系统应用程序组成,可优化客户操作系统以获得更好的性能和可用性。有关 Oracle VirtualBox 完全支持哪些客户操作系统及其增强功能的详细信息,请参阅客户操作系统。
所有受支持客户操作系统的 Oracle VirtualBox 增强功能都以单个 CD-ROM 镜像文件提供,该文件名为 VBoxGuestAdditions.iso。此镜像文件位于 Oracle VirtualBox 的安装目录中。要为特定虚拟机安装增强功能,请将此 ISO 文件作为虚拟 CD-ROM 挂载到您的虚拟机中,然后从那里进行安装。
增强功能提供以下功能
鼠标指针集成。为了克服键盘和鼠标捕获与释放中描述的鼠标支持限制,此功能为您提供了无缝的鼠标支持。您将只有一个鼠标指针,并且不再需要按下宿主键才能将鼠标从客户操作系统中释放。为了实现这一点,客户机中会安装一个特殊的鼠标驱动程序,该驱动程序与主机上的物理鼠标驱动程序通信,并相应地移动客户机鼠标指针。
共享文件夹。这些提供了一种在主机和客户机之间交换文件的简便方法。就像普通的 Windows 网络共享一样,您可以告诉 Oracle VirtualBox 将某个主机目录视为共享文件夹,Oracle VirtualBox 会将其作为网络共享提供给客户操作系统,无论客户机实际上是否有网络。请参阅共享文件夹。
更好的视频支持。虽然 Oracle VirtualBox 为任何客户操作系统模拟的虚拟显卡提供了所有基本功能,但随增强功能安装的自定义视频驱动程序为您提供了更高和非标准的视频模式,以及加速的视频性能。
此外,如果安装了增强功能,对于 Windows、Linux 和 Oracle Solaris 客户机,您可以调整虚拟机窗口的大小。客户机中的视频分辨率将自动调整,就像您在客户机的显示设置中手动输入了任意分辨率一样。请参阅调整虚拟机窗口大小。
如果安装了增强功能,客户机应用程序的 3D 图形可以得到加速。请参阅硬件加速图形。
无缝窗口。借助此功能,虚拟机桌面上显示的单个窗口可以映射到主机桌面上,就像底层应用程序实际上正在主机上运行一样。请参阅无缝窗口。
通用主机/客户机通信通道。增强功能使您能够控制和监视客户机执行。客户机属性提供了一种通用的基于字符串的机制,用于在客户机和主机之间交换数据位,其中一些数据位在控制和监视客户机方面具有特殊含义。请参阅客户机属性。
此外,应用程序可以从主机在客户机中启动。请参阅客户机应用程序控制。
时间同步。安装增强功能后,Oracle VirtualBox 可以确保客户机系统时间与主机时间更好地同步。
由于各种原因,客户机中的时间可能与主机上的时间以略微不同的速率运行。主机可能正在通过 NTP 接收更新,其自身时间可能不会线性运行。虚拟机也可能暂停,这会使客户机中的时间停止流动一段时间。当客户机和主机之间的实际时钟时间仅略有不同时,时间同步服务会尝试以小幅增量逐步平滑地调整客户机时间,以赶上或放慢。当差异太大时,例如如果虚拟机暂停了数小时或从保存状态恢复,客户机时间会立即更改,而无需逐步调整。
增强功能将定期重新同步时间。有关如何配置时间同步机制参数的信息,请参阅调整增强功能时间同步参数。
共享剪贴板。安装增强功能后,客户操作系统剪贴板可以选择与您的主机操作系统共享。请参阅通用设置。
自动登录。也称为凭据传递。请参阅客户机自动登录。
每个版本的 Oracle VirtualBox,即使是次要版本,都附带其自己的增强功能版本。Oracle VirtualBox 核心与增强功能通信的接口保持稳定,以便在主机上的 Oracle VirtualBox 升级时,已安装在虚拟机中的增强功能应继续工作,但为了获得最佳效果,建议保持增强功能版本相同。
因此,Windows 和 Linux 增强功能会自动检查是否需要更新。如果主机运行的 Oracle VirtualBox 版本比增强功能更新,则会在客户机中显示一条包含进一步说明的通知。
要禁用给定虚拟机的增强功能更新检查,请将其 /VirtualBox/GuestAdd/CheckHostVersion
客户机属性值设置为 0
。请参阅客户机属性。
增强功能适用于运行Windows、Linux、Oracle Solaris或OS/2的虚拟机。以下各节详细描述了每个变体的具体细节。
Oracle VirtualBox Windows 增强功能旨在安装在运行 Windows 操作系统的虚拟机中。支持以下 Windows 客户机版本:
Microsoft Windows 11
Microsoft Windows Server 2022
Microsoft Windows 10(所有版本)
Microsoft Windows Server 2019
Microsoft Windows Server 2016
Microsoft Windows 8.1(所有版本)
Microsoft Windows Server 2012R2
Microsoft Windows 8(所有版本)
Microsoft Windows Server 2012
Microsoft Windows 7(所有版本)
Microsoft Windows Server 2008R2
Microsoft Windows Vista(所有版本)
Microsoft Windows Server 2008
Microsoft Windows XP(任何服务包)
Microsoft Windows Server 2003(任何服务包)
Microsoft Windows 2000(任何服务包)
Microsoft Windows NT 4.0(任何服务包)
在虚拟机菜单栏的设备菜单中,Oracle VirtualBox 有一个菜单项插入增强功能 CD 镜像,它会在您的虚拟机中挂载增强功能 ISO 文件。然后,Windows 客户机应自动启动增强功能安装程序,该程序会将增强功能安装到您的 Windows 客户机上。
对于其他客户操作系统,或者如果CD上的软件自动启动被禁用,您需要手动启动安装程序。
要在Windows客户机中使基本的Direct3D加速正常工作,您必须安装适用于Windows Vista或更高版本的WDDM视频驱动程序。
对于 Windows 8 及更高版本,仅提供 WDDM Direct3D 视频驱动程序。要在 Windows XP 客户机中使基本的 Direct3D 加速工作,您必须在安全模式下安装增强功能。有关详细信息,请参阅已知限制。
如果您希望手动挂载增强功能,可以执行以下步骤
启动您已安装Windows的虚拟机。
从虚拟机菜单栏的设备菜单中选择光驱,然后选择选择/创建磁盘镜像。这将显示虚拟介质管理器,有关其描述请参阅虚拟介质管理器。
在虚拟介质管理器中,单击添加,然后浏览您的主机文件系统以查找 VBoxGuestAdditions.iso 文件。
在 macOS 主机上,此文件位于 Oracle VirtualBox 的应用程序包中。右键单击 Finder 中的 Oracle VirtualBox 图标并选择显示包内容。该文件位于 Contents/MacOS 文件夹中。
在 Linux 主机上,此文件位于您安装 Oracle VirtualBox 的 additions 文件夹中,通常是 /opt/VirtualBox/。
在 Oracle Solaris 主机上,此文件位于您安装 Oracle VirtualBox 的 additions 文件夹中,通常是 /opt/VirtualBox。
在虚拟介质管理器中,选择 ISO 文件并单击添加按钮。这将挂载 ISO 文件并将其作为 CD-ROM 呈现给您的 Windows 客户机。
除非您在 Windows 客户机中禁用了自动启动功能,否则 Windows 现在将从增强功能 ISO 自动启动 Oracle VirtualBox 增强功能安装程序。如果自动启动功能已关闭,请从客户机内部的 CD/DVD 驱动器中选择 VBoxWindowsAdditions.exe 来启动安装程序。
安装程序会将多个设备驱动程序添加到Windows驱动程序数据库,然后调用硬件检测向导。
根据您的配置,它可能会显示驱动程序未进行数字签名的警告。您必须确认这些警告才能继续安装并正确安装增强功能。
安装后,重新启动客户操作系统以激活增强功能。
Windows增强功能可以通过再次运行安装程序来更新。这会将旧的增强功能驱动程序替换为更新版本。
或者,您也可以打开 Windows 设备管理器,然后为以下设备选择更新驱动程序...
Oracle VirtualBox 图形适配器
Oracle VirtualBox 系统设备
对于每个设备,选择提供您自己的驱动程序的选项,单击从磁盘安装并导航到包含增强功能的 CD-ROM 驱动器。
当您使用创建虚拟机向导创建新虚拟机时,可以配置 Oracle VirtualBox 增强功能的无人值守安装。在向导的无人值守客户操作系统安装页面上选中增强功能复选框。
客户操作系统安装完成后,增强功能将自动安装。
为避免在执行 Oracle VirtualBox 增强功能无人值守安装时出现弹出窗口,用于对驱动程序进行签名的代码签名证书需要安装在客户操作系统的正确证书存储中。如果不这样做,典型的 Windows 安装将显示多个对话框,询问您是否要安装特定驱动程序。
在某些旧版Windows中,例如Windows 2000和Windows XP,即使导入了Oracle证书,上述用户干预弹出窗口也总是会显示。
在 Windows 客户机上安装代码签名证书可以自动完成。使用增强功能安装 CD 上 cert 文件夹中的 VBoxCertUtil.exe 实用程序。
请按照以下步骤操作
以管理员身份登录客户机。
挂载 Oracle VirtualBox 增强功能 .ISO 文件。
在客户机上打开一个命令行窗口,并更改到 Oracle VirtualBox 增强功能 CD 上的 cert 文件夹。
运行以下命令
VBoxCertUtil.exe add-trusted-publisher vbox*.cer --root vbox*.cer
此命令将证书安装到证书存储区。当多次安装相同的证书时,将显示相应的错误。
为了实现完全无人值守的客户机安装,您可以为安装启动器指定命令行参数
VBoxWindowsAdditions.exe /S
这会自动为相应的平台(32位或64位)安装正确的文件和驱动程序。
为了使Windows Aero在客户机上正常运行,客户机的VRAM大小需要配置至少128MB。
有关无人值守客户机安装的更多选项,请使用以下命令查阅命令行帮助
VBoxWindowsAdditions.exe /?
如果您想手动安装文件和驱动程序,可以从Windows增强功能安装程序中提取文件,如下所示
VBoxWindowsAdditions.exe /extract
要明确为除当前运行平台之外的另一个平台(例如在 32 位系统上提取 64 位文件)提取 Windows 增强功能,您必须使用相应的平台安装程序。使用带有 /extract
参数的 VBoxWindowsAdditions-x86.exe 或 VBoxWindowsAdditions-amd64.exe。
与 Windows 增强功能一样,Oracle VirtualBox 适用于 Linux 的增强功能也是一组设备驱动程序和系统应用程序,可以安装在客户操作系统中。
正式支持以下Linux发行版
Oracle Linux 5版及更高版本,包括UEK内核
Fedora Core 4及更高版本
Red Hat Enterprise Linux 3版及更高版本
SUSE和openSUSE Linux 9版及更高版本
Ubuntu 5.10版及更高版本
许多其他发行版已知可与增强功能配合使用。
SUSE 和 openSUSE 10.2、Ubuntu 6.10(所有版本)和 Ubuntu 6.06(服务器版)中默认提供的 Linux 内核版本包含一个错误,当它在虚拟机中运行时可能会在启动期间导致崩溃。增强功能在这些发行版中工作正常。
请注意,某些 Linux 发行版已预装了全部或部分 Oracle VirtualBox 增强功能。您可以选择保留发行版自带的增强功能版本,但这些版本通常已过时且功能有限,因此我们建议将其替换为 Oracle VirtualBox 附带的增强功能。Oracle VirtualBox Linux 增强功能安装程序会尝试检测现有安装并替换它们,但这取决于发行版集成增强功能的方式,可能需要一些手动交互。强烈建议在替换预安装的增强功能之前,为虚拟机创建快照。
Oracle VirtualBox 适用于 Linux 的增强功能与适用于 Windows 的增强功能在同一个虚拟 CD-ROM 文件中提供。请参阅安装 Windows 增强功能。它们还附带一个安装程序,可指导您完成设置过程。然而,由于 Linux 发行版之间的显著差异,与 Windows 相比,安装可能稍微复杂一些。
安装通常涉及以下步骤
在安装增强功能之前,您需要准备客户机系统以构建外部内核模块。这与Oracle VirtualBox 内核模块中描述的方式相同,只是此步骤必须在您的 Linux 客户机中执行,而不是在 Linux 主机系统上执行。
如果您怀疑出现问题,请检查您的客户机是否已正确设置,并以root身份运行以下命令
rcvboxadd setup
将 VBoxGuestAdditions.iso CD 文件插入您的 Linux 客户机的虚拟 CD-ROM 驱动器中,其方法与在安装 Windows 增强功能中描述的 Windows 客户机相同。
切换到您的CD-ROM驱动器挂载的目录,并以root身份运行以下命令
sh ./VBoxLinuxAdditions.run
当您使用创建虚拟机向导创建新虚拟机时,可以配置 Oracle VirtualBox 增强功能的无人值守安装。在向导的无人值守客户操作系统安装页面上选中增强功能复选框。
客户操作系统安装完成后,增强功能将自动安装。
在 Linux 和 Oracle Solaris 客户机中,Oracle VirtualBox 图形和鼠标集成通过 X Window System 进行。 Oracle VirtualBox 可以使用该系统的 X.Org 变体,或者 XFree86 4.3 版本(与第一个 X.Org 版本相同)。在安装过程中,X.Org 显示服务器将被设置为使用增强功能附带的图形和鼠标驱动程序。
在将增强功能安装到受支持的 Linux 发行版或 Oracle Solaris 系统的全新安装中后(许多不受支持的系统也能正常工作),客户机的图形模式将随主机上 Oracle VirtualBox 窗口的大小调整而变化。您还可以使用 VBoxManage 工具发送视频模式提示,要求客户机系统切换到特定分辨率。
使用 X.Org 服务器 1.3 版本(X Window System 11 版 7.3 发布的一部分)或更高版本的客户机支持多个客户机显示器。可以使用客户操作系统附带的工具根据需要调整客户机屏幕的布局。
如果您想了解有关 X.Org 驱动程序设置的更多详细信息,特别是如果您想在我们的安装程序无法正确处理的环境中使用它们,请参阅客户机图形和鼠标驱动程序深入设置。
从 Oracle VirtualBox 7 开始,运行 VMSVGA 图形配置的 Linux 客户机屏幕大小调整功能已更改。从那时起,此功能由一个独立的守护程序 VBoxDRMClient 及其桌面环境助手对应部分组成。
VBoxDRMClient 以 root 进程运行,是主机与客户机 vmwgfx 驱动程序之间的桥梁。这意味着 VBoxDRMClient 侦听来自主机的屏幕大小调整提示,并将其转发给 vmwgfx 驱动程序。这使得客户机屏幕大小调整功能在用户执行图形登录之前即可使用。
为了执行桌面环境特定的操作,例如在多显示器设置中设置主屏幕,会使用桌面环境助手。一旦用户执行图形登录操作,助手守护程序将以用户会话范围启动,并尝试使用 IPC 连接到 VBoxDRMClient。当 VBoxDRMClient 收到来自主机的相应命令时,它会通过 IPC 转发到助手守护程序,然后执行该操作。
默认情况下,VBoxDRMClient允许任何进程连接到其IPC套接字。这可以通过以下步骤进行限制
增强功能 Linux 安装程序会创建一个 vboxdrmipc
用户组。需要将相应的用户添加到此组中。
您必须按如下方式设置 DRMIpcRestricted
客户机属性:
VBoxManage guestproperty set "VM name" /VirtualBox/GuestAdd/DRMIpcRestricted 1 \ --flags RDONLYGUEST
设置属性时仅设置 RDONLYGUEST 标志非常重要,这样就不能在 Guest 内部对其进行更改。
这两个步骤都是必需的。如果缺少其中一个,所有进程都将能够访问 IPC 套接字。
通过取消设置 Guest 属性可以禁用受限模式,如下所示
VBoxManage guestproperty unset "VM name" /VirtualBox/GuestAdd/DRMIpcRestricted
通过使用更新的 CD-ROM 映像再次执行安装过程,可以简单地更新 Guest Additions。这将用更新的版本替换驱动程序。更新 Guest Additions 后,应重新启动。
如果您的虚拟机上安装了某个版本的增强功能,并且想要将其删除而不安装新的,可以通过如上所述将增强功能 CD 镜像插入虚拟 CD-ROM 驱动器来完成。然后从客户机中 CD 镜像挂载的路径运行当前增强功能的安装程序,并带上 uninstall
参数,如下所示:
sh ./VBoxLinuxAdditions.run uninstall
虽然这通常会顺利进行,但在某些情况下您可能需要手动清理客户机,特别是 XFree86Config 或 xorg.conf 文件。特别是,如果安装的增强功能版本或客户操作系统非常旧,或者您在安装后对增强功能设置进行了自己的更改。
您可以按如下方式卸载 Additions
/opt/VBoxGuestAdditions-version/uninstall.sh
将 /opt/VBoxGuestAdditions-version 替换为正确的增强功能安装目录。
与 Windows 增强功能类似,Oracle VirtualBox 适用于 Oracle Solaris 的增强功能也是一组设备驱动程序和系统应用程序,可以安装在客户操作系统中。
正式支持以下 Oracle Solaris 发行版
Oracle Solaris 11,包括 Oracle Solaris 11 Express
Oracle Solaris 10 4/08 及更高版本
其他发行版如果基于可比较的软件版本,也可能工作。
Oracle VirtualBox 适用于 Oracle Solaris 的增强功能与适用于 Windows 和 Linux 的增强功能在相同的 ISO CD-ROM 上提供。它们附带一个安装程序,可指导您完成设置过程。
安装包括以下步骤
将 VBoxGuestAdditions.iso 文件作为您的 Oracle Solaris 客户机的虚拟 CD-ROM 驱动器挂载,其方法与安装 Windows 增强功能中描述的 Windows 客户机完全相同。
如果 Guest 上的 CD-ROM 驱动器未挂载(如某些 Oracle Solaris 10 版本所示),请以 root 身份运行以下命令
svcadm restart volfs
切换到您的CD-ROM驱动器挂载的目录,并以root身份运行以下命令
pkgadd -G -d ./VBoxSolarisAdditions.pkg
选择1并确认安装增强功能包。安装完成后,请在客户机上注销并登录到 X 服务器,以激活 X11 增强功能。
当您使用创建虚拟机向导创建新虚拟机时,可以配置 Oracle VirtualBox 增强功能的无人值守安装。在向导的无人值守客户操作系统安装页面上选中增强功能复选框。
客户操作系统安装完成后,增强功能将自动安装。
可以通过从 Guest 中移除软件包来安全地移除 Oracle Solaris Guest Additions。打开 root 终端会话并运行以下命令
pkgrm SUNWvboxguest
应通过先卸载现有 Guest Additions,然后安装新 Guest Additions 的方式来更新 Guest Additions。不移除现有 Guest Additions 而尝试安装新的 Guest Additions 是不可能的。
Oracle VirtualBox 还附带了一组驱动程序,可以改善在虚拟机中运行 OS/2 的体验。由于 OS/2 本身的限制,此版本的增强功能具有有限的功能集。有关详细信息,请参阅已知限制。
OS/2 增强功能与适用于其他平台的增强功能在相同的 ISO CD-ROM 上提供。按照前面所述在 OS/2 中挂载 ISO。OS/2 增强功能位于 \OS2 目录中。
我们目前不提供自动安装程序。请参阅 CD-ROM 目录中的 readme.txt 文件,其中描述了如何手动安装 OS/2 增强功能。
Oracle VirtualBox 允许您将剪贴板内容从主机复制到客户机,反之亦然。为此,客户机上必须安装最新版本的增强功能。
出于安全原因,拖放功能可以在运行时按虚拟机配置,可以通过虚拟机设备菜单中的共享剪贴板菜单项,或使用 VBoxManage 命令进行配置。
以下共享剪贴板设置可用:
禁用。完全禁用复制功能。这是创建新虚拟机时的默认设置。
主机到客户机。仅启用从主机到客户机的文本复制操作。
客户机到主机。仅启用从客户机到主机的文本复制操作。
双向。启用文本双向复制操作:从主机到客户机,以及从客户机到主机。
要使用 VBoxManage 命令控制当前剪贴板模式,请参阅VBoxManage。modifyvm 和 controlvm 命令允许从命令行设置虚拟机的当前剪贴板模式。
共享剪贴板文件传输存在以下已知限制:
在 Linux 主机和客户机上,共享剪贴板文件传输仅限于文件,每次传输一个文件。不支持传输符号链接。
共享剪贴板文件传输仅在客户机或主机操作系统的官方默认文件管理器下进行测试和支持,除非另有说明。
Oracle VirtualBox 允许您将内容从主机拖放到客户机,反之亦然。为此,客户机上必须安装最新版本的增强功能。
拖放功能透明地允许在两端之间复制或打开文件、目录,甚至某些剪贴板格式。例如,从主机到客户机,或从客户机到主机。然后,您可以在主机和虚拟机之间执行拖放操作,就像在主机操作系统上进行本机拖放操作一样。
目前,拖放功能已在基于 Windows 和基于 X-Windows 的系统上实现,包括主机和客户机。由于 X-Windows 支持许多不同的拖放协议,目前仅支持最常见的 XDND。使用其他协议(例如 Motif 或 OffiX)的应用程序将不会被 Oracle VirtualBox 识别。
在使用拖放功能的语境中,数据的来源称为源。即,实际数据从何而来以及在哪里指定。目标指定源数据应该去往何处。数据从源传输到目标可以通过各种方式完成,例如复制、移动或链接。
目前仅支持数据复制。移动或链接尚未实现。
当数据从主机传输到客户操作系统时,主机是源,而客户操作系统是目标。然而,当数据从客户操作系统传输到主机时,客户操作系统此时成为源,主机是目标。
出于安全原因,拖放功能可以在运行时按虚拟机进行配置,可以通过虚拟机设备菜单中的拖放菜单项,或使用 VBoxManage 命令进行配置。
提供以下拖放模式
禁用。完全禁用拖放功能。这是创建新虚拟机时的默认设置。
主机到客户机。仅启用从主机到客户机的拖放操作。
客户机到主机。仅启用从客户机到主机的拖放操作。
双向。启用双向拖放操作:从主机到客户机,以及从客户机到主机。
拖放支持取决于所使用的前端。目前,只有 VirtualBox 管理器前端提供了此功能。
要使用 VBoxManage 命令控制当前拖放模式,请参阅VBoxManage。modifyvm 和 controlvm 命令允许从命令行设置虚拟机的当前拖放模式。
由于 Oracle VirtualBox 可以在各种主机操作系统上运行,并且支持广泛的客户机,因此某些数据格式在传输后必须进行转换。这是为了让接收数据的目标操作系统能够以适当的方式处理它们。
拖动文件时,不进行任何数据转换。例如,将文件从 Linux Guest 传输到 Windows Host 时,Linux 特定的行尾不会转换为 Windows 行尾。
Oracle VirtualBox 拖放服务处理以下格式:
纯文本:来自文本编辑器、互联网浏览器和终端窗口等应用程序。
文件:来自文件管理器,如 Windows 资源管理器、Nautilus 和 Finder。
目录:对于目录,格式与文件相同。
拖放功能存在以下已知限制
在 Windows 主机上,不允许在 UAC 提升(用户账户控制)的程序和非 UAC 提升的程序之间拖放内容。如果您以管理员权限启动 Oracle VirtualBox,则拖放功能将无法与 Windows 资源管理器一起使用,因为后者默认以普通用户权限运行。
在 Linux 主机和客户机上,程序可以在拖放操作仍在进行时查询拖放数据。例如,在 LXDE 上使用 PCManFM 文件管理器时。目前不支持此功能。作为变通方法,可以使用不同的文件管理器,例如 Nautilus。
Oracle VirtualBox 增强功能包含对 Windows、Linux 和 Oracle Solaris 客户机的实验性硬件 3D 支持。
有了此功能,如果虚拟机内的应用程序通过 OpenGL 或 Direct3D 编程接口使用 3D 功能,Oracle VirtualBox 将尝试使用主机的 3D 硬件,而不是在软件中模拟它们(这会很慢)。这适用于所有受支持的主机平台,前提是您的主机操作系统首先能够利用加速 3D 硬件。必须在虚拟机上安装增强功能。
3D 加速功能仅对某些 Windows、Linux 和 Oracle Solaris 客户机可用,并且处于实验阶段:
Windows 客户机的 3D 加速需要 Windows Vista 或更高版本。Vista 和 Windows 7 客户机支持 Direct3D 9,Windows 8 及更高版本客户机根据主机能力支持 Direct3D 11.0 或 11.1。Windows 客户机还支持 OpenGL 4.1。
Linux 客户机通过 Mesa3D 驱动程序支持 OpenGL 4.1。Linux 上的 OpenGL 需要内核 2.6.27 或更高版本,以及 X.org 服务器 1.5 或更高版本。Ubuntu 10.10 和 Fedora 14 已经过测试并确认可以工作。
Oracle Solaris Guest 上的 OpenGL 需要 X.org 服务器版本 1.5 或更高版本。
启用无缝窗口后,Oracle VirtualBox 会将虚拟机显示器的大小放大到主机桌面大小,并遮盖客户操作系统背景,从而使客户机窗口无缝地显示在主机窗口旁边。
在图 1 中,您可以看到两个计算器应用程序并排显示,一个在主机上运行,另一个在虚拟机上运行。
要启用无缝窗口,在虚拟机中,按下宿主键 + L。宿主键显示在任务栏上,通常是右 Control 键。
要禁用无缝窗口并返回到正常的虚拟机显示,请再次按下宿主键 + L。
Oracle VirtualBox 允许从运行中的客户机请求某些属性,前提是已安装 Oracle VirtualBox 增强功能且虚拟机正在运行。这提供了以下优点:
一些预定义的虚拟机特性由 Oracle VirtualBox 自动维护,并可以在主机上检索。例如,用于监视虚拟机性能和统计信息。
任意字符串数据可以在 Guest 和 Host 之间交换。这在两个方向上都有效。
为此,Oracle VirtualBox 在 Oracle VirtualBox 增强功能和主机之间建立了一个私有通信通道,双方的软件都可以使用此通道交换字符串数据以实现任意目的。客户机属性只是附加有值的字符串键。它们可以由主机和客户机设置或写入。它们也可以从双方读取。
除了建立读取和写入值的通用机制外,Oracle VirtualBox 增强功能还会自动维护一组预定义的客户机属性,以便检索有趣的客户机数据,例如客户机的确切操作系统和服务包级别、已安装的增强功能版本、当前登录到客户操作系统的用户、网络统计信息等。这些预定义属性都以 /VirtualBox/
为前缀,并组织成键的层次结构树。
当您从虚拟机的管理菜单中选择会话信息对话框时,会显示一些此运行时信息。
使用此通道的一种更灵活的方式是使用 VBoxManage guestproperty 命令。请参阅VBoxManage guestproperty。例如,要列出给定运行中虚拟机的所有可用客户机属性及其各自的值,请使用此命令:
$ VBoxManage guestproperty enumerate "Windows Vista III" VirtualBox Command Line Management Interface Version version-number Copyright (C) 2005-2022 Oracle and/or its affiliates Name: /VirtualBox/GuestInfo/OS/Product, value: Windows Vista Business Edition, timestamp: 1229098278843087000, flags: Name: /VirtualBox/GuestInfo/OS/Release, value: 6.0.6001, timestamp: 1229098278950553000, flags: Name: /VirtualBox/GuestInfo/OS/ServicePack, value: 1, timestamp: 1229098279122627000, flags: Name: /VirtualBox/GuestAdd/InstallDir, value: C:/Program Files/Oracle/VirtualBox Guest Additions, timestamp: 1229098279269739000, flags: Name: /VirtualBox/GuestAdd/Revision, value: 40720, timestamp: 1229098279345664000, flags: Name: /VirtualBox/GuestAdd/Version, value: version-number, timestamp: 1229098279479515000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxControl.exe, value: version-numberr40720, timestamp: 1229098279651731000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxHook.dll, value: version-numberr40720, timestamp: 1229098279804835000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxDisp.dll, value: version-numberr40720, timestamp: 1229098279880611000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxMRXNP.dll, value: version-numberr40720, timestamp: 1229098279882618000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxService.exe, value: version-numberr40720, timestamp: 1229098279883195000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxTray.exe, value: version-numberr40720, timestamp: 1229098279885027000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxGuest.sys, value: version-numberr40720, timestamp: 1229098279886838000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxMouse.sys, value: version-numberr40720, timestamp: 1229098279890600000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxSF.sys, value: version-numberr40720, timestamp: 1229098279893056000, flags: Name: /VirtualBox/GuestAdd/Components/VBoxVideo.sys, value: version-numberr40720, timestamp: 1229098279895767000, flags: Name: /VirtualBox/GuestInfo/OS/LoggedInUsers, value: 1, timestamp: 1229099826317660000, flags: Name: /VirtualBox/GuestInfo/OS/NoLoggedInUsers, value: false, timestamp: 1229098455580553000, flags: Name: /VirtualBox/GuestInfo/Net/Count, value: 1, timestamp: 1229099826299785000, flags: Name: /VirtualBox/HostInfo/GUI/LanguageID, value: C, timestamp: 1229098151272771000, flags: Name: /VirtualBox/GuestInfo/Net/0/V4/IP, value: 192.168.2.102, timestamp: 1229099826300088000, flags: Name: /VirtualBox/GuestInfo/Net/0/V4/Broadcast, value: 255.255.255.255, timestamp: 1229099826300220000, flags: Name: /VirtualBox/GuestInfo/Net/0/V4/Netmask, value: 255.255.255.0, timestamp: 1229099826300350000, flags: Name: /VirtualBox/GuestInfo/Net/0/Status, value: Up, timestamp: 1229099826300524000, flags: Name: /VirtualBox/GuestInfo/OS/LoggedInUsersList, value: username, timestamp: 1229099826317386000, flags:
要查询单个属性的值,请按如下方式使用 get 子命令:
$ VBoxManage guestproperty get "Windows Vista III" "/VirtualBox/GuestInfo/OS/Product" VirtualBox Command Line Management Interface Version version-number Copyright (C) 2005-2022 Oracle and/or its affiliates Value: Windows Vista Business Edition
要从客户机添加或更改客户机属性,请使用工具 VBoxControl。此工具包含在增强功能中。从 Linux 客户机启动时,出于安全原因,此工具需要 root 权限。
$ sudo VBoxControl guestproperty enumerate VirtualBox Guest Additions Command Line Management Interface Version version-number Copyright (C) 2005-2022 Oracle and/or its affiliates Name: /VirtualBox/GuestInfo/OS/Release, value: 2.6.28-18-generic, timestamp: 1265813265835667000, flags: <NULL> Name: /VirtualBox/GuestInfo/OS/Version, value: #59-Ubuntu SMP Thu Jan 28 01:23:03 UTC 2010, timestamp: 1265813265836305000, flags: <NULL> ...
对于更复杂的需求,您可以使用 Oracle VirtualBox 编程接口。请参阅Oracle VirtualBox 编程接口。
可以等待属性 /VirtualBox/HostInfo/VBoxVer
、/VirtualBox/HostInfo/VBoxVerExt
或 /VirtualBox/HostInfo/VBoxRev
,以检测虚拟机状态是否已从保存状态或快照中恢复。
$ VBoxControl guestproperty wait /VirtualBox/HostInfo/VBoxVer
同样,/VirtualBox/HostInfo/ResumeCounter
可用于检测虚拟机是否已从暂停状态或保存状态恢复。
如果您已安装增强功能,可以使用客户机控制文件管理器在虚拟机(VM)和主机系统之间复制文件。您还可以创建新文件夹、重命名文件和删除文件。
当 Guest 的 VM 窗口不可见时,此功能非常有用。例如,当 Guest 在无头模式下运行时。
要使用 Guest 控制文件管理器,Guest 必须正在运行。对于已关机的 Guest,它会自动禁用。
要使用客户机控制文件管理器传输文件,请遵循以下步骤:
打开 Guest 控制文件管理器。执行以下任一操作
在客户虚拟机中,选择管理,文件管理器。
在 VirtualBox 管理器中,单击机器名称。在虚拟机的机器工具菜单中单击文件管理器。
在主机文件系统窗格中,显示主机系统上的文件。
在客户机文件系统窗格中,输入您要登录的用户名和密码。
单击打开会话。
虚拟机文件系统显示在客户机文件系统窗格中。
要从虚拟机传输到主机,请选择文件并单击从客户机复制到主机。
要从主机传输到虚拟机,请选择文件并单击从主机复制到客户机。
单击关闭以结束客户机会话和客户机控制文件管理器。
Guest Additions 支持从 Host 系统在 Guest VM 中启动应用程序。此功能可用于自动化 Guest 内的软件部署。
为此,应用程序需要安装在客户机上。主机上不需要安装额外的软件。此外,文本模式输出到 stdout 和 stderr 可以在主机上显示以供进一步处理。有选项可以指定用户凭据和以毫秒为单位的超时值,以限制应用程序的运行时间。
Windows 的 Guest Additions 支持自动更新。这适用于已安装的 Guest Additions 版本。此外,还支持从 Host 复制文件到 Guest 以及远程创建 Guest 目录。
要使用这些功能,请使用 Oracle VirtualBox 命令行。请参阅VBoxManage guestcontrol。
在具有许多虚拟机的服务器环境中,增强功能可用于在多个虚拟机之间共享物理主机内存。这减少了虚拟机使用的总内存量。如果内存使用是限制因素而 CPU 资源仍然可用,这有助于在每个主机上运行更多虚拟机。
增强功能可以在机器运行时更改虚拟机使用的主机内存量。由于其实现方式,此功能称为内存气球(memory ballooning)。
Oracle VirtualBox 仅在 64 位主机上支持内存气球。macOS 主机不支持此功能。
内存气球功能在启用大页时效果不佳。要为虚拟机关闭大页支持,请运行 VBoxManage modifyvm vmname --large-pages off
通常,要更改分配给虚拟机的内存量,您必须完全关闭虚拟机并修改其设置。通过内存气球,分配给虚拟机的内存可以无需关闭机器而分配给另一个虚拟机。
当请求内存气球时,在客户机内部运行的 Oracle VirtualBox 增强功能会在内核级别从客户操作系统分配物理内存,并在客户机中锁定此内存。这确保客户机不再使用该内存。没有客户机应用程序可以分配它,客户机内核也不会使用它。Oracle VirtualBox 随后可以重用此内存并将其分配给另一个虚拟机。
通过内存气球机制提供的内存只能由 Oracle VirtualBox 重用。它不会作为空闲内存返回给主机。因此,从正在运行的客户机请求气球内存不会增加主机上可用、未分配内存的数量。实际上,内存气球因此是一种在多个虚拟机运行时进行内存超额分配的机制。这对于临时启动另一台机器,或者在更复杂的环境中,对于根据客户机如何使用内存而可能并行运行的许多虚拟机进行复杂的内存管理非常有用。
目前,内存气球仅通过 VBoxManage 支持。使用以下命令在已安装增强功能的运行中虚拟机内增加或减少内存气球的大小:
VBoxManage controlvm "VM name" guestmemoryballoon n
其中 VM name 是相关虚拟机的名称或 UUID,n 是要从客户机分配的内存量(以兆字节为单位)。请参阅VBoxManage controlvm。
您还可以设置一个默认气球,每次 VM 启动后都会自动从 VM 请求,使用以下命令
VBoxManage modifyvm "VM name" --guest-memory-balloon n
默认情况下,不分配气球内存。这是一项虚拟机设置,与其他 modifyvm 设置一样,因此只能在机器关闭时进行设置。请参阅VBoxManage modifyvm。
内存气球只是简单地减少了 VM 可用的 RAM 量,而页面融合的工作方式不同。它避免了多个类似运行中的 VM 之间的内存重复。
在同一主机上运行多个相似虚拟机的服务器环境中,许多内存页面是相同的。例如,如果虚拟机使用相同的操作系统。Oracle VirtualBox 的页面融合技术可以有效地识别这些相同的内存页面并在多个虚拟机之间共享它们。
Oracle VirtualBox 仅在 64 位主机上支持页面融合,并且不支持 macOS 主机。页面融合目前仅适用于 Windows 2000 及更高版本的客户机。
给定主机上的虚拟机越相似,页面融合就越能有效地减少正在使用的主机内存量。因此,如果主机上的所有虚拟机都运行相同的操作系统,它的效果最佳。页面融合不是在每个虚拟机中都拥有每个操作系统的完整副本,而是识别这些操作系统正在使用的相同内存页面并消除重复项,从而在多台机器之间共享主机内存。这称为重复数据删除。如果虚拟机尝试修改已与其他虚拟机共享的页面,则会为该虚拟机再次分配一个新页面,其中包含共享页面的副本。这称为写时复制。所有这些对虚拟机来说都是完全透明的。
您可能熟悉其他虚拟化管理程序产品中的这种内存超额分配,它们称此功能为页面共享或同页合并。然而,页面融合与这些其他解决方案显著不同,后者的方法有几个缺点:
传统虚拟化管理程序会扫描所有客户机内存,并为每个内存页面计算校验和(也称为哈希值)。然后,它们查找具有相同哈希值的页面,并比较这些页面的全部内容。如果两个页面生成相同的哈希值,则这些页面的内容很可能相同。这个过程可能相当长,特别是当系统不空闲时。结果是,额外的内存仅在很长一段时间后才可用,例如数小时甚至数天。更糟糕的是,这种页面共享算法通常会消耗大量 CPU 资源,并将虚拟化开销增加 10% 到 20%。
Oracle VirtualBox 中的页面融合使用 Oracle VirtualBox 增强功能中的逻辑,快速识别虚拟机之间最可能相同的内存单元。因此,它几乎可以立即实现页面共享的大部分可能节省,并且几乎没有开销。
页面融合也更不可能被它将消除的相同内存混淆,只是几秒钟后才发现内存现在将发生变化,并且必须执行代价高昂且通常会中断服务的重新分配。
目前,页面融合只能通过 VBoxManage 控制,并且只能在虚拟机关闭时进行。要为虚拟机启用页面融合,请使用以下命令:
VBoxManage modifyvm "VM name" --page-fusion on
您可以使用一些指标来观察页面融合操作。RAM/VMM/Shared
显示融合页面的总数量,而每虚拟机指标 Guest/RAM/Usage/Shared
将返回给定虚拟机的融合内存量。有关如何查询指标的信息,请参阅VBoxManage metrics。
启用页面融合可能会间接增加恶意客户机成功攻击同一主机上运行的其他虚拟机的机会。请参阅潜在不安全操作。
增强功能提供控制客户机系统显示器拓扑的服务。显示器拓扑指每个虚拟显示器的分辨率及其状态(禁用/启用)。虚拟显示器的分辨率可以从主机侧修改,方法是调整承载虚拟显示器的窗口大小,使用视图菜单,或使用 VBoxManage controlvm vmname setscreenlayout 命令。在带有 X11/Wayland 桌面的客户操作系统上,这通过以下两种服务之一生效:
VBoxClient --vmsvga VBoxDRMClient
以下是有关 Guest 屏幕分辨率控制功能的一些详细信息
在 X11/Wayland 桌面环境中,调整大小服务在桌面会话初始化(即桌面登录)期间启动。在 X11 桌面环境中,VBoxClient --vmsvga
通过 RandR 扩展处理屏幕拓扑。在 Wayland 客户端上,使用 VBoxDRMClient
。该决定在每次桌面会话启动时自动做出。
在 32 位客户操作系统上,始终使用 VBoxDRMClient,以解决错误。
由于显示器拓扑控制服务是在桌面会话启动期间初始化的,因此无法控制显示管理器(如 GDM 或 LightDM)的显示器分辨率。可以通过将虚拟机的客户机属性 /VirtualBox/GuestAdd/DRMResize
设置为任意值来更改此默认行为。有关如何更新客户机属性的详细信息,请参阅客户机属性。设置此客户机属性后,VBoxDRMClient 将在客户操作系统启动期间启动,并始终保持活动状态,无论是在显示管理器登录屏幕还是桌面会话期间。
VBoxDRMClient 无法处理任意客户机显示器拓扑。具体来说,禁用非最后一个的客户机显示器会由于 vmwgfx.ko
Linux 内核模块的限制而使显示器拓扑无效。例如,当客户机配置为有四个显示器时,不建议禁用第二个或第三个显示器。