vboxdrv.sh:失敗:modprobe vboxdrvが失敗しました。「dmesg」を使用して理由を確認してください


53

UbuntuラップトップでVirtualBoxを実行すると問題が発生します。私のラップトップはデュアルブートで、実行中(Windows 10-私は長年使用していなかったと思います)、およびUbuntu 16.0.4 LTSです。

ラップトップのBIOS設定でセキュアブートが有効になっています。

ここには同様の質問、特に次の2つの質問が投稿されていることを認識しています。

これらの2つの質問の回答セクションに記載されているすべての指示に従いましたが、問題は未解決のままです。

virtualboxを実行しようとしたときのコンソール出力は次のとおりです。

me@YOURBOX:~$ virtualbox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.4.0-47-generic) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.

/sbin/vboxconfig提案どおりに実行した場合のコンソール出力は次のとおりです。

me@YOURBOX:~$ sudo /sbin/vboxconfig  
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

の出力の末尾は次のdmesgとおりです。

[   44.319682] audit: type=1400 audit(1491313982.374:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/evince-previewer" pid=705 comm="apparmor_parser"
[   45.041433] cgroup: new mount options do not match the existing superblock, will be ignored
[   59.682936] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.697820] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.702008] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   60.267000] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   62.473044] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   70.681706] audit_printk_skb: 60 callbacks suppressed
[   70.681709] audit: type=1400 audit(1491314008.734:32): apparmor="STATUS" operation="profile_load" profile="unconfined" name="docker-default" pid=2009 comm="apparmor_parser"
[   70.850936] aufs 4.x-rcN-20160111
[   75.407218] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[   75.408555] Bridge firewalling registered
[   75.427172] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   75.848416] ip_tables: (C) 2000-2006 Netfilter Core Team
[   76.703232] Initializing XFRM netlink socket
[   77.060003] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
[   80.101042] aufs au_opts_verify:1597:dockerd[1402]: dirperm1 breaks the protection by the permission bits on the lower branch
[  113.895236] wlp3s0: authenticate with 84:16:f9:77:e1:54
[  113.910483] wlp3s0: send auth to 84:16:f9:77:e1:54 (try 1/3)
[  113.912712] wlp3s0: authenticated
[  113.915101] wlp3s0: associate with 84:16:f9:77:e1:54 (try 1/3)
[  113.919397] wlp3s0: RX AssocResp from 84:16:f9:77:e1:54 (capab=0x1411 status=0 aid=1)
[  113.919516] wlp3s0: associated
[  113.919559] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready

今、私は嘘をつくつもりはありません-dmesgが何を吐き出したのか全く分かりません -そして私が知る限り、ログ出力にはエラーメッセージがありません-これは状況をさらに苛立たせます。

Ubuntu 16.0.4 LTSを実行しているラップトップにVirtualBox 5.xをインストールした人はいますが、BIOSでセキュアブートが有効になっていますか?-はいの場合、解決策は何ですか。???!

多くの人々がこの問題を抱えています-数年前まで遡ります。誰にも解決策がないように見えるのは非常に奇妙です-???


2
「ラップトップのBIOS設定でセキュアブートが有効になっています。」-それはあなたの問題の一部かもしれません。セキュアブートがVBoxを壊したことをしばらく聞いたことを覚えています。
Androidデベロッパー

回答:


64

VirtualBox +セキュアブート+ Ubuntu =失敗

問題は、UEFIシステムが信頼するキーですべてのカーネルモジュールに署名する必要があることです。そうしないと、ロードが失敗します。Ubuntuはサードパーティのvbox *カーネルモジュールに署名せず、virtualboxパッケージのインストール時にセキュアブートを無効にするオプションをユーザーに提供します。それはできましたが、マシンが起動するたびに迷惑な「Booting in insecure mode」というメッセージが表示され、Windows 10のデュアルブートインストールも機能しませんでした。

BIOS A18を搭載したDell Latitude E7440上のUbuntu 16.04、およびWindows 10のデュアルブートインストール。

この問題を解決するために私が使用した主な情報源は、Fedora / Redhatに特に当てはまります:http : //gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

関連するUbuntuの質問: Ubuntu 16.04へのアップグレード後に「vboxdrv」をロードできませんでした(安全なブートを維持したい)

Ubuntu / Debian専用に動作させる手順

  1. virtualboxパッケージをインストールします。インストールがセキュアブートが有効になっていることを検出した場合、手元に問題が表示され、セキュアブートを無効にするオプションが提供されます。「いいえ」を選択します。

  2. カーネルモジュールの署名に使用される個人用の公開/秘密RSAキーペアを作成します。ルートアカウントとディレクトリ/ root / module-signing /を使用して、カーネルモジュールの署名に関連するすべてのものを保存することにしました。

    $ sudo -i
    # mkdir /root/module-signing
    # cd /root/module-signing
    # openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
    [...]
    # chmod 600 MOK.priv
    
  3. MOK(「マシン所有者キー」)ユーティリティを使用して、システムが信頼できるように公開キーをインポートします。これは2段階のプロセスで、最初にキーがインポートされ、次にマシンを次回起動するときに登録する必要があります。単純なパスワードで十分です。一時的に使用するためだけです。

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. マシンを再起動します。ブートローダーが起動すると、MOKマネージャーEFIユーティリティが自動的に起動します。手順3で提供されたパスワードの一部を要求します。「MOKの登録」を選択すると、手順3でインポートされたキーが表示されます。登録手順を完了し、ブートを続行します。Linuxカーネルは、ロードされたキーをログに記録します。次のコマンドを使用すると、独自のキーを表示できます。 dmesg|grep 'EFI: Loaded cert'

  5. カーネルビルドファイルに同梱されている署名ユーティリティを使用して、手順2で生成された秘密のMOKキーを使用してすべてのVirtualBoxモジュールに署名し/root/module-signing/sign-vbox-modulesます。 :

    #!/bin/bash
    
    for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
      echo "Signing $modfile"
      /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
                                    /root/module-signing/MOK.priv \
                                    /root/module-signing/MOK.der "$modfile"
    done
    

    その後:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. ルートとして手順5のスクリプトを実行します。新しいカーネルアップデートをインストールするたびに署名スクリプトを実行する必要があります。これにより、サードパーティのVirtualBoxモジュールが再構築されるためです。それはに依存するため、新しいカーネルが起動された後にのみ、スクリプトを使用 modinfo -nしてuname -rのために署名するためにどのカーネルバージョンを伝えるために。

  7. vboxdrvモジュールをロードしてVirtualBoxを起動します。

    # modprobe vboxdrv
    

この手順は、必要に応じて、nvidiaグラフィックドライバーなどの他のサードパーティカーネルモジュールに署名するためにも使用できます。(私はそれを自分でテストしていません。)

注:上記の回答は、すべてØyvindStegardのブログ投稿、VirtualBox + Secure Boot + Ubuntu = failから得られました


1
エラーが発生します:vboxdrv.sh: failed: modprobe vboxnetflt failed. Please use 'dmesg' to find out why. dmesg:[70567.246789] vboxdrv: Found 2 processor cores [70567.267310] vboxdrv: TSC mode is Invariant, tentative frequency 2166734189 Hz [70567.267315] vboxdrv: Successfully loaded version 5.0.40_Ubuntu (interface 0x00240000)
marshy101

5
18.04+についての注意:推奨されるgrepは次のようになります:dmesg|grep 'EFI:'代わりにdmesg|grep 'EFI: Loaded cert'
-gkephorus

3
これが何をするのかを絶対に知り理解することはできませんが、うまくいきました。
naneri

1
念のため、UEFIまたはセキュアモードなしでこの問題が発生しました。私の場合、18.04.xのvirtualbox-dkmsのインストールが壊れていました。私の修正は:apt purge virtualbox-dkms && apt install virtualbox-dkms && modprobe vboxdrv
gorlok

1
virtualboxを5.2から6.0にアップグレードする場合は、6と7の手順をもう一度忘れないでください。
voleger

12

上記の答えはおそらく正常に機能しますが、より簡単な時間を望む場合:

私はそれを解決することができました

BIOSから起動して、詳細設定(f7)>ブート>「セキュアブート」までスクロールダウン>「Windows EUFIモード」を「他のOS」に変更

私のvirtualboxは今完璧に動作します。


2
これをしたくない理由はありますか?
Taegost

何らかの電力サージまたはBIOSがリセットされたため、これを行う必要がありました。今、上記のエラーは表示されません。
ジャマダーニ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.