Full-Disk-Encryption T480 Libreboot implementiert (Mail Kunden-News)
mittlerweile konnte ich die Full-Disk-Encryption auf allen Geräten nutzbar machen. Notwendig ist eine aktuelle Libreboot-Version nach Februar 2025, das sollte für die meisten gelten, Sie können Ihr ROM mit zufälliger MAC-Addresse in diesem Fall einfach beibehalten.
Wenn Sie FDE aktivieren wollen:
Installieren Sie Debian oder ein Derivat einfach ganz normal mit einer unverschlüsselten /boot - Partition. Es gibt Möglichkeiten Grub auch manuell über die Konsole zu installieren, das brauchen Sie aber nicht zwingend, Sie können die Partition nach der Installation einfach /dev/nullen.
Libreboot unterstützt das Laden einer eigenen grub.cfg, eine minimale Variante finden Sie hier als letztes Beispiel:
----
insmod at_keyboard
insmod usb_keyboard
insmod nativedisk
insmod xhci
insmod ehci
insmod ohci
insmod uhci
insmod usb
insmod usbms
insmod regexp
insmod lvm
insmod luks
insmod cryptodisk
terminal_input --append at_keyboard
terminal_input --append usb_keyboard
terminal_output --append cbmemc
# User interface overrides wherever "keystatus" is supported
# Keep SHIFT key pressed before powering on to disable graphics
if keystatus --shift; then
terminal_output --append vga_text
else
gfxpayload=keep
terminal_output --append gfxterm
for dt in cbfsdisk memdisk; do
for it in png jpg; do
if [ -f (${dt})/background.${it} ]; then
insmod ${it}
background_image (${dt})/background.${it}
fi
done
done
fi
# Keep CTRL pressed to enable default serial terminal (COM1 or the like)
if keystatus --ctrl; then
serial
terminal_input --append serial
terminal_output --append serial
fi
# Keep ALT pressed to enable spkmodem
if keystatus --alt; then
terminal_output --append spkmodem
fi
if [ -f (cbfsdisk)/keymap.gkb ]; then
keymap (cbfsdisk)/keymap.gkb
fi
set timeout=5
set default=0
# Don't lecture me on set root= it will NOT work. Use the full path
menuentry "Boot: cryptomount all -> LVM root -> /boot/grub/grub.cfg" {
cryptomount -a
configfile (lvm/grubcrypt-rootvol)/boot/grub/grub.cfg
}
menuentry "Boot: cryptomount all -> LVM boot -> /grub/grub.cfg" {
cryptomount -a
configfile (lvm/grubcrypt-bootvol)/grub/grub.cfg
}
menuentry "Boot: LVM -> decrypt root volume -> /boot/grub/grub.cfg" {
cryptomount (lvm/grubcrypt-root)
configfile (crypto0)/boot/grub/grub.cfg
}
# Notice this will just loop back sadly
menuentry 'Libreboot default menu [l]' --hotkey='l' {
configfile (memdisk)/boot/grub/grub.cfg
----
Fügen Sie diese einfach mit cbfstool in ihr Image als grub.cfg type raw ein, es werden alle 3 Varianten unterstützt (LVM -> root, LVM -> boot, crypt -> LVM). Leider lädt Libreboot gegenteiligen Behauptungen in seiner Config anschliessend NUR NOCH diese grub.cfg (!) und tauschen können Sie die von Libreboot verbaute config nicht so einfach - sie steckt direkt im elf-Image von Grub.
Wer die Standard-Libreboot-Config zusätzlich behalten will kann diese 3 Einträge auch einfach in diese einfügen, die Vorlage finden Sie hier:
https://codeberg.org/libreboot/lbmk/src/branch/master/config/grub/xhci/config/payload (T480, Optiplex 3050 und 9020)
Dies sind 1-Klick Configs die zum Auslesen der tatsächlichen Boot-Parameter Grub chainloaden, daher müssen Sie das Passwort 2x eingeben - einmal damit Grub die Boot-Parameter findet, anschliessend wird der Kernel gestartet der dann nochmal das Passwort braucht.
Verkürzen lässt sich das nur durch symlinks in /boot - diese werden aber seit Debian 12 nicht mehr erstellt, auch das Setting do_symlinks in /etc/kernel-img.conf wird ignoriert, siehe https://manpages.ubuntu.com/manpages/questing/man5/kernel-img.conf.5.html
D.h. Sie müssten nach jedem Kernel-Update manuell den symlink neu erstellen oder sperren sich erstmal aus / müssen bis zum Fixen der Symlinks das Passwort 2x eingeben - machbar ist es aber, erstellen Sie für Ihren Fall eine config mit z.B.
menuentry "Boot Kernel directly" {
cryptomount (lvm/grubcrypt-root) / cryptomount -a
echo 'Loading Linux 6.12.38+deb13-amd64 ...'
linux /boot/vmlinuz-6.12.38+deb13-amd64 root=UUID=12345678-1234-1234-1234-123456789012 ro quiet iomem=relaxed
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-6.12.38+deb13-amd64
}
Den search-Befehl brauchen Sie wirklich selten, er ist nur notwendig wenn mehrere Partitionen die gleiche UUID hätten was eher unwahrscheinlich ist.
Ihre Parameter finden Sie in /boot/grub/grub.cfg - nur wie gesagt ohne symlinks würden sich die Pfade nach jedem Update ändern, wenn Sie hier also eine Direkt-Konfiguration nutzen wollen - erstellen Sie diese Symlinks selbst und setzen Sie linux auf /boot/vmlinuz (symlink) und initrd auf /boot/initrd (ebenso symlink).
Bei Fragen oder Nacharbeiten einfach eine Mail, gern erstelle ich auch nach Angabe der Parameter zu Modell und Bootpfad eine passende config oder gleich das ganze Image (brauch ich aber die genutzte MAC-Adresse).