Sådan løser du fejlen “VirtualBox Kernel Driver Not Installed” (rc=-1908)
Sikkerhedsfunktioner som Secure Boot er der af en grund, men nogle gange forårsager de reel hovedpine med tredjeparts kernemoduler – tænk på VirtualBox’s vboxdrv. Dybest set, hvis Secure Boot blokerer indlæsning af usignerede eller inkompatible kerneudvidelser, starter VirtualBox simpelthen ikke VM’er korrekt. Dette er et almindeligt problem på Macs og nogle Linux-distributioner, især efter store OS-opdateringer eller hvis du roder med brugerdefinerede kerner. At vide, hvordan man håndterer det, kan spare dig en del tid og frustration.
Sådan rettes denne fejl på macOS og Linux
Tillad kernemodulet på macOS
Hvis du kører VirtualBox på en Mac med nyere macOS (f.eks.10.13 eller nyere), vil du sandsynligvis se en prompt eller være nødt til manuelt at tillade udvidelsen. Linux har sine egne særheder, men macOS-sikkerhedsindstillinger er forholdsvis nemme at ændre. Dette hjælper, fordi macOS blokerer indlæsning af usignerede eller nye moduler, hvilket forårsager fejl i VM-kernedriveren.
- Åbn Systemindstillinger, og gå derefter til Sikkerhed og privatliv.
- Hvis du ser en meddelelse om blokeret software under fanen Generelt, skal du klikke på Tillad ud for den.
Genstart VirtualBox Kernel-tjenesten
Nogle gange kan en god genstart af VirtualBox-opstartsskriptet hjælpe med at hente den signerede kerneudvidelse korrekt.Åbn terminalen og kør:
sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart
Denne kommando stopper og genstarter derefter indlæsningsprocessen for VirtualBox-kerneudvidelsen. På min Mac har jeg set, at denne metode, kombineret med sikkerhedsprompten, får VirtualBox til at genkende driveren uden problemer efter en genstart.
Registrer vboxdrv-kerneudvidelsen
Et andet trick er manuelt at registrere VirtualBox-driveren med
sudo kmutil load -p '/Library/Application Support/VirtualBox/VBoxDrv.kext'
Dette tvinger operativsystemet til at indlæse udvidelsen – en slags “tving det til at være opmærksom”-handling. Efter at have udført dette, genstart og se om VirtualBox kan køre den virtuelle maskine nu. Nogle gange indlæser systemet bare ikke driveren som standard på grund af SIP (System Integrity Protection).
Godkend Oracles udvikler-ID
Hvis ovenstående stadig ikke virker, blokerer macOS muligvis driveren, fordi den ikke har tillid til udvikleren. Du skal manuelt tilføje Oracles udvikler-ID til systemets liste over sikkerhedsvurderinger. På den måde er det lidt ligesom at fortælle macOS: “Ja, jeg har tillid til denne fyr.”
Åbn din terminal og kør:
spctl kext-consent add VB5E2TV963
Dette tilføjer Oracle til listen over betroede enheder. For at være grundig er det værd at gentage dette trin fra gendannelsestilstand, i tilfælde af at SIP forhindrer ændringer:
- Genstart din Mac, og hold Command + R nede for at gå ind i gendannelsestilstand.
- Åbn Hjælpeprogrammer > Terminal.
- Skriv den samme kommando:
- Genstart normalt, og kontroller, om VirtualBox nu kan indlæse sin driver uden problemer.
spctl kext-consent add VB5E2TV963
Installer VirtualBox-udvidelsespakken
Hvis driveren stadig ikke indlæses, kan det hjælpe at installere den nyeste VirtualBox Extension Pack, især da nogle funktioner kræver ekstra kernemoduler. Hent den fra VirtualBox’ downloadside. Efter installation af VirtualBox skal du gå til Værktøjer > Udvidelser i VirtualBox og installere udvidelsespakken. Nogle gange inkluderer dette de signerede drivere, der er nødvendige for, at dit operativsystem kan acceptere kernemodulerne.
Ryd kerneludvidelsescachen
macOS gemmer kerneludvidelser i cache, og nogle gange sidder den fast. Kør i terminal:
sudo kextcache --clear-staging
Dette rydder cachen. Genstart, og se om det gør en forskel. Hvis ikke, så prøv kommandoen igen efter en genstart.
Prøv en anden VirtualBox-version
Nogle gange bryder nyere versioner kompatibiliteten med din nuværende operativsystemopsætning eller sikkerhedsindstillinger. Afinstaller VirtualBox helt:
- Kør afinstallationsscriptet, normalt
/Library/Application Support/VirtualBox/Uninstall.tooleller lignende. - Genstart og download derefter en ældre version eller den nyeste fra webstedet. Nogle gange fungerer en anden udgivelse bedre med dit system.
Retter kerneudvidelsesflag til SIP
Shadery-funktioner som SIP kan blokere indlæsningen af bestemte drivere, hvis et flag ikke er indstillet korrekt. Start i gendannelsestilstand ( Command + R under opstart), og kør derefter følgende i Terminal:
chflags restricted /Volumes/Macintosh\ HD/private/var/db/KernelExtensionManagement
Erstat Macintosh\ HDmed dit faktiske disknavn, hvis det er anderledes. Genstart, geninstaller VirtualBox, og test.
Deaktivering af sikker opstart som sidste udvej
Hvis du er desperat, er det en mulighed at slå Secure Boot fra – men husk, at det svækker systemsikkerheden. Sådan gør du:
- Genstart i gendannelsestilstand ( Command + R ), og gå derefter til Hjælpeprogrammer > Startup Security Utility.
- Indstil Sikker opstart til Ingen sikkerhed.
- Genstart, og dette burde tillade usignerede eller ikke-tillidfulde kerneudvidelser at indlæses normalt.
Efter denne ændring skal du aktivere Sikker opstart manuelt igen, hvis det er nødvendigt, men til fejlfinding er det en hurtig løsning.
Sådan rettes denne fejl på Linux
Linux kan være en hovedpine, fordi kernemoduler er meget afhængige af din version, headere og signeringsprocessen. Når VirtualBox viser fejl om, at vboxdrv ikke indlæses, er her hvad der sandsynligvis går galt.
Genstart først
Linux-kerneopdateringer kræver ofte en genstart, før vboxdrv-modulet fungerer korrekt igen. Det er en simpel start – nogle gange er det alt, hvad der skal til, fordi kernopdateringer ikke altid afspejles med det samme.
Match kerne og headere
Hvis din kerne lige er blevet opdateret, er vboxdrv-modulet muligvis ikke kompatibelt. For at løse dette skal du geninstallere de samme kernelheadere som i din nuværende kerne. På Debian/Ubuntu:
sudo apt purge virtualbox dkms linux-headers-$(uname -r) sudo apt install linux-headers-$(uname -r) sudo apt install virtualbox
På andre distributioner, skift apttil din pakkehåndtering, som f.eks dnf.eller yum. Genanvend derefter kernemodulet:
sudo /etc/init.d/vboxdrv setup
eller, for systemer med DKMS:
sudo dkms autoinstall
Tilbage til en ældre kerne
Hvis din nuværende kerne ikke er understøttet eller fungerer, kan du overveje at gå tilbage til en version, der er kendt som fungerende. Download ældre kerner fra din distros hovedarkiv, installer dem, og genstart derefter i den pågældende kerne. Med den rigtige version forsvinder fejlen typisk.
Juster GCC-version
Nogle gange blev modulet bygget med en specifik compilerversion. Hvis din GCC er anderledes, kan det forårsage problemer. Sådan rettes:
- Ryd op i VirtualBox:
sudo apt purge virtualbox - Installer GCC 8 (eller din målversion):
sudo apt install gcc-8 g++-8 - Sæt det som standard:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
Geninstaller VirtualBox bagefter, og modulet vil sandsynligvis indlæses fint.
Signer modulerne til sikker opstart
Hvis du bruger Secure Boot og oplever signaturfejl, kan det være nødvendigt at signere kernemodulerne selv. Værktøjer som signeringsscripts på GitHub kan hjælpe med denne proces. Men ærligt talt er det ofte hurtigere at deaktivere Secure Boot til test.
Deaktiver sikker opstart (til Linux)
Som en sidste foranstaltning kan du deaktivere Sikker opstart ved at indtaste systemets firmwareindstillinger (ofte via opstartsmenuen under opstart), og derefter søge efter “Sikker opstart” og slå den fra. Husk, at dette reducerer sikkerhedsniveauet, men det kan være forskellen på, om din VM kører eller ej.
Håber denne gennemgang hjælper nogen med at undgå at støde hovedet ind i den. Fordi sikker opstart selvfølgelig skal være det ekstra trin, der gør tingene mere komplicerede end nødvendigt.
Oversigt
- Tillad kerneudvidelser i macOS Sikkerhed og privatlivsindstillinger
- Nulstil eller registrer VirtualBox-kernemoduler manuelt
- Tilføj Oracles udvikler-ID til systempolitikken
- Installer eller opdater VirtualBox-udvidelsespakken
- Ryd kerneudvidelsens cache
- Geninstaller forskellige versioner af VirtualBox
- Deaktiver Sikker opstart, hvis alt andet fejler
- På Linux, match kernelheadere, overvej kernel rollback eller skift GCC-versioner
- Deaktivering af sikker opstart er ofte den enkleste løsning – husk bare at genaktivere den senere, hvis det er nødvendigt.
Opsummering
Helt ærligt, det er lidt besværligt at håndtere Secure Boot og drivere til virtuelle maskiner, men det handler mest om at få dit system til at stole på softwaren. Når du først har fået styr på at tillade modulerne eller midlertidigt deaktivere Secure Boot, har tingene det med at glide ud. Husk bare, at hver opsætning er lidt forskellig, så lidt trial and error kan være nødvendigt. Forhåbentlig sparer det et par timer for nogen.