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:


Il faut passer en console:

Création des partitions sur les disques
Nous allons créer les partitions à l’identique sur les deux disques telles que :
Partition 1 :
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:

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:

Et on passe à la configuration du volume chiffré

Valider la configuration actuelle :

On crée le volume chiffré:

Choisir la partition RAID /dev/md1 :

Choisir son chiffrement (j’utilise serpent) :

Note : effacer les données est inutile si le disque est neuf.
Confirmer la configuration :

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

Saisir votre clef de chiffrement :

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é) :

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 :

En validant la configuration de nouveau :

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

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

Ensuite on crée ses volumes logiques normalement :

On termine :

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


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


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).

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 :

On passe le warning concernant l’installation de GRUB.

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 