Вопрос или проблема
Итак, я сделал собственный шрифт в формате bitmap для grub (в /boot/grub/fonts/unicode2.pf2), который создал с помощью grub-mkfont
. Генерация шрифта прошла успешно, но возникли проблемы с его загрузкой. Когда я загружаю его с помощью loadfont /boot/grub/fonts/unicode2.pf2
, появляется сообщение error: prohibited by secure boot policy
. Все работает нормально, когда я отключаю безопасную загрузку. Я использую Ubuntu 24.04, GRUB версии 2.12. Моя идея состоит в том, чтобы подписать шрифт, и я попробовал сделать это с помощью gpg, но получил ту же ошибку. Я создал подпись, используя sudo gpg --output /boot/grub/fonts/unicode.pf2.sig --detach-sign /boot/grub/fonts/unicode.pf2
. Может быть, я что-то упускаю, или подписание gpg не работает?
Ответ или решение
Для загрузки пользовательского шрифта в GRUB с учетом политики Secure Boot необходимо учитывать несколько важных аспектов. Основная проблема заключается в том, что Secure Boot не позволяет загружать неподписанные или неправильно подписанные компоненты, включая шрифты, что вызывает ошибку "prohibited by secure boot policy". Рассмотрим, как вы можете решить эту проблему:
-
Понимание работы Secure Boot: Secure Boot защищает процесс загрузки путем проверки подлинности кода перед его выполнением. Это включает в себя строгие требования к подписи всех используемых компонентов.
-
Подпись шрифта: Вы правильно идентифицировали необходимость подписания шрифта, но избранный вами метод (использование GPG) не совместим с Secure Boot, так как GPG предназначен для шифрования и подписания сообщений и файлов, но не для обеспечения совместимости с Secure Boot.
-
Использование утилиты sbsign: Вместо GPG для подписи необходимо использовать утилиту, которая генерирует подписи, распознаваемые Secure Boot. Наиболее подходящим инструментом является
sbsign
, который является частью пакетаsbsigntools
. -
Создание подписанного шрифта:
-
Установите
sbsigntools
, если он еще не установлен, командой:sudo apt install sbsigntools
-
Подпишите шрифт с использованием вашего efi-загрузочного ключа:
sbsign --key /path/to/your/key --cert /path/to/your/cert --output /boot/grub/fonts/unicode2_signed.pf2 /boot/grub/fonts/unicode2.pf2
-
Убедитесь, что
/path/to/your/key
и/path/to/your/cert
указывают на ваш efi-загрузочный ключ и сертификат, которые были добавлены в доверенное хранилище вашей системы.
-
-
Загрузка подписанного шрифта:
- Проверьте, чтобы загрузчик GRUB загружал подписанный шрифт
unicode2_signed.pf2
, а не оригинальныйunicode2.pf2
.
- Проверьте, чтобы загрузчик GRUB загружал подписанный шрифт
-
Проверка конфигурации: Удостоверьтесь, что настройки GRUB и правила загрузки (возможно, расположенные в
/etc/grub.d/
или других конфигурационных файлах) обновлены и указывают на использование подписанного шрифта. -
Обновление GRUB: После внесения изменений не забудьте обновить GRUB, чтобы убедиться, что все изменения применены:
sudo update-grub
Применив данные шаги, вы сможете загрузить ваш пользовательский шрифт для GRUB при включенном Secure Boot, обеспечив безопасность и надежность процесса загрузки.