Problème de l'installeur Debian qui ne reconnaît pas les disques cryptés.
Le
moondump

Bonjour à tous,
j'ai pris l'habitude de faire coexister, grâce à LVM, plusieurs v=
ersions de cette distribution sur une même station afin de passer sere=
inement d'une version à sa supérieure. Cela me donne du temps pou=
r configurer la nouvelle.
Il y quelques temps, j'ai décidé de chiffrer les disques de mes s=
tations. J'ai donc rincé ceux-ci et j'y ai réinstallé la der=
nière version en production (V9, dite Stretch). Tout c'est bien pass=
é et voici ce que cela donne une fois le tout monté :
:-) mount | awk '/^/dev//' | sort =
=
=
=
/dev/mapper/s02_boot-Deb--Stretch_v9--boot on /boot type ext4 (rw,relatime,=
data=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--Racine on / type ext4 (rw,relatime,e=
rrors=remount-ro,data=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--usr on /usr type ext4 (rw,relatime,d=
ata=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--var on /var type ext4 (rw,relatime,d=
ata=ordered)
/dev/mapper/s02_crypt-home on /home type ext4 (rw,relatime,data=ordered)
/dev/mapper/s02_crypt-root on /root type ext4 (rw,relatime,stripe=4,data=
=ordered)
/dev/mapper/s02_crypt-tmp on /tmp type ext4 (rw,relatime,data=ordered)
:-)
J'espère que mes règles de nommage sont assez explicites, «s=
02_boot» et «s02_crypt» étant des groupes de volumes. L=
e reste est constitués des volumes logiques.
Mais, lorsque j'ai voulu installer la version 10, dite «Buster», =
quelle ne fut pas ma surprise de constater que l'installeur ne «voyait=
» mon disque chiffré ! Ou plus exactement, le groupe de volumes =
«s02_crypt» à l'intérieur du disque chiffré.
J'ai donc essayé de contourner la difficulté en passant par le mo=
de expert de l'installeur. Avant le partitionnement, j'ouvre un shell (Dash=
) et j'utilise «cryptsetup» pour déchiffrer le sda5, qui est=
le volume physique supportant «s02_crypt». Je peux alors crÃ=
©er tous les volumes logiques et finir l'installation sans problème.=
J'ai donc en définitive :
:-) ls -1 /dev/mapper/
control
s02_boot-Deb--Buster_10--boot
s02_boot-Deb--Stretch_v9--boot
s02_crypt-Deb--Buster_v10--Racine
s02_crypt-Deb--Buster_v10--usr
s02_crypt-Deb--Buster_v10--var
s02_crypt-Deb--Stretch_v9--Racine
s02_crypt-Deb--Stretch_v9--usr
s02_crypt-Deb--Stretch_v9--var
s02_crypt-home
s02_crypt-root
s02_crypt-swap
s02_crypt-tmp
sda5_crypt
:-)
avec deux magnifiques OS installés aux bons endroits.
Oui mais voila, lors du boot, je tombe sur un os… Le noyau se plain=
t de ne pas trouver la partition Racine (s02_crypt-Deb--Buster_v10--Racine).
J'ai comparé les deux initrd.img, et j'ai d'une part pour la premiÃ=
¨re version :
:-) lsinitramfs /boot/initrd.img-4.9.0-7-amd64 | awk '/crypt/' | sort | mo=
re
bin/cryptroot-unlock
conf/conf.d/cryptroot
lib/cryptsetup
lib/cryptsetup/askpass
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/aes-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/blowfish-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-aesni-avx2.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.=
ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/cast5-avx-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/cast6-avx-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/chacha20-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crc32c-intel.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crct10dif-pclmul.ko
# Plein de lignes…
lib/modules/4.9.0-7-amd64/kernel/crypto/wp512.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xcbc.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xor.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xts.ko
lib/modules/4.9.0-7-amd64/kernel/drivers/crypto
lib/modules/4.9.0-7-amd64/kernel/drivers/crypto/padlock-aes.ko
lib/modules/4.9.0-7-amd64/kernel/drivers/md/dm-crypt.ko
lib/modules/4.9.0-7-amd64/kernel/fs/crypto
lib/modules/4.9.0-7-amd64/kernel/fs/crypto/fscrypto.ko
lib/x86_64-linux-gnu/libcryptsetup.so.4
lib/x86_64-linux-gnu/libcryptsetup.so.4.7.0
lib/x86_64-linux-gnu/libgcrypt.so.20
lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
sbin/cryptsetup
scripts/local-block/cryptroot
scripts/local-bottom/cryptopensc
scripts/local-top/cryptopensc
scripts/local-top/cryptroot
:-)
et pour la nouvelle version :
:-) lsinitramfs /…/initrd.img-4.19.0-6-amd64 | awk '/crypt/' | sor=
t | more
cryptroot
cryptroot/crypttab
etc/lvm/backup/s02_crypt
scripts/local-block/cryptroot
scripts/local-bottom/cryptgnupg-sc
scripts/local-bottom/cryptopensc
scripts/local-top/cryptopensc
scripts/local-top/cryptroot
usr/bin/cryptroot-unlock
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/aesni-intel.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/aes-x86_64.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/crc32c-intel.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/glue_helper.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/arc4.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_memcpy.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_pq.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_raid6_recov.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_tx.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_xor.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/crc32c_generic.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/cryptd.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/crypto_simd.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/ecb.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/xor.ko
usr/lib/modules/4.19.0-6-amd64/kernel/drivers/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/drivers/crypto/padlock-aes.ko
usr/lib/modules/4.19.0-6-amd64/kernel/fs/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/fs/crypto/fscrypto.ko
usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
usr/lib/x86_64-linux-gnu/libgcrypt.so.20
usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.4
:-)
Je n'ai pas, en autres, de «sbin/cryptsetup» dans le initrd.img d=
e la version Buster et je pense que le problème vient de là .
J'ai essayé plusieurs approches techniques, dont un «dracut chroo=
té» ou avec la possibilité qu'a Grub de déchiffrer Luks=
1, mais sans succès pour l'instant. Pas de résultat non plus en f=
ouillant de l'installeur Debian.
Au début, j'ai même tenté l'installation façon «Ge=
ntoo», voir https://www.debian.org/releases/stable/amd64/apds03.en.htm=
l, mais sans modification du initrd.img.
Je suis passé peut être à coté d'une solution toute sim=
ple, mais pour l'instant, je tourne en rond.
Merci de votre attention.
j'ai pris l'habitude de faire coexister, grâce à LVM, plusieurs v=
ersions de cette distribution sur une même station afin de passer sere=
inement d'une version à sa supérieure. Cela me donne du temps pou=
r configurer la nouvelle.
Il y quelques temps, j'ai décidé de chiffrer les disques de mes s=
tations. J'ai donc rincé ceux-ci et j'y ai réinstallé la der=
nière version en production (V9, dite Stretch). Tout c'est bien pass=
é et voici ce que cela donne une fois le tout monté :
:-) mount | awk '/^/dev//' | sort =
=
=
=
/dev/mapper/s02_boot-Deb--Stretch_v9--boot on /boot type ext4 (rw,relatime,=
data=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--Racine on / type ext4 (rw,relatime,e=
rrors=remount-ro,data=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--usr on /usr type ext4 (rw,relatime,d=
ata=ordered)
/dev/mapper/s02_crypt-Deb--Stretch_v9--var on /var type ext4 (rw,relatime,d=
ata=ordered)
/dev/mapper/s02_crypt-home on /home type ext4 (rw,relatime,data=ordered)
/dev/mapper/s02_crypt-root on /root type ext4 (rw,relatime,stripe=4,data=
=ordered)
/dev/mapper/s02_crypt-tmp on /tmp type ext4 (rw,relatime,data=ordered)
:-)
J'espère que mes règles de nommage sont assez explicites, «s=
02_boot» et «s02_crypt» étant des groupes de volumes. L=
e reste est constitués des volumes logiques.
Mais, lorsque j'ai voulu installer la version 10, dite «Buster», =
quelle ne fut pas ma surprise de constater que l'installeur ne «voyait=
» mon disque chiffré ! Ou plus exactement, le groupe de volumes =
«s02_crypt» à l'intérieur du disque chiffré.
J'ai donc essayé de contourner la difficulté en passant par le mo=
de expert de l'installeur. Avant le partitionnement, j'ouvre un shell (Dash=
) et j'utilise «cryptsetup» pour déchiffrer le sda5, qui est=
le volume physique supportant «s02_crypt». Je peux alors crÃ=
©er tous les volumes logiques et finir l'installation sans problème.=
J'ai donc en définitive :
:-) ls -1 /dev/mapper/
control
s02_boot-Deb--Buster_10--boot
s02_boot-Deb--Stretch_v9--boot
s02_crypt-Deb--Buster_v10--Racine
s02_crypt-Deb--Buster_v10--usr
s02_crypt-Deb--Buster_v10--var
s02_crypt-Deb--Stretch_v9--Racine
s02_crypt-Deb--Stretch_v9--usr
s02_crypt-Deb--Stretch_v9--var
s02_crypt-home
s02_crypt-root
s02_crypt-swap
s02_crypt-tmp
sda5_crypt
:-)
avec deux magnifiques OS installés aux bons endroits.
Oui mais voila, lors du boot, je tombe sur un os… Le noyau se plain=
t de ne pas trouver la partition Racine (s02_crypt-Deb--Buster_v10--Racine).
J'ai comparé les deux initrd.img, et j'ai d'une part pour la premiÃ=
¨re version :
:-) lsinitramfs /boot/initrd.img-4.9.0-7-amd64 | awk '/crypt/' | sort | mo=
re
bin/cryptroot-unlock
conf/conf.d/cryptroot
lib/cryptsetup
lib/cryptsetup/askpass
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/aes-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/blowfish-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-aesni-avx2.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.=
ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/camellia-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/cast5-avx-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/cast6-avx-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/chacha20-x86_64.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crc32c-intel.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/4.9.0-7-amd64/kernel/arch/x86/crypto/crct10dif-pclmul.ko
# Plein de lignes…
lib/modules/4.9.0-7-amd64/kernel/crypto/wp512.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xcbc.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xor.ko
lib/modules/4.9.0-7-amd64/kernel/crypto/xts.ko
lib/modules/4.9.0-7-amd64/kernel/drivers/crypto
lib/modules/4.9.0-7-amd64/kernel/drivers/crypto/padlock-aes.ko
lib/modules/4.9.0-7-amd64/kernel/drivers/md/dm-crypt.ko
lib/modules/4.9.0-7-amd64/kernel/fs/crypto
lib/modules/4.9.0-7-amd64/kernel/fs/crypto/fscrypto.ko
lib/x86_64-linux-gnu/libcryptsetup.so.4
lib/x86_64-linux-gnu/libcryptsetup.so.4.7.0
lib/x86_64-linux-gnu/libgcrypt.so.20
lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
sbin/cryptsetup
scripts/local-block/cryptroot
scripts/local-bottom/cryptopensc
scripts/local-top/cryptopensc
scripts/local-top/cryptroot
:-)
et pour la nouvelle version :
:-) lsinitramfs /…/initrd.img-4.19.0-6-amd64 | awk '/crypt/' | sor=
t | more
cryptroot
cryptroot/crypttab
etc/lvm/backup/s02_crypt
scripts/local-block/cryptroot
scripts/local-bottom/cryptgnupg-sc
scripts/local-bottom/cryptopensc
scripts/local-top/cryptopensc
scripts/local-top/cryptroot
usr/bin/cryptroot-unlock
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/aesni-intel.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/aes-x86_64.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/crc32c-intel.ko
usr/lib/modules/4.19.0-6-amd64/kernel/arch/x86/crypto/glue_helper.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/arc4.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_memcpy.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_pq.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_raid6_recov.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_tx.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/async_tx/async_xor.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/crc32c_generic.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/cryptd.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/crypto_simd.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/ecb.ko
usr/lib/modules/4.19.0-6-amd64/kernel/crypto/xor.ko
usr/lib/modules/4.19.0-6-amd64/kernel/drivers/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/drivers/crypto/padlock-aes.ko
usr/lib/modules/4.19.0-6-amd64/kernel/fs/crypto
usr/lib/modules/4.19.0-6-amd64/kernel/fs/crypto/fscrypto.ko
usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
usr/lib/x86_64-linux-gnu/libgcrypt.so.20
usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.4
:-)
Je n'ai pas, en autres, de «sbin/cryptsetup» dans le initrd.img d=
e la version Buster et je pense que le problème vient de là .
J'ai essayé plusieurs approches techniques, dont un «dracut chroo=
té» ou avec la possibilité qu'a Grub de déchiffrer Luks=
1, mais sans succès pour l'instant. Pas de résultat non plus en f=
ouillant de l'installeur Debian.
Au début, j'ai même tenté l'installation façon «Ge=
ntoo», voir https://www.debian.org/releases/stable/amd64/apds03.en.htm=
l, mais sans modification du initrd.img.
Je suis passé peut être à coté d'une solution toute sim=
ple, mais pour l'instant, je tourne en rond.
Merci de votre attention.
/root n'est pas censé être détaché de la racine, afin d'être accessible
au cas où un problème à l'initialisation empêcherait le montage des
systèmes de fichiers. Si tu veux un espace de stockage pour root partagé
entre les versions, tu peux le monter en /home/root.
J'aurais au moins créé une partition classique pour /boot/grub afin que
le chargeur d'amorçage soit indépendant de LVM.
Problème connu, le partitionneur de l'installateur Debian ne permet pas
de réutiliser des volumes chiffrés existants.
Classique, mais pas suffisant...
Ben oui, comme l'installateur n'a pas créé de volume chiffré il n'a pas
installé les paquets qui gèrent le chiffrement, et probablement même pas
initialisé /etc/crypttab. Pour buster il faut compléter /etc/crypttab si
besoin et installer le paquet cryptsetup-initramfs (ce qui devrait
reconstruire l'initramfs automatiquement, sinon le faire avec
update-initramfs -u).
Tout cela doit être faisable avec l'installateur en mode rescue,
ouverture des volumes chiffrés (c'est pris en charge), sélection de la
racine puis lancement d'un shell sur la racine du système installé,
montage des autres volumes. Ou bien avec chroot depuis l'autre système.
(...)
Pourquoi initramfs-tools ? Ce paquet est déjà installé.
Très maladroit.
Pour ./dev, il faut soit monter avec -t devtmpfs, soit monter /dev en
--bind. Dans ./etc, il suffit de renseigner les DNS dans /etc/resolv.conf.
Pour quoi faire ? Il est plus pratique de piloter le device mapper avec
les commandes de plus haut niveau de LVM et cryptsetup.
Oui, sans aucun doute, mais dans ce cas précis, lesquelles ? C'est bi en
pour cela que j'ai écris : «Ce qui m'intéresserais de savoir , c'est ce
qui se cache derrière «Détecter les disques» et «p artitionner les
disques» de l'installeur.»
Concrétement, comment faire pour obtenir le même résultat, m ais cette
fois manuellement ? Ou dit autrement, avec des lignes de commandes ?
Tu les connais déjà : cryptsetup, pvcreate, vgcreate, lvcreate, vgchange...
Le même résultat que quoi ?
Je ne vois pas où tu veux en venir.
C'est vgmknodes --refresh
:/# lvdisplay
:/# vgmknodes --refresh
The link /dev/s02_crypt/Deb-Stretch_v9-Racine should have been created by udev but it was not found. Falling back to direct link c
reation.
The link /dev/s02_crypt/Deb-Stretch_v9-usr should have been created by ud ev but it was not found. Falling back to direct link crea
tion.
The link /dev/s02_crypt/Deb-Stretch_v9-var should have been created by ud ev but it was not found. Falling back to direct link crea
tion.
The link /dev/s02_crypt/root should have been created by udev but it was not found. Falling back to direct link creation.
The link /dev/s02_crypt/swap should have been created by udev but it was not found. Falling back to direct link creation.
The link /dev/s02_crypt/tmp should have been created by udev but it was n ot found. Falling back to direct link creation.
The link /dev/s02_crypt/home should have been created by udev but it was not found. Falling back to direct link creation.
The link /dev/s02_crypt/Deb-Buster_v10-Racine should have been created by udev but it was not found. Falling back to direct link c
reation.
The link /dev/s02_crypt/Deb-Buster_v10-usr should have been created by ud ev but it was not found. Falling back to direct link crea
tion.
The link /dev/s02_crypt/Deb-Buster_v10-var should have been created by ud ev but it was not found. Falling back to direct link crea
tion.
:/# cd dev/
:/dev# ls
console fd full mapper null ptmx pts random s02_crypt shm stderr stdin stdout tty urandom zero
:/dev# ls mapper/
control s02_crypt-Deb--Buster_v10--Racine s02_cryp t-Deb--Stretch_v9--Racine s02_crypt-home s02_crypt-tmp
s02_boot-Deb--Buster_10--boot s02_crypt-Deb--Buster_v10--usr s02_cryp t-Deb--Stretch_v9--usr s02_crypt-root sda5_crypt
s02_boot-Deb--Stretch_v9--boot s02_crypt-Deb--Buster_v10--var s02_cryp t-Deb--Stretch_v9--var s02_crypt-swap
:/dev#
Bon, il est tard et on verra ça demain. Bonne nuit à tous.
(...)
Celles que j'ai mentionnées.
Pour quoi faire ?
C'est faux. Un des PV est un volume chiffré, et comme on l'a vu
l'installateur ne sait pas ouvrir les volumes chiffrés préexistants.
Donc il ne peut pas avoir activé les volumes logiques d'un PV chiffré
préexistant.
Pour quoi faire puisque l'installateur le fait déjà automatiquement ?
vgchange -ay