vboxdrv.sh: fallito: modprobe vboxdrv non riuscito. Si prega di utilizzare 'dmesg' per scoprire perché


53

Ho problemi con l'esecuzione di VirtualBox sul mio laptop Ubuntu. Il mio laptop è dual boot ed è in esecuzione (Windows 10 - penso, non lo uso da anni), così come Ubuntu 16.0.4 LTS.

Ho l'avvio sicuro abilitato sulle impostazioni BIOS del mio laptop.

Sono consapevole che ci sono domande simili pubblicate qui, in particolare queste due:

Ho seguito tutte le istruzioni fornite nelle sezioni delle risposte per queste due domande, ma il problema rimane irrisolto.

Ecco l'output della console, quando provo a eseguire 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.

ecco l'output della console quando corro /sbin/vboxconfigcome suggerito:

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.

Ecco l'estremità di coda dell'output di 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

Ora, non mentirò - non ho assolutamente idea di cosa sia appena uscito Dmesg - e per quanto ne so, non ci sono messaggi di errore nell'output del registro - il che rende la situazione ancora più esasperante.

Qualcuno ha mai installato VirtualBox 5.x su un laptop con Ubuntu 16.0.4 LTS - ma con avvio sicuro abilitato sul BIOS ? - se sì, qual è la soluzione. ???!

Molte persone hanno questo problema, anche alcuni anni fa. è molto strano che nessuno sembri avere una soluzione per questo - ???


2
"Ho abilitato l'avvio sicuro nelle impostazioni del BIOS del mio laptop." - Potrebbe far parte del tuo problema. Ricordo un po 'di tempo dopo aver sentito che l'avvio sicuro ha rotto VBox.
Dev Android

Risposte:


64

VirtualBox + Secure Boot + Ubuntu = fail

Il problema è che tutti i moduli del kernel devono essere firmati da una chiave ritenuta attendibile dal sistema UEFI, altrimenti il ​​caricamento fallirà. Ubuntu non firma i moduli del kernel vbox * di terze parti, ma offre all'utente la possibilità di disabilitare l'avvio protetto all'installazione del pacchetto virtualbox. Potrei farlo, ma poi vedrei un fastidioso messaggio "Avvio in modalità non sicura" ogni volta che la macchina si avvia, e anche l'installazione di Windows 10 a doppio avvio che ho non funzionerebbe.

Ubuntu 16.04 su un Dell Latitude E7440 con BIOS A18 e con un'installazione di Windows 10 a doppio avvio.

Il merito va alla fonte primaria di informazioni che ho usato per risolvere questo problema, che si applica specificamente a Fedora / Redhat: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

E una domanda di Ubuntu pertinente: Impossibile caricare "vboxdrv" dopo l'aggiornamento a Ubuntu 16.04 (e voglio mantenere un avvio sicuro)

I passaggi per farlo funzionare, in particolare per Ubuntu / Debian

  1. Installa il pacchetto virtualbox. Se l'installazione rileva che Secure Boot è abilitato, ti verrà presentato il problema a portata di mano e ti verrà data la possibilità di disabilitare Secure Boot. Scegli "No".

  2. Creare una coppia di chiavi RSA pubblica / privata personale che verrà utilizzata per firmare i moduli del kernel. Ho scelto di usare l'account root e la directory / root / module-signing / per archiviare tutte le cose relative alla firma dei moduli del kernel.

    $ 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. Utilizzare l'utilità MOK ("Chiave proprietario macchina") per importare la chiave pubblica in modo che possa essere considerata attendibile dal sistema. Si tratta di un processo in due passaggi in cui la chiave viene prima importata e successivamente deve essere registrata al successivo avvio della macchina. Una password semplice è abbastanza buona, poiché è solo per un uso temporaneo.

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. Riavvia la macchina. All'avvio del bootloader, l'utilità EFI del gestore MOK dovrebbe avviarsi automaticamente. Chiederà parti della password fornita al passaggio 3. Scegliere "Registra MOK", quindi si dovrebbe vedere la chiave importata al passaggio 3. Completare i passaggi di registrazione, quindi continuare con l'avvio. Il kernel Linux registrerà le chiavi caricate e dovresti essere in grado di vedere la tua chiave con il comando: dmesg|grep 'EFI: Loaded cert'

  5. Usando un'utilità di firma fornita con i file di compilazione del kernel, firma tutti i moduli di VirtualBox usando la chiave MOK privata generata nel passaggio 2. L'ho inserito in un piccolo script /root/module-signing/sign-vbox-modules, in modo che possa essere facilmente eseguito quando vengono installati nuovi kernel come parte di aggiornamenti regolari :

    #!/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
    

    E poi:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. Esegui lo script dal passaggio 5 come root. Dovrai eseguire lo script di firma ogni volta che viene installato un nuovo aggiornamento del kernel, poiché ciò comporterà una ricostruzione dei moduli di VirtualBox di terze parti. Utilizzare lo script solo dopo che è stato avviato il nuovo kernel, poiché si basa su modinfo -ne uname -rper indicare a quale versione del kernel si desidera firmare.

  7. Carica il modulo vboxdrv e avvia VirtualBox:

    # modprobe vboxdrv
    

La procedura può anche essere utilizzata per firmare altri moduli del kernel di terze parti, come i driver grafici nvidia, se necessario. (Non l'ho provato io stesso.)

Nota: la risposta sopra è stata interamente ricavata dal post del blog di Øyvind Stegard, VirtualBox + Secure Boot + Ubuntu = fail .


1
Ottengo un errore: 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
Nota su 18.04+: il grep suggerito dovrebbe leggere: dmesg|grep 'EFI:'al posto didmesg|grep 'EFI: Loaded cert'
gkephorus

3
Assolutamente non so e capisco cosa fa, ma ha funzionato.
Naneri,

1
Per ogni evenienza, ho avuto questo problema senza UEFI o modalità protetta. Nel mio caso, l'installazione di virtualbox-dkms su 18.04.x ​​è stata interrotta. La mia correzione era: apt purge virtualbox-dkms && apt install virtualbox-dkms && modprobe vboxdrv
gorlok

1
se aggiorni virtualbox da 5.2 a 6.0, non dimenticare di nuovo i passaggi 6 e 7 completi.
Voleger

12

La risposta sopra probabilmente funziona bene, ma se vuoi un momento più facile per questo:

Sono stato in grado di risolverlo da

avviare nel BIOS e andare> avanzato (f7)> avvio> scorrere verso il basso fino a "avvio sicuro"> cambiare "modalità EUFI di Windows" in "altro sistema operativo"

La mia virtualbox ora funziona perfettamente.


2
C'è un motivo per cui non vorresti farlo?
Taegost,

A causa di un aumento di potenza o qualcosa del mio BIOS è stato ripristinato, quindi ho dovuto farlo. Ora non visualizzo l'errore sopra riportato.
Jamadagni,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.