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

91

Я обновляюсь с 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.

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

задан jans 22.04.2016 в 18:10
источник

6 ответов

116

Начиная с версии ядра версии 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=Descriptive name/"
    

    Вариант : для дополнительной безопасности пропустите ключ -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 "Module signature appended"
    
  4. Зарегистрируйте ключи для безопасной загрузки

    sudo mokutil --import MOK.der
    

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

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

  6. Подтверждение ввода ключа

    mokutil --test-key MOK.der
    

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

Ресурсы: Подробный веб-сайт статьи для Fedora и < a href="https://github.com/Canonical-kernel/Ubuntu-kernel/blob/master/Documentation/module-signing.txt"> реализация Ubuntu подписи модуля. @zwets для дополнительной безопасности . @shasha_trn для упоминания все модули .

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

ответ дан Majal 06.05.2016 в 07:57
10

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

Запустите 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
    
ответ дан Pocho 26.04.2016 в 18:16
4

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

sudo apt install mokutil
sudo mokutil --disable-validation

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

    
ответ дан Pilot6 25.04.2016 в 09:39
0

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

    
ответ дан Reling 23.04.2016 в 00:41
0

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

Как и в случае, если он включен, это забрасывается:

  

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

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

У меня все еще установлен мой BIOS как UEFI.

    
ответ дан David Haynes 23.04.2016 в 18:22
0

У меня была такая же проблема сегодня, у меня были 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 правильно указал в комментарии, включение устаревших модулей приводит к отключению безопасной загрузки.

    
ответ дан Zeine77 23.04.2016 в 01:23