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

Différents systèmes de fichiers exportés par le noyau sont utilisés pour communiquer avec le noyau lui-même. Ces systèmes de fichiers sont virtuels du fait qu'aucun espace disque n'est utilisé pour eux. Le contenu de ces systèmes de fichiers réside en mémoire.

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

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

6.2.1. Création des noeuds initiaux vers les périphériques

Quand le noyau démarre le système, il a besoin de la présence de quelques fichiers de périphériques, en particulier les périphériques console et null. Les nœuds de périphérique doivent être créés sur le disque dur afin d'être disponible avant que udevd n'ait été démarré et aussi quand Linux est démarré avec init=/bin/bash. Créez les périphériques en exécutant les commandes suivantes :

mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3

6.2.2. Monter et peupler /dev

La méthode recommandée pour peupler le répertoire /dev de périphériques est de monter un système de fichiers virtuel (comme tmpfs) sur le répertoire /dev, et d'autoriser la création dynamique des périphériques sur le système de fichiers virtuel une fois qu'ils sont détectés ou que quelque chose tente d'y accéder. La création de périphériques est généralement faite par Udev lors du démarrage. Comme ce nouveau système ne contient pas encore Udev et n'a pas encore été démarré, il est nécessaire de monter et de peupler /dev manuellement. Cela se fait en montant en double le répertoire /dev du système hôte. Le montage en double 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. Utilisez la commande suivante pour réaliser cela :

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

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

Maintenant montez les systèmes de fichiers virtuels du noyau qui en résultent :

mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

Voici la signification de des options de montage de devpts :

gid=5

Cela garantit que tous les nœuds de périphérique créés par devpts appartiennent au groupe dont l'ID est 5. C'est l'ID que nous utiliserons plus tard pour le groupe tty. Nous utilisons l'ID de groupe au lieu du nom car il se pourrait que le système hôte utilise un ID différent pour son groupe tty.

mode=0620

Cela garantit que tous les nœuds de périphérique créés par devpts ont le mode 0620 (lecture et écriture par l'utilisateur, écriture par le groupe). Combinée à l'option ci-dessus, cela garantit que devts créera des nœuds de périphérique correspondant aux exigences de grantpt(), c'est-à-dire que le binaire d'aide pt_chown de Glibc (qui n'est pas installé par défaut) n'est pas nécessaire.

Dans certains systèmes hôtes, /dev/shm est un lien symbolique vers /run/shm. Le tmpfs /run a été monté tout à l'heure, donc vous ne devez créer un répertoire que dans ce cas précis.

if [ -h $LFS/dev/shm ]; then
  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
fi