Florent Peterschmitt

Installer Debian sur un volume LUKS/LVM existant

L'installation de Debian sur un volume LUKS existant n'est manifestement pas prit en charge par l'installateur et une petite manipulation s'impose.

Mon disque dur est partitionné de cette façon :

Linux Boot ext2 -> sda1
LUKS -> sda3

Et dans le LUKS, un gros volume physique LVM2, un VG (nommé linux chez moi) et des LV. Rien de bien extraordinaire donc.

Démarrage

Démarrer l'installation et aller jusqu'à l'étape de partitionnement et entrer en manuel.

Ouvrir (ou déverouiller) le volume LUKS

Continuer le partitionnement en mode manuel, sélectionner la partition censée être chiffrée et l'utiliser en temps que volume chiffré. À partir de là, l'installateur va charger les composants de cryptsetup. Désactivez le formattage.

Revenez en arrière deux fois pour atterrir sur le menu de sélection des étapes d'installation.

Allez dans une TTY et ouvrez votre disque avec cryptsetup :

cryptsetup luksOpen /dev/sda3 [un nom au pif]

Bien, ben maintenant on peut activer les volumes logiques LVM :

vgchange -ay linux

On revient dans notre installateur et on va à l'étape « Détecter les disques ».

TADAAAM ! Nos volumes sont là !

Configurer et installer

  • Le disque chiffré doit être marqué d'un K (comme Keep).
  • Pour le reste, eh bien allez-y, configurez les volumes que vous voulez pour l'installation de Debian.
  • N'oubliez pas non plus de configurer le disque pour /boot

Et maintenant ? On attend. Parce que c'est long. Si si.

On installe le boot-loader et on redémarre. On choisi alors sa Debian toute fraîchement installée, on a les erreurs "normales" à propos des LVM non trouvés, par contre après atteinte d'un timeout de quelques secondes, l'initramfs rendra la main.

Le drâme

Ben le drâme c'est qu'après avoir fait tout ça, Debian n'a pas configuré un initramfs pour notre configuration LUKS. Pourtant on lui a bien précisé d'utiliser le disque LUKS. Non ? Si, mais il n'a pas donné de nom au volume et n'a pas généré le /etc/crypttab correspondant.

Donc quand l'initramfs nous rend la main, on pourra ouvrir manuellement le volume LUKS et activer les volumes logiques :

cryptsetup luksOpen /dev/sda3 [nom au pif]
vgchange -ay linux

Ensuite on exit et ça démarre. Ouf.

Pour avoir fait une installation « from scratch » en VM, le fichier n'est pas sensé être vide et doit contenir ceci, sachant que mon volume LUKS est sur /dev/sda3 :

sda3_crypt /dev/sda3 none luks

Après avoir man crypttab on se rend compte qu'il faut utiliser en target (le premier champ du fichier) le nom sous lequel est ouvert notre volume LUKS dans /dev/mapper/

En essayant de générer l'initrd, on obtient un warning qui nous donne cet nom.

cryptsetup: WARNING: invalid line in /etc/crypttab for cryptroot -

cryptroot est ici notre cible, que nous allons utiliser dans /etc/crypttab :

crypttab /dev/sda3 none luks

Et on peut enfin régénérer notre initrd :

update-initramfs -u

Et tout doit rouler.