Impossibile caricare 'vboxdrv' dopo l'aggiornamento a Ubuntu 16.04 (e voglio mantenere l'avvio sicuro)

101

Aggiornamento da Ubuntu 15.10 a 16.04 e da allora VirtualBox 5.0.18 non sta più iniziando il mio VM. Si lamenta che "vboxdrv" non è caricato. Così provo a caricarlo e ottenere il seguente errore:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Credo che sia legato al boot sicuro che uso e che voglio continuare ad usare. In realtà con Ubuntu 15.10 boot sicuro e VirtualBox funzionavano bene.

Inoltre ho provato $ sudo apt-get --reinstall install virtualbox-dkms che ha compilato il modulo del kernel con successo ma non ha risolto questo problema.

Qualche idea su come caricare vboxdrv mantenendo attivo il boot sicuro?

Aggiornamento 2 : ho provato anche a eseguire sudo mokutil --disable-validation . Quando si esegue questo comando, durante il prossimo avvio viene richiesto di disabilitare l'avvio sicuro, aggiungere una chiave o un hash dal disco. Dal momento che non voglio disabilitare l'avvio sicuro, sembra che anche questo non risolva il mio problema. Inoltre voglio mantenere UEFI attivato per un'installazione parallela di Windows.

Nota : se non ti dispiace disabilitare l'avvio sicuro, vedi Perché ottengo" Chiave necessaria non disponibile "quando si installano i moduli del kernel di terze parti o dopo un aggiornamento del kernel? . / p>     

posta jans 22.04.2016 - 18:10

6 risposte

140

A partire dalla versione 4.4.0-20 del kernel, è stato applicato il fatto che i moduli del kernel non firmati non potranno essere eseguiti con Secure Boot abilitato. Poiché vuoi mantenere Secure Boot, il prossimo passo logico è quello di firmare quei moduli.

Quindi proviamoci.

  1. Crea chiavi di firma

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    Opzione : per maggiore sicurezza, salta l'opzione -nodes, che chiederà una password. Quindi, prima di passare al passaggio successivo, assicurati di export KBUILD_SIGN_PIN='yourpassword'

  2. Firma il modulo (vboxdrv per questo esempio, ma ripeti per altri moduli in ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko) per la piena funzionalità)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Verifica che il modulo sia firmato

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Registra le chiavi su Secure Boot

    sudo mokutil --import MOK.der
    

    che chiederà una password da utilizzare per confermare l'importazione nel passaggio successivo.

  5. Riavvia e segui le istruzioni per registrare MOK (codice proprietario macchina). Ecco un campione con immagini. Il sistema si riavvierà ancora una volta.

  6. Conferma che la chiave è stata registrata

    mokutil --test-key MOK.der
    

Se VirtualBox non si carica ancora, potrebbe essere perché il modulo non è stato caricato ( sudo modprobe vboxdrv lo risolverà) o che la chiave non è firmata. Basta ripetere questo passaggio e tutto dovrebbe funzionare correttamente.

Risorse: sito web dettagliato articolo per Fedora e < a href="https://github.com/Canonical-kernel/Ubuntu-kernel/blob/master/Documentation/module-signing.txt"> Implementazione di Ubuntu di firma del modulo. @zwets per sicurezza aggiuntiva . @shasha_trn per menzionando tutti i moduli .

Risorsa aggiuntiva: ho creato uno script bash per mio uso ogni volta che virtualbox-dkms aggiorna e quindi sovrascrive i moduli firmati. Dai un'occhiata al mio vboxsign su GitHub .

    
risposta data Majal 06.05.2016 - 07:57
12

Sul mio sistema ho fatto quanto segue per farlo funzionare:

Esegui mokutil:

sudo mokutil --disable-validation

Quindi mokutil mi ha chiesto di impostare una password per MOK Manager. Dopo aver riavviato il PC, il BIOS ha mostrato una finestra di dialogo per configurare MOK Manager. Ho disabilitato SecureBoot da questa finestra di dialogo, ha richiesto diversi caratteri dalla password (ad esempio, immettere il carattere (5), ecc.)

Dopo l'avvio dei moduli vboxdrv caricati correttamente.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

Stranamente, mokutil mostra ancora che SecureBoot è abilitato:

sudo mokutil --sb-state
SecureBoot enabled
    
risposta data Pocho 26.04.2016 - 18:16
4

Puoi disabilitare il controllo di convalida

sudo apt install mokutil
sudo mokutil --disable-validation

Dopo che i pacchetti DKMS dovrebbero essere installati.

    
risposta data Pilot6 25.04.2016 - 09:39
0

Ho ricevuto un errore su vboxdrv anche dopo l'aggiornamento. Ma c'era un problema con la vecchia versione (5.0.14) di Oracle VM VirtualBox Extension Pack. Ho scaricato e installato la versione più recente (5.0.18) di questo pacchetto e il problema è scomparso.

    
risposta data Reling 23.04.2016 - 00:41
0

Bene, dopo un po 'di test sono abbastanza sicuro che questo è un problema di avvio sicuro.

Come se fosse abilitato, viene lanciato:

  

ATTENZIONE: il modulo del kernel vboxdrv non è caricato. O non c'è nessun modulo            disponibile per il kernel corrente (4.4.0-21-generico) o non riuscito            caricare. Si prega di ricompilare il modulo del kernel e installarlo con l'installazione sudo / sbin / rcvboxdrv

Tuttavia, se l'avvio sicuro è disabilitato, virtualbox viene caricato correttamente senza errori.

Ho ancora il mio bios impostato come UEFI.

    
risposta data David Haynes 23.04.2016 - 18:22
0

Oggi ho avuto lo stesso problema, avevo Windows 10 e Ubuntu 15.10 su un dual boot con uefi abilitato su Bios (non l'ho disabilitato in modo da poter eseguire Windows preinstallato).

Dopo l'aggiornamento a Ubuntu 16.04 VirtualBox ha smesso di caricare i miei VM con lo stesso messaggio di errore:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Sospettavo il problema UEFI perché durante l'aggiornamento l'installer mi chiedeva se volevo disabilitarlo, a cui ho risposto No (Perché sì, Windows potrebbe rendere inutilizzabile).

Quello che ho fatto è andare su Bios e abilitare il supporto per l'avvio legacy del BIOS SENZA disabilitare l'avvio sicuro.

Virtualbox funziona bene ora

Aggiornamento : come @zwets ha puntualizzato correttamente nel commento, abilitando i moduli legacy si disabilita l'avvio sicuro.

    
risposta data Zeine77 23.04.2016 - 01:23

Leggi altre domande sui tag