Установка VirtualBox дает сообщение «modprobe vboxdrv» не удалось [dублировать]

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

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

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

14 ответов

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

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

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

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

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

0
ответ дан 18 July 2018 в 07:45

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

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

Создать подписи ключей openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/" Опция: для дополнительной безопасности, если вы хотите сохранить Безопасную загрузку, следующий логический шаг - подписать эти модули. пропустите ключ -nodes, который будет запрашивать пароль. Затем, прежде чем перейти к следующему шагу, убедитесь, что export KBUILD_SIGN_PIN='yourpassword' Подпишите модуль (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) Подтвердите, что модуль подписан tail $(modinfo -n vboxdrv) | grep "Module signature appended" Зарегистрируйте ключи к безопасной загрузке sudo mokutil --import MOK.der , которые будут запрашивать пароль для подтверждения импорта на следующем шаге. Перезагрузите и следуйте инструкциям для регистрации MOK (ключ владельца машины). Вот пример с картинками. Система перезагрузится еще раз. Подтвердите, что ключ зарегистрирован mokutil --test-key MOK.der

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

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

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

134
ответ дан 18 July 2018 в 07:45

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

Запустить mokutil:

sudo mokutil --disable-validation

Тогда мокутил попросил меня установить пароль для 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
11
ответ дан 18 July 2018 в 07:45

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

0
ответ дан 18 July 2018 в 07:45

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

sudo apt install mokutil sudo mokutil --disable-validation

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

4
ответ дан 18 July 2018 в 07:45

У меня была такая же проблема сегодня, у меня были 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
ответ дан 18 July 2018 в 07:45

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

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

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

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

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

0
ответ дан 24 July 2018 в 18:52
  • 1
    Как указано в моем вопросе, я хочу продолжать использовать безопасную загрузку. Поэтому отключить безопасную загрузку не решит проблему. – jans 26 April 2016 в 21:25

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

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

Создать подписи ключей openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/" Опция: для дополнительной безопасности, если вы хотите сохранить Безопасную загрузку, следующий логический шаг - подписать эти модули. пропустите ключ -nodes, который будет запрашивать пароль. Затем, прежде чем перейти к следующему шагу, убедитесь, что export KBUILD_SIGN_PIN='yourpassword' Подпишите модуль (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) Подтвердите, что модуль подписан tail $(modinfo -n vboxdrv) | grep "Module signature appended" Зарегистрируйте ключи к безопасной загрузке sudo mokutil --import MOK.der , которые будут запрашивать пароль для подтверждения импорта на следующем шаге. Перезагрузите и следуйте инструкциям для регистрации MOK (ключ владельца машины). Вот пример с картинками. Система перезагрузится еще раз. Подтвердите, что ключ зарегистрирован mokutil --test-key MOK.der

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

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

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

135
ответ дан 24 July 2018 в 18:52
  • 1
    Я также подписал vboxnetadp, vboxnetflt, vboxpci модули, чтобы иметь сеть и передавать киты pci-устройств в виртуальных машинах. – sasha_trn 7 May 2016 в 22:40
  • 2
    Одно дополнение для безопасности: закрытый ключ MOK.priv, сгенерированный openssl -nodes, как указано выше, не защищен паролем. Таким образом, в принципе, программа-изгои может использовать ее для подписи скомпрометированного модуля или даже заражения загрузчика, поскольку ваш ключ подписи теперь находится в хранилище аппаратных средств в качестве доверенного ключа. Более безопасным решением является опустить параметр -nodes. На шаге 1 openssl запросит пароль для защиты секретного ключа. Перед шагом 2 при подписании установите переменную среды KBUILD_SIGN_PIN в пароль, указанный в шаге 1. – zwets 9 May 2016 в 13:08
  • 3
    Расширив ответ @ majal, мне пришлось выполнить sudo apt install --reinstall virtualbox-dkms, прежде чем следовать инструкциям. – TylersSN 13 June 2016 в 23:28
  • 4
    @zwets вы могли бы уточнить, как правильно установить переменную среды KBUILD_SIGN_PIN? export KBUILD_SIGN_PIN=password и export KBUILD_SIGN_PIN="password" до этапа 2 приводили к SSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117 – adempewolff 9 July 2016 в 09:32
  • 5
    @adempewolff Если в пароле содержатся символы, которые интерпретирует ваша оболочка (например, «$» в цитируемой строке), вам нужно будет заключить ее в апострофы ('). – zwets 11 July 2016 в 11:54

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

Запустить mokutil:

sudo mokutil --disable-validation

Тогда мокутил попросил меня установить пароль для 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
11
ответ дан 24 July 2018 в 18:52
  • 1
    Как указано в моем вопросе, я хочу продолжать использовать безопасную загрузку. Поэтому отключить безопасную загрузку не решит проблему. – jans 26 April 2016 в 21:30
  • 2
    Не хотел отключать безопасную загрузку, но в конце концов должен был это сделать, потому что ничего не получилось - не нужно начинать подписывать вещи вручную каждый раз при обновлении ядра. Жаль, что это единственное легкое решение. Кстати, UEFI по-прежнему говорит, что безопасная загрузка включена. _ (ツ) _ / ¯ – jaywink 18 May 2016 в 11:42

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

0
ответ дан 24 July 2018 в 18:52
  • 1
    Эй, не могли бы вы рассказать? Откуда вы его загрузили? PPA или deb файл? – Karthik Nishanth 23 April 2016 в 07:34
  • 2
    Я загрузил пакет расширения из загрузок на сайт VirtualBox , ссылка - «VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack - & gt; Все поддерживаемые платформы ". Затем я открыл File & gt; Предпочтения по VM VM Virtual Box Manager, выбранные «Расширения» и добавленный загруженный файл в список. Он заменил старую версию «Oracle VM VirtualBox Extension Pack», (был 5.0.14rxxxxxx). – Reling 24 April 2016 в 10:11
  • 3
    Удлинительный пакет не исправляет ошибку. Ошибка заключается в подписании модуля – Karthik Nishanth 25 April 2016 в 18:43
  • 4
    Это не относится к моей проблеме. – jans 26 April 2016 в 21:24
  • 5
    Это не связано с проблемой ОП. Сообщение об ошибке «Требуемый ключ недоступен» указывает, что проблема связана с неподписанным модулем ядра на платформе с защищенной загрузкой. Ни одно обновление VirtualBox не может исправить это , если не включает модуль, подписанный с использованием ключа, которому доверяет ядро. То есть либо Canonical должен подписать его, либо Oracle должен подписать его, а его открытый ключ должен быть добавлен к доверенным ключам ядра (или вашей платформы). – zwets 9 May 2016 в 11:04

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

sudo apt install mokutil sudo mokutil --disable-validation

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

4
ответ дан 24 July 2018 в 18:52
  • 1
    Также я попробовал выполнить sudo mokutil -disable-validation. При выполнении этой команды во время следующей загрузки мне будет предложено отключить безопасную загрузку, добавьте ключ или хеш с диска. Поскольку я не хочу отключать безопасную загрузку, похоже, что это тоже не решает мою проблему. Пожалуйста, дайте мне знать, если я неправильно понял эту команду. – jans 26 April 2016 в 21:28
  • 2
    Попробуйте отключить безопасную загрузку. Вы можете включить его, если это не поможет. – Pilot6 27 April 2016 в 01:02

У меня была такая же проблема сегодня, у меня были 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
ответ дан 24 July 2018 в 18:52
  • 1
    На самом деле мне также нужен UEFI для загрузки параллельной установки Windows. Поэтому отключить его тоже не вариант. Я соответствующим образом обновил свой вопрос. – jans 26 April 2016 в 21:26
  • 2
    Включили ли вы поддержку устаревших модулей BIOS? Это еще один вариант в биографии UEFI, отличный от безопасной загрузки. – Zeine77 26 April 2016 в 21:50
  • 3
    @ Zeine77 вы можете проверить, что ваш BIOS позволяет разрешать «устаревшие модули», , в то время как Secure Boot остается включенным ? Это очень маловероятно, так как первый вариант позволяет ненадежному коду работать в пространстве ядра, что наносит ущерб цели второго. – zwets 9 May 2016 в 11:11
  • 4
    @zwets вы правы, я только что проверил настройки BIOS; и включение устаревших модулей привело к отключению безопасной загрузки. Я предположил, как объяснялось в ответе, что отключение безопасной загрузки может привести к сбою Windows 10, это не так. Когда я впервые установил 15.10 (месяц назад), я позаботился о том, чтобы не отключать безопасную загрузку, так как это повредило бы установку Win 10. Означает ли это, что предварительно установленная версия Win 10 отлично работает с отключенным защищенным режимом? – Zeine77 10 May 2016 в 05:22

У меня была такая же проблема сегодня, у меня были 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
ответ дан 2 August 2018 в 15:14

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

sudo apt install mokutil
sudo mokutil --disable-validation

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

4
ответ дан 2 August 2018 в 15:14

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

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