7.3. Подготовка виртуальных файловых систем ядра

Приложения, работающие в пользовательском пространстве, используют различные файловые системы, созданные ядром, для взаимодействия с самим ядром. Эти файловые системы являются виртуальными: для них не используется дисковое пространство. Содержимое файловых систем находится в памяти. Эти файловые системы должны быть смонтированы в дереве каталогов $LFS, чтобы приложения могли найти их в среде chroot.

Начните с создания каталогов, в которые будут смонтированы эти виртуальные файловые системы:

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

7.3.1. Монтирование и заполнение /dev

Во время обычной загрузки ядро автоматически монтирует файловую систему devtmpfs в каталог /dev; ядро создает узлы устройств в этой виртуальной файловой системе в процессе загрузки или при первом обнаружении устройства, или доступе к нему. Демон udev может изменять владельца или разрешения узлов устройств, созданных ядром, или создавать новые узлы устройств или символические ссылки, чтобы облегчить работу разработчиков дистрибутива или системных администраторов. (Подробности смотрите в Раздел 9.3.2.2, «Создание узла устройства».) Если ядро хоста поддерживает devtmpfs, мы можем просто смонтировать devtmpfs в $LFS/dev и положиться на ядро для его заполнения.

Но в некоторых ядрах хоста отсутствует поддержка devtmpfs, эти хост-дистрибутивы используют разные методы для создания содержимого /dev. Таким образом, единственный независимый от хоста способ заполнить каталог $LFS/dev - это привязка к каталогу /dev хост-системы. Связное монтирование - это особый тип монтирования, который делает дерево каталога или файл видимым в каком-либо другом месте. Для этого используйте следующую команду:

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

7.3.2. Монтирование виртуальных файловых систем ядра

Теперь смонтируйте оставшиеся виртуальные файловые системы:

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

В некоторых хост-системах /dev/shm является символической ссылкой на /run/shm. /run tmpfs был смонтирован выше, поэтому нужно создать только каталог.

В других хост-системах /dev/shm является точкой монтирования для tmpfs. В этом случае монтирование /dev приведет только к созданию /dev/shm как каталога в среде chroot. В этой ситуации мы должны явно смонтировать 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