Я понимаю, что вы нашли решение, которое включает отключение безопасной загрузки через Shim/mokutil
; Однако есть и другой способ: вы можете подписать ядро самостоятельно.
В общих чертах, процедура:
- Создайте свой собственный ключ безопасной загрузки. Вы бы сделали это с помощью программы
openssl
. Вам необходимо скопировать файл DER открытого ключа в системный раздел EFI (ESP), который обычно монтируется в /boot/efi
.
- Подпишите ваш файл ядра. Я использую инструмент под названием
sbsign
чтобы сделать это. IIRC, Fedora, предпочитает другую программу, которую, как я проверял в последний раз, использовать было сложнее. Вам нужно будет либо переименовать текущее ядро и поставить его подписанную версию на место, либо создать новую запись GRUB для вашего нового ядра.
- Перезагрузитесь в EFI и запустите MokManager. Некоторые загрузчики, такие как мой собственный rEFInd, предлагают способ входа в MokManager вручную. Если у вас нет, вам может понадобиться прыгнуть через несколько обручей, чтобы заставить его работать. Попав в MokManager, вам нужно найти файл DER, который вы скопировали в ESP, и добавить его в список MOK.
- В этот момент, когда вы перезагрузитесь, вы сможете запустить только что подписанное ядро даже при активной безопасной загрузке.
Эта процедура более подробно описана на моей странице. Это утомительно и, возможно, не стоит затраченных усилий по сравнению с отключением безопасной загрузки - но, опять же, возможно, так оно и есть. Вам нужно будет решить, хотите ли вы перепрыгнуть через эти обручи, чтобы продолжить загрузку с активной загрузкой.
Также обратите внимание, что если вы установите rEFInd, он может сгенерировать набор ключей безопасной загрузки и сохранить их как /etc/refind.d/keys/refind_local.*
(Сценарий refind-install
делает это, если необходимые утилиты доступны, но не делает, если они недоступны.) Таким образом, если вы когда-либо устанавливали rEFInd, шаг № 1 уже может быть выполнен. Затем вы можете использовать локальный ключ rEFInd для подписи вашего ядра.
Есть вариант этой процедуры тоже. Последние версии Shim и MokManager позволяют зарегистрировать хэш двоичного файла как способ его аутентификации. Это работает даже с неподписанными двоичными файлами. Таким образом, вы можете зарегистрировать хеш вашего ядра, чтобы включить его загрузку. Проблема в том, что вам нужно зарегистрировать хеш каждого неподписанного ядра, которое вы хотите запустить. Это может не иметь большого значения, если у вас есть только одно работающее ядро, и вы не планируете его обновлять; но если вы будете обновлять ядро каждые пару недель, вы будете вечно регистрировать новые хэши, которые будут хлопотом и будут занимать все больше ограниченного пространства NVRAM. Таким образом, этот подход немного проще в некоторых случаях, но гораздо хуже в других.