Ubuntu 下配置 VirtualBox 的 USB 支持
一 前置准备
- 安装与内核匹配的 VirtualBox 扩展包(Extension Pack),以支持 USB 2.0/3.0 控制器与主机 USB 代理服务。扩展包版本需与 VirtualBox 主程序版本一致。下载后通过 VirtualBox:File → Preferences → Extensions → 添加扩展包并安装。完成后重启 VirtualBox。
- 建议安装 dkms,确保内核升级后 vboxdrv 等内核模块能自动重建:sudo apt-get install dkms。
- 将当前用户加入 vboxusers 组,并重新登录(注销再登录或重启)以生效:sudo usermod -aG vboxusers $USER。
二 启用 USB 控制器与添加设备筛选器
- 选中虚拟机 → 设置 → USB → 勾选 启用 USB 控制器,根据设备选择 USB 2.0(EHCI) 或 USB 3.0(xHCI) 控制器。若提示需要扩展包,请先完成“前置准备”的第 1 步。
- 插入目标 USB 设备,点击右侧 添加 USB 筛选器(带绿色加号的图标),或点击设备列表中的设备将其分配给虚拟机。分配后,设备会在主机上“断开”,并在虚拟机中可用。
- 如需命令行查看与筛选,可使用:VBoxManage list usbhost 查看主机 USB 设备;VBoxManage usbfilter add … 添加筛选器(指定 --vendorid/–productid/–serialnumber 等)。
三 权限与常见问题处理
- 设备灰显或无法分配:确认当前用户已在 vboxusers 组并重新登录;确保已安装匹配版本的 Extension Pack;在虚拟机设置中启用正确的 USB 2.0/3.0 控制器。
- 老版本内核或发行版提示找不到 USB 代理服务(VERR_FILE_NOT_FOUND):可能需要启用 usbfs 挂载。示例(请按实际 GID 调整):
- 创建组并加入用户:sudo groupadd usbfs;sudo usermod -aG usbfs $USER
- 获取组 ID:grep usbfs /etc/group(假设为 1002)
- 编辑 /etc/fstab,添加:none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0
- 重启或执行 sudo mount /proc/bus/usb 使配置生效。
说明:现代发行版通常不再需要手动挂载 usbfs,仅在异常或老系统上作为兼容手段使用。
- 主机占用导致无法捕获设备:先在主机“安全移除”或卸载该 USB 设备,再在虚拟机中勾选分配;必要时在筛选器中固定 VendorId/ProductId/SerialNumber 提升匹配稳定性。
四 快速验证步骤
- 执行 id 或 groups 确认当前用户在 vboxusers 组;必要时执行 newgrp vboxusers 或重新登录。
- 在终端运行 VBoxManage list usbhost,确认目标设备可见且状态为 Available。
- 启动虚拟机,插入设备,按需在 USB 筛选器中勾选分配;在客户机中确认设备已识别(如磁盘管理、设备管理器或 lsusb)。