Nachdem es gestern einen Satz neue Festplatten gab, hab ich mich endlich mal entschieden, mein Truecrypt Setup zu Gunsten von dm-crypt mit Luks zu beerdigen. Im Rahmen dieser Aktion sollte auch gleich die Root-Partition mit Verschlüsselt werden. Im Prinzip ist das ja kein Problem, wenn man ein Initrd verwendet. Für Ubuntu kann in dem Fall die folgende Anleitung als Quelle dienen:
https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid
Allerdings spielt Ubuntu nicht mehr so ganz mit, sobald mehrere physical volumes ins Spiel kommen. Darüber hinaus verträgt sich Plymouth nicht so ganz mit der Passwortabfrage. Nach etwas rätseln hab ich mich dann entschlossen, die entsprechenden Vorkehrungen von Hand in das Initrd einzubauen. Konkret muss die Datei /etc/initramfs-tools/scripts/local-top/cryptoroot folgendermaßen aussehen:
EREQ="udev"
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
/bin/loadkeys -q /etc/console-setup/boottime.kmap.gz
modprobe -qb dm_crypt
modprobe -qb sha256_generic
# The following command will ensure that the kernel is aware of
# the partition before we attempt to open it with cryptsetup.
/sbin/udevadm settle
if grep -q splash /proc/cmdline; then
/bin/chvt 1
fi
## Ab hier Änderungen
status=1
while [ $status != 0 ] ; do
password=`plymouth ask-for-password --prompt "Password?"`
echo $password | cryptsetup luksOpen /dev/md28 lvm-pv0
echo $password | cryptsetup luksOpen /dev/md27 lvm-pv1
echo $password | cryptsetup luksOpen /dev/md26 lvm-pv2
status=$?
done
Geändert haben sich hierbei die letzten 9 Zeilen, bei denen in einer Schleife so lange versucht wird, die dm-crypt-Devices zu öffnen, bis dies erfolgreich war. Hierbei wird die Passwort-Abfrage von Plymouth verwendet. Natürlich müssen die Passwörter für alle Devices die selben sein, damit dies funktioniert. Außerdem muss obiges Script noch an die lokalen Gegebenheiten des Lesers angepasst werden.