Эта проблема возникает только в системах UEFI с включенной защищенной загрузкой.
Когда я пытаюсь установить DKMS-модули, такие как VirtualBox, Nvidia или драйверы Broadcom, они не устанавливаются, и я получаю Required key not available, когда я попробуйте modprobe их.
VirtualBox жалуется, что vboxdrv не загружен.
Драйвер Broadcom wl показан в lspci -k в качестве модуля ядра, но не включен использовать. sudo modprobe wl throws Required key not available.
Также эта проблема может возникнуть, когда я устанавливаю некоторые модули ядра из источников git.
Эта проблема может возникнуть после обновления ядра как отключенного беспроводного адаптера, черный экран после перезагрузки и т. д.
Как я могу это исправить?
Как было предложено пользователем @zwets, я копирую (с редактированием) ответ здесь:
Начиная с версии ядра 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 name/"
Подпишите модуль sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
Зарегистрируйте ключи для безопасной загрузки sudo mokutil --import MOK.der
Поставьте пароль для последующего использования после перезагрузки Reboot и следуйте инструкциям для регистрации MOK (ключ владельца машины). Вот пример с картинками. Система перезагрузится еще раз. Пожалуйста, дайте мне знать, будут ли ваши модули работать на Ubuntu 16.04 (на ядре 4.4.0-21, я считаю).
Ресурсы: Подробный веб-сайт ! d1] и Ubuntu для реализации подписи модуля. (они работали над этим) ;-)
Дополнительная заметка для безопасности (экстра-):: -)
Поскольку созданный вами закрытый ключ (MOK.priv в этом примере) могут использоваться всеми, кто может иметь к нему доступ, это хорошая практика, чтобы обеспечить безопасность. Вы можете chmod его, зашифровать (gpg) или сохранить в другом месте (r). Или, как реализация Ubuntu , удалите опцию -nodes в шаге номер 1. Это зашифрует ключ парольной фразой.
Вы можете отключить безопасную загрузку (UEFI) в BIOS со следующими шагами:
Перезагрузите компьютер и войдите в меню BIOS (в моем случае нажмите F2). Найдите безопасную загрузку и перейдите в «Наследие» [ ! d1]В материнской плате ASUS:
Переход в расширенный режим (F7) Перейдите в параметр «Безопасная загрузка» в разделе «Загрузка». Измените «Режим Windows UEFI» на «Другая ОС». Сохраните и перезапустите для применения настроек (F10)Вы также можете отключить безопасную загрузку с помощью подгонки sudo update-secureboot-policy. Эта страница wiki объясняет этот метод:
Откройте терминал (Ctrl + Alt + T) и выполните sudo update-secureboot-policy, а затем выберите Да. Введите временный пароль от 8 до 16 цифр. (Например, 12345678, мы будем использовать этот пароль позже. Введите тот же пароль еще раз для подтверждения. Перезагрузите систему и нажмите любую клавишу, когда увидите синий экран (управление MOK Выберите «Изменить безопасное состояние загрузки». Введите пароль, который вы выбрали на шаге 2 и нажмите «Ввод». Выберите «Да», чтобы отключить «Безопасную загрузку» с помощью подгонки. Нажмите клавишу «Ввод», чтобы завершить всю процедуру. Вы все равно можете включить безопасную загрузку в подстрочной подписи. Просто выполните sudo update-secureboot-policy --enable, а затем выполните шаги выше