lxc:在容器内运行 virtualbox

lxc:在容器内运行 virtualbox

我已将 VirtualBox 安装在lxc容器内。但是,当我尝试启动虚拟机时,我收到消息:

kernel driver not accessible (rc=1909)
....permission problem with /dev/vboxdrv.

这显然看起来像是一个可预测的安全问题。

有谁知道如何向容器授予访问此设备驱动程序的权限:/dev/vboxdrv

非常感谢任何帮助或指示。

答案1

在你的 LXC 主机上(我假设是 Ubuntu):

  1. 安装virtualbox-dkmslinux-headers-genericbuild-essential软件包并检查内核模块是否已加载:

    myhost$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    
  2. 获取 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
    
  3. 获取节点号并添加到您的 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
    
  4. 重新启动 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
    
  5. 检查来宾上的 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 内核模块复制到主机。

相关内容