Installation de Void Linux avec disque chiffré (sauf boot), Btrfs, rEFInd
Ce guide a été écrit courant décembre 2023 et a été mis à jour le 29 octobre 2024. Suivez ce guide à vos risques et périls.
Image d’installation
L’installation de l’image se fait ici depuis un système Linux.
La récupérez sur le site officiel. Dans la
plupart des cas, choisissez x86_64, base, “Live Image” (glibc.
L’installation de rEFInd ne marche pas avec musl.). Téléchargez aussi
sha256sum.txt et sha256sum.sig (juste au dessus du bouton x86_64).
Installez minisign avec votre gestionnaire de paquets. Vérifiez l’intégrité
et les signatures des fichiers 1:
wget 'https://github.com/void-linux/void-packages/tree/master/srcpkgs/void-release-keys/files/void-release-20240314.pub'
minisign -V -p void-release-20240314.pub -x sha256sum.sig -m sha256sum.txt
sha256sum -c --ignore-missing sha256sum.txt
Exemple de vérification correcte pour minisign :
Signature and comment signature verified
Trusted comment: This key is only valid for images with date 20240314.
Pour sha256sum :
void-live-x86_64-20240314-base.iso: OK
Flashez l’image dans une clé USB 2. Tout ce qui est sur la clé va être effacé.
lsblk # Identifiez la clé USB
umount /dev/sdX # Devrait afficher : umount: /dev/sdX: not mounted
cat void-live-x86_64-20240314-base.iso > /dev/sdX
sync
Installation de Void Linux
Bootez la clé USB. Choisissez dans le chargeur d’amorçage (bootloader)
l’option Void Linux 6.x.x x86_64 (RAM) pour une meilleure performance si vous
avez assez de RAM 3. Identifiez vous avec root et mot de passe
voidlinux.
Pour avoir une meilleure interface logicielle (shell) avec complétion, tapez
bash. Tapez q pour a si votre clavier est français.
Changez le clavier si besoin :
# Pour les claviers français
loadkeys fr-latin9 # Tapez `)` pour avoir `-` et `ç` pour `9`
# Pour les autres claviers, fouillez dans ce répertoire pour voir ceux disponibles
ls /usr/share/kbd/keymaps/i386 # AZERTY: Tapez `!` pour `/` et `,` pour `m`
Connexion Internet
Pour la connexion Wi-Fi (WPA-PSK), identifiez la bonne interface avec ip a ;
dans la suite, on suppose que c’est wlan0. Puis :
wpa_cli -i wlan0
Dans la ligne de commande de wpa :
scan
scan_results
add_network
set_network 0 ssid "MySSID"
set_network 0 psk "passphrase"
enable_network 0
save_config
quit
S’il n’y a pas de mot de passe, utilisez à la place la commande set_network 0 key_mgnt NONE.
Testez la connexion avec ping. Si cela ne marche pas, essayez ip link set up wlan0 ou sv restart dhcpd.
Partitionnement
Créez deux partitions, une pour /boot d’une taille de 1 Gio 4, et une pour
le système que l’on va chiffrer avec pour taille le reste. Pour cela, on peut
utiliser cfdisk -z /dev/nvme0n1 où /dev/nvme0n1 est votre disque de
stockage où installer Void (identifiez le avec lsblk) 5. Attention,
cette commande rendra votre disque illisible si vous aviez des données
dessus. Choisissez gpt pour le label, puis créez les deux partitions.
Mettez le type de la première à EFI System, le deuxième à Linux filesystem.
Enfin, utilisez Write.
Système de fichier et chiffrement
mkfs.vfat -F32 /dev/nvme0n1p1
cryptsetup luksFormat /dev/nvme0n1p2 # Choisissez un mot de passe
cryptsetup open /dev/nvme0n1p2 cryptroot
mkfs.btrfs /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@snapshots
btrfs subvolume create /mnt/@var_log
btrfs subvolume create /mnt/@swap
umount /mnt
mount -o defaults,subvol=@ /dev/mapper/cryptroot /mnt
mkdir -p /mnt/boot && mount /dev/nvme0n1p1 /mnt/boot
mkdir -p /mnt/home && mount -o defaults,subvol=@home /dev/mapper/cryptroot /mnt/home
mkdir -p /mnt/.snapshots && mount -o defaults,subvol=@snapshots /dev/mapper/cryptroot /mnt/.snapshots
mkdir -p /mnt/var/log && mount -o defaults,subvol=@var_log /dev/mapper/cryptroot /mnt/var/log
mkdir -p /mnt/swap && mount -o defaults,subvol=@swap /dev/mapper/cryptroot /mnt/swap
Installation du système de base
Sélectionnez un miroir officiel de Void proche de chez vous, et sélectionnez la bonne architecture 6:
REPO=https://repo-default.voidlinux.org/current
ARCH=x86_64
Copie des clés RSA vers le futur système Void :
mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/
Puis on installe le système :
XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-system btrfs-progs cryptsetup refind vim # Ou nano
Environnement Chroot
Configuration du système
Entrez dans l’environnement Chroot :
xchroot /mnt /bin/bash
Puis dedans :
vim /etc/hostname # Choisissez un hostname
vim /etc/rc.conf # Ou nano. Changez le clavier en fr-latin9 ou autre si besoin
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime # À changer en fonction des besoins
vim /etc/default/libc-locales # Enlevez les commentaires pour les locales correspondants
xbps-reconfigure -f glibc-locales
Ensuite :
passwd # Mot de passe `root`
useradd -m myuser # Création d'un utilisateur
passwd myuser # Mot de passe de l'utilisateur
gpasswd -a myser wheel # Pour exécuter sudo
visudo # Retirez un des commentaires pour les lignes avec wheel
Génération de fstab
cp /proc/mounts /etc/fstab
Retirez toutes les lignes qui ne sont pas /dev/mapper/cryptroot ou
/dev/nvme0n1p1 (/boot). Remplacez pour / le dernier 0 avec un 1, et
pour les autres (/boot, /var/log, /swap, /home, /.snapshots) le
dernier 0 avec 2. Puis exécutez :
BOOT_UUID=$(blkid -s UUID -o value /dev/nvme0n1p1)
ROOT_UUID=$(blkid -s UUID -o value /dev/mapper/cryptroot)
sed -i "s/\/dev\/nvme0n1p1/UUID=$BOOT_UUID/" /etc/fstab
sed -i "s/\/dev\/mapper\/cryptroot/UUID=$ROOT_UUID/" /etc/fstab
echo "/swap/swapfile none swap defaults 0 0" >> /etc/fstab
echo "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0" >> /etc/fstab
Vérifiez le fichier. Exemple :
UUID=c52c0f6d-b6b5-4871-8330-8f46c335d5ee / btrfs rw,relatime,space_cache=v2,subvolid=256,subvol=/@ 0 1
UUID=D5FA-4678 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixes,utf8,errors=remount-ro 0 2
UUID=c52c0f6d-b6b5-4871-8330-8f46c335d5ee /home btrfs rw,relatime,space_cache=v2,subvolid=257,subvol=/@home 0 2
UUID=c52c0f6d-b6b5-4871-8330-8f46c335d5ee /var/log btrfs rw,relatime,space_cache=v2,subvolid=258,subvol=/@var_log 0 2
UUID=c52c0f6d-b6b5-4871-8330-8f46c335d5ee /swap btrfs rw,relatime,space_cache=v2,subvolid=260,subvol=/@swap 0 2
UUID=c52c0f6d-b6b5-4871-8330-8f46c335d5ee /.snapshots btrfs rw,relatime,space_cache=v2,subvolid=259,subvol=/@snapshots 0 2
/swap/swapfile none swap defaults 0 0
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
Génération d’un fichier swap : si vous avez entre 8 et 64 Go de RAM, Void recommande d’avoir 3/2 de la RAM pour l’hibernation 5. Exemple avec 8 Go de RAM :
btrfs filesystem mkswapfile --size 12G --uuid clear /swap/swapfile
swapon /swap/swapfile
SWAP_OFFSET=$(btrfs inspect-internal map-swapfile -r /swap/swapfile)
rEFInd
refind-install
vim /boot/refind_linux.conf
Retirez les lignes et rajoutez avec les commandes suivante :
echo "\"Boot (quietly)\" \"rw root=UUID=$ROOT_UUID resume=UUID=$ROOT_UUID resume_offset=$SWAP_OFFSET quiet\"" >> /boot/refind_linux.conf
echo "\"Boot\" \"rw root=UUID=$ROOT_UUID resume=UUID=$ROOT_UUID resume_offset=$SWAP_OFFSET\"" >> /boot/refind_linux.conf
Pour optimiser les images initramfs 7:
echo "hostonly=yes" > /etc/dracut.conf.d/hostonly.conf
Pour terminer :
xbps-reconfigure -fa
swapoff /swap/swapfile
exit # Pour quitter chroot
umount -R /mnt
reboot
Et voilà !