Ich habe die Anweisungen befolgtHier. Ich habe die LiveCD verwendet und kann Ubuntu beim besten Willen nicht dazu überreden, eine initramfs-Datei zu erstellen, die mein LUKS-Dateisystem entschlüsseln könnte. Ich komme problemlos über GRUB hinaus.
Hilfe? Ich habe das Gefühl, dass wir das hinbekommen.
Wenn ich zum Initramfs-Stadium komme, kann ich Cryptsetup ausführen, erhalte jedoch diese Fehlermeldung:
device-mapper: table: 252:0 crypt error allocating tfm
Ich habe außerdem die Meldung „Überprüfen Sie, ob der Kernel die AES-XTS-Plain64-Verschlüsselung unterstützt“ erhalten.
Antwort1
OK, ich habe es herausgefunden!
Ich habe diese Anleitung angepasst und im Wesentlichen nur Dinge hinzugefügt, bis es funktionierte:
https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid
Ich habe die Dateien gegenüber dieser Anleitung ein wenig abgeändert, mich ansonsten aber daran gehalten.
Nur für den Fall habe ich diese Modprobe-Zeilen zu /etc/initramfs-tools/scripts/local-top/cryptoroot hinzugefügt:
modprobe -q dm_crypt
modprobe -q sha256_generic
modprobe -q sha256
modprobe -q aes_generic
modprobe -q aes
modprobe -q cbc
modprobe -q xts
modprobe -q aes
modprobe -q aes_x86_64
Das ergibt:
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
#This line from the Encrypted Entrepid tutorial didn't work for me
#/bin/loadkeys -q /etc/console-setup/boottime.kmap.gz
modprobe -q dm_crypt
modprobe -q sha256
modprobe -q sha256_generic
modprobe -q aes_generic
modprobe -q aes
modprobe -q cbc
modprobe -q xts
modprobe -q aes
modprobe -q aes_x86_64
# 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
/sbin/cryptsetup luksOpen CRYPTOROOT cryptoroot
if grep -q splash /proc/cmdline; then
/sbin/usplash -c &
sleep 1
fi
Für die obige Datei (local-top) muss die CRYPTROOT-Zeile geändert werden.
Ich habe eine Schlüsseldatei verwendet, daher sah meine Zeile folgendermaßen aus:
/sbin/cryptsetup luksOpen /dev/disk/by-uuid/xxxx --key-file /my_keyfile.bin cryptoroot
Die Schlüsseldatei ist nicht erforderlich. Der luksHeader kann mit einem Passwort geöffnet werden (entfernen Sie einfach die Schlüsseldateioption). Wenn Sie die Datei jedoch einbinden, verwenden Sie nicht /dev/sdXy.
Zu /etc/initramfs-tools/hooks/cryptoroot habe ich einfach diese Zeilen hinzugefügt:
# Comment out this line
# cp /etc/console-setup/boottime.kmap.gz ${DESTDIR}/etc/console
# If you add a key-file
# cp /my_keyfile.bin ${DESTDIR}/
copy_exec /bin/loadkeys /bin
copy_exec /bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin
copy_exec /sbin/blkid /sbin
copy_exec /sbin/lsmod /sbin
copy_exec /sbin/cat /sbin
copy_exec /sbin/dmsetup /sbin
Das ergibt:
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /sbin/cryptsetup ]; then
exit 0
fi
. /usr/share/initramfs-tools/hook-functions
# Comment out this line
# cp /etc/console-setup/boottime.kmap.gz ${DESTDIR}/etc/console
# If you add a key-file
# cp /my_keyfile.bin ${DESTDIR}/
copy_exec /bin/loadkeys /bin
copy_exec /bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin
copy_exec /sbin/blkid /sbin
copy_exec /sbin/lsmod /sbin
copy_exec /sbin/cat /sbin
copy_exec /sbin/dmsetup /sbin
Außerdem müssen alle diese Dateien als ausführbar gekennzeichnet sein.
chmod +x /etc/initramfs-tools/hooks/cryptoroot
chmod +x /etc/initramfs-tools/scripts/local-top/cryptoroot
Fügen Sie diese zu /etc/initramfs-tools/modules hinzu:
dm_mod
dm_crypt
sha256_generic
sha256_ssse3
aes_generic
cbc
aes_x86_64
xts
Es war relativ einfach!
Führen Sie update-initramfs -u -k all aus.
Dann müssen wir in meinem Fall einen benutzerdefinierten GRUB-Eintrag erstellen, da os-prober kein Dateisystem auf BTRFS erkennt. Der Arch-Eintrag wird dabei helfen.
So sieht meins aus:
menuentry "System shutdown" {
echo "System shutting down..."
halt
}
menuentry "System restart" {
echo "System rebooting..."
reboot
}
menuentry 'Ubuntu Linux try 1' --class arch --class gnu-linux --class gnu --class os {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_sha256
insmod btrfs
insmod ext2
cryptomount -u [UUID of sdXY]
set root='cryptouuid/[UUID of sdXY]'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/[UUID of sdXY]' [UUID of /dev/mapper/cryptoroot]
else
search --no-floppy --fs-uuid --set=root [UUID of /dev/mapper/cryptoroot]
fi
echo 'Loading Linux linux-lts ...'
#I use btrfs so...
linux btrfs path root=UUID=[UUID of /dev/mapper/cryptoroot] rw rootflags=subvol=/btrfs/path/to/root cryptdevice=/dev/disk/by-uuid/[UUID of sdXY]':cryptroot quiet modprobe.blacklist=pcspkr profile
echo 'Loading initial ramdisk ...'
initrd path/initrd.img
}
##I was able to boot without this kernel option but some guides suggested it: ##cryptopts=target=cryptrootname,source=/dev/sdXY
Es ist offiziell: Ubuntu kann in das verschlüsselte Dateisystem von Arch booten! Ich habe viel gegoogelt und bin mir nicht sicher, ob das schon jemand geknackt hat, zumindest nicht in den letzten Jahren.