Безопасная загрузка с единым образом ядра на openSuSE?
Я пытаюсь установить OpenSuSE Tumbleweed в системе с зашифрованным корневым разделом. Сначала я попытался настроить GRUB, но он отказался распознавать раздел, зашифрованный LUKS.
В настоящее время я пытаюсь использовать единый образ ядра , который подписывает как ядро, так и initrd ключом безопасной загрузки для предотвращения взлома. Для этой цели в Debian есть sicherboot, а в Arch —sbupdate.
Dracut, initrd, используемый в SUSE, похоже, также имеет эту встроенную функциональность . К сожалению, постустановочный скрипт dracut (присутствующий в/usr/lib/module-init-tools/regenerate-initrd-posttrans
и воспроизведено ниже), похоже, жестко закодировало командную строку dracut. Есть ли другой способ автоматизировать создание унифицированных образов ядра после обновлений RPM?
#!/bin/sh
#
# Packages that install kernels or kernel-modules create a flag
#
# /run/regenerate-initrd/<kernel image>
#
# to have the initrd for <kernel image> generated, or
#
# /run/regenerate-initrd/all
#
# to have all initrds generated. This script is called from posttrans
# and takes care of generating the initrds
: ${DRACUT:=/usr/bin/dracut}
if [ ! -x "$DRACUT" ]; then
echo "${0##*/}: dracut is not installed, not rebuilding the initrd" >&2
exit 0
fi
dir=/run/regenerate-initrd
if ! test -d "$dir"; then
exit 0
fi
for f in "$dir"/*; do
case $f in
"$dir/*")
[ -e "$f" ] || break;;
esac
# check if we are in a build chroot
if ! [ -f /etc/fstab -a ! -e /.buildenv -a -x "$DRACUT" ] ; then
echo "Please run \"$DRACUT -f --regenerate-all\" as soon as your system is complete." >&2
rm "$dir"/*
exit 0
fi
break
done
if test -e "$dir/all"; then
rm "$dir"/*
"$DRACUT" -f --regenerate-all
exit
fi
err=0
for f in "$dir"/*; do
case $f in
"$dir/*")
[ -e "$f" ] || break;;
esac
rm "$f"
image=${f##*/}
kver=${image#*-}
if ! test -e "/boot/$image"; then
echo "$0: /boot/$image does not exist, initrd won't be generated"
continue
fi
if ! "$DRACUT" -f "/boot/initrd-$kver" "$kver"; then
err=$?
fi
done
exit $err
1 ответ
Кажется, это добавляет
uefi="yes"
в dracut.conf заставляет Dracut создавать унифицированные образы в разделе EFI (в месте, ожидаемом systemd-boot), что должно решить проблему [у меня еще не было времени проверить это]