Vraag Kon 'vboxdrv' niet laden na upgrade naar Ubuntu 16.04 (en ik wil een veilige boot behouden)


Ik upgrade van Ubuntu 15.10 naar 16.04 en sindsdien start VirtualBox 5.0.18 mijn VM's niet meer. Het klaagt dat 'vboxdrv' niet is geladen. Dus ik probeer het te laden en krijg de volgende foutmelding:

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

Ik geloof dat het gerelateerd is aan veilige boot die ik gebruik en die ik wil blijven gebruiken. Eigenlijk werkte Ubuntu 15.10 met veilig opstarten en VirtualBox prima.

Ik heb ook geprobeerd $ sudo apt-get --reinstall install virtualbox-dkms die de kernel-module heeft gebouwd, maar dit probleem niet heeft opgelost.

Enig idee hoe je vboxdrv geladen krijgt terwijl je beveiligde boot ingeschakeld houdt?

Update 2: Ook probeerde ik het uitvoeren sudo mokutil --disable-validation. Bij het uitvoeren van deze opdracht wordt tijdens de volgende opstartprocedure om een ​​veilige start uit te schakelen, een sleutel of hash van de schijf toegevoegd. Omdat ik veilige opstart niet wil uitschakelen, lijkt dit ook mijn probleem niet op te lossen. Ook wil ik UEFI geactiveerd houden voor een parallelle Windows-installatie.

Notitie: Zie als je het niet erg vindt om het veilig opstarten uit te schakelen Waarom krijg ik "Vereiste sleutel niet beschikbaar" bij het installeren van kernelmodules van derden of na een kernel-upgrade? in plaats daarvan.


104
2018-04-22 16:10


oorsprong


ik ook. geprobeerd opnieuw te installeren / te zuiveren - Karthik Nishanth
Zien askubuntu.com/questions/762254/... - Pilot6
Hoewel deze vraag een duplicaat is van askubuntu.com/questions/762254/..., die vraag bevat niet het antwoord gegeven door @Majal hieronder. - zwets
Stap voor stap handleiding: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail - Dušan Maďar


antwoorden:


Sinds kernelversie 4.4.0-20 werd dit afgedwongen ongetekend kernelmodules kunnen niet worden uitgevoerd met Secure Boot ingeschakeld. Omdat u Secure Boot wilt behouden, is de volgende logische stap om teken die modules.

Laten we het dus proberen.

  1. Maak ondertekeningssleutels

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

    Keuze: voor extra beveiliging, sla de -knooppunt-schakelaar over, die om een ​​wachtwoord zal vragen. Zorg er vervolgens voor dat je doorgaat naar de volgende stap export KBUILD_SIGN_PIN='yourpassword'

  2. Onderteken de module (vboxdrv voor dit voorbeeld, maar herhaal voor andere modules in ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko) voor volledige functionaliteit)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Bevestig dat de module is ondertekend

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Registreer de sleutels van Secure Boot

    sudo mokutil --import MOK.der
    

    die een wachtwoord zal vragen om te gebruiken om de import in de volgende stap te bevestigen.

  5. Start opnieuw op en volg de instructies om MOK (Machine Owner Key) in te schrijven. Hier is een monster met foto's. Het systeem wordt nog een keer opnieuw opgestart.

  6. Bevestig dat de sleutel is ingeschreven

    mokutil --test-key MOK.der
    

Als VirtualBox nog steeds niet wordt geladen, kan dit zijn omdat de module niet is geladen (sudo modprobe vboxdrv zal dit oplossen) of dat de sleutel niet is ondertekend. Herhaal gewoon die stap en alles zou goed moeten werken.

Middelen: Gedetailleerde website artikel voor Fedora en Ubuntu-implementatie van module ondertekening. @zwets voor extra beveiliging. @shasha_trn voor met vermelding van alle modules.

Extra informatiebron: Ik heb elke keer een bash-script gemaakt voor mijn eigen gebruik virtualbox-dkms upgrades en overschrijft dus de ondertekende modules. Bekijk mijn vboxsign op GitHub.


143
2018-05-06 05:57



Ik heb ook vboxnetadp, vboxnetflt, vboxpci-modules ondertekend om netwerk- en pass-throw pci-apparaten in virtuele machines te hebben. - sasha_trn
Een toevoeging voor de beveiligingsbewuste: de private sleutel MOK.priv gegenereerd door openssl -nodes zoals hierboven is niet beveiligd met een wachtwoord. Dus in principe zou een kwaadwillig programma het kunnen gebruiken om een ​​gecompromitteerde module te ondertekenen of zelfs de bootloader te beschadigen, omdat je handtekeningsleutel nu als een geheime sleutel in hardwareopslag zit. Een veiligere oplossing is om de -nodes keuze. In stap 1 openssl zal dan om een ​​wachtwoord vragen om de private sleutel te beschermen. Stel vóór stap 2 bij het ondertekenen de KBUILD_SIGN_PIN omgevingsvariabele naar het wachtwoord dat u in stap 1 hebt opgegeven. - zwets
Toen ik het antwoord van @ majal verlegde, moest ik het uitvoeren sudo apt install --reinstall virtualbox-dkms voordat de instructies worden opgevolgd. - TylersSN
@zwets zou je eventueel kunnen uitweiden over hoe je de KBUILD_SIGN_PIN omgevingsvariabele? export KBUILD_SIGN_PIN=password en export KBUILD_SIGN_PIN="password" voordat stap 2 beide resulteerde in SSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117 - adempewolff
@adempewolff Als uw wachtwoord tekens bevat die door uw shell worden geïnterpreteerd (bijvoorbeeld '$' in een aanhalingstekenreeks), moet u deze insluiten in apostrofs ('). - zwets


Op mijn systeem deed ik het volgende om het te laten werken:

Voer mokutil uit:

sudo mokutil --disable-validation

Toen vroeg mokutil me om een ​​wachtwoord in te stellen voor de MOK Manager. Na het opnieuw opstarten van de pc, liet de BIOS een dialoog zien om de MOK Manager te configureren. Ik heb SecureBoot uitgeschakeld in dit dialoogvenster, het heeft om verschillende tekens van het wachtwoord gevraagd (bijv. Teken (5) invoeren, enz.).

Na het opstarten van de vboxdrv-modules correct geladen.

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

Vreemd genoeg laat mokutil nog steeds zien dat SecureBoot is ingeschakeld:

sudo mokutil --sb-state
SecureBoot enabled

13
2018-04-26 16:16



Zoals vermeld in mijn vraag, wil ik doorgaan met het veilig opstarten. Dus het uitschakelen van secure boot lost het probleem niet op. - jans
Ik wilde Secure Boot niet uitschakelen, maar moest dit uiteindelijk doen, omdat niets anders zou werken - ik wil niet elke keer dingen handmatig ondertekenen als er een kernel-update komt. Jammer dat dit de enige gemakkelijke oplossing is. Btw, UEFI zegt nog steeds dat het veilig opstarten is ingeschakeld. _ (ツ) _ / ¯ - jaywink


U kunt de validatiecontrole via uitschakelen

sudo apt install mokutil
sudo mokutil --disable-validation

Daarna moeten DKMS-pakketten worden geïnstalleerd.


4
2018-04-25 07:39



Ook heb ik geprobeerd om sudo mokutil -disable-validatie uit te voeren. Bij het uitvoeren van deze opdracht wordt tijdens de volgende opstartprocedure om een ​​veilige start uit te schakelen, een sleutel of hash van de schijf toegevoegd. Omdat ik veilige opstart niet wil uitschakelen, lijkt dit ook mijn probleem niet op te lossen. Laat het me weten als ik dit commando verkeerd heb begrepen. - jans
Probeer veilig opstarten uit te schakelen. Je kunt het terug inschakelen, als dat niet helpt. - Pilot6


Ik kreeg ook een foutmelding over vboxdrv na de upgrade. Maar er was een probleem met de oude versie (5.0.14) van Oracle VM VirtualBox Extension Pack. Ik heb de nieuwere versie (5.0.18) van dit pakket gedownload en geïnstalleerd en het probleem is verdwenen.


0
2018-04-22 22:41



Hé, kun je alsjeblieft uitweiden? Waar heb je het van gedownload? PPA of deb-bestand? - Karthik Nishanth
Ik heb het extensiepakket gedownload van downloads op de VirtualBox-site, koppeling is "VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack -> Alle ondersteunde platforms"Vervolgens heb ik Bestand> Voorkeuren geopend op Oracle VM Virtual Box Manager," Extensies "geselecteerd en gedownloade bestanden aan de lijst toegevoegd. Het verving de oude versie van" Oracle VM VirtualBox Extension Pack "(was 5.0.14rxxxxxx). - Reling
Extensiepakket corrigeert de fout niet. De fout gaat over het ondertekenen van de module - Karthik Nishanth
Dit is niet van toepassing op mijn probleem. - jans
Dit staat los van het probleem van het OP. Het foutbericht "Vereiste sleutel niet beschikbaar" geeft aan dat het probleem te wijten is aan een niet-ondertekende kernelmodule op een Secure Boot ingeschakeld platform. Geen enkele update van VirtualBox kan dit oplossen tenzij het bevat een module ondertekend met een sleutel die door de kernel wordt vertrouwd. D.w.z. Canonical moet het ondertekenen of Oracle moet het ondertekenen en de openbare sleutel moet worden toegevoegd aan de vertrouwde sleutels van de kernel (of uw platform). - zwets


Oké, dus na een beetje testen ben ik er vrij zeker van dat dit een veilig opstartprobleem is.

Als in als het is ingeschakeld dan wordt dit gegooid:

WAARSCHUWING: de vboxdrv-kernelmodule is niet geladen. Of er is geen module            beschikbaar voor de huidige kernel (4.4.0-21-generiek) of niet            laden. Hercompileer de kernelmodule en installeer deze met sudo / sbin / rcvboxdrv setup

Als Secure Boot echter is uitgeschakeld, laadt virtualbox prima zonder fouten.

Ik heb mijn bios nog steeds ingesteld als UEFI.


0
2018-04-23 16:22



Zoals vermeld in mijn vraag, wil ik doorgaan met het veilig opstarten. Dus het uitschakelen van secure boot lost het probleem niet op. - jans


Ik had hetzelfde probleem vandaag, ik had Windows 10 en Ubuntu 15.10 op een dual-boot met uefi ingeschakeld op Bios (ik heb het niet uitgeschakeld zodat ik de vooraf geïnstalleerde Windows kan uitvoeren).

Na het upgraden naar Ubuntu 16.04 is VirtualBox gestopt met het laden van mijn VM's met dezelfde foutmelding:

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

Ik vermoedde UEFI-probleem, omdat tijdens het upgraden van het installatieprogramma werd gevraagd of ik het wilde uitschakelen, waarop ik antwoordde Nee (omdat Ja mijn Windows onbruikbaar kan maken).

Wat ik deed is naar Bios gaan en ondersteuning inschakelen voor legacy BIOS boot ZONDER het uitschakelen van veilig opstarten.

Virtualbox werkt nu goed.

Bijwerken: Zoals @zwets terecht in de opmerking heeft opgemerkt, zorgt het inschakelen van oudere modules ervoor dat het veilig opstarten wordt uitgeschakeld.


0
2018-04-22 23:23



Eigenlijk heb ik ook UEFI nodig om een ​​parallelle Windows-installatie op te starten. Dus het uitschakelen ervan is ook voor mij geen optie. Ik heb mijn vraag dienovereenkomstig bijgewerkt. - jans
Heb je Ondersteuning voor verouderde BIOS-modules ingeschakeld? Dit is een andere optie in UEFI-bios, anders dan veilig opstarten. - Zeine77
@ Zeine77 kunt u controleren of uw BIOS "legacy-modules" mogelijk maakt terwijl Secure Boot ingeschakeld blijft? Dit is hoogst onwaarschijnlijk, omdat de eerste optie toestaat dat niet-vertrouwde code in kernelruimte draait, wat het doel van de tweede verslaat. - zwets
@zwets je hebt gelijk, ik heb net mijn bios-instellingen gecontroleerd; en het inschakelen van verouderde modules heeft ervoor gezorgd dat het beveiligd opstarten is uitgeschakeld. Ik veronderstelde, zoals uitgelegd in het antwoord, dat het uitschakelen van een veilige boot ervoor zou zorgen dat Windows 10-opstart mislukt, maar dit is niet het geval. Toen ik 15.10 (maanden geleden) voor het eerst installeerde, zorgde ik ervoor dat ik de veilige opstartprocedure niet uitschakelde, omdat dit de Win 10-installatie zou beschadigen. Betekent dit dat de vooraf geïnstalleerde Win 10 prima werkt en de beveiligde modus is uitgeschakeld? - Zeine77