Из любопытства я пробую использовать systemd-boot на своем ноутбуке, на котором есть UEFI с безопасной загрузкой. Установка GRUB по умолчанию работает нормально.
Для systemd-boot большинство запросов приводит к этой странице . Это включает установку systemd-boot с bootctl
, создание loader.conf
, создание сценария postinst ядра zz-update-systemd-boot
. До сих пор все выглядит нормально, хотя я не понимаю, почему в systemd-boot нет драйвера ext4 fs для доступа к ядрам. В любом случае, как и ожидалось, это не загружается из-за безопасной загрузки.
Раздел безопасной загрузки на этой странице содержит настройки PreLoader.efi
и HashTool.efi
. После выполнения этих шагов при загрузке системы отображается меню systemd-boot, но после выбора Ubuntu возникает эта ошибка:
EFI stub: UEFI Secure Boot is enabled.
Насколько я понимаю, PreLoader
- это подписанный двоичный файл, который принимается UEFI. Затем загружается loader.efi
(переименованный в systemd-bootx64.efi
), хэш которого был зарегистрирован. Это загружает ядро vmlinuz
, хэш которого также был зарегистрирован. Итак, похоже, что безопасная цепочка в порядке, но загрузка по-прежнему не выполняется. Похоже, что подпись ядра Canonical не играет здесь роли.
Как заставить это работать, и правильно ли я понял аспекты безопасности?
Я следил за вариантом страницы, на которую вы ссылаетесь, за исключением параметров безопасной загрузки.
К сожалению, после внесения изменений Ubuntu linux-generic, linux-headers-generic и linux-image-generic настаивают на установке GRUB в дополнение к установке systemd-boot и устанавливают GRUB в качестве параметра загрузки по умолчанию при каждом удачном обновлении ядра.
В результате бокс больше не загружается с помощью systemd-boot при следующей перезагрузке. Итак, кажется, что необходима последняя команда для запуска efibootmgr, чтобы переустановить порядок загрузки, чтобы снова использовать «ubuntu».
Чтобы предотвратить эту проблему, я думаю, что пакеты Ubuntu linux-generic, linux-headers-generic и linux-image-generic DEB должны принимать GRUB или systemd-boot в качестве разрешенных загрузчиков. вместо принудительной установки GRUB.