Эта проблема возникает только в системах UEFI с включенной безопасной загрузкой.
Когда я пытаюсь установить модули DKMS, такие как драйверы VirtualBox, Nvidia или Broadcom, они не устанавливаются, и я получаю, Required key not available
когда пытаюсь modprobe
их установить .
VirtualBox жалуется, что vboxdrv
не загружен.
wl
Драйвер Broadcom показан lspci -k
как модуль ядра, но не используется. sudo modprobe wl
броски Required key not available
.
Также эта проблема может возникнуть при установке некоторых модулей ядра из исходников git.
Эта проблема может появиться после обновления ядра в виде отключенного беспроводного адаптера, черного экрана после перезагрузки и т. Д.
Как я могу это исправить?
kernel
uefi
secure-boot
dkms
Pilot6
источник
источник
Ответы:
Начиная с ядра Ubuntu 4.4.0-20
EFI_SECURE_BOOT_SIG_ENFORCE
конфигурация ядра была включена. Это предотвращает загрузку неподписанных сторонних модулей, если включена UEFI Secure Boot.Самый простой способ решить эту проблему - отключить безопасную загрузку в настройках UEFI (BIOS).
В большинстве случаев вы можете войти в настройки UEFI, используя меню grub. Нажмите ESCкнопку при загрузке, войдите в меню grub и выберите System Setup. Опция Безопасная загрузка должна быть в разделе «Безопасность» или «Загрузка» UEFI.
Вы можете войти в UEFI напрямую, но это зависит от вашего оборудования. Прочтите руководство к компьютеру, чтобы узнать, как туда добраться. Это может быть Delили F2при загрузке, или что-то еще.
Альтернативный способ - отключить безопасную загрузку с помощью
mokutil
.Начиная с сборки ядра Ubuntu 4.4.0-21.37 это можно исправить, запустив
Для этого потребуется создать пароль. Пароль должен быть не менее 8 символов. После перезагрузки UEFI спросит, хотите ли вы изменить настройки безопасности. Выберите «Да».
Затем вам будет предложено ввести ранее созданный пароль. Некоторые прошивки UEFI запрашивают не полный пароль, а ввод некоторых символов, таких как 1-й, 3-й и т. Д. Будьте осторожны. Некоторые люди не понимают этого. Я не получил это с первой попытки ;-)
Обновление: теперь эта конфигурация ядра включена во всех поддерживаемых ядрах Ubuntu. Ubuntu 16.04, 15.10 и 14.04 затронуты.
источник
По предложению пользователя @zwets, я копирую (с правками) ответ здесь:
Начиная с версии ядра 4.4.0-20 было принудительно запрещено запускать неподписанные модули ядра с включенной безопасной загрузкой. Если вы хотите сохранить Secure Boot, а также запустить эти модули, то следующий логический шаг - подписать эти модули.
Итак, давайте попробуем это.
Создать ключи подписи
Подпишите модуль
Примечание 1. Для одного драйвера / модуля
/path/to/module
может быть подписано несколько файлов, поэтому может потребоваться заменить их$(modinfo -n <modulename>)
, например,$(modinfo -n vboxdrv)
Примечание 2 :
sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/module
является альтернативой, еслиsign-file
не доступно.Зарегистрируйте ключи для безопасной загрузки
Введите пароль для последующего использования после перезагрузки
Reboot
и следуйте инструкциям, чтобы зарегистрировать MOK (ключ владельца машины). Вот образец с картинками. Система перезагрузится еще раз.Если ключ был зарегистрирован правильно, он будет отображаться под
sudo mokutil --list-enrolled
.Пожалуйста, дайте мне знать, будут ли ваши модули работать таким образом в Ubuntu 16.04 (на ядре 4.4.0-21, я считаю).
Ресурсы: Подробная статья на сайте для реализации подписания модулей в Fedora и Ubuntu . (они работали над этим) ;-)
Дополнительный ресурс: я создавал bash-скрипт для собственного использования каждый раз при
virtualbox-dkms
обновлении и, таким образом, переписывал подписанные модули. Проверьте мойvboxsign
первоначально на GitHub .Дополнительное примечание для безопасности (экстра) сознательно: ;-)
Поскольку созданный вами закрытый ключ (
MOK.priv
в этом примере) может использовать любой, кто имеет к нему доступ, рекомендуется сохранить его в безопасности. Вы можетеchmod
это сделать, зашифровать (gpg
) или сохранить в другом безопасном месте (r). Или, как отмечено в этом комментарии , удалите параметр-nodes
в шаге 1. Это зашифрует ключ с помощью ключевой фразы.источник
Вы можете отключить безопасную загрузку (UEFI) в BIOS, выполнив следующие действия:
Перезагрузите компьютер и войдите в меню BIOS (в моем случае нажмите F2)
Ищите безопасную загрузку и переходите на Legacy
В материнской плате ASUS:
источник
Вы также можете отключить безопасную загрузку в режиме работы с подписью
sudo update-secureboot-policy
. Эта вики-страница объясняет этот метод:источник