lxc:コンテナ内でvirtualboxを実行する


9

lxcコンテナー内にvirtualboxをインストールしました。ただし、VMを起動しようとすると、次のメッセージが表示されます。

カーネルドライバーにアクセスできません(rc = 1909).... / dev / vboxdrvでの権限の問題。

これは明らかに予測可能なセキュリティ問題のように見えます。

このデバイスドライバー '/ dev / vboxdrv'にアクセスするためのアクセス許可をコンテナーに付与する方法を誰かが知っていますか?

ヘルプやポインタは大歓迎です。

回答:


9

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ゲストを再起動し、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.
    

これが正解です。他のすべての答えが欠けていることを最も重要なステップは、ステップ3と4です
レオ・ラム

1

VirtualBox Linuxカーネルドライバー(vboxdrv)がロードされていないか、/ dev / vboxdrvに権限の問題があります。実行してカーネルモジュールを再セットアップします

 '/etc/init.d/vboxdrv setup'

ルートとして。UbuntuまたはFedoraのユーザーは、最初にDKMSパッケージをインストールする必要があります。このパッケージはLinuxカーネルの変更を追跡し、必要に応じてvboxdrvカーネルモジュールを再コンパイルします。


これはエラーメッセージからの引用です。ドライバーは読み込まれていますが、コンテナーにアクセスする権限がありません。エラー応答ごと。私の質問は:コンテナー内のプロセスにカーネルデバイスにアクセスするためのアクセス許可をどのように付与しますか?権限の問題を解決するにはどうすればよいですか?
user108168 2013

0

/dev/vboxdrvグループ「vboxuser」が所有し、ユーザーがそのグループでコンテナーを開始している必要があります。ユーザーをグループに追加し、グループのアクセス許可(つまりchmod 660 /dev/vboxdrv)があることを確認します。


こんにちはネイサンC。ご返信いただきありがとうございます。私はこれをどこで行っていますか?ホスト環境またはコンテナで?
user108168 2013

カーネルドライバーがそこにインストールされていることを想定したホスト(LXCはホストカーネルに依存しているため、これらのドライバーをインストールする必要があります)。

こんにちはネイサンC明確化をありがとう。デバイス/ dev / vboxdrvはrootが所有しており、コンテナーをrootとして起動しています。コンテナー内で別のユーザーとしてvirtualboxを実行していましたが、rootとして実行しようとしました。また、デバイスをchmodして、グループをvboxusersに設定し、権限を660に設定しました。それでもエラーが発生します。rootユーザーと非rootユーザーの両方について、すべてがホスト上で正常に機能します。コンテナーにアクセス許可を付与するためにlxc構成ファイルに設定を配置する必要はありませんか?それは私が仮定したものですが、それらが何であるかはわかりません。ご協力いただきありがとうございます。
user108168 2013

-1

ホストマシンにvirtualboxをインストールする必要はないはずです。コンテナーがカーネルモジュールをコンパイルする限り、LXCコンテナーの事前起動スクリプト中にロードするだけで済みます。セキュリティを高めるために、ロードする前にVBoxカーネルモジュールをホストにコピーできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.