====== LVM, cryptstetup - Monter le volume racine d'un système chiffré ======
* Objet : Monter depuis un système "live", le volume racine d'un système chiffré.
* Niveau requis : {{tag>débutant}}
* Pour aller vers : {{tag>avisé}}
* Commentaires : LVM, cryptstetup, système live, dépannage.
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>framend]] 03/04/2020
* Refonte par [[user>agp91]] le 29/06/2024
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=340460#p340460 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
**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 live((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 [[https://fr.wikipedia.org/wiki/Live_CD|(fr) Live CD (wikipedia.org)]])) pour accéder au(x) volume(s) logique(s) LVM((**[[doc:systeme:lvm|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 : [[https://lea-linux.org/documentations/LVM|(fr) LVM (lea-linux.org)]])) 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 [[https://d-i.debian.org/manual/fr.s390x/install.fr.pdf#55|(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 :
- Une petite partition primaire (500 Mo), non cryptée, pour être lisible au démarrage.\\ Elle sera montée dans le répertoire ''/boot''.
- Une partition étendue qui occupe tout l'espace restant du disque.
- Dans cette partition étendue est créé une partition logique avec tout l'espace disponible qu'offre la partition étendue.
- LUKS((**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 [[https://fr.wikipedia.org/wiki/LUKS|(fr) LUKS (wikipedia.fr)]])) est utilisé pour chiffrer la partition logique (commande ''cryptsetup'').
- La partition chiffrée est convertie en volume physique LVM (commande ''pvcreate'').
- Ce volume physique est ajouté au groupe de volume nommé ''////**-vg**'', alors créé (commande ''vgcreate'').
- Dans ce groupe de volume est créé deux volumes logiques (commande ''lvcreate'') :
* Le premier pour contenir l’arborescence du système, nommé ''////**-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é ''////**-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/////'' 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/////'' 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'iso((**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. [[https://fr.wikipedia.org/wiki/Image_disque|(wikipedia)(fr) Image disque]])) 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 [[doc:systeme:terminal|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__,q__p''
* Ou bien, nous utilisons la complémentation avec : ''setx''Tab
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|Description]] :
* ''sda1'' la partition de boot.
* ''sda2'' la partition étendue.
* et ''sda5'' la partition logique chiffrée, qui contient les volumes logiques du système //monpc//.
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/''\\
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/''.
----
Pour finir proprement,\\
Démonter le volume monté et terminer le déchiffrage de la partition sda5 :
umount /tmp
cryptsetup luksClose sda5_crypt