Installation sur btrfs
Le système de fichiers Btrfs propose de nombreuses fonctionnalités fort intéressantes. Il est donc intéressant d'installer Debian sur un tel système de fichier. L'installation à partir du CD permet de choisir une partition Btrfs comme partition d'installation, mais pas l'un de ses sous-volumes. On perd ainsi de nombreux avantages de ce système de fichiers. Il est cependant possible de démarrer Debian avec Grub, même si la racine est située sur un sous-volume Btrfs.
Plusieurs méthodes d'installation sont possibles, mais nous allons détailler ici la méthode à partir d'un LiveCD et de debootstrap.
Pré-requis
L'installation de / sur un sous-volume Btrfs est délicate avec un démarrage en UEFI. Il faut créer une partition en Fat32 pour UEFI, et je ne sais pas comment se gère la suite du démarrage. C'est peut-être tout à fait possible, mais je ne détaille pas ce sujet ici. Il faut donc :
- Démarrer en mode Legacy
- Un liveCD d'une distribution Linux (pas forcément Debian, mais une distribution qui propose debootstrap)
- Une connexion Internet fonctionnelle
Création des partitions et des sous-volumes
Ici, je me place dans le cas d'une configuration avec un SSD et un HDD. Nous allons installer le système complet sur le SSD et /home sur le HDD. Il est inutile de faire des snapshots de /dev, /proc, et /tmp. Nous allons donc utiliser des sous-volumes séparés pour ceux-ci. Voici le choix fait ici (discutable) : Sur le SSD :
- /
- /dev
- /proc
- /tmp
Sur le HDD :
- /home
Une autre organisation est possible en fonction des ressources disponibles, mais je recommande de garder /dev /proc et /tmp dans des sous-volumes distincts. Il n'y a pas de swap, car la méthode d'installation de btrfs utilisée ici empêche la création conjointe d'une partition swap et de volumes btrfs sur le même disque dur.
On commence par la création des volumes racines btrfs sur le SSD et le HDD. Le SSD est sur /dev/nvme0n1 et le HDD est sur /dev/sda. Au besoin, adaptez à votre configuration.
# mkfs.btrfs /dev/sda # mkfs.btrfs /dev/nvme0n1
Notez que le système de fichiers Btrfs est créé directement sur le disque dur (/dev/sda) et non sur une partition (/dev/sdaX)
Puis on monte les volumes tout juste créés :
# mkdir /mnt/home # mkdir /mnt/root # mount -t btrfs /dev/sda /mnt/home # mount -t btrfs /dev/nvme0n1 /mnt/root
Après avoir monté les volumes, il est possible de créer les sous-volumes précédemment mentionnés :
# cd /mnt/home # btrfs subvolume create home # cd /mnt/root # btrfs subvolume create root # btrfs subvolume create dev # btrfs subvolume create proc # btrfs subvolume create tmp
On peut maintenant démonter les partitions. Seuls les sous-volumes nous sont désormais utiles :
# umount /mnt/home # umount /mnt/root
Monter les sous-volumes
On commence par créer un répertoire dans lequel l'installation de Debian aura lieu :
# mkdir /mnt/debinst
Puis on monte le sous-volume root dessus :
# mount -t btrfs -o subvol=root /dev/nvme0n1 /mnt/debinst
Il est inutile de monter d'autres partitions pour le moment.
Installation du système
Nous avons besoin de debootstrap. S'il n'est pas disponible, il faut installer cet outil. Puis pour installer Sid sur une architecture amd64, par exemple :
# debootstrap --arch amd64 unstable /mnt/debinst http://ftp.fr.debian.org/debian
Derniers paramétrages
Pour finir l'installation du système, on commence par un chroot sur la racine. Le dossier $HOME n'a pas besoin d'être monté.
# mount -t proc none /mnt/debinst/proc # mount -o bind /dev /mnt/debinst/dev # chroot /mnt/debinst /bin/bash
On change le mot de passe root avec la commande.
# passwd
Puis on installe un système fonctionnel.
# apt update # apt install linux-image-amd64 grub2
On peut accompagner ce noyau d'autres paquets utiles comme les tasks-*. D'autres paramétrages peuvent être nécessaires comme l'édition du fichier /etc/hostname, /etc/network/interfaces, la configuration des locales, ...
Au redémarrage, il faudra ajouter un utilisateur, certainement faire quelques réparations, et autres petites tâches, mais rien de spécifique à btrfs. À part le fichier fstab.