Bonjour,
Dans l’installation d’une machine UEFI chiffrée avec /boot sur le disque chiffré, l’installateur n’arrive pas à installer grub ou alors celui ne foncitonne pas quand on démarre la machine.
Ça ne marche pas pour la principale raison que luks2 ne permet que PBKDF2. Hors l’installateur par défaut utilise ARGON2 par défaut et ne permet d’en sélectionner un autre.
C’est ballot me direz-vous.
Si on veut réussir l’installation, soit il faut mettre /boot en dehors de la partition chiffrée ce qui est dommage, soit il faut installer sans installer grub et démarrer ensuite en mode rescue avec le disque d’installation pour faire les modifications nécessaires.
Je vais ignorer le premier cas, pour traiter le deuxième cas: installer grub après l’installation du système.
Je part du principe qu’il n’y a que deux partition sur le disque (/dev/sda):
- /dev/sda1 => /boot/efi
- /dev/sda2 => luks
Les étapes sont les suivantes:
- Avec le disque d’installation, démarrer en mode rescue
- Monter toutes les partitions (/ bien sur, mais aussi
/boot/efi, /boot/ /var, /home, /tmp
et autres si vous en avez d’autre). C’est plus sur et plus propre. - S’assurer sur
/etc/default/grub
comporte bien l’optionGRUB_ENABLE_CRYPTODISK=y
- Modifier la clef de chiffrement pour la passer en PBKDF2. Pour cela il suffit de faire:
cryptsetup luksChangeKey--type luks2 --pbkdf pbkdf2 <device>
Où device est le disque chiffré (/dev/sda2 par exemple).
Une nouvelle clef sera demandée mais il est possible de mettre la même. Car ici nous ne modifions que le PBKDF.
4. Réinstaller grub:
grub-install --force-extra-removable
l’option c’est pour être sûr de pouvoir redémarrer sur le disque d’installation au cas où.
Normalement vous avez un grub qui fonctionne et qui vous demandera la clef de chiffrement.
La clef vous sera demandée deux fois: une fois pour déchiffrer le disque et avoir accès à /boot une deuxième fois pour lancer le système.
ATTENTION! la clef vous sera demandée la première fois avec un clavier QWERTY car autant il est possible facilement de mettre le shell en azerty autant là ce n’est pas possible car l’EFI est en EN par défaut.
Pour faire la modification via script la commande pour modifier la clef (juste pour le PBKDF):
cryptsetup luksChangeKey --pbkdf pbkdf2 --keyfile-size 6 --new-keyfile-size 6 --key-file $path/keyfile.key $luksdevice $path/keyfile.key
La size est de 6 car pour tester j’ai fait une clef de 6 caractères dans le fichier keyfile.
ATTENTION! La taille de clef ne doit pas contenir le caractère de fin de ligne.
EDIT: ATTENTION! toute modification de la clef de chiffrement devra IMPERATIVEMENT prendre comme paramètre --pbkdf=pbkdf2
car sinon le système par défaut prendra comme valeur pbkdf=argon2i
ce impliquera immédiatement au prochain reboot un échec du déchiffrement de l’UEFI et donc l’impossibilité de démarrer grub et le système.
N’oubliez pas non plus de faire une sauvegarde sur support externe des en-têtes via la commande:
cryptsetup luksHeaderBackup <luks device> --header-backup-file /chemin/d/acces/au/fichier