调查 Linux 增强功能的一般问题
欢迎在 vbox-dev 邮件列表上提供有关本页的反馈和改进建议!
客户机驱动程序
概述
可以说,Linux 增强功能的核心部分是客户机内核驱动程序。当增强功能出现问题时,首先要检查的是驱动程序是否正确安装。共有三种不同的驱动程序
- 主驱动程序
vboxguest
提供了一个通用的通信通道(“HGCM”,宿主机-客户机通信机制),用于在客户机上运行的各种服务(例如共享文件夹、共享剪贴板、拖放)与宿主机上的匹配服务之间进行通信,并提供一些临时服务。它还包括一个输入驱动程序,允许宿主机和客户机共享指针。其工作原理是,每当宿主机指针移到客户机窗口上时,就假装客户机系统有一个触摸屏,并在正确位置被“触摸”。 - 共享文件夹驱动程序
vboxsf
为客户机提供共享文件夹功能。它通过vboxguest
驱动程序与宿主机的共享文件夹服务进行通信。 vboxvideo
图形驱动程序驱动客户机视频硬件仿真。它不依赖于其他驱动程序,直接对模拟硬件进行编程,并且在 X.Org 服务器版本早于或等于 1.16 的系统上(因为它们不兼容并使用特殊驱动程序)或在 Linux 内核版本早于 3.11 的系统上不应运行。
值得注意的是,增强功能不涉及键盘输入、USB 和网络。所有这些都使用客户机内核中驱动模拟客户机硬件的普通 Linux 驱动程序。
某些发行版实际上预装了增强功能,但通常不是最新版本。VirtualBox 团队通常无法为预装的增强功能提供太多帮助(尽管发行版应该能够提供帮助),因此我们下面的安装说明包括在已知情况下删除发行版增强功能的步骤。
驱动程序安装
内核驱动程序以源代码形式安装在客户机上——这是一种可读文本,是计算机软件的组成部分。安装后,它们会自动转换为可用的软件(“构建”),因为每个 Linux 内核都需要略有不同的驱动程序。当内核升级时,这需要再次完成,因为旧的驱动程序将与新内核不匹配。如果可能(当我们能及时检测到升级时),这会在安装新内核时自动完成。如果不能,则在新内核首次使用时尝试,但在这种情况下,并非所有服务都可能在第一次启动时正确启动。(自注:如果内核驱动程序在服务启动时不存在,服务能否稍等片刻再试?)如果这也失败了,用户将不得不找出原因并手动触发构建。
在安装增强功能之前,许多 Linux 客户机系统需要安装正确的软件来构建驱动程序。大多数 Ubuntu 系统会自动安装该软件。以下是在其他系统上执行此操作的一些命令。它们应以 root 用户身份或使用 sudo 命令运行,并且在它们完成后应重新启动客户机。如果您使用的客户机不是以下列表中的标准版本,那么您将不得不自行理解和解决此问题。(技术说明:VirtualBox 不使用 dkms,但安装它也会安装构建驱动程序所需的软件。)
- Debian、Ubuntu、Mint 及类似系统:"apt-get update"、"apt-get upgrade"、"apt-get install dkms"
- Fedora、Redhat 及类似系统:"yum update"、"yum install gcc make perl kernel-devel"(如果您安装了不同的内核,请相应地替换“kernel-devel”;对于 Fedora 22 及更高版本,请将“yum”替换为“dnf”)
- SUSE 和 OpenSUSE:"zypper refresh"、"zypper update"、"zypper install gcc make kernel-devel"、"zypper remove virtualbox*"(如果您安装了不同的内核,请相应地替换“kernel-devel”)
- Mageia、Rosa、OpenMandriva:"urpmi.update -a"、"urpmi --auto-select"、"urpmi dkms"
基本检查
这些检查假设您已在客户机上安装了增强功能,并且据您所知安装成功。
- 要检查安装的增强功能版本,请执行
modinfo vboxguest
。用户空间工具(VBoxClient
、VBoxService
、VBoxControl
)都具有--version
选项,用于检查这些版本是否匹配,尽管目前(5.1 系列)VBoxService
仅在驱动程序已加载时才响应。 - 要检查给定 Linux 客户机上驱动程序在给定时间是否基本正常工作,请在客户机系统的命令终端中执行
lsmod | grep vbox
。这将列出正在工作的驱动程序,但不能排除驱动程序中更细微的问题。 - 如果驱动程序基本不工作,请尝试以 root 用户身份或使用 sudo 命令运行
/sbin/rcvboxadd start
命令来启动它们。这可能会提供有关它们不工作原因的信息。 - 它们无法工作最可能的原因是无法构建。尝试按照上述说明安装构建工具(或调查您的特定客户机有何不同),并以 root 用户身份或使用 sudo 命令运行
/sbin/rcvboxadd setup
- 查看客户机系统上 /var/log 中所有以
vbox
或VBox
开头的日志文件。