VirtualBox Kernel Driver Not Installed(rc=-1908) - Как исправить ошибку VirtualBox
- TryHarder
- 11-дек-2023, 14:15
В macOS это очень легко сделать, так как вы можете разрешить загрузку модуля из системных настроек.
В системах с Linux вы должны убедиться, что версии ядра и GCC совместимы с модулем vboxdrv. Вы также можете вручную подписать модуль с помощью mokutil.
Если такие методы не работают или вас не интересует безопасная загрузка, вы всегда можете отключить безопасную загрузку , чтобы устранить эту ошибку.
Пользователи должны вручную разрешить загрузку расширений ядра (KEXTS) в macOS 10.13 и более новых версиях. Для этого,
Используйте следующую однострочную строку в терминале, чтобы перезапустить службу запуска для загрузки модуля ядра.
sudo /Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart
Повторите шаги из предыдущего раздела и перезагрузитесь. Затем проверьте, можете ли вы запустить свою виртуальную машину в VirtualBox.
Также может помочь регистрация расширения ядра VirtualBox напрямую через терминал. Для этого введите следующую однострочную строку в терминале:
sudo kmutil load -p '/Library/Application Support/VirtualBox/VBoxDrv.kext'
Перезагрузитесь и проверьте, можете ли вы запустить виртуальную машину сейчас.
Если загрузка vboxdrv вручную не работает, добавьте идентификатор разработчика Oracle в политику оценки безопасности. Это позволит программам из Oracle (т.Е. VirtualBox) получить доступ к ядру.
Введите следующую команду в терминале, чтобы сделать это:
spctl kext-consent add VB5E2TV963
Кроме того, попробуйте то же самое в режиме восстановления.
spctl kext-consent add VB5E2TV963
Пакет расширений VirtualBox обычно устанавливается для добавления дополнительных функций, таких как виртуальные устройства USB 3.0. В этом случае его установка того стоит, поскольку это потенциально может решить проблему с драйвером ядра.
Используйте следующую команду в терминале, чтобы очистить кэш расширений ядра:
sudo kextcache --clear-staging
Проверьте, работает ли виртуальная машина сейчас. Если это не так, перезагрузите компьютер Mac и повторите попытку выполнения команды еще раз.
Переустановка VirtualBox - один из наиболее эффективных способов устранения этой ошибки. В частности, попробуйте разные версии VirtualBox (последнюю, а также более старые стабильные версии). Чтобы сделать это,
VirtualBox_uninstall.tool
. Если флаг restricted не установлен для KernelExtensionManagement, это повлияет на то, как Защита целостности системы (SIP) взаимодействует с каталогами. В конечном итоге это может привести к ошибке Драйвер ядра VirtualBox не установлен. Чтобы устранить это:
chflags restricted /Volumes/Macintosh HD/private/var/db/KernelExtensionManagement
Если больше ничего не работает, вы можете отключить безопасную загрузку в качестве последнего средства. При отключенной безопасной загрузке у вас не возникнет проблем с загрузкой неподписанных KEXTS, таких как vboxdrv. Для этого:
Я предоставлю команды для дистрибутивов на основе Debian для демонстрации. Не забудьте изменить команды (например, apt
to dnf
) в соответствии с вашим дистрибутивом.
Дистрибутивы Linux часто получают незначительные обновления ядра, что может привести к несовместимости между vboxdrv и обновленным ядром. Перезагрузка компьютера часто является самым простым способом решения этой проблемы.
Иногда версия vboxdrv, совместимая с последней версией ядра, отсутствует. В других случаях вам придется вручную устанавливать заголовки и после этого устанавливать VirtualBox. Вы столкнетесь с ошибкой, если не сделаете это в этом определенном порядке.
Чтобы устранить такие проблемы, сначала попробуйте переустановить VirtualBox и заголовки ядра:
sudo apt purge virtualbox dkms linux-headers-$(uname -r)
sudo apt install linux-headers-$(uname -r)
sudo apt install virtualbox
Если ошибка не устранена, переустановите модуль ядра vboxdrv. Затем перенастроите пакет VirtualBox и загрузите модуль следующим образом:
sudo /etc/init.d/vboxdrv setup
sudo dpkg-reconfigure virtualbox-dkms
sudo modprobe vboxdrv
Oracle может потребоваться некоторое время для выпуска версии vboxdrv, совместимой с последней версией ядра. Это особенно вероятно, если вы используете пользовательское или малоизвестное ядро.
В таких случаях вы можете попробовать откат к более старой поддерживаемой версии ядра, чтобы устранить эту ошибку.
Загрузите файлы ядра из архива ядра вашего дистрибутива и установите их. После перезагрузки с новым установленным ядром ошибка должна быть устранена.
Пользователи также сталкиваются с этой ошибкой, поскольку текущая версия GCC отличается от той, которая использовалась для компиляции модуля. В таких случаях переключение на тот же компилятор должно решить проблему.
Например, чтобы изменить версию GCC на GCC 8:
sudo apt purge virtualbox
sudo apt install gcc-8 g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
sudo apt install virtualbox
Модули DKMS обычно настраиваются при установке для работы с безопасной загрузкой. Но иногда модулям не разрешается загружаться из-за проблем с сигнатурой.
В таких случаях вы можете подписать модули самостоятельно, используя инструмент mokutil. Я рекомендую проверить этот пост reillysiemens на GitHub, поскольку он подробно описывает этот процесс.
Основная проблема с подписыванием модулей вручную заключается в том, что вам приходится отказываться от них после каждого обновления ядра. А обновления ядра в Linux очень часты. Итак, мое предпочтительное решение - просто отключить безопасную загрузку:
sudo mokutil --disable-validation
команду.sudo mokutil --enable-validation
для повторного включения безопасной загрузки позже, если хотите.