7.3. Préparer les systèmes de fichiers virtuels du noyau

Les applications qui tournent en espace utilisateur utilisent différents systèmes de fichiers créés par le noyau pour communiquer avec le noyau lui-même. Ces systèmes de fichiers sont virtuels du fait qu'ils n’utilisent aucun espace disque. Le contenu de ces systèmes de fichiers réside en mémoire. Ces systèmes de fichiers doivent être montés dans l’arborescence de $LFS pour que les applications puissent les trouver dans l’environnement chroot.

Commencez par créer les répertoires dans lesquels les systèmes de fichiers seront montés :

mkdir -pv $LFS/{dev,proc,sys,run}

7.3.1. Monter et alimenter /dev

Lors d'un démarrage normal d'un système LFS, le noyau monte automatiquement le système de fichiers devtmpfs dans le répertoire /dev et crée des nœuds de périphériques sur ce système de fichiers virtuel pendant le processus de démarrage ou lorsqu’un périphérique est détecté ou qu'on tente d'y pour la première fois. Le démon udev permet de modifier le propriétaire, de gérer les permissions des nœuds de périphériques créés par le noyau, d’en créer de nouveaux ou de créer des liens symboliques afin de faciliter la tâche de maintenance de distribution ou d'administration système (voir le Section 9.3.2.2, « Création de nœuds de périphérique » pour plus de détails). Si le noyau hôte prend en charge devtmpfs, il est possible de monter un devtmpfs sous $LFS/dev et ainsi laisser le noyau le remplir.

Cependant, certains systèmes hôtes ne prennent pas en charge devtmpfs. Ces distributions hôtes utilisent plusieurs méthodes pour créer le contenu de /dev. La seule manière de remplir $LFS/dev indépendamment de l'hôte consiste à monter le répertoire /dev du système hôte avec l’option bind. Le montage avec --bind est un type spécial de montage qui vous permet de créer le miroir d'un répertoire ou d'un point de montage à un autre endroit. Pour ce faire, exécutez la commande suivante.

mount -v --bind /dev $LFS/dev

7.3.2. Monter les systèmes de fichiers virtuels du noyau

Montez maintenant les systèmes de fichiers virtuels du noyau restants :

mount -v --bind /dev/pts $LFS/dev/pts
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

Dans certains systèmes hôtes, /dev/shm est un lien symbolique vers /run/shm. Le tmpfs /run a été monté plus tôt, donc, dans ce cas précis, vous aurez uniquement à créer un répertoire.

Sur d’autres systèmes hôtes, /dev/shm est un point de montage pour un tmpfs. Dans ce cas, le montage de /dev ci-dessus créera le répertoire /dev/shm dans l'environnement chroot. En parallèle, il faudra alors créer explicitement un tmpfs :

if [ -h $LFS/dev/shm ]; then
  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
else
  mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi