Das Layout meiner einzigen Festplatte ist das folgende:
/dev/sda1 for the plaintext boot partition /dev/sda2 for the encrypted root partition
Mein System ist ArchLinux und ich folgtedieser Leitfadenum die Root-Verschlüsselung einzurichten (kein LVM, kein Raid). Folgendes habe ich gemacht: habe es ausgeführt cryptsetup
und /dev/sda2
in/dev/mapper/cryptroot
Meines /etc/fstab
sieht so aus:
UUID=of /dev/mapper/cryptroot / ext4 rw,relatime,data=ordered,discard 0 1 UUID=of /dev/sda1 /boot ext4 rw,relatime,data=ordered,discard 0 2
Darin /etc/default/grub
habe ich eine einzige Zeile wie folgt geändert:
GRUB_CMDLINE_LINUX="cryptdevice=UUID of /dev/sda2:cryptroot:allow-discards"
Im Folgenden /etc/mkinitcpio.conf
sehen die Hooks so aus:
HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"
Schließlich habe ich das Laufen mkinitcpio -p linux
bzw.grub-mkconfig -o /boot/grub/grub.cfg
Ich habe meine Aktionen so zügig aufgezählt, weil ich zuvor erfolgreich die Verschlüsselung für mein Root-FS konfiguriert habe. Am Ende erhalte ich also die folgende Fehlermeldung:
ERROR: device *UUID of /dev/mapper/cryptroot* not found. Skipping fsck. ERROR: unable to find root device *UUID of /dev/mapper/cryptroot* You are being dropped into recovery shell
Das Seltsame ist, dass es versucht, nach dem unverschlüsselten Gerät zu suchen /dev/mapper/cryptroot
, mich aber nicht nach dem Passwort fragt (das ich beim ersten cryptsetup
Anmelden erstellt /dev/sda2
habe). Daher kann es das unverschlüsselte Blockgerät natürlich nicht finden, da es mich nicht nach seinem Passwort gefragt hat. Können Sie mir bitte sagen, was ich falsch konfiguriert habe?
Antwort1
Ich hatte Erfolg mit cryptdevice=/dev/disk/by-uuid/<UUID_OF_LOGICAL_DEVICE>:cryptroot root=/dev/mapper/cryptroot
den zusätzlichen Kerneloptionen in GRUB.
Es ist erwähnenswert, dass Sie möglicherweise einen Tippfehler gemacht haben, wenn Sie dies tun, ohne die UUID präzise zu kopieren und einzufügen (z. B. in einer Konsole/einem TTY). Hier ist ein Einzeiler, der sich auch schwer von der Konsole aus eintippen lässt, sich aber als einfacher erweisen könnte.
sed "s/\(GRUB_CMDLINE_LINUX=\"\)/\1cryptdevice=\/dev\/disk\/by-uuid\/$(blkid -o value -s UUID /dev/<LOGICAL_DEVICE>):cryptroot root=\/dev\/mapper\/cryptroot/" /etc/default/grub > ~/grub.defaults && mv ~/grub.defaults /etc/default/grub
Antwort2
Ihnen fehlt /etc/crypttab. Die CPIO-Hooks verweisen auf eine Partition, die dem Betriebssystem nicht bekannt ist.
/etc/crypttab
%{UUID von /dev/mapper/cryptroot} / ext4 rw,relatime,data=ordered,discard,luks - 0 1
Führen Sie dann das Grub-Update erneut aus.