Configuration minimale
Maintenant que le système de base est installé, nous allons pouvoir y exécuter un shell grâce à chroot, et y créer la configuration minimale nécessaire pour pouvoir ensuite le démarrer.
Préparation du chroot
En plus des fichiers créés par debootstrap, le système a besoin d'un certain nombre de fichiers
qui n'existent pas réellement sur le disque, mais représentent, entre autre, les moyens d'accès au
matériel ou divers états interne du système. Il s'agit du contenu des répertoires /proc, /dev,
/sys et /run, ainsi que certains de leurs sous-répertoires. Nous allons donc monter ces
répertoires dans le système en cours d'installation depuis le système hôte :
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /sys /mnt/sys
mount -o bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
mount -o bind /run /mnt/run
Nous avons désormais une hierarchie de répertoires complète dans /mnt, et nous pouvons donc y
démarrer un shell avec chroot :
chroot /mnt /bin/bash
Configuration
Nous sommes maintenant dans un bash qui s'exécute dans le contexte de notre système en cours d'installation, nous allons donc pouvoir mettre en place la configuration minimale nécessaire au démarrage.
On commence par installer un certain nombre de paquets nécessaires au démarrage. J'y ajoute neovim, par préférence personnelle, l'important est d'avoir un éditeur qui vous convient (par défaut c'est nano qui est installé avec Debian) :
apt-get update
apt-get install cryptsetup lvm2 btrfs-progs adduser console-setup locales neovim
Montage des systèmes de fichiers
Le principal point de configuration à ce stade est le montage des systèmes de fichiers que nous
avons créés, on va d'abord définir notre volume chiffré dans /etc/crypttab avec la ligne suivante
:
# <target name> <source device> <key file> <options>
nvme0n1p2_crypt /dev/nvme0n1p2 none luks,discard
Maintenant que le volume chiffré est défini, on peut configurer les différents systèmes de fichiers
dans /etc/fstab :
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/vg_rocannon/lv_racine / btrfs defaults,subvol=racine 0 1
/dev/vg_rocannon/lv_racine /home btrfs defaults,subvol=home 0 2
/dev/nvme0n1p1 /boot/efi vfat umask=0077 0 1
/dev/vg_rocannon/lv_swap none swap sw 0 0
tmpfs /tmp tmpfs defaults,size=2g 0 0
Dans ces deux fichiers, on a ici identifié les périphériques (deuxième colonne de crypttab et
première de fstab) par leur chemin dans /dev, mais il est préférable de les identifier par leur
UUID, les numéros dans les noms de périphériques étant susceptibles de changer en cas d'ajout ou de
retrait de matériel (les noms de volumes LVM sont toutefois plus stables).
Une façon pratique d'obtenir la valeur de l'UUID au bon format est d'utiliser la commande suivante :
blkid | grep 'crypto_LUKS' | cut -d ' ' -f 2 | tr -d '"'
La valeur recherchée par grep est bien sûr à adapter. La chaîne crypto_LUKS utilisée ici
retournera le (ou les, s'il y a plusieurs volumes chiffrés) UUID à utiliser dans le fichier
crypttab.
Création des comptes utilisateurs
L'installation de base par debootstrap ne crée aucun compte utilisateur, et ne configure pas non plus de mot de passe pour le compte root. Au démarrage, nous serions donc dans l'impossibilité de nous connecter. Il n'est pas indispensable de créer tout de suite l'ensemble des comptes utilisateurs dont on aura besoin au final, mais il faut a minima disposer d'un compte avec les droits d'administration. Deux choix sont possibles :
- soit créer un mot de passe pour root, il suffit pour cela d'utiliser la commande
passwd, - soit créer un compte utilisateur avec
adduser, et lui donner les droits d'administration en l'ajoutant au groupe sudo :adduser toto apt-get install sudo adduser toto sudo