lxc
コンテナ内にVirtualBoxがインストールされています。ただし、仮想マシンを起動しようとすると、次のメッセージが表示されます。
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ゲストを再起動し、パッケージをインストールし
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カーネルモジュールをロードする前にホストにコピーできます。