From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.2 --- lfs-12.2-sysv/chapter07/kernfs.html | 207 ++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 lfs-12.2-sysv/chapter07/kernfs.html (limited to 'lfs-12.2-sysv/chapter07/kernfs.html') diff --git a/lfs-12.2-sysv/chapter07/kernfs.html b/lfs-12.2-sysv/chapter07/kernfs.html new file mode 100644 index 0000000..8023295 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/kernfs.html @@ -0,0 +1,207 @@ + + + + + + 7.3. Подготовка виртуальных файловых систем ядра + + + + + + + + +

+ 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 -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
+mount -vt proc proc $LFS/proc
+mount -vt sysfs sysfs $LFS/sys
+mount -vt tmpfs tmpfs $LFS/run
+
+

+ Значение параметров монтирования для devpts: +

+
+
+ gid=5 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, созданные + devpts, принадлежат группе с идентификатором 5. Это + идентификатор, который мы будем использовать позже для группы + tty. Мы используем + идентификатор группы вместо имени, поскольку хост-система + может использовать другой идентификатор для своей группы + tty. +

+
+
+ mode=0620 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, созданные + devpts, будут иметь права 0620 (доступен для чтения и записи + пользователем, доступен для записи группе). Вместе с + вышеуказанной опцией это гарантирует, что devpts создаст узлы + устройств, соответствующие требованиям grantpt(), а это + означает, что вспомогательный файл Glibc pt_chown (который не + установлен по умолчанию) не требуется. +

+
+
+
+

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

+

+ В других хост-системах /dev/shm + является точкой монтирования для tmpfs. В этом случае монтирование + /dev приведет только к созданию /dev/shm как каталога в среде + chroot. В этой ситуации мы должны явно смонтировать tmpfs: +

+
if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
+fi
+
+
+ + + -- cgit v1.2.3