VirtualBox 5 无法在 Ubuntu 16.04 上创建仅主机适配器

VirtualBox 5 无法在 Ubuntu 16.04 上创建仅主机适配器

使用 Ubuntu 16.04 并按照这里为“基于 Debian 的 Linux 发行版”规定的方法安装 VirtualBox 5:

https://www.virtualbox.org/wiki/Linux_Downloads

此版本内核存在一个问题,解决方法如下:

https://askubuntu.com/a/768310/254069

尝试创建仅主机适配器如下失败:

$ VBoxManage hostonlyif create
0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg*)" at line 71 of file VBoxManageHostonly.cpp

答案1

事实证明,解决网络问题的方法是一个单独的模块,必须对其进行签名才能允许此特定功能。如下方的签名解决方案所述: https://askubuntu.com/a/768310/254069

VBoxManage hostonlyif create需要以下模块才能访问(modprobe):

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=MOK Signing/"

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)

sudo mokutil --import MOK.der

重启并“注册 MOK”

$ VBoxManage hostonlyif create
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interface 'vboxnet1' was successfully created

答案2

在 Ubuntu 17 zesty 中,全新安装、全新 VirtualBox、仅主机网络不起作用。

# ip a
4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
5: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff

解决方案是:

# ip link set vboxnet0 up
# ip link set vboxnet1 up

并且有效!!!

答案3

我找到了另一个更简单的解决方案来解决这个问题,但它与 VirtualBox 6.0+ 有关。。。它可能也适用于 5.x,但我没有针对该版本进行测试。

问题是因为内核模块默认未签名,因此为了做到这一点,您需要添加来自 Oracle 的公钥。

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

添加这些密钥后,您就可以以正常方式安装 VirtualBox,并且它将能够正常使用大多数功能(除了那些需要专有扩展的功能,仍然需要为这些功能安装它)

答案4

使用 Firejail 在 Sandbox 中运行 VirtualBox,如下所示:

firejail --noprofile virtualbox

相关内容