Як запропонував користувач @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. Це зашифрує ключ за допомогою парольної фрази.