为openSUSE中的VirtualBox虚拟机启用USB设备支持

openSUSE 在官方源里加入了 VirtualBox 软件包,但是基于安全原因默认禁用了虚拟机的 USB 设备支持。开启 USB 支持的方法在官方文档有介绍。这里做个摘录。

VirtualBox 的 USB 功能首先需要有 VirtualBox 附加软件包 (Extension Pack) 的支持。需要注意的是,根据授权协议,Extension Pack 只有在个人或者教育使用中是免费的,其它使用需要获取授权,包括家庭办公/个体商业用途。

在 openSUSE 里面安装附加包不如 Windows 里那么轻松。过程为,

  1. VirtualBox 官网下载附加软件包,
  2. 关闭系统里的所有 vbox 虚拟机,
  3. 使用 VBoxManage 安装附加包。

目前版本是 5.0.12,附加包下载地址为,

http://download.virtualbox.org/virtualbox/5.0.12/Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack

所有平台的附加都是这个地址,但是下载到 openSUSE 中的时候,文件后缀名变成了 .bin。

命令行脚本如下:

# 临时文件夹
tmpfolder="tmpfolder"
mkdir $tmpfolder
# 下载链接
vboxextpack="http://download.virtualbox.org/virtualbox/5.0.12/Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack"

cd $tmpfolder
wget -nH -nd -P $tmpfolder $vboxextpack -O vboxextpack.bin
VBoxManage extpack install $tmpfolder/vboxextpack.bin

rm -rf $tmpfolder

然后修改 openSUSE 系统配置开启 VirtualBox 的 USB 支持。

  1. 使用 VirtualBox 的系统用户需要在 vboxusers 用户组中(将用户附加到组的方法),
    usermod -a -G vboxusers $YourUsername
  2. 复制 /usr/lib/udev/rules.d/60-vboxdrv.rules/etc/udev/rules.d
    cp -v /usr/lib/udev/rules.d/60-vboxdrv.rules /etc/udev/rules.d
  3. 将其中注释掉的包含 SUBSYSTEM 字串的所有行都给取消注释(使之生效)
    printf '%s\n' 'g/^#SUBSYSTEM/s/^#//' w | ed -s /etc/udev/rules.d/60-vboxdrv.rules

配置完成。重启系统就可以让虚拟机系统发现主机的 USB 设备了。

如果客户机安装的是 Windows 操作系统(比如 XP 或 Win7),可能无法选择使用 USB 3.0(xHCI)。比如,USB 3.0 端口无法被 VirtualBox 使用:“VERR_NOT_SUPPORTED”。但至少对 Windows 7 来说,因为客户机 Windows 7 没有原生的 USB 3.0 控制器驱动,可以通过在客户机中安装从 Intel 下载中心下载的 USB-3-0-Driver-Intel-USB-3-0-eXtensible-Host-Controller-Driver-for-Intel-7-Series-C216-Chipset-Family 这个 USB 3.0 控制器驱动。参考了这里。另外,根据另一篇帖子,也可以用 Renesas 的驱动,据说更好,但水景一页没有测试。

这篇文章是水景一页迁移到 openSUSE 执行初始配置记录的一部分。

更新记录(2016.06.11):

修改文中一处语言错误:应该是取消注释,因为本来就是注释掉的。其中的命令行指令没错,但是要注意该行指令必须在 root 状态下执行,否则需要改为,

sudo printf '%s\n' 'g/^#SUBSYSTEM/s/^#//' w | sudo ed -s /etc/udev/rules.d/60-vboxdrv.rules

即,在每个指令前都需要加 sudo。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/opensuse-virtualbox-usb/>。转载请保留此信息及相应链接。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)