Das hat mich jetzt auch mal gereizt, so habe ich ein wenig rumprobiert...
Es funktioniert - dem Arch-mkinitcpio-Prinzip nach ganz einfach, wenn man sich mal
durch die HOOKS arbeitet - ganz einfach 😉
Das bei dir keine Luks-PW-Abfrage kommt ist deshalb, da garnicht versucht wird /dev/sda3
zu öffnen.
In einem "reinen" Crypt-Setup würde man root=/dev/sda3 eingeben und schon würde
über den crypt-Hook auch die PW-Abfrage und das Öffnen erfolgen.
Das habe ich dann auch getestet. Die PW-Abfrage erfolgt, das Device wird geöffnet
und darin dann auch durch den lvm2-HOOK die VG und die LVs erkannt und aktiviert.
Dann aber, wo mit kinit das eigentliche System gestartet wird, kam dann die Panic:
cannot open root device dm-0(254,0)
Es wird hier also nicht das logische Volume(/dev/mapper/vg-xyz) als root genommen,
sondern das crypt-Device. Als Filesystem wird zudem "lvm2" erkannt, obwohl es
eigentlich etx3 sein muß.
Ich habe dann sehr lange rumgedocktert in Richtung Dateisystem erzwingen und
Änderungen am lvm2-Hook. Das war aber unnötig, da die Lösung im crypt-Hook zu
finden war.
Zum korrekten Booten braucht so ein crypt-lvm System wirklich das LV
/dev/mapper/vg-root als root= beim Bootloader.
Damit aber vorher auch eine Entschlüsselung erfolgt (da sonst ja kein LV vorhanden ist)
muß man den crypt-HOOK zwingen, indem man das Crypt-Device und den Crypt-Namen
auch am Bootprompt mitgibt.
Ich habe hier folgendes Szenario, du mußt das an deines anpassen:
/dev/sda1 = /boot (ext2, unverschlüsselt)
/dev/sda2 = Luks-verschlüsselte Partition (darin das LVM)
Meine VG ist "arch", an LVs habe ich:
/dev/mapper/arch-root
/dev/mapper/arch-home
/dev/mapper/arch-swap
Wichtig ist noch der Map-Name, den du deine beim luksOpen während der Installation
genommen hast. Bei mir:
cryptsetup luksOpen /dev/sda2 SDA2
Diesen Mapping-Namen brauchen wir.
Der grub-Eintrag sieht dann bei mir wie folgt aus:
root (hd0,0)
kernel /vmlinuz26 root=/dev/mapper/arch-root ro cryptdevice=/dev/sda2:SDA2
Die Krux ist hier, daß wir cryptdevice per Hand setzen. Der crypt-HOOK erkennt
es deswegen nicht selbst, da aus dem root= Device-Eintrag für luksOpen keinerlei
sinnvolle Erkennung erfolgen kann.
Also eigentlich ganz einfach, wie so vieles bei ArchLinux... 😉
Bei Fragen melde dich halt nochmal, ich kann dir bei Bedarf auch eine Schritt-für-Schritt
Anleitung geben.
//Nachtrag:
Ich habe in meiner /etc/lvm/lvm.conf noch folgendes Eintrag aktiviert unf geändert.
Hatte ich beim Suchen gefunden. Bin mir aber nicht mehr sicher, ob der wirklich
gebraucht wird:
types = [ "device-mapper", 16 ]