Vagrant 在尝试添加 USB 时出现分段错误

Vagrant 在尝试添加 USB 时出现分段错误

我有一个使用 archlinux/archlinux 的简单 Vagrantfile,并尝试访问连接到主机的 USB。当我vagrant up这样做时,我收到如下错误:

There was an error while executing `VBoxManage`, a CLI used by Vagrant 
for controlling VirtualBox. The command and stderr is shown below.
Command: ["showvminfo", "VAGRANT-ID", 
"--machinereadable"]
Stderr: 

如果我使用以下命令检查,vboxmanage showvminfo VAGRANT-ID --machinereadable则会得到如下分段错误:

...
USBFilterManufacturer2=""
USBFilterProduct2=""
USBFilterRemote2=""
USBFilterSerialNumber2=""
[1]    9658 segmentation fault (core dumped)  vboxmanage showvminfo
VAGRANT-ID --machinereadable

我在 Vagrantfile 中使用这些行尝试访问 USB。

vb.customize ["modifyvm", :id, "--usb", "on"]
vb.customize ["modifyvm", :id, "--usbehci", "on"]
vb.customize ['usbfilter', 'add', '0', '--target', :id, '--name', 
'usb', '--vendorid', 'VENDOR-ID-HEX', '--productid', 'PRODUCT-ID-HEX']

我的主机操作系统是 Fedora 29,Virtualbox 版本是 6.0,Vagrant 2.2.3。

我尝试过的方法:

删除了 .vagrent 文件夹并执行 vagrant up,

添加

vagrant ALL=(ALL) NOPASSWD:ALL
Defaults:vagrant !requiretty

到 /etc/sudoers 文件

使用

vboxmanage usbfilter add 0 --taget VAGRANT-ID --name usb 
--vendorid VENDOR-ID-HEX --productid PRODUCT-ID-HEX

(并且没有出现错误)。

先感谢您。

答案1

我找到了一个解决方案。

这不是 Vagrant 的问题,而是 Virtualbox 的问题。如你所见,

vboxmanage showvminfo <uuid>

导致段错误,在 Linux 上是可见的。在我的实验中,它在 Windows 命令行中不可见,但可能也可以在那里进行调试。

如果使用 Vagrant 来管理 Virtualbox 容器,它本质上就是一个大型的 ruby​​ 脚本vboxmanage。它可以vboxmanage通过异常的退出代码检测到失败,但对其原因了解不多。

这个错误存在于vboxmanage二进制文件中,而不是它所使用的某个内部 VirtualBox 库中。

这个问题可以在公共 VirtualBox 错误跟踪器中找到这里

测试版本 128880 已实施修复,但尚未发布。在没有新版本发布之前,我们需要使用测试版本。

如果测试版本(作为内部开发版本)无法使用,可以选择仅从vboxmanage中提取,并将其与最新稳定版本一起使用。对于我来说,此方案在 Windows 和 Linux 上均有效。

希望能够尽快发布。

相关内容