
Installer Manjaro avec Btrfs et le chiffrement du système entier
- Tehoor Marjan
- Linux
- 15 décembre 2024
Table des Matières
Installer Manjaro Linux avec un chiffrement système complet et un système de fichiers moderne Btrfs peut renforcer considérablement la sécurité et les fonctionnalités de votre système. Malheureusement, la configuration GRUB par défaut ne gère pas les claviers non-US au démarrage, exposant l’utilisateur à une consommation excessive de Doliprane lors de la saisie du mot de passe. Ce guide explique comment configurer le chiffrement, remplacer GRUB par Systemd-boot et activer le Secure Boot pour une sécurité accrue (et surtout un max de coolitude 😁).
Étape 1 : Installer Manjaro
Commencer par une installation standard de Manjaro :
- Choisir Btrfs avec Swap en fichier.
- Activer le chiffrement système et définir la clé de chiffrement.
- Ajuster les autres paramètres de l’installation selon les préférences.
- Laisser l’installation se terminer, mais ne pas redémarrer, pas encore. Décocher Redémarrer maintenant et rester dans la session live.
Étape 2 : Ajustements avant le redémarrage
2.1 Optionnel : Activer un éditeur de texte graphique pour root
Pour les utilisateurs peu habitués aux éditeurs en ligne de commande comme
nano
, il est possible d’activer l’éditeur graphique mousepad
dans la session
live:
Ouvrir le menu et accéder à Système > Ajouter/Retirer des logiciels.
Rechercher et installer le paquet
xorg-xhost
.Dans un terminal, exécuter en tant qu’utilisateur :
xhost +
Cela permet aux instances de mousepad
lancées depuis une session root
de
s’afficher dans l’interface graphique de l’utilisateur.
Remarque : ce changement n’affecte que la session live et ne compromet pas la sécurité du système futur installé.
2.2 Entrer dans le système installé
Tout d’abord, monter la partition racine de votre futur système et entrer dedans :
sudo -i
mount /dev/mapper/luks-<UUID> /mnt -o subvol=/@
manjaro-chroot /mnt/
(Il n’y a normalement qu’un seul fichier luks-<UUID>
. Taper
/dev/mapper/luks-
puis TAB
devrait compléter correctement le nom du
fichier)
2.3 Corriger le point de montage de la partition EFI
Éditer /etc/fstab
pour mettre à jour le point de montage de la partition EFI :
(Remplacez nano
par mousepad
si vous préférez un éditeur graphique.)
nano /etc/fstab
Modifier la ligne correspondant à la partition EFI :
UUID=<EFI-UUID> /efi vfat defaults,umask=0077 0 2
Ensuite, créer le répertoire nécessaire et monter toutes les autres systèmes de fichiers (dont EFI) :
mkdir /efi
mount -a
2.4 Remplacer GRUB par Systemd-boot
Supprimer GRUB et installer systemd-boot. Ce dernier est un chargeur d’amorçage plus léger et plus facile à configurer avec le chiffrement système, Secure Boot et les images noyau unifiées (UKI).
pacman -Rcs grub memtest86+-efi
bootctl install
2.5 Remplacer l’initramfs Busybox par celui de Systemd
Passer à l’initramfs basé sur systemd pour une meilleure prise en charge du chiffrement, de l’hibernation et de la localisation :
Éditer /etc/mkinitcpio.conf
:
nano /etc/mkinitcpio.conf
Supprimer le fichier /crypto_keyfile.bin
des fichiers inclus dans l’initramfs,
car il sera désormais stocké dans la partition EFI (non chiffrée). Mettre à jour
la ligne HOOKS
:
FILES=()
# ...
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block plymouth sd-encrypt filesystems)
2.6 Configurer les images noyau unifiées
Configurer mkinitcpio pour créer des images noyau unifiées (UKI) :
nano /etc/mkinitcpio.d/linux<kernel-version>.preset
Commenter l’instruction <preset>_image=
par défaut et décommenter celle
appelée <preset>_uki=
:
#default_config="/etc/mkinitcpio.conf"
#default_image="/boot/initramfs-6.12-x86_64.img"
default_uki="/efi/EFI/Linux/manjaro-6.12-x86_64.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-manjaro.bmp"
#fallback_config="/etc/mkinitcpio.conf"
#fallback_image="/boot/initramfs-6.12-x86_64-fallback.img"
fallback_uki="/efi/EFI/Linux/manjaro-6.12-x86_64-fallback.efi"
fallback_options="-S autodetect"
2.7 Ajuster la ligne de commande du noyau
Adapter la ligne de commande du noyau pour prendre en charge correctement le
système chiffré. Pour les blobs UKI, cela se gère via des fichiers dans
/etc/cmdline.d/
. Pour faciliter l’écriture correcte des paramètres, on définit
deux variables :
UUID_DEV
est l’UUID du périphérique verrouillé.UUID_ROOT
est l’UUID de la partition racine après déverrouillage.
Exécuter les commandes suivantes pour configurer tout ça :
UUID_DEV=$(blkid -s UUID -o value /dev/sda2)
UUID_ROOT=$(blkid -s UUID -o value /dev/mapper/luks-${UUID_DEV})
mkdir /etc/cmdline.d/
echo "root=UUID=${UUID_ROOT} rw rootflags=subvol=/@ rd.luks.name=${UUID_DEV}=luks-${UUID_DEV}" > /etc/cmdline.d/00_root.conf
echo "quiet splash loglevel=3 rd.udev.logpriority=3 vt.globalcursor_default=0" > /etc/cmdline.d/10_quiet.conf
mkinitcpio -P
2.8 Recréer le fichier swap
L’installateur crée un fichier swap souvent trop petit pour prendre en charge l’hibernation. Pour garantir que le système puisse hiberner correctement, le fichier swap doit être au moins aussi grand que la taille de la RAM.
Remarque : Bien que des tailles plus petites puissent fonctionner dans certains
cas, cela dépasse le cadre de cet article. Pour des configurations avancées, il
est possible d’inspecter /sys/power/image_size
sur le système final (pas celui
en live).
Recréer le fichier swap avec une taille appropriée (adapter la valeur selon le besoin) :
rm /swap/swapfile
btrfs filesystem mkswapfile --size 16g --uuid clear /swap/swapfile
2.9 Nettoyer les clés de chiffrement
Le hook encrypt
basé sur busybox utilise crypto_keyfile.bin
pour
déverrouiller plusieurs périphériques au démarrage. En fait, il laisse GRUB
déverrouiller le périphérique principal puis l’initramfs se sert du fichier clef
pour déverouiller les autres. Cependant, le hook sd-encrypt
de systemd peut
déverrouiller plusieurs périphériques en utilisant un mot de passe partagé,
rendant ce fichier clef inutile. De plus, ce fichier sensible serait stocké non
chiffré dans la partition EFI lors de l’utilisation de systemd-boot, ce qui
mettrait le concept de sécurité par terre (c’est pour ça qu’on l’a retiré de
l’initramfs à l’étape 2.5).
Supprimer le fichier clé pour nettoyer :
cryptsetup luksRemoveKey /dev/sda2 /crypto_keyfile.bin
rm /crypto_keyfile.bin
Étape 3 : Configurer le Secure Boot
3.1 Préparer les outils pour le Secure Boot
S’assurer que le BIOS/UEFI est en Mode Setup pour permettre l’enregistrement des clés Secure Boot.
pacman -Sy sbctl
sbctl status # Vérifier si Secure Boot est en Mode Setup
3.2 Optionnel : Redémarrer
Si le système n’est pas en Mode Setup, il est possible de redémarrer
maintenant pour modifier les paramètres UEFI, le système est déjà prêt pour
redémarrer correctement. Si sbctl status
indique que le système est en Mode
Setup, il est possible de continuer sans redémarrage.
3.3 Configurer Secure Boot
Optionnel : Si le nouveau système vient de démarrer, ouvrir un terminal et passer root à nouveau :
sudo -i
Utiliser
sbctl
pour configurer le Secure Boot :sbctl setup sbctl create-keys sbctl enroll-keys -m
Vérifier que tous les fichiers impliqués dans le démarrage ont été correctement signés. Sinon, les signer maintenant.
sbctl verify # Identifier les fichiers non signés sbctl sign -s ... # Signer tous les fichiers nécessaires
Redémarrer et activer le Secure Boot dans le BIOS/UEFI.
Eh bah voilà ! Vous avez installé avec succès Manjaro avec le chiffrement système, Btrfs, Secure Boot, hibernation, prise en charge de la localisation clavier au démarrage… 😎 Il n’y a plus qu’à boire une bonne bière ! Santé 🍻