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