#1 Le 31/01/2019, à 15:40
- Arbiel
Ouverture des parititons chiffrées au démarrage
Bonjour à tous
J'ai été confronté à d'importantes difficultés pour démarrer mon système dont plusieurs partitions sont chiffrées. J'ai résolu ces difficultés au mieux de mes capacités, mais je ne sais pas dire si ma manière de procéder est valable pour autrui, d'autant que ma configuration n'est pas vraiment traditionnelle.
Il n'en reste pas moins que toute installation d'un nouveau noyau perturbe mon système, et que je suis obligé de passer par le noyau précédent pour le réparer.
Pour cela, j'ai créé deux fichiers dans /etc, crypttab_rep et crypttab_dem, le premier pour réparer, le second pour démarrer le système réparé et j'ai écrit le tout petit script suivant
#! /bin/bash
# utiliser le fichier crypttab de réparation
sudo rm /etc/crypttab && sudo ln -s -T /etc/crypttab_rep /etc/crypttab
sudo update-initramfs -u
# utiliser le fichier crypttab de démarrage
sudo rm /etc/crypttab && sudo ln -s -T /etc/crypttab_dem /etc/crypttab
On pourrait bien sûr appeler crypttab_dem tout simlement crypttab et lui monter crypttab_rep dessus avec l'option --bind avant de lancer update-initramfs.
Le fichier crypttab_rep est conforme à ce que présente la page de manuel relative à crypttab, à savoir :
victor-louis /dev/mapper/victor-louis_l /dev/disk/by-uuid/4146dfad-26f0-4aec-99c3-8ab00c3e4297:/.ckf/victor-louis:1 luks,initramfs,tries=1,keyscript=/lib/cryptsetup/scripts/passdev
Dans le fichier crypttab_dem, j'ai dû commenter cette ligne ainsi que les autres relatives aux partitions montées par fstab pour éviter des délais inutiles et extrêmement longs au démarrage. Les lignes s'en trouvent ainsi annihilées et les délais supprimés.
Ce qui suit n'intéresse vraisemblablement que ceux d'entre vous en quête de plus de détails.
Ma configuration est spéciale : grub n'est pas installé sur mon disque interne, mais sur chacune de mes clés USB (j'en ai plusieurs pour parer à l'éventuelle détérioration ou perte de mon unique clé). Une telle clé doit être branchée à la mise sous tension, sinon mon PC démarre avec les produits qui m'ont été vendus avec (certains disent «préinstallé», mais ce «pré» m'agace et je ne vois pas pourquoi je cacherais mon agacement : qui dirait avoir acheté une voiture avec un moteur «préinstallé», … ? Je conçois cependant que ma comparaison n'est pas excellente dans la mesure où il est plus fréquent d'acheter un PC sans système qu'une voiture sans moteur).
Je chiffre avec LUKS ma partition racine (/), la partition des données personnelles (/home), et d'autres partitions que je juge sensibles. Réticent à entrer un mot de passe au clavier pour procéder à l'ouverture de ces partitions, j'ai choisi de les enregistrer sur ces mêmes clés USB, bien que cela puisse être vu comme une faille de sécurité.
Je conçois que cette première particularité puisse être la source de mes difficultés. Je n'ai pas fait de tests pour le vérifier.
Depuis l'introduction de systemd, l'ouverture de toutes ces partitions (celles qui sont montées par /etc/fstab) doit être effectuée par l'initrd.
Systemd est le gestionnaire de système qui remplace upstart et son prédécesseur (les scripts system V) depuis Ubuntu 16.04 LTS Xenial. Le nom de ce programme vient de « system daemon » : le daemon du système
Lorsqu'il s'agit d'ouvrir la partition chiffrée à partir d'un fichier, il faut utiliser l'option keyscript de crypttab pour le désigner.
keyscript=<path>
The executable at the indicated path is executed with the key file
from the third field of the crypttab as its only argument and the
output is used as the key. This also works with encrypted root
filesystems via initramfs if the executable is self-contained (i.e.
an executable which does not rely on any external program which is
not present in the initramfs environment).LIMITATIONS: All binaries and files on which the keyscript depends
must be available at the time of execution. Special care needs to
be taken for encrypted filesystems like /usr or /var. As an
example, unlocking encrypted /usr must not depend on binaries from
/usr/(s)bin.WARNING: With systemd as init system, this option might be ignored.
At the time this is written (December 2016), the systemd cryptsetup
helper doesn't support the keyscript option to /etc/crypttab. For
the time being, the only option to use keyscripts along with
systemd is to force processing of the corresponding crypto devices
in the initramfs. See the 'initramfs' option for further
information.
L'identification du fichier lui-même est le troisième paramètre de la ligne crypttab, dont j'ai donné un exemple plus haut.
Comme on peut le voir, j'ai utilisé le formalisme «/dev/disk/by-uuid/4146dfad-26f0-4aec-99c3-8ab00c3e4297:/.ckf/victor-louis:1» pour désigner le fichier /.ckf/victor-louis sur la partition dont l'uuid est 4146dfad-26f0-4aec-99c3-8ab00c3e4297 (toutes mes clés susceptibles de faire démarrer mon PC doivent avoir une partition dont l'uuid est celui-ci - j'ai choisi l'uuid et non l'étiquette, pour pouvoir identifier mes clés lorsque plusieurs sont branchées simultanément).
On notera aussi l'option «initramfs» pour indiquer à update-initramfs que l'initrd doit ouvrir la partition. J'ai bien évidemment essayé, sans effet, l'option «noauto» pour indiquer de ne pas les ouvrir lors du traitement de fstab, comme il faut faire pour celles des partitions chiffrées inutilisées au démarrage.
Il est également possible de définir un montage par le biais du fichier /etc/default/cryptdisks avec
remi@remi-Vostro-3550:~$ grep MOUNT /etc/default/cryptdisks
CRYPTDISKS_MOUNT="/home/.cryptdisks"
remi@remi-Vostro-3550:~$
remi@remi-Vostro-3550:~$ grep .crypt /etc/fstab
# montage utilisé par cryptdisks pour l'ouverture des volumes logiques chiffrés
/dev/disk/by-uuid/4146dfad-26f0-4aec-99c3-8ab00c3e4297 /home/.cryptdisks ext2 defaults 0 0
remi@remi-Vostro-3550:~$
et de modifier les lignes de crypttab
victor-louis /dev/mapper/victor-louis_l /home/.cryptdisks/.ckf/victor-louis:1 luks,initramfs,tries=1,keyscript=/lib/cryptsetup/scripts/passdev
Avec un tel formalisme, le système démarre sans délais, mais l'initrd créé par update-initramfs créé n'ouvre aucune partition.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne