Tutoriel installation Debian avec netinst RAID1+LUKS+LVM

Tags: #<Tag:0x00007f74f16ac918> #<Tag:0x00007f74f16ac800> #<Tag:0x00007f74f16ac710> #<Tag:0x00007f74f16ac5f8> #<Tag:0x00007f74f16ac4e0>

Bonjour,

Voici un tutoriel sur une installation Debian avec une iso netinst Debian Bookworm 12.11 avec RAID1+LUKS+LVM.

Pour les digressions, c’est ici: Debian installer et RAID1 & digression Simple-cdd: preseeding RAID1 installation - #4 par Zargos

Pour les remarques de forme, c’est ici pour que je corrige. J’ai fait le tutoriel dans la soirée vite fait, Il reste sûrement des coquilles.

Pour les remarques de fond, si c’est constructif pour le tutoriel, c’est ici, sinon aller en digression.

Préambule

Ce tutoriel a pour but de montrer une installation avec une iso Debian Netinst (ici version Bookworm 12.11) avec RAID1+LUKS+LVM.

Le choix est ici fait de passer par une utilisation des options avancées, afin d’avoir plus de choix dans le type d’installation, mais aussi plus de choix dans les options qui suivront tout au long de l’installation.

Le choix de l’option Graphic Install est un choix tout à fait possible, mais il y aura moins de choix dans les options d’installations.

Si le Secure Boot est activé, l’installation se fera en Secure Boot.

Introduction

Faire une installation RAID1+LUKS2+LVM n’est pas de tout repos chez Debian, car l’installateur est totalement incapable de faire une installation correcte de ce type.

Une installation correcte implique que tous les répertoires sauf /boot/efi sont sur LVM, donc sur la partition chiffrée LUKS2, et qu’elle soit aussi dans une grappe RAID1.

Seulement voilà :

  • Debian impose les partitions RAID avec une version des metadata 1.2. Hors, /boot/efi ne marche pas autrement qu’en metadata version 1.0 ou 0.90

  • Debian impose aussi l’argument pbkdf en Argon2i, certes plus sécurisé. Malheureusement, GRUB EFI ne sait pas gérer autre chose que du pbkdf2 si la partition /boot est sur la partition chiffrée. Si /boot n’est pas surf la partition chiffrée, alors la sécurisation de l’ensemble est compromise notamment face à une attaque de type Evil Maid.

Le Secure Boot va permettre de ne pas autoriser de démarrer avec un autre disque que le disque original en protégeant le bootloader.

Installation

Le début de l’installation se fait exactement de la même façon qu’une installation classique (§ Tutoriel installation Debian avec iso netinst)
C’est au moment du partitionnement que cela change. A ce moment là il faut passer en console pour faire manuellement les partitions de bases des deux disques, et la configuration des grappes RAID1.

Partitionnement manuel

Quand on est arrivé dans l’installateur au moment suivant:
image
image
Il faut passer en console:
image

Création des partitions sur les disques

Nous allons créer les partitions à l’identique sur les deux disques telles que :

Partition 1 :

  • Taille 600M
  • Type : uefi

Partition 2 :

  • Taille : le reste du disque
  • Type : raid

On fait d’abord le premier disque avec les commandes fdisk suivantes :

g (pour un disklabel gpt)
n (nouvelle partition)
<CR> (on garde le numéro de partition par defaut : 1)
<CR> (on garde le début par défaut : 2048)
+600M (taille de la partition à 600M après le début)
Y (supprimer la signature)
t (pour changer le type)
uefi (Type EFI)
n (nouvelle partition)
<CR> (on garde le numéro de partition par defaut : 2)
<CR> (on garde le début par défaut : 1230848)
<CR> (on prend tout le disque restant)
Y (supprimer la signature)
t (pour changer le type)
raid (Type RAID)
w (on écrit la partition sur le disque)

Ensuite, pour le second disque, il suffit de dupliquer la configuration avec sfdisk:

sfdisk -d /dev/sda | sfdisk -f /dev/sdb

Création des grappes RAID1

Nous allons créer ensuite les deux grappes RAID1 ; pour la partie EFI il faut impérativement que les metadata soient 1.0 ou 0.9, l’autre partition, destinée à être chiffrée sera en version 1.2 :

mdadm –verbose –create /dev/md0 --auto=yes –force –level 1 –raid-devices 2 /dev/sda1 /dev/sdb1 –metadata=1.0
mdadm –verbose –create /dev/md1 --auto=yes –force –level 1 –raid-devices 2 /dev/sda2 /dev/sdb2 –metadata=1.2

Et on vérifie l’état des grappes:
image

On peut aussi attendre que les grappes soient synchronisées en contrôlant dans /proc/mdstat:

~# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sda2[0] sdb2[1]
      51778560 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda1[0] sdb1[1]
      614336 blocks super 1.0 [2/2] [UU]
      
unused devices: <none>

Suite du partitionnement

On revient ensuite sous l’installateur, et on va dans le partitionnement:
image
Et on passe à la configuration du volume chiffré
image

Valider la configuration actuelle :
image

On crée le volume chiffré:
image

Choisir la partition RAID /dev/md1 :
image

Choisir son chiffrement (j’utilise serpent) :
image
Note : effacer les données est inutile si le disque est neuf.

Confirmer la configuration :
image

Pas d’autre volume chiffré à configurer, terminer :
image

Saisir votre clef de chiffrement :
image

Si votre clef est trop simple, l’installateur va vous le signaler et demander de confirmer (évitez une clef trop simple, sinon le chiffrement ‘a aucune utilité) :
image

Avant de passer à la configuration LVM, il faut changer le paramètre PBKDF de la partition chiffrée.
En effet, si Debian impose par défaut Argon2i, GRUB n’est pas capable de le gérer si /boot est sur la partition chiffrée.
Pour cela il suffit de modifier la clef ; il faut au préalable créer un fichier de clef temporaire. L’opération se fait bien sur dans une console de l’installateur :

~# echo "maclef" > keyfile.txt
~# cryptsetup luksChangeKey --pbkdf pbkdf2 --keyfile-size 6 --new-keyfile-size 6 --key-file keyfile.txt /dev/md1 keyfile.txt

On passe ensuite à la configuration LVM :
image

En validant la configuration de nouveau :
image

Création du groupe de volumes avec la partition chiffrée :
image

On valide : (oui, il faut valider à chaque étape)
image

Ensuite on crée ses volumes logiques normalement :
image

On termine :
image

On configure la partition EFI à partir du RAID /dev/md0 :
image
image

On configure les points de montages normalement, et une fois terminé, on valide la configuration :
image
image

Suite de l’installation

On installe le système de base normalement.

On configure la gestion des paquets normalement.

On choisit et installe les logiciels normalement.

Mais ne pas installer le programme de démarrage GRUB (de toute façon ça ne marcherait pas).
image

Installation de GRUB EFI

Il faut repasser en console. On vérifie que les points de montages sont corrects y compris /boot/efi en consultant les résultats de mount.
L’installateur utilise un chroot dans /target. Ce sont les partitions qui commencent par /target qu’il faut vérifier.

Pour installer GRUB manuellement, il faut passer en chroot dans l’environnement cible /target.

Au préalable, ll faut s’assurer des points de montages suivants :

mount -t proc proc /target/proc
mount -t sysfs sys /target/sys
mount -o bind /dev /target/dev
mount -t devpts pts /target/dev/pts

on passe en chroot :

chroot /target

on passe en bash :

bash

on s’assure que le module efivarfs est chargé

modprobe -v efivarfs

on installe GRUB et shim :

apt install -y grub-efi-adm64 grub-efi-amd64-signed shim-signed keyutils

on monte efivarfs s’il n’est pas déjà monté (un ls /sys/firmwware/efi/efivars doit donner tout un tas de lignes) :

mount -t efivarfs efivarsfs /sys/firmware/efi/efivars

On configure grub pour accepter les disques chiffrés en ajoutant à /etc/default/grub l’option GRUB_CRYPTODISK=y :

echo "GRUB_ENABLE_CRYPTODISK=y" >> /etc/default/grub

on installe grub :

grub-install –target=x86_64-efi –efi-directory/boot/efi --force-extra-removable

on n’oublie pas bien sur de mettre à jour grub.cfg :

update-grub

Et on met à jour l’initramfs :

update-initramfs -u -k all

On quitte ensuite le chroot pour revenir sous la console de l’installateur.

Exit

Fin de l’installation

On revient sous l’installateur et on termine l’installation :
image

On passe le warning concernant l’installation de GRUB.
image

On met l’horloge en UTC.

Et une fois fini, on redémarre.

Démarrage

Lors du démarrage de l’installation, l’uefi va demander la clef de déchiffrement de la grappe /dev/md1.
ATTENTION la saisie se fera en clavier QWERTY.
Je cherche encore comment avoir un clavier azerty, mais je n’ai pas encore trouvé.

Ensuite, GRUB s’affiche. Une fois le système lancé, il faut donner de nouveau la clef de déchiffrement en azerty cette fois-ci.

Et vous êtes sur l’écran de logon :slight_smile:

1 J'aime

Merci pour ce qui semble être un excellent tuto, et qui évite certains pièges.
Apparemment, dans l’état, il faut vraiment en vouloir pour arriver à ce genre de config FS. Chapeau !

Mon seul regret est que ce ne soit pas l’objet d’un article publié avec une belle URL pour promotion qui le mérite :stuck_out_tongue: :wink:

1 J'aime