Disposition des disques
Lorsque Citadel est installé, deux partitions sont créées sur le disque cible.
sda 8:0 0 477G 0 disk
├─sda1 8:1 0 511M 0 part
└─sda2 8:2 0 476.5G 0 part
La première partition est une partition de démarrage EFI et la seconde partition est chiffrée avec LUKS et contient plusieurs volumes LVM une fois déchiffrée.
/dev/sda1 /dev/sda2
[EFI ESP Boot partition] [ LUKS encrypted partition filling remainder of disk ]
. .
. .
. | .
. | .
. V .
. .
[ rootfsA ] [ rootfsB ] [ citadel-storage ]
Il y a trois volumes logiques. Deux partitions de système de fichiers racine afin qu’une partition puisse être mise à jour pendant que l’autre est utilisée, et l’espace restant est contenu dans un volume appelé « storage ».
# lvs
LV VG Attr LSize
rootfsA citadel -wi-a----- 2.00g
rootfsB citadel -wi-ao---- 2.00g
storage citadel -wi-ao---- 472.43g
Chargeur d’amorçage
LUKS
L’initramfs du noyau contient un fichier /etc/crypttab qui guide la découverte de la partition LUKS. L’UUID de la partition LUKS est codé en dur avec la valeur indiquée ci-dessous. Si citadel est installé sur plusieurs périphériques du système, la partition LUKS voulue pourrait ne pas être choisie correctement. Ce problème peut être résolu en changeant l’UUID des autres partitions LUKS de citadel et en passant l’UUID sur la ligne de commande du noyau afin de surcharger /etc/crypttab. Voir systemd-cryptsetup-generator(8).
# cat /etc/crypttab
luks UUID=683a17fc-4457-42cc-a946-cde67195a101 - discard
Montage du rootfs
L’étape de démarrage de l’initramfs est orchestrée par divers fichiers d’unités systemd que l’on peut trouver dans l’arborescence source de citadel à l’emplacement suivant :
citadel/meta-citadel/recipes-initrd/citadel-initramfs
Le même noyau et le même initramfs sont utilisés pour l’image d’installation. Une des tâches de ces fichiers d’unités est de mettre en place un démarrage en mode live lorsqu’une certaine option de la ligne de commande du noyau est définie. Pour un démarrage normal, une paire de fichiers d’unités tentera de monter la partition du système de fichiers racine dès qu’elle devient disponible :
citadel-rootfs-mount.path
citadel-rootfs-mount.service
L’unité .path se déclenche à chaque modification de /dev/mapper et l’unité .service correspondante n’est activée que lorsque tous les volumes LVM présents à l’intérieur
ConditionPathExists=/dev/mapper/citadel-rootfsA
ConditionPathExists=/dev/mapper/citadel-rootfsB
ConditionPathExists=/dev/mapper/citadel-storage