По предложению пользователя @zwets, я копирую (с правками) ответ здесь:
Начиная с версии ядра 4.4.0-20 было принудительно запрещено запускать неподписанные модули ядра с включенной безопасной загрузкой. Если вы хотите сохранить Secure Boot, а также запустить эти модули, то следующий логический шаг - подписать эти модули.
Итак, давайте попробуем это.
Создать ключи подписи
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
Примечание 1. Для одного драйвера / модуля /path/to/module
может быть подписано несколько файлов, поэтому может потребоваться заменить их $(modinfo -n <modulename>)
, например,$(modinfo -n vboxdrv)
Примечание 2 : sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/module
является альтернативой, если sign-file
не доступно.
Зарегистрируйте ключи для безопасной загрузки
sudo mokutil --import MOK.der
Введите пароль для последующего использования после перезагрузки
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. Это зашифрует ключ с помощью ключевой фразы.