Что означает ошибка rc=-1908
Ошибка rc=-1908 с сообщением "Kernel driver not installed (rc=-1908)" возникает при попытке запуска VirtualBox или виртуальной машины в Linux. Это означает, что модуль ядра vboxdrv (основной драйвер VirtualBox) не загружен в систему или отсутствует. Без этого модуля VirtualBox не может управлять виртуальными машинами, и вы увидите это сообщение сразу при открытии программы или при запуске ВМ.
Полный текст ошибки обычно выглядит так:
Failed to create the VirtualBox COM object.
The VirtualBox kernel driver (vboxdrv) is not loaded.
Please load the kernel module by executing 'modprobe vboxdrv' as root.
Или:
Kernel driver not installed (rc=-1908)
Ошибка характерна для большинства дистрибутивов Linux (Ubuntu, Fedora, Debian, Arch) и часто появляется после обновления ядра, переустановки системы или при отсутствии необходимых пакетов.
Причины возникновения
- Не установлены заголовки ядра (linux-headers). Для сборки модуля
vboxdrvтребуются файлы заголовков текущей версии ядра. Если они отсутствуют, VirtualBox не может скомпилировать модуль. - Конфликт версий ядра и модуля. После обновления ядра старый модуль
vboxdrvстановится несовместимым. DKMS (Dynamic Kernel Module Support) должен автоматически пересобрать модуль, но это не всегда происходит. - Отсутствие прав для загрузки модуля. Модуль ядра требует прав суперпользователя. Если вы запускаете VirtualBox без
sudoили без настройки udev, загрузка может блокироваться. - Повреждённая или неполная установка VirtualBox. Например, при установке из репозитория дистрибутива версия VirtualBox может отличаться от версии в репозитории Oracle, что вызывает конфликт.
- Secure Boot блокирует загрузку модуля. На системах с включённым Secure Boot (UEFI) неподписанные модули ядра, такие как
vboxdrv, могут отклоняться без явного подтверждения. - Модуль загружен, но неактивен. Иногда модуль присутствует, но не загружен автоматически при загрузке системы.
Способы решения
Способ 1: Установка заголовков ядра и пересборка модуля (рекомендуемый)
Это основной способ, который решает проблему в большинстве случаев. Он обеспечивает наличие всех необходимых компонентов для сборки и загружает модуль.
Для Ubuntu/Debian и производных:
# 1. Установите заголовки ядра и инструменты сборки
sudo apt update
sudo apt install linux-headers-$(uname -r) build-essential dkms
# 2. Пересоберите модуль VirtualBox
sudo /sbin/vboxconfig
# 3. Загрузите модуль вручную (если не загрузился автоматически)
sudo modprobe vboxdrv
# 4. Проверьте, что модуль загружен
lsmod | grep vbox
Если команда vboxconfig недоступна, используйте:
sudo /etc/init.d/vboxdrv setup
Для Fedora/RHEL/CentOS:
# Установите заголовки и инструменты
sudo dnf install kernel-devel kernel-headers gcc make dkms
# Пересоберите модуль
sudo /sbin/vboxconfig
# Загрузите модуль
sudo modprobe vboxdrv
Для Arch Linux:
# Установите заголовки и dkms
sudo pacman -S linux-headers dkms
# Пересоберите модуль (VirtualBox из репозитория)
sudo modprobe vboxdrv
Если вы устанавливали VirtualBox из AUR, пересоберите пакет: sudo pacman -S virtualbox-host-modules-arch.
Способ 2: Переустановка VirtualBox из официального репозитория Oracle
Если модуль не собирается из-за несовместимости версий, переустановите VirtualBox с официального репозитория Oracle. Это гарантирует, что версия VirtualBox и модуля ядра будут согласованы.
Для Ubuntu/Debian:
- Удалите текущую версию:
sudo apt remove virtualbox virtualbox-* - Добавьте репозиторий Oracle (замените
focalна вашу версию Ubuntu, напримерjammyдля 22.04):echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian focal contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list wget -q https://www.virtualbox.org/download/oracle_vbox_2016.gpg -O- | sudo apt-key add - - Установите последнюю версию:
sudo apt update sudo apt install virtualbox-7.0 # или актуальная версия - Во время установки система предложит автоматически собрать модули. Подтвердите.
Для Fedora:
sudo dnf remove VirtualBox
sudo dnf install https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
sudo dnf install VirtualBox-7.0
После установки выполните sudo /sbin/vboxconfig для сборки модуля.
Способ 3: Ручная загрузка модуля и проверка зависимостей
Иногда модуль уже скомпилирован, но не загружен из-за отсутствия зависимостей или блокировок.
- Проверьте, существует ли модуль:
find /lib/modules/$(uname -r) -name "vboxdrv.ko"
Если файл отсутствует, вернитесь к Способу 1. - Загрузите модуль вручную:
sudo modprobe vboxdrv - Если команда завершится ошибкой, проверьте логи ядра:
sudo dmesg | grep vbox sudo journalctl -xe | grep vbox
Типичные ошибки:Invalid module format(несовместимость версий),Permission denied(проблемы с Secure Boot). - Убедитесь, что модуль включён в автозагрузку:
echo "vboxdrv" | sudo tee /etc/modules-load.d/virtualbox.conf
Способ 4: Отключение Secure Boot или подписание модуля
Если в логах (dmesg) вы видите упоминание Secure Boot или module verification failed, проблема в блокировке неподписанного модуля.
Вариант A: Временно отключить Secure Boot в UEFI/BIOS
- Перезагрузите компьютер, войдите в настройки UEFI/BIOS (обычно клавиша F2, Del, F10).
- Найдите опцию Secure Boot и отключите её.
- Сохраните изменения и перезагрузитесь.
- Выполните
sudo modprobe vboxdrv.
Вариант B: Подписать модуль своими ключами (более сложный) Это рекомендуется, если вы не хотите отключать Secure Boot. Краткие шаги:
- Создайте ключи MOK (Machine Owner Key):
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv) - Зарегистрируйте ключ в системе через
mokutil. - Подпишите модуль и загрузите его. Подробная инструкция может варьироваться в зависимости от дистрибутива. Для большинства пользователей проще отключить Secure Boot.
Профилактика
Чтобы избежать повторения ошибки после обновлений:
- Установите DKMS. Этот демон автоматически пересобирает модули ядра при обновлении версии ядра. На Ubuntu/Debian он обычно ставится вместе с VirtualBox, но проверьте:
sudo apt install dkms # или sudo dnf install dkms - Используйте официальный репозиторий Oracle для установки VirtualBox, а не репозиторий дистрибутива. Версии в дистрибутивах часто отстают и могут несовмещаться с новыми ядрами.
- Не пропускайте обновления заголовков ядра. При обновлении ядра через менеджер пакетов обычно предлагаются и заголовки. Устанавливайте их вместе с ядром.
- После крупного обновления системы (например,
dist-upgrade) проверьте, загружен ли модуль:lsmod | grep vbox
Если нет, выполнитеsudo modprobe vboxdrv. - Создайте скрипт-помощник (опционально). Сохраните в файл
~/fix_vbox.sh:#!/bin/bash sudo apt install -y linux-headers-$(uname -r) build-essential dkms sudo /sbin/vboxconfig sudo modprobe vboxdrv
Дайте праваchmod +x ~/fix_vbox.shи запускайте при необходимости.