avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

TMD在教程开始之前我就要喷人了

所有的教程抄抄抄有意思吗?

明明添加vboxusers没卵用了,结果网上搜“virtualbox 无法识别设备”,全他妈的一样,最终我还是从wiki里找到的答案,mmp所有文章清一色就以下2种方法:

1.将当前用户添加到vboxusers组

命令:

sudo usermod -aG vboxusers <username>  

然后重启电脑或者注销了再登录进去就生效

2.安装Oracle VM VirtualBox Extension Pack

这个也没什么好说的

能找到第三种吗?能找到,在旮旯角,而且并不能解决的我的问题

1. 编辑 /etc/group,把你的用户名加在vboxusers组里,类似
vboxusers:x:124:felix021
[...此处省略,因为只适合特定的linux发行版]
要注意的是"124"的位置是vboxusers组的组ID,这个是不确定的要看你这里如何显示。
2. 编辑/etc/init.d/mountdevsubfs.sh , 定位到这个位置
#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs “” /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount –rbind /dev/bus/usb /proc/bus/usb
把最后面的4行的注释#删除掉。
3. 打开/etc/udev/rules.d/40-basic-permissions.rules
(有个很相似的文件叫40-permissions.rules,别弄混了)
跳这个位置:
# USB devices (usbfs replacement)
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"
SUBSYSTEM=="usb_device", MODE="0664"
在最后两行追加GROUP="vboxusers",也就是修成:
# USB devices (usbfs replacement)
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="vboxusers"
SUBSYSTEM=="usb_device", MODE="0664", GROUP="vboxusers"
4. 编辑/etc/fstab , 在最后的末尾处加上这句
none /proc/bus/usb usbfs devgid=124,devmode=644 0 0
别忘记把124修改成你电脑上vboxusers组的id
5. 重启就完事

来源地址:https://www.linuxidc.com/Linux/2008-09/15616.htm

虽然解决不了我的问题,但是我找到了/etc/udev/rules.d/

进去一看,发现了一个文件,叫60-vboxdrv.rules

查看此文件,发现了/opt/VirtualBox 这个目录,我突然想起来

这是我以前直接安装virtualbox(直接运行执行版安装的)的残留目录

而无法识别USB恰好就是直接安装Vbox才出现的

我就把这个文件改了改,把残留信息删了,发现不行

我就搜索,在这里https://wiki.archlinux.org/index.php/VirtualBox_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)找到了相关说明

英文版是:https://wiki.archlinux.org/index.php/VirtualBox

英文材料:

USB subsystem not working

Your user must be in the vboxusers group and you need to install the extension pack if you want USB 2 support. Then you will be able to enable USB 2 in the VM settings and add one or several filters for the devices you want to access from the guest OS.

If VBoxManage list usbhost does not show any USB devices even if run as root, make sure that there is no old udev rules (from VirtualBox 4.x) in /etc/udev/rules.d/. VirtualBox 5.0 installs udev rules to /usr/lib/udev/rules.d/. You can use command like pacman -Qo /usr/lib/udev/rules.d/60-vboxdrv.rules to determine if the udev rule file is outdated.

Sometimes, on old Linux hosts, the USB subsystem is not auto-detected resulting in an error Could not load the Host USB Proxy service: VERR_NOT_FOUND or in a not visible USB drive on the host, even when the user is in the vboxusers group. This problem is due to the fact that VirtualBox switched from usbfs to sysfs in version 3.0.8. If the host does not understand this change, you can revert to the old behaviour by defining the following environment variable in any file that is sourced by your shell (e.g. your ~/.bashrc if you are using bash):

~/.bashrc
VBOX_USB=usbfs

Then make sure, the environment has been made aware of this change (reconnect, source the file manually, launch a new shell instance or reboot).

Also make sure that your user is a member of the storage group.

机翻(没错我就是为了凑字数的打我啊?):

USB子系统不工作
您的用户必须在vboxUsers组中,如果需要USB 2支持,则需要安装扩展包。然后,您将能够在虚拟机设置中启用USB 2,并为要从来宾操作系统访问的设备添加一个或多个筛选器。
如果vboxmanage list usbhost即使以ROOT权限运行也不显示任何USB设备,请确保/etc/udev/rules.d/中没有旧的udev规则(来自virtualbox 4.x)。virtualbox 5.0将udev规则安装到/usr/lib/udev/rules.d/。可以使用pacman-qo/usr/lib/udev/rules.d/60-vboxdrv.rules等命令来确定udev规则文件是否过期。
有时,在旧的Linux主机上,无法自动检测USB子系统,从而导致错误无法加载主机USB代理服务:即使用户在vboxusers组中,也无法在主机上找到Verr_或在不可见的USB驱动器中找到Verr_。这个问题是由于virtualbox在3.0.8版本中从usbfs切换到sysfs。如果主机不理解这一变化,您可以通过在shell提供的任何文件中定义以下环境变量(例如,如果您使用bash,则为~/.bashrc)来恢复到旧的行为:
~/.bashrc
vbox_usb=usbfs
然后确保环境已经意识到这一更改(重新连接、手动源文件、启动新的shell实例或重新启动)。
还要确保您的用户是存储组的成员。

试了一下,以root权限运行vboxmanage list usbhost 确实没有设备

然后这句话“请确保/etc/udev/rules.d/中没有旧的udev规则

也就是说,/etc/udev/rules.d/目录里的文件,是旧版virtualbox的,是要删除的

果断删除了/etc/udev/rules.d/60-vboxdrv.rules

可以正常识别USB设备了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注