Cette procédure décrit comment installer sur un disque chiffré une Debian Buster
en parallèle avec une Stretch
.
La situation :
:-) lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
├─sda1 8:1 0 4,7G 0 part
│ ├─s02_boot-Deb--Stretch_v9--boot 254:0 0 952M 0 lvm /boot
│ └─s02_boot-Deb--Buster_10--boot 254:1 0 188M 0 lvm
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 461,1G 0 part
└─sda5_crypt 254:2 0 461,1G 0 crypt
├─s02_crypt-Deb--Stretch_v9--Racine 254:3 0 952M 0 lvm /mnt
├─s02_crypt-Deb--Stretch_v9--usr 254:4 0 12,1G 0 lvm /usr
├─s02_crypt-Deb--Stretch_v9--var 254:5 0 4,3G 0 lvm /var
├─s02_crypt-root 254:6 0 92M 0 lvm /root
├─s02_crypt-swap 254:7 0 7,5G 0 lvm [SWAP]
├─s02_crypt-tmp 254:8 0 9,3G 0 lvm /tmp
├─s02_crypt-home 254:9 0 46,6G 0 lvm /home
├─s02_crypt-Deb--Buster_v10--Racine 254:10 0 1G 0 lvm
├─s02_crypt-Deb--Buster_v10--usr 254:11 0 12G 0 lvm
└─s02_crypt-Deb--Buster_v10--var 254:12 0 4,2G 0 lvm
:-) sudo vgdisplay
--- Volume group ---
VG Name s02_crypt
…
--- Volume group ---
VG Name s02_boot
…
:-)
Donc, deux partitions abritant chacune un groupe de volume LVM qui sont :
- s02_boot, non chiffré pour les /boot sur sda1.
- s02_crypt, chiffré (Luks1) pour le reste sur sda5.
D’autre part, sda5_crypt
est le nom du disque une fois déchiffré.
Les volumes logiques nécessaires à l’installation de la Buster
ont été préalablement créé à partir de la version en production (Stretch
). C’est bien plus pratique qu’avec l’installeur, car on bénéficie des commodités de son shell préféré. Voir aussi la page man lvm
.
L’installeur Debian Buster ne gère pas les disques chiffrés existants. À la première installation d’une version, cela ne pose pas de problème : chiffrement et Lvm sont mis en œuvre concomitamment. Par contre, lorsque l’on veut installer une nouvelle version en parallèle, par exemple pour la tester, l’installeur ne reconnaît pas les disques déjà chiffrés.
Un moyen de contourner ce problème est de déchiffrer manuellement les dits disques avec la commande cryptsetup
via un shell. L’installation se déroule alors sans encombre.
Néanmoins, c’est au reboot que les choses se gâtent… Le noyau se plaint de ne pas pouvoir accéder à volume logique s02_crypt-Deb-Buster_v10-Racine
dans ce cas précis.
Le décryptage de /dev/sda5
ne se fait pas, le lancement du système est alors impossible. Dans le initramfs
, on ne trouve pas la commande cryptsetup
, alors qu’elle est présente dans la version en production (Stretch
).
La procédure suivante devrait résoudre le problème :
Booter sur la clé ou le CD «Debian GNU/Linux 10.2.0 "Buster" - Official amd64 xfce-CD Binary-1
». Il est possible de procéder également avec l’image «netinstall
».
Dans les menus proposés, choisir «Advanced options…
», puis «Expert install
».
Suivre le déroulement normal, jusqu’à… «Charger des composants d'installation à partir du CD
» et on sélectionne :
[*] Rescue-mode…
On valide, et on déroule l’installation jusqu’à «détecter les disques…
» inclus.
Puis, sélectionner la deuxième console (Ctrl-Alt-F2). Dans ce shell, entrer les commandes suivantes :
cd /dev/
cryptsetup open sda5 sda5_crypt # On peut modifier le nom donné par lsblk, mais alors il faudra éditer le /etc/crypttab (voir plus loin).
Retourner dans l’installeur (Ctrl-Alt-F1).
Maintenant, sélectionner «Partitionner les disques.» et on peut faire une installation sur le disque chiffré. Si vous ne voyez toujours pas les volumes logiques présents sur le système, lisez le paragraphe suivant.
Pendant cette phase, la situation peut paraître nébuleuse et erratique : pour des raisons que je ne m’explique pas, il se peut que le répertoire « /dev/mapper/
» ne soit pas peuplé par ces volumes logiques. Il faut alors activer les volumes logiques manuellement avec la commande «vgchange -ay
».
L’installation va jusqu’au bout sans message d’erreur. Mais lorsque le message de la part de l’installeur indiquant qu’il va redémarrer la machine apparaît, il faut rebasculer sur la deuxième console (Ctrl-Alt-F2).
Et y entrer les commandes suivantes afin que les outils de déchiffrements nécessaires soient inclus dans le initrd.img :
cd /target/
mount --bind /proc/ proc/
mount --bind /run/ run/
mount --bind /sys/ sys/
mount --bind /dev/pts/ dev/pts/
chroot . /bin/bash
mount /dev/mapper/s02_crypt-Deb--Stretch_v9--Racine /mnt/ # Ça, c'est pour le fichier crypttab.
cp -p /mnt/etc/crypttab etc/ # Si le nom du disque est préservé. Sinon, nano etc/crypttab.
apt policy cryptsetup-initramfs
apt install cryptsetup-initramfs # Si pas installé.
update-initramfs -u
exit # x2.
Revenir à l’installeur (Ctrl-Alt-F1) et appuyer sur Entrée pour rebooter.
Voila, en espérant rendre service au debianistes qui sont été confrontés aux mêmes problèmes que moi.