¿Por qué mi volumen LVM cifrado (dispositivo LUKS) no se monta en el momento del arranque?

15

Estoy tratando de configurar un volumen cifrado siguiendo esta guía

Todo está configurado, pero el montaje del volumen cifrado falla en el momento del arranque con el error:

fsck.ext4: No existe tal archivo o directorio al intentar abrir / dev / mapper / safe_vault ¿Dispositivo posiblemente inexistente?

Esta es mi configuración:

criptab

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

NOTA:

El uuidviene de:

$ 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

Qué he hecho...

Así que fui al sitio web del devorador y en las Preguntas frecuentes sobre problemas comunes dicen:

Comprueba que tienes el mapeador de dispositivos y el objetivo de la cripta en tu núcleo. La salida de los "objetivos dmsetup" debería enumerar un objetivo "cripta". Si no está allí o el comando falla, agregue el mapeador de dispositivos y crypt-target al núcleo.

Así que lo hice, resulta que no tengo un cryptobjetivo:

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

El problema es que no sé cómo agregar ese objetivo.

Creo que esto (no tener el cryptobjetivo) puede hacer que la crypttabconfiguración se ignore en el momento del arranque y, por lo tanto, intentar montar la entrada fstabfalla porque cryptsetupno ha asignado mi volumen cifrado /dev/mapper/safe_vault.

NOTA:

El volumen cifrado se puede mapear, montar y escribir con éxito manualmente:

$ 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

Así es como se ve después de mapearlo y montarlo:

$ 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  

ACTUALIZAR

  • Resulta que tengo el cryptobjetivo, pero para que se muestre dmsetup targetstenía que primerocryptsetup luksOpen <my-device>
  • Intenté usar UUIDs en su lugar de acuerdo con la respuesta de @Mikhail Morfikov, pero todavía falla en el momento del arranque.

Todavía creo que el problema es que, de alguna manera, el volumen cifrado no se asigna (se abre con cryptsetup luksOpen) en el momento del arranque, por lo que no /dev/mapper/<safe_vault or UUID>existe, por lo que falla el intento de montarlo (fstab).

ACTUALIZACIÓN 2

Resulta que no tenía los scripts necesarios para montar en el momento del arranque. Vea la nota en la respuesta de @ MikhailMorfikov.

pgpb.padilla
fuente
1
¿El objetivo de la cripta aparece después de que lo haces manualmente luksOpen? Esperaría que si no estuviera allí, luksOpen también fallaría.
un CVn
Ok, después de sudo cryptsetup luksOpenque aparecen dos nuevos objetivos para sudo dmsetup targets: errory crypt. Supongo que necesito cambiar la pregunta entonces ...
pgpb.padilla
¿Es una partición o un contenedor de archivos?
Mikhail Morfikov
/dev/mapper/<my-logical-volume>-safe_vaultes un volumen lógico creado con LVM y /dev/mapper/safe_vaultes el dispositivo al que se asigna haciendo cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. ¿Sabes si crypttabfunciona con volúmenes LVM?
pgpb.padilla
Tengo lvm dentro de una partición de luks, en realidad tengo todo mi disco de 1,5 TB encriptado (excepto /boot). Todo montado en el arranque sin problema. ¿Estás seguro de que actualizaste initramfsdespués de editar /etc/crypttab? ¿Puedes mostrar la salida de lsblk -o name,uuid,mountpointcuando todo está montado y funciona como debería?
Mikhail Morfikov

Respuestas:

16

Tienes que prestar atención a los UUID. Por ejemplo, esta es mi configuración:

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

Tengo una partición encriptada (sda2) con 4 volúmenes (LVM). Lo que necesito es configurar dos UUID en los archivos correctos. El UUID sda2 va a /etc/crypttaby el UUID de volumen (por ejemplo debian_crypt-root) va a /etc/fstab.

Entonces, sería:

# 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

Después de cambiar el /etc/crypttabarchivo, debe reconstruir initramfs:

# update-initramfs -u -k all

NOTA

El paquete cryptsetupdebe instalarse porque tiene scripts de inicio que proporcionan soporte para el montaje automático de volúmenes cifrados en el arranque.

¿Por qué molestarse en mencionar esto? Bueno, si la configuración LVM durante la instalación de Debian Wheezy instala los paquetes cryptsetup-bin , libcryptsetup4y lvm2aunque no cryptsetup, por lo tanto usted tiene las herramientas para dispositivos de configuración LVM y LUKS pero no los scripts necesarios para montar dispositivos LUKS en el arranque. Esos vienen en el paquete cryptsetup .

Mikhail Morfikov
fuente
He intentado usar UUIDpero me sale el mismo error. Actualizaré la pregunta con detalles.
pgpb.padilla
Hola, esto se está haciendo demasiado largo, ¿podemos chatear ?
pgpb.padilla
Por otro lado, incluso si no edita / etc / crypttab, parece que los discos lo editarán por usted si modifica ciertas configuraciones de cifrado. Esta respuesta me ayudó a corregir los errores que cometí con los discos (y quizás más errores al intentar deshacer los discos).
sabio
0

Parece que la respuesta de @Mikhail Morfikov cubre el montaje durante la etapa initramfs . Una alternativa (si no es el sistema de archivos raíz) es descifrar y montar la partición automáticamente a través de systemd , después de cargar el kernel de linuz. Por supuesto, esto solo es posible si está ejecutando systemd . Explicaré el método aquí:

La /etc/crypttabentrada:

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

Aquí noautohay una instrucción para no intentar descifrar el disco durante la etapa initramfs .

Arriba, e412-blahblahestá el UUID de la partición que contiene el sistema luks, en mi caso una partición /dev/sdb2:

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

Durante el inicio del kernel de linuz, systemd leerá el /etc/crypttabarchivo y creará un archivo de servicio en tiempo de ejecución /run/systemd/generator/[email protected]. Sin embargo, ese servicio no se ejecuta automáticamente. Puedes ejecutarlo manualmente

systemctl start [email protected]

pero para descifrarlo y luego montarlo durante el inicio, /etc/fstabpuede requerirlo de la siguiente manera:

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

Aquí x-systemd.automounthay una instrucción para systemd para montar /media/crypt-data, y [email protected]es una instrucción para systemd que crypt2se requiere descifrar antes de que sea posible.

En systemd , en realidad no montará el directorio hasta la primera vez que se acceda a él, por ejemplo ls /media/crypt-data, se montará justo a tiempo y aparecerá a partir de entonces /proc/mounts.


Relacionado

Puede preguntar "* ¿por qué tener un disco de datos cifrados con la clave en el sistema de archivos raíz?". Esto se debe a que el sistema de archivos raíz también está encriptado, por lo que la clave está segura. El sistema de archivos raíz se descifra durante la etapa de arranque initramfs , a la respuesta de Mikhail. Tengo otra entrada en el /etc/crypttabarchivo para eso:

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

y describo la configuración de eso y un USB de arranque aquí

Craig Hicks
fuente