Table des matières

LVM, cryptstetup - Monter le volume racine d'un système chiffré

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Page en court de réécriture

Introduction

Vous avez installé votre système GNU Debian en choisissant l'option Assisté - Utiliser tout un disque avec LVM chiffré.

Maintenant, votre système est cassé et ne démarre plus :-?

… Et vous aimerez bien récupérer vos données (ou le dépanner).

Présentation

Ce tuto propose d'utiliser un système live2) pour accéder au(x) volume(s) logique(s) LVM3) d'un système chiffré.

Descriptions

Ci-dessous est décrit l'installation d'un système GNU Debian utilisant l'option de partitionnement :
Assisté - Utiliser tout un disque avec LVM chiffré.
Avec le schéma : Tous les fichiers dans une seule partition.
Voir (fr) d-i.debian.org.

Lorsque nous demandons l'installation d'un système GNU Debian crypté utilisant tout un disque,
L'installateur d-i (Debian installer) va supprimer toutes partitions existantes sur le disque pour créer :

  1. Une petite partition primaire (500 Mo), non cryptée, pour être lisible au démarrage.
    Elle sera montée dans le répertoire /boot.
  2. Une partition étendue qui occupe tout l'espace restant du disque.
  3. Dans cette partition étendue est créé une partition logique avec tout l'espace disponible qu'offre la partition étendue.
  4. LUKS4) est utilisé pour chiffrer la partition logique (commande cryptsetup).
  5. La partition chiffrée est convertie en volume physique LVM (commande pvcreate).
  6. Ce volume physique est ajouté au groupe de volume nommé <nom_d_hôte>-vg, alors créé (commande vgcreate).
  7. Dans ce groupe de volume est créé deux volumes logiques (commande lvcreate) :
    • Le premier pour contenir l’arborescence du système, nommé <nom_d_hôte>-vg-root.
      Il sera monté à la racine du système : /.
    • Et le second pour la mémoire virtuelle (nommé aussi swap), permettant d'augmenter la taille de la mémoire physique en utilisant de l'espace disque, nommé <nom_d_hôte>-vg-swap_1.

Dans ce tuto,
Le système GNU Debian à été installé selon la méthode expliquée ci-dessus.
Sur un PC, nommé monpc, disposant que d'un seul disque, nommé sda.
Ainsi est obtenu le schéma de partitionnement suivant :

sda
├─sda1  : La partition primaire de boot.
├─sda2  : La partition étendue.
└─sda5  : La partition logique (chiffrée, convertie en volume physique LVM, incorporé dans le groupe de volume monpc-vg).
  ├─monpc-vg-root   : Le volume logique racine (contenant l'arborescence du système).
  └─monpc-vg-swap_1 : Le volume logique d'échange (la swap).
Sont nommés :
  • Partition (primaire, étendue ou logique), les partitions natives à un système GNU Linux.
  • Volume (logique), les volumes obtenus avec LVM.

Une fois créer, les volumes logiques sont accessibles dan les répertoires /dev/<nom_du_groupe_de_volume> et /dev/mapper.
Ici, le groupe de volume étant nommé par l’installateur Debian monpc-vg :

ls /dev/monpc-vg
root swap_1

Et

ls /dev/mapper
control monpc--vg-root monpc--vg-swap_1 sda5_crypt

Note : Nous pouvons remarquer la différence de nom dans /dev/mapper (avec un - supplémentaire).

Que ce soit dans /dev/<nom_du_groupe_de_volume> ou /dev/mapper, ces fichiers sont en fait des liens symboliques :

ls -l /dev/monpc-vg
total 0
lrwxrwxrwx 1 root root 7 Jun 28 13:23 root -> ../dm-1
lrwxrwxrwx 1 root root 7 Jun 28 13:23 swap_1 -> ../dm-2
ls -l /dev/dm*
brw-rw---- 1 root disk 252, 0 Jun 28 13:23 /dev/dm-0
brw-rw---- 1 root disk 252, 1 Jun 28 13:23 /dev/dm-1
brw-rw---- 1 root disk 252, 2 Jun 28 13:23 /dev/dm-2

Prérequis

Disposer d'un système live.

Ici nous utilisons le système GNU Debian Live (xfce, mais choisissez l'iso5) construit avec le bureau que vous préférez),
Qui peut-être récupéré à l'adresse : https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/

Récupérer aussi le fichier SHA512SUMS afin de vérifier l'authenticité de l'iso téléchargé.
Voir : https://www.debian.org/releases/stable/amd64/ch04s07.fr.html

Puis copier l'iso obtenu sur une clé USB.
Voir : https://www.debian.org/releases/stable/amd64/ch04s03.fr.html

Pour démarrer sur la clé USB contenant le système live,
Voir : https://www.debian.org/releases/stable/amd64/ch03s06.fr.html#boot-dev-select-x86

Utilisation

Le système live démarré,
Nous ouvrons un terminal.
Tout de suite, nous indiquons l'usage d'un clavier azerty avec :

setxkbmap fr
Pour écrire la commande setxkbmap, étant encore configuré avec clavier qwerty soit nous saisissons :
  • setxkb,qp
  • Ou bien, nous utilisons la complémentation avec : setxTab ⇆

Par curiosité, nous pouvons utiliser la commande lsblk pour lister les partitions du disque dur :

lsblk -o NAME
NAME 
loop0 
sr0
sda 
├─sda1
├─sda2 
└─sda5 

Nous retrouvons les trois partition décrites plus haut dans la section Description :

Bien, passons sous root :

sudo -i

Et demandons le déchiffrage de sda5 avec la commande cryptsetup :

cryptsetup luksOpen /dev/sda5 sda5_crypt
Warning: keyslot operation could fail as it requires more than available memory.

… Ne pas tenir compte de ce message.
Demandons de nouveau l'exploration du disque :

lsblk -o NAME
NAME
loop0
sr0
sda
├─sda1
├─sda2
└─sda5
  └─sda5_crypt
    ├─monpc--vg-root
    └─monpc--vg-swap_1

Les volumes racine et d'échange du système monpc sont maintenant visibles.
Nous pouvons donc monter celui de la racine (monpc–vg-root) :

La commande lsblk utilise les noms des volumes logiques du répertoire /dev/mapper.
mount /dev/mapper/monpc--vg-root /mnt

Maintenant l’arborescence du système monpc est accessible dans le répertoire /mnt

ls /mnt
bin   home	      lib64	  mnted  run   tmp	vmlinuz.old
boot  initrd.img      lost+found  opt	 sbin  usr
dev   initrd.img.old  media	  proc	 srv   var
etc   lib	      mnt	  root	 sys   vmlinuz

Et nous pouvons récupérer les données situées dans le répertoire /mnt/home/<nom_utilisateur>
Ou apporter tout autre modification au système monpc.

Conclusions

Évidement si vous souhaitez récupérer des données, il vous faudra probablement une autre clé USB, ou un disque amovible, pour y copier les données souhaitées.


Si vous avez installé votre système avec le schéma de partition Partition /home séparé,
Ce n'est pas le volume monpc–vg-root qu'il vous faut monter (à moins de vouloir modifier le système manuellement),
Mais le volume monpc–vg-home :

lsblk -o NAME
NAME
loop0
sr0
sda
├─sda1
├─sda2
└─sda5
  └─sda5_crypt
    ├─monpc--vg-root
    ├─monpc--vg-swap_1
    └─monpc--vg-home
mount /dev/mapper/monpc--vg-home /mnt

Maintenant les données d'un utilisateur sont accessibles dans le répertoire /mnt/<nom_utilisateur>.


Pour finir proprement,
Démonter le volume monté et terminer le déchiffrage de la partition sda5 :

umount /tmp
cryptsetup luksClose sda5_crypt
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
Un système live est un système complet, autonome, installé sur un support amovible. Démarré, il fonctionne sans utiliser les disques internes de l'ordinateur, tout en pouvant y accéder si désiré. Ainsi les systèmes live permettent (entre autre) de dépanner un système corrompu, d'en récupérer des données ou de le restaurer par une sauvegarde. Ils sont aussi utilisés pour la diffusion de démonstration, comme vecteur d'installation d'un système ou encore comme système itinérant. Voir (fr) Live CD (wikipedia.org)
3)
LVM (Logical Volume Management : Gestion de volume logique, en français) est une suite de logiciel qui permet de créer des volumes logiques, apportant plus de souplesse que les partition natives d'un système GNU Linux. Par exemple, un volume logique peut être redimensionner, est indépendant de l’emplacement sur le disque physique, peut être reparti sur plusieurs disque, etc. Voir : (fr) LVM (lea-linux.org)
4)
LUKS (Linux Unified Key Setup : Configuration de clé unifiée pour Linux, en français) est un standard de chiffrement de périphérique bloc (disques, partions et volumes), implémenté dans le noyau Linux par le module dm-crypt (Linux kernel device-mapper crypto target : Cible cryptographique du cartographe de périphérique du noyau Linux, en français), manipulable en espace utilisateur par la commande cryptsetup. Voir (fr) LUKS (wikipedia.fr)
5)
Un fichier iso nommé aussi image iso est une copie intégrale d'un périphérique de stockage (disque optique, disquette, disque dur, clé USB, partition, volume) dans un seul (ou plusieurs) fichier(s). La notion d'image est adaptée car il s'agit d'une photo (un instantané) du périphérique tel qu'il est à un instant. Permettant ainsi de diffuser ou restaurer un périphérique de stockage. (wikipedia)(fr) Image disque