2022-05-27 00:55:43 +03:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
|
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
|
|
|
%general-entities;
|
|
|
|
|
]>
|
|
|
|
|
|
|
|
|
|
<sect1 id="ch-tools-kernfs">
|
|
|
|
|
<?dbhtml filename="kernfs.html"?>
|
|
|
|
|
|
|
|
|
|
<title>Подготовка виртуальных файловых систем ядра</title>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-kernfs">
|
|
|
|
|
<primary sortas="e-/dev/">/dev/*</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<para>Приложения, работающие в пользовательском пространстве, используют различные
|
|
|
|
|
файловые системы, созданные ядром, для взаимодействия с самим ядром. Эти
|
|
|
|
|
файловые системы являются виртуальными: для них не используется дисковое пространство.
|
|
|
|
|
Содержимое файловых систем находится в памяти. Эти файловые системы должны быть
|
|
|
|
|
смонтированы в дереве каталогов $LFS, чтобы приложения могли найти их в среде
|
|
|
|
|
<command>chroot</command>.</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<para>Начните с создания каталогов, в которые будут смонтированы эти виртуальные
|
|
|
|
|
файловые системы:</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput>mkdir -pv $LFS/{dev,proc,sys,run}</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<sect2 id="ch-tools-bindmount">
|
|
|
|
|
<title>Монтирование и заполнение /dev</title>
|
|
|
|
|
|
|
|
|
|
<para>Во время обычной загрузки ядро автоматически монтирует файловую систему
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<systemitem class="filesystem">devtmpfs</systemitem> в каталог
|
|
|
|
|
<filename class="directory">/dev</filename>; ядро создает узлы устройств в этой
|
|
|
|
|
виртуальной файловой системе в процессе загрузки или при первом обнаружении устройства,
|
|
|
|
|
или доступе к нему. Демон udev может изменять владельца или разрешения
|
|
|
|
|
узлов устройств, созданных ядром, или создавать новые узлы устройств или
|
|
|
|
|
символические ссылки, чтобы облегчить работу разработчиков дистрибутива или
|
|
|
|
|
системных администраторов. (Подробности смотрите в
|
|
|
|
|
<xref linkend='ch-config-udev-device-node-creation'/>.) Если ядро хоста
|
|
|
|
|
поддерживает &devtmpfs;, мы можем просто смонтировать &devtmpfs; в
|
|
|
|
|
<filename class='directory'>$LFS/dev</filename> и положиться на ядро для его
|
|
|
|
|
заполнения.</para>
|
|
|
|
|
|
|
|
|
|
<para>Но в некоторых ядрах хоста отсутствует поддержка &devtmpfs;,
|
|
|
|
|
эти хост-дистрибутивы используют разные методы для создания содержимого
|
|
|
|
|
<filename class="directory">/dev</filename>. Таким образом,
|
|
|
|
|
единственный независимый от хоста способ заполнить каталог
|
|
|
|
|
<filename class="directory">$LFS/dev</filename> - это привязка к каталогу
|
|
|
|
|
<filename class="directory">/dev</filename> хост-системы. Связное монтирование -
|
|
|
|
|
это особый тип монтирования, который делает дерево каталога или файл видимым
|
|
|
|
|
в каком-либо другом месте. Для этого используйте следующую команду:</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2 id="ch-tools-kernfsmount">
|
|
|
|
|
<title>Монтирование виртуальных файловых систем ядра</title>
|
|
|
|
|
|
|
|
|
|
<para>Теперь смонтируйте оставшиеся виртуальные файловые системы:</para>
|
|
|
|
|
|
2024-02-06 13:12:27 +03:00
|
|
|
|
<!-- Do not put any option after $LFS/${mountpoint} or jhalfs cannot
|
|
|
|
|
handle it! -->
|
|
|
|
|
|
|
|
|
|
<screen><userinput>mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
|
2022-05-27 00:55:43 +03:00
|
|
|
|
mount -vt proc proc $LFS/proc
|
|
|
|
|
mount -vt sysfs sysfs $LFS/sys
|
|
|
|
|
mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
|
2024-02-06 13:12:27 +03:00
|
|
|
|
|
2022-05-27 00:55:43 +03:00
|
|
|
|
<variablelist>
|
2024-02-06 13:12:27 +03:00
|
|
|
|
<title>Значение параметров монтирования для devpts:</title>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>gid=5</parameter></term>
|
|
|
|
|
<listitem>
|
2024-02-06 13:12:27 +03:00
|
|
|
|
<para>Этот параметр гарантирует, что все узлы устройств, созданные devpts, принадлежат
|
|
|
|
|
группе с идентификатором 5. Это идентификатор, который мы будем использовать позже для
|
|
|
|
|
группы <systemitem class="groupname">tty</systemitem>. Мы используем идентификатор группы
|
|
|
|
|
вместо имени, поскольку хост-система может использовать другой идентификатор для своей
|
|
|
|
|
группы <systemitem class="groupname">tty</systemitem>.</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>mode=0620</parameter></term>
|
|
|
|
|
<listitem>
|
2024-02-06 13:12:27 +03:00
|
|
|
|
<para>Этот параметр гарантирует, что все узлы устройств, созданные devpts, будут иметь
|
|
|
|
|
права 0620 (доступен для чтения и записи пользователем, доступен для записи группе).
|
|
|
|
|
Вместе с вышеуказанной опцией это гарантирует, что devpts создаст узлы устройств,
|
|
|
|
|
соответствующие требованиям grantpt(), а это означает, что вспомогательный файл Glibc
|
|
|
|
|
<command>pt_chown</command> (который не установлен по умолчанию) не требуется.</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
</variablelist>
|
2024-02-06 13:12:27 +03:00
|
|
|
|
|
|
|
|
|
<para>В некоторых хост-системах <filename>/dev/shm</filename> является
|
|
|
|
|
символической ссылкой на каталог <filename class="directory">/run/shm</filename>.
|
|
|
|
|
/run tmpfs был смонтирован выше, поэтому сейчас необходимо только создать каталог
|
|
|
|
|
с правильными разрешениями.</para>
|
2022-05-27 00:55:43 +03:00
|
|
|
|
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<para>В других хост-системах <filename>/dev/shm</filename> является точкой
|
2024-02-06 13:12:27 +03:00
|
|
|
|
монтирования для tmpfs. В этом случае монтирование /dev приведет только к созданию
|
2023-06-30 01:00:18 +03:00
|
|
|
|
/dev/shm как каталога в среде chroot. В этой ситуации мы должны явно смонтировать
|
|
|
|
|
tmpfs:</para>
|
|
|
|
|
|
2022-05-27 00:55:43 +03:00
|
|
|
|
<screen><userinput>if [ -h $LFS/dev/shm ]; then
|
2024-02-06 13:12:27 +03:00
|
|
|
|
install -v -d -m 1777 $LFS$(realpath /dev/shm)
|
2023-06-30 01:00:18 +03:00
|
|
|
|
else
|
2023-09-12 21:19:45 +03:00
|
|
|
|
mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
|
2022-05-27 00:55:43 +03:00
|
|
|
|
fi</userinput></screen>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
</sect1>
|