Perché il mio volume LVM crittografato (dispositivo LUKS) non si monta all'avvio?


15

Sto cercando di impostare un volume crittografato seguendo questa guida

Tutto è configurato ma il montaggio del volume crittografato non riesce al momento dell'avvio con l'errore:

fsck.ext4: nessun file o directory simile durante il tentativo di aprire / dev / mapper / safe_vault Forse un dispositivo inesistente?

Questa è la mia configurazione:

crypttab

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

NOTA:

Il uuidproviene da:

$ 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

Quello che ho fatto...

Quindi sono andato sul sito Web di Devoper e nelle FAQ sui problemi comuni dicono:

Controlla di avere il mapper del dispositivo e la destinazione crypt nel tuo kernel. L'output di "target dmsetup" dovrebbe elencare un target "crypt". Se non è presente o il comando non riesce, aggiungi il mapper del dispositivo e crypt-target al kernel.

Quindi l'ho fatto, risulta che non ho un cryptobiettivo:

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

Il problema è che non so come aggiungere un tale obiettivo.

Penso che questo (non avendo la cryptdestinazione) crypttabpossa causare l'ignoranza della configurazione al momento dell'avvio e quindi provare a montare la voce fstabnon riesce perché cryptsetupnon ha mappato il mio volume crittografato /dev/mapper/safe_vault.

NOTA:

Il volume crittografato può essere mappato, montato e scritto correttamente:

$ 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

Ecco come si occupa della mappatura e del montaggio:

$ 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  

AGGIORNARE

  • Si scopre che ho l' cryptobiettivo, ma per farlo vedere dmsetup targetsho dovuto primacryptsetup luksOpen <my-device>
  • Ho provato a usare UUIDs invece secondo la risposta di @Mikhail Morfikov ma non riesce ancora all'avvio.

Penso ancora che il problema sia che in qualche modo il volume crittografato non viene mappato (aperto con cryptsetup luksOpen) all'avvio, quindi non /dev/mapper/<safe_vault or UUID>esiste, quindi il tentativo di montarlo (fstab) fallisce.

AGGIORNAMENTO 2

Si scopre che non avevo gli script necessari da montare all'avvio. Vedi la nota nella risposta di @ MikhailMorfikov.


1
Il target della cripta viene visualizzato dopo averlo fatto manualmente luksOpen? Mi aspetto che se non ci fosse, anche luksOpen fallirebbe.
un CVn

Ok, dopo che sudo cryptsetup luksOpenappaiono due nuovi obiettivi per sudo dmsetup targets: errore crypt. Immagino di dover cambiare la domanda allora ...
pgpb.padilla,

È una partizione o un contenitore di file?
Mikhail Morfikov il

/dev/mapper/<my-logical-volume>-safe_vaultè un volume logico creato con LVM ed /dev/mapper/safe_vaultè il dispositivo a cui è mappato facendo cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Sai se crypttabfunziona con volumi LVM?
pgpb.padilla,

Ho lvm all'interno di una partizione luks, in realtà ho il mio intero disco da 1,5 TB crittografato (tranne /boot). Tutti montati all'avvio senza problemi. Sei sicuro di essere aggiornato initramfsdopo la modifica /etc/crypttab? Puoi mostrare l'output di lsblk -o name,uuid,mountpointquando tutto è montato e funziona come dovrebbe?
Mikhail Morfikov,

Risposte:


16

Devi prestare attenzione agli UUID. Ad esempio, questa è la mia configurazione:

# 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   /

Ho una partizione crittografata (sda2) con 4 volumi (LVM). Ciò di cui ho bisogno è impostare due UUID nei file giusti. L'UUID sda2 va a /etc/crypttabe l'UUID del volume (ad esempio debian_crypt-root) va a /etc/fstab.

Quindi sarebbe:

# 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

Dopo aver modificato il /etc/crypttabfile, devi ricostruire initramfs:

# update-initramfs -u -k all

NOTA

Il pacchetto cryptsetupdeve essere installato perché ha script di avvio che forniscono supporto per il montaggio automatico di volumi crittografati all'avvio.

Perché preoccuparsi di menzionarlo? Bene, se si installa LVM durante l'installazione Debian Wheezy installa i pacchetti cryptsetup-binlibcryptsetup4 e , in caso lvm2contrario cryptsetup, si hanno gli strumenti per configurare i dispositivi LVM e LUKS ma non gli script necessari per montare i dispositivi LUKS all'avvio. Quelli arrivano nel pacchetto cryptsetup .


Ho provato a usare UUIDma ho lo stesso errore. Aggiornerò la domanda con i dettagli.
pgpb.padilla,

Ciao, sta diventando un po 'troppo lungo, possiamo chattare ?
pgpb.padilla,

A parte questo, anche se non modifichi / etc / crypttab, sembra che i dischi lo modificheranno per te se modifichi determinate impostazioni di crittografia. Questa risposta mi ha aiutato a correggere gli errori che ho fatto con i dischi (e forse più errori nel tentativo di annullare i dischi).
salvia,

0

Sembra che la risposta di @Mikhail Morfikov riguardi il montaggio durante la fase di initramfs . Un'alternativa (se non è il filesystem di root) è quella di decrittografare e montare automaticamente la partizione tramite systemd , dopo aver caricato il kernel linuz. Naturalmente questo è possibile solo se si esegue systemd . Spiegherò qui il metodo:

La /etc/crypttabvoce:

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

Ecco noautoun'istruzione per non provare a decrittografare il disco durante la fase initramfs .

Sopra, e412-blahblahè l'UUID della partizione contenente il sistema luks, nel mio caso una partizione /dev/sdb2:

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

Durante l'avvio del kernel linuz, systemd leggerà il /etc/crypttabfile e creerà un file di servizio di runtime /run/systemd/generator/systemd-cryptsetup@crypt2.service. Tuttavia, tale servizio non viene eseguito automaticamente. Puoi eseguirlo manualmente

systemctl start systemd-cryptsetup@crypt2.service

ma per decrittografarlo e poi montarlo durante l'avvio /etc/fstabpotrebbe essere necessario come segue:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,x-systemd.requires=systemd-cryptsetup@crypt2.service 0 2

Ecco x-systemd.automountun'istruzione per systemd da montare /media/crypt-data, ed x-systemd.requires=systemd-cryptsetup@crypt2.serviceè un'istruzione per systemd che crypt2è richiesta la decrittazione prima che ciò sia possibile.

Nel systemd non verrà effettivamente montata la directory fino alla prima volta che si accede, ad esempio ls /media/crypt-data, verrà montata just-in-time e apparirà successivamente in /proc/mounts.


Relazionato

È possibile che venga richiesto "* perché disporre di un disco dati crittografato con la chiave nel file system radice?". È perché anche il file system di root è crittografato, quindi la chiave è sicura. Il file system di root viene decifrato durante la fase di avvio di initramfs , la risposta di la Mikhail. Ho un'altra voce nel /etc/crypttabfile per questo:

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

e descrivo la configurazione di questo e un usb di avvio qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.