我已将 VirtualBox 安装在lxc
容器内。但是,当我尝试启动虚拟机时,我收到消息:
kernel driver not accessible (rc=1909)
....permission problem with /dev/vboxdrv.
这显然看起来像是一个可预测的安全问题。
有谁知道如何向容器授予访问此设备驱动程序的权限:/dev/vboxdrv
?
非常感谢任何帮助或指示。
答案1
在你的 LXC 主机上(我假设是 Ubuntu):
安装
virtualbox-dkms
、linux-headers-generic
、build-essential
软件包并检查内核模块是否已加载:myhost$ sudo /etc/init.d/virtualbox status VirtualBox kernel modules are loaded.
获取 VirtualBox 设备编号(在我的例子中为 10、55/56/57):
myhost$ ls -la /dev | grep vbox crw------- 1 root root 10, 57 Feb 25 08:22 vboxdrv crw------- 1 root root 10, 56 Feb 25 08:22 vboxdrvu crw------- 1 root root 10, 55 Feb 25 08:22 vboxnetctl
获取节点号并添加到您的 LXC 来宾配置 (
/var/lib/lxc/myguest/config
):## VirtualBox lxc.cgroup.devices.allow = c 10:57 rwm lxc.cgroup.devices.allow = c 10:56 rwm lxc.cgroup.devices.allow = c 10:55 rwm
重新启动 LXC guest 虚拟机,安装软件包
virtualbox
并创建设备节点:myguest$ sudo mknod -m 600 /dev/vboxdrv c 10 57 myguest$ sudo mknod -m 600 /dev/vboxdrvu c 10 56 myguest$ sudo mknod -m 600 /dev/vboxnetctl c 10 55
检查来宾上的 VirtualBox 是否可以看到内核模块:
myguest$ sudo /etc/init.d/virtualbox status VirtualBox kernel modules are loaded.
答案2
VirtualBox Linux 内核驱动程序 (vboxdrv) 未加载或 /dev/vboxdrv 存在权限问题。通过执行重新设置内核模块
'/etc/init.d/vboxdrv setup'
作为根。 Ubuntu 或 Fedora 用户应首先安装 DKMS 软件包。该软件包跟踪 Linux 内核更改并在必要时重新编译 vboxdrv 内核模块。
答案3
您需要/dev/vboxdrv
拥有组“vboxuser”和在该组中启动容器的用户。将用户添加到组中,然后确保有组权限(即chmod 660 /dev/vboxdrv
)。
答案4
不需要在主机上安装 virtualbox,只要您的容器编译了内核模块,您就可以在 LXC 容器上的预启动脚本期间加载它。为了更好的安全性,您可以在加载之前将 VBox 内核模块复制到主机。