У меня были некоторые проблемы с управлением настройкой безопасной загрузки на моей машине с материнской платой Asus X99.
Я успешно сгенерировал MOK с помощью openssl
, а затем использовал его, чтобы подписать модуль ядра для моей карты WiFi (bcmwl-kernel-source
/ wl.ko
) и зарегистрировал ключ в shim
(если я правильно понимаю ?) с помощью MokManager. Я запустил MokManager, добавив для него загрузочную запись EFI, а затем используя EFI, чтобы запустить его во время загрузки. Я не смог заставить mokutil
работать, и мне пришлось вручную скопировать ключ в раздел /boot
, перезагрузиться, выбрать «Записать ключ с диска» и сделать это так. Но как только это было сделано, модуль ядра для драйвера Wi-Fi загружается и работает в режиме безопасной загрузки без проблем.
Итак, подписание, проверка и загрузка модулей ядра в режиме безопасной загрузки работают.
Похоже, что ошибка mokutil
связана с какой-то ошибкой материнской платы / прошивки с X99 (а также с некоторыми другими моделями, согласно отчету об ошибках в Fedora):
mokutil - сбой почти для всех опций
https://bugzilla.redhat.com/show_bug.cgi?id=1263992
Вот несколько примеров Вывод из mokutil
на моем компьютере:
alex@alex-dev-desktop:~$ mokutil --sb-state
SecureBoot enabled
alex@alex-dev-desktop:~$ sudo mokutil --password
input password:
input password again:
Failed to write MokPW: Invalid argument
alex@alex-dev-desktop:~$ sudo mokutil --import MOK.der
SKIP: MOK.der is already enrolled
alex@alex-dev-desktop:~$ sudo mokutil --list-enrolled |grep Issuer
Issuer: C=GB, ST=London, L=London, O=ghostaldev, CN=Secure Boot Signing/emailAddress=<my email>
Issuer: C=GB, ST=Isle of Man, L=Douglas, O=Canonical Ltd., CN=Canonical Ltd. Master Certificate Authority
alex@alex-dev-desktop:~$ sudo mokutil --import SOMENEWKEY.der
input password:
input password again:
Failed to enroll new keys
alex@alex-dev-desktop:~$ sudo mokutil --disable-validation
password length: 8~16
input password:
input password again:
Failed to request new MokSB state
alex@alex-dev-desktop:~$
Как показано, ключ, который я использовал для подписи моего драйвера Wi-Fi, находится в списке зарегистрированных ключей, наряду с Canonicals, но использование mokutil
для регистрации ключей не ' т работа. Кажется, что все команды, которые записывают любые данные для управления MokManager, терпят неудачу.
Что я пытаюсь сделать: подписать модули ядра Virtualbox, чтобы они работали под Secure Boot
Когда я делаю sudo apt-get install virtualbox-dkms
, я получаю подсказку GUI терминала, сообщающую мне, что я в режиме безопасной загрузки, что модули должны быть подписаны и ключи зарегистрированы, и просит меня установить пароль. Под капотом установка пакета выглядит так, как будто он пытается использовать mokutil
, а в выводе я вижу сообщение Failed to enroll new keys
. Используя hexdump
, похоже, что модуль vboxdrv.ko
был подписан каким-то ключом:
alex@alex-dev-desktop:~$ hexdump -e "16 \"%_p\" \"\\n\"" /lib/modules/4.15.0-58-generic/updates/vboxdrv.ko |tail -n 27 |head -n 5
......1..q0..m..
.0H001.0,..U...%
mint Secure Boot
Module Signatur
e key..W+.0.x..(
alex@alex-dev-desktop:~$
Я не уверен, какой ключ используется для этого, но, очевидно, это не рабочий раствор, потому что он не зарегистрирован.
Я ищу обходной путь, чтобы подписать эти модули ядра и загрузить их под Secure Boot. Вот мои идеи для потенциальных обходных путей (и почему я застрял):
shim
(насколько я понимаю, для этого и нужна команда mokutil --disable-validation
, но она не работает, и когда я запускаю MokManager, я не вижу опции, доступной для этого - только «Продолжить загрузку», «Записать ключ с диска» и «Записать хэш с диска», нет опции «Изменить состояние безопасной загрузки», как показано, например, на на этой странице ). Очень признателен за помощь! :)