Как предложенный пользователем @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
Примечание 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. Это позволит зашифровать ключ с помощью кодовой фразы.