使用 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