Warum wird mein verschlüsseltes LVM-Volume (LUKS-Gerät) beim Booten nicht bereitgestellt?

15

Ich versuche, ein verschlüsseltes Volume gemäß dieser Anleitung einzurichten

Alles ist eingerichtet, aber das Mounten des verschlüsselten Volumes schlägt beim Booten mit dem Fehler fehl:

fsck.ext4: Keine solche Datei oder kein solches Verzeichnis beim Versuch, / dev / mapper / safe_vault zu öffnen. Möglicherweise nicht vorhandenes Gerät?

Das ist mein Setup:

crypttab

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks

HINWEIS:

Das uuidkommt von:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 

fstab

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2

Was ich getan habe...

Also bin ich auf die Website des Entwicklers gegangen und in den FAQ zu allgemeinen Problemen heißt es:

Überprüfen Sie, ob Sie den Geräte-Mapper und das Krypta-Ziel in Ihrem Kernel haben. Die Ausgabe von "dmsetup goals" sollte ein "crypt" -Ziel enthalten. Wenn es nicht vorhanden ist oder der Befehl fehlschlägt, fügen Sie dem Kernel Device Mapper und Crypt-Target hinzu.

Es stellte sich heraus, dass ich kein cryptZiel hatte:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

Das Problem ist, dass ich nicht weiß, wie ich ein solches Ziel hinzufügen soll.

Ich denke, dies (ohne das cryptZiel) kann dazu führen, dass die crypttabKonfiguration beim Booten ignoriert wird und der Versuch, den Eintrag einzuhängen, fstabfehlschlägt, da cryptsetupmein verschlüsseltes Volume nicht zugeordnet wurde /dev/mapper/safe_vault.

HINWEIS:

Das verschlüsselte Volume kann erfolgreich manuell zugeordnet, gemountet und beschrieben werden:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault

So sieht es nach dem Mappen und Mounten aus:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
├─sda1                                28920b00-58d3-4941-889f-6249357c56ee   
├─sda2                                                                       
└─sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ├─<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ├─<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ├─<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ├─<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  └─<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    └─safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  

AKTUALISIEREN

  • Es stellt sich heraus, dass ich das cryptZiel habe, aber um es zu zeigen, musste dmsetup targetsich zuerstcryptsetup luksOpen <my-device>
  • Ich habe versucht, UUIDs stattdessen gemäß der Antwort von @Mikhail Morfikov zu verwenden , aber es schlägt beim Booten immer noch fehl.

Ich denke immer noch, dass das Problem darin besteht, dass das verschlüsselte Volume cryptsetup luksOpenbeim Booten nicht zugeordnet (geöffnet ) wird, also nicht /dev/mapper/<safe_vault or UUID>vorhanden ist und der Versuch, es zu mounten (fstab), fehlschlägt.

UPDATE 2

Es stellte sich heraus, dass ich nicht die erforderlichen Skripte hatte, um sie beim Booten bereitzustellen. Siehe den Hinweis in der Antwort von @ MikhailMorfikov.

pgpb.padilla
quelle
1
Wird das Krypta-Ziel angezeigt, nachdem Sie es manuell erstellt haben luksOpen? Ich würde erwarten, dass luksOpen auch scheitern würde, wenn es nicht da wäre.
ein Lebenslauf am
Ok, nach sudo cryptsetup luksOpenzwei neuen Zielen erscheinen für sudo dmsetup targets: errorund crypt. Ich denke, ich muss die Frage dann ändern ...
pgpb.padilla
Ist es eine Partition oder ein Datei-Container?
Mikhail Morfikov
/dev/mapper/<my-logical-volume>-safe_vaultist ein mit LVM erstelltes logisches Volume und /dev/mapper/safe_vaultdas Gerät, dem es durch Ausführen zugeordnet wird cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Wissen Sie, ob es crypttabmit LVM-Volumes funktioniert?
pgpb.padilla
Ich habe lvm in einer luks-Partition, tatsächlich habe ich meine gesamte 1,5-TB-Festplatte verschlüsselt (außer /boot). Alles problemlos beim Booten montiert. Sind Sie sicher, dass Sie initramfsnach der Bearbeitung aktualisiert haben /etc/crypttab? Können Sie die Ausgabe von lsblk -o name,uuid,mountpointanzeigen, wenn alles bereitgestellt ist und wie es funktionieren sollte?
Mikhail Morfikov

Antworten:

16

Sie müssen auf UUIDs achten. Zum Beispiel ist dies meine Konfiguration:

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
│   ├─debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
│   ├─debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
│   └─debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /

Ich habe eine verschlüsselte Partition (sda2) mit 4 Volumes (LVM). Was ich brauche, ist es, zwei UUIDs in den richtigen Dateien festzulegen. Die sda2-UUID geht an /etc/crypttabund die Volume-UUID (zum Beispiel debian_crypt-root) geht an /etc/fstab.

Also wäre es:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1

Nach dem Ändern der /etc/crypttabDatei müssen Sie initramfs neu erstellen:

# update-initramfs -u -k all

HINWEIS

Das Paket cryptsetupmuss installiert werden, da es Startskripts enthält, die die automatische Bereitstellung verschlüsselter Volumes beim Start unterstützen.

Warum sollte man das erwähnen? Nun, wenn Sie Setup LVM während der Installation von Debian Wheezy installiert Pakete cryptsetup-sind , libcryptsetup4und lvm2aber nicht cryptsetup, so haben Sie die Werkzeuge zum Einrichten von LVM und LUKS - Geräten aber nicht die Skripte notwendig LUKS - Geräte beim Booten zu montieren. Die kommen im Paket cryptsetup .

Mikhail Morfikov
quelle
Ich habe versucht mit, UUIDaber ich bekomme den gleichen Fehler. Ich werde die Frage mit Details aktualisieren.
pgpb.padilla
Hallo, das wird ein bisschen zu lang. Können wir uns unterhalten ?
pgpb.padilla
Abgesehen davon, selbst wenn Sie / etc / crypttab nicht bearbeiten, scheint es, dass Festplatten es für Sie bearbeiten, wenn Sie bestimmte Verschlüsselungseinstellungen ändern. Diese Antwort hat mir geholfen, die Fehler zu beheben, die ich mit Datenträgern gemacht habe (und möglicherweise mehr Fehler beim Versuch, Datenträger rückgängig zu machen).
Salbei
0

Es scheint, dass @Mikhail Morfikovs Antwort das Montieren während der initramfs- Phase abdeckt . Eine Alternative (wenn es sich nicht um das Root-Dateisystem handelt) besteht darin, die Partition automatisch über systemd zu entschlüsseln und bereitzustellen, nachdem der linuz-Kernel geladen wurde. Dies ist natürlich nur möglich, wenn Sie systemd ausführen . Ich werde die Methode hier erklären:

Der /etc/crypttabEintrag:

crypt2 UUID=e412-blahblah /path/to/crypt2.key luks,noauto

Hier noautoist eine Anweisung , die Festplatte während der initramfs- Phase nicht zu entschlüsseln .

e412-blahblahIst oben die UUID der Partition, die das luks-System enthält, in meinem Fall eine Partition /dev/sdb2:

# blkid | grep sdb2
/dev/sdb2: UUID="e41274d8-fd83-4632-b560-ad0ba113ae75" TYPE="crypto_LUKS" PARTUUID="5673a908-02"

Während des Startvorgangs des Linux-Kernels liest systemd die /etc/crypttabDatei und erstellt eine Laufzeitdienstdatei /run/systemd/generator/[email protected]. Dieser Dienst wird jedoch nicht automatisch ausgeführt. Sie können es manuell ausführen

systemctl start [email protected]

Zum Entschlüsseln und anschließenden Mounten während des Startvorgangs ist /etc/fstabmöglicherweise Folgendes erforderlich :

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,[email protected] 0 2

Hier x-systemd.automountist eine Anweisung an systemd zum Mounten /media/crypt-dataund [email protected]eine Anweisung an systemd , deren Entschlüsselung crypt2erforderlich ist, bevor dies möglich ist.

Im Systemd wird das Verzeichnis erst beim ersten Zugriff ls /media/crypt-datagemountet, dh es wird just-in-time gemountet und erscheint danach in /proc/mounts.


verbunden

Möglicherweise fragen Sie "* warum haben Sie eine verschlüsselte Datenfestplatte mit dem Schlüssel im Root-Dateisystem?". Dies liegt daran, dass das Root-Dateisystem ebenfalls verschlüsselt ist, sodass der Schlüssel sicher ist. Das Root-Dateisystem wird während der initramfs- Boot-Phase entschlüsselt , die Antwort von a la Mikhail. Ich habe einen anderen Eintrag in der /etc/crypttabDatei dafür:

crypt1 UUID=8cda-blahbalh none luks,discard,lvm=crypt1--vg-root

und ich beschreibe das einrichten und einen boot usb hier

Craig Hicks
quelle