Не удалось загрузить vboxdrv после обновления до Ubuntu 16.04 (и я хочу сохранить безопасную загрузку)

Я обновляюсь с Ubuntu 15.10 до 16.04, и с тех пор VirtualBox 5.0.18 больше не запускает мои виртуальные машины. Он жалуется, что vboxdrv не загружен. Поэтому я пытаюсь загрузить его и получаю следующую ошибку:

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

Я считаю, что это связано с безопасной загрузкой, которую я использую и которую я хочу продолжать использовать. На самом деле с Ubuntu 15.10 безопасная загрузка и VirtualBox работали просто отлично.

Также я попытался $ sudo apt-get --reinstall install virtualbox-dkms, который успешно собрал модуль ядра, но не решил эту проблему.

Есть идеи, как загрузить vboxdrv при сохранении безопасной загрузки?

Обновление 2 : Также я пытался выполнить sudo mokutil --disable-validation. При выполнении этой команды во время следующей загрузки мне предлагается отключить безопасную загрузку, добавить ключ или хэш с диска. Поскольку я не хочу отключать безопасную загрузку, похоже, это тоже не решает мою проблему. Также я хочу оставить UEFI активным для параллельной установки Windows.

Примечание : Если вы не против отключить безопасную загрузку, см. Почему я получаю «Требуемый ключ недоступен» при установке сторонних модулей ядра или после обновления ядра? вместо этого.

153
задан 13 April 2017 в 15:23

9 ответов

В моей системе я сделал следующее, чтобы работает:

Запустите mokutil:

sudo mokutil --disable-validation

Затем mokutil попросил меня установить пароль для MOK Manager. После перезагрузки ПК в BIOS появилось диалоговое окно для настройки MOK Manager. Я отключил SecureBoot в этом диалоговом окне, он запросил несколько символов из пароля (например, введите символ (5) и т. Д.).

После загрузки модули vboxdrv загружены правильно.

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

Любопытно, что mokutil все еще показывает, что SecureBoot включен :

sudo mokutil --sb-state
SecureBoot enabled
19
ответ дан 14 April 2017 в 01:23
  • 1
    Спасибо за Ваши комментарии, @dessert. Я отредактирую свой ответ:-), – sudodus 10 September 2017 в 20:02

Начиная с версии ядра 4.4.0-20, было предписано, чтобы модули ядра без знака не могли работать с включенной безопасной загрузкой. Поскольку вы хотите сохранить безопасную загрузку, следующим логическим шагом будет подписать эти модули.

Итак, давайте попробуем.

  1. Создайте ключи подписи

     openssl req -new -x509 -newkey  rsa: 2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/ CN = Общее описательное имя /"
     

    Опция : для дополнительной безопасности пропустите переключатель -nodes, который запрашивает пароль. Затем, прежде чем переходить к следующему шагу, убедитесь, что export KBUILD_SIGN_PIN = 'yourpassword'

  2. Подпишите модуль (vboxdrv для этого примера, но повторите для других модулей в ls $ (dirname $ (modinfo - n vboxdrv)) / vbox * .ko) для полной функциональности)

     sudo / usr / src / linux-headers - $ (uname -r) / scripts / sign-file sha256 ./MOK.priv ./  MOK.der $ (modinfo -n vboxdrv)
     
  3. Подтвердите, что модуль подписан

     tail $ (modinfo -n vboxdrv) |  grep "Подпись модуля добавлена"
     
  4. Зарегистрируйте ключи для безопасной загрузки

     sudo mokutil --import MOK.der
     

    , который запросит пароль для подтверждения импорта на следующем шаге.

  5. Перезагрузитесь и следуйте инструкциям по регистрации MOK (ключ владельца машины). Вот образец с картинками. Система перезагрузится еще раз.

  6. Подтвердите, что ключ зарегистрирован

     mokutil --test-key MOK.der
     

Если VirtualBox по-прежнему не загружается, это может быть связано с тем, что модуль не загрузился ( sudo modprobe vboxdrv исправит это) или что ключ не подписан. Просто повторите этот шаг, и все должно работать нормально.

Ресурсы: Подробная статья на веб-сайте для Fedora и Реализация подписи модулей в Ubuntu . @zwets для дополнительной безопасности . @shasha_trn для с упоминанием всех модулей .

Дополнительный ресурс: Я создавал сценарий bash для собственного использования каждый раз, когда virtualbox-dkms обновляется и, таким образом, перезаписывает подписанные модули . Посмотрите мой vboxsign изначально на GitHub .

200
ответ дан 14 April 2017 в 01:23
  • 1
    Также Вы могли упомянуть установку LANG=C для получения английского вывода. – dessert 10 September 2017 в 20:01

Вы можете отключить проверку валидации с помощью

sudo apt install mokutil
sudo mokutil --disable-validation

После этого должны быть установлены пакеты DKMS.

4
ответ дан 14 April 2017 в 01:23

Я получил сообщение об ошибке vboxdrv после обновления rade тоже. Но возникла проблема со старой версией (5.0.14) Oracle VM VirtualBox Extension Pack. Я загрузил и установил более новую версию (5.0.18) этого пакета, и проблема исчезла.

0
ответ дан 14 April 2017 в 01:23
  • 1
    Этот ответ работал бы.... Если Op мог бы соединиться. – EODCraft Staff 10 September 2017 в 23:27

Хорошо, после небольшого тестирования я почти уверен, что это проблема безопасной загрузки.

Если он включен, то выдается следующее:

ПРЕДУПРЕЖДЕНИЕ: модуль ядра vboxdrv не загружен. Либо нет модуля доступно для текущего ядра (4.4.0-21-generic) или не удалось нагрузка. Перекомпилируйте модуль ядра и установите его с помощью sudo / sbin / rcvboxdrv setup

. Однако, если безопасная загрузка отключена, виртуальный бокс загружается нормально, без ошибок.

В моей BIOS все еще установлен UEFI.

0
ответ дан 14 April 2017 в 01:23
  • 1
    flashplugin-installer установлен при установке системы, Вы, принимают решение установить некоторое внешнее программное обеспечение. – Gunnar Hjalmarsson 11 September 2017 в 04:53

У меня сегодня была такая же проблема, у меня были Windows 10 и Ubuntu 15.10 при двойной загрузке с включенным uefi в Bios (я не отключал его, чтобы запустить предустановленную Windows) .

После обновления до Ubuntu 16.04 VirtualBox перестал загружать мои виртуальные машины с тем же сообщением об ошибке:

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

Я подозревал проблему с UEFI, потому что при обновлении установщик спросил меня, хочу ли я отключить его, на что я ответил «Нет» (поскольку «Да» может сделать мою Windows непригодной для использования).

Я зашел в Bios и включил поддержку устаревшей загрузки BIOS БЕЗ отключения безопасной загрузки.

Virtualbox теперь работает нормально.

Обновление : как правильно указал @zwets в комментарий, включение устаревших модулей вызывает отключение безопасной загрузки.

0
ответ дан 14 April 2017 в 01:23
  • 1
    @GunnarHjalmarsson я попробовал все эти команды, но это wasn' t полезный. Я установил внешнее программное обеспечение. Так или иначе официальный веб-сайт Adobe Flash говорит, что у меня есть последняя версия Flash. (Веб-сайт: get.adobe.com/pl/flashplayer/about ), Это говорит: " у Вас есть версия 26.0.0.151 installed" и последняя версия для каждого браузеры 26.0.0.151. – Nayunami 11 September 2017 в 06:10

Я знаю, что этот вопрос слишком старый, но поскольку нет принятого ответа, и ни один из этих ответов не решил проблему в моем случае, я пишу, как я решил эту проблему сегодня , не отключая безопасную загрузку :

При запуске этой команды получите эту ошибку:

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

Проблема в том, что модуль не подписан и, следовательно, не загружен вместе с ядром. Это произойдет, если на вашем компьютере активирован режим SecureBoot, что очень часто встречается в современном оборудовании.

Вот почему я получаю эту ошибку при открытии любой машины в виртуальном ящике

Драйвер ядра не установлен (rc = -1908)

Выполните следующие шаги, чтобы подписать драйвер, и он загружается как модуль ядра в системах Ubuntu, а также в Debian 9:

1. Установите пакет mkutil, чтобы иметь возможность подписывать.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mokutil

2. создать файл подписи:

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

3. Затем добавьте его в ядро:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)

4. Зарегистрируйте его для безопасной загрузки.

ВАЖНО! Вам будет предложено ввести пароль, введите тот, который вы хотите, вам нужно будет использовать его только один раз при следующей перезагрузке.

sudo mokutil --import MOK.der

5. Наконец, перезагрузите компьютер. Появится синий экран с ожиданием клавиатуры, нажмите клавишу, которая просит вас прервать загрузку.

enter image description here

Когда вы находитесь внутри синего экрана, выберите

Enroll MOK > Continue > and it will ask you for the password

, который вы ввели ранее, вы введете его, и вы будете сообщил, что операция была успешно завершена.

Теперь ваша операционная система запустится, и теперь вы можете использовать VirtualBox без проблем :)

Надеюсь, это кому-то поможет.

12
ответ дан 5 January 2021 в 22:41

У меня была эта проблема с Ubuntu 20.04 (после новой установки). Я не запускал UEFI в BIOS и выполнял автоматический вход в Ubuntu.

Исправлено то, что я изменил автоматический вход, чтобы не входить автоматически, и включил UEFI в BIOS.

0
ответ дан 5 January 2021 в 22:41

У меня это сработало (сборка 5.11.0-27-generic)

sudo apt-get autoremove virtualbox-dkms sudo apt-get install virtualbox

он был перекомпилирован с новым ядром :)

0
ответ дан 4 September 2021 в 11:00

Другие вопросы по тегам:

Похожие вопросы: