Как загрузить пользовательский шрифт в GRUB в Secure Boot

Вопрос или проблема

Итак, я сделал собственный шрифт в формате 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". Рассмотрим, как вы можете решить эту проблему:

  1. Понимание работы Secure Boot: Secure Boot защищает процесс загрузки путем проверки подлинности кода перед его выполнением. Это включает в себя строгие требования к подписи всех используемых компонентов.

  2. Подпись шрифта: Вы правильно идентифицировали необходимость подписания шрифта, но избранный вами метод (использование GPG) не совместим с Secure Boot, так как GPG предназначен для шифрования и подписания сообщений и файлов, но не для обеспечения совместимости с Secure Boot.

  3. Использование утилиты sbsign: Вместо GPG для подписи необходимо использовать утилиту, которая генерирует подписи, распознаваемые Secure Boot. Наиболее подходящим инструментом является sbsign, который является частью пакета sbsigntools.

  4. Создание подписанного шрифта:

    • Установите 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-загрузочный ключ и сертификат, которые были добавлены в доверенное хранилище вашей системы.

  5. Загрузка подписанного шрифта:

    • Проверьте, чтобы загрузчик GRUB загружал подписанный шрифт unicode2_signed.pf2, а не оригинальный unicode2.pf2.
  6. Проверка конфигурации: Удостоверьтесь, что настройки GRUB и правила загрузки (возможно, расположенные в /etc/grub.d/ или других конфигурационных файлах) обновлены и указывают на использование подписанного шрифта.

  7. Обновление GRUB: После внесения изменений не забудьте обновить GRUB, чтобы убедиться, что все изменения применены:

    sudo update-grub

Применив данные шаги, вы сможете загрузить ваш пользовательский шрифт для GRUB при включенном Secure Boot, обеспечив безопасность и надежность процесса загрузки.

Оцените материал
Добавить комментарий

Капча загружается...