summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter07/kernfs.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.2-sysv/chapter07/kernfs.html')
-rw-r--r--lfs-12.2-sysv/chapter07/kernfs.html207
1 files changed, 207 insertions, 0 deletions
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 7.3. Подготовка виртуальных файловых систем ядра
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.2">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.2
+ </h4>
+ <h3>
+ Глава 7. Вход в окружение Chroot и создание дополнительных временных
+ инструментов
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="changingowner.html" title=
+ "Смена владельца">Пред.</a>
+ <p>
+ Смена владельца
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="chroot.html" title=
+ "Вход в окружение Chroot">След.</a>
+ <p>
+ Вход в окружение Chroot
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter07.html" title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-tools-kernfs" name="ch-tools-kernfs"></a>7.3. Подготовка
+ виртуальных файловых систем ядра
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Приложения, работающие в пользовательском пространстве, используют
+ различные файловые системы, созданные ядром, для взаимодействия с
+ самим ядром. Эти файловые системы являются виртуальными: для них не
+ используется дисковое пространство. Содержимое файловых систем
+ находится в памяти. Эти файловые системы должны быть смонтированы в
+ дереве каталогов $LFS, чтобы приложения могли найти их в среде
+ <span class="command"><strong>chroot</strong></span>.
+ </p>
+ <p>
+ Начните с создания каталогов, в которые будут смонтированы эти
+ виртуальные файловые системы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mkdir -pv $LFS/{dev,proc,sys,run}</kbd></pre>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-tools-bindmount" name="ch-tools-bindmount"></a>7.3.1.
+ Монтирование и заполнение /dev
+ </h2>
+ <p>
+ Во время обычной загрузки ядро автоматически монтирует файловую
+ систему <code class="systemitem">devtmpfs</code> в каталог
+ <code class="filename">/dev</code>; ядро создает узлы устройств в
+ этой виртуальной файловой системе в процессе загрузки или при
+ первом обнаружении устройства, или доступе к нему. Демон udev может
+ изменять владельца или разрешения узлов устройств, созданных ядром,
+ или создавать новые узлы устройств или символические ссылки, чтобы
+ облегчить работу разработчиков дистрибутива или системных
+ администраторов. (Подробности смотрите в <a class="xref" href=
+ "../chapter09/udev.html#ch-config-udev-device-node-creation" title=
+ "9.3.2.2. Создание узла устройства">Раздел&nbsp;9.3.2.2, «Создание
+ узла устройства»</a>.) Если ядро хоста поддерживает <code class=
+ "systemitem">devtmpfs</code>, мы можем просто смонтировать
+ <code class="systemitem">devtmpfs</code> в <code class=
+ "filename">$LFS/dev</code> и положиться на ядро для его заполнения.
+ </p>
+ <p>
+ Но в некоторых ядрах хоста отсутствует поддержка <code class=
+ "systemitem">devtmpfs</code>, эти хост-дистрибутивы используют
+ разные методы для создания содержимого <code class=
+ "filename">/dev</code>. Таким образом, единственный независимый от
+ хоста способ заполнить каталог <code class=
+ "filename">$LFS/dev</code> - это привязка к каталогу <code class=
+ "filename">/dev</code> хост-системы. Связное монтирование - это
+ особый тип монтирования, который делает дерево каталога или файл
+ видимым в каком-либо другом месте. Для этого используйте следующую
+ команду:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mount -v --bind /dev $LFS/dev</kbd></pre>
+ </div>
+ <div class="sect2" lang="ru" xml:lang="ru">
+ <h2 class="sect2">
+ <a id="ch-tools-kernfsmount" name="ch-tools-kernfsmount"></a>7.3.2.
+ Монтирование виртуальных файловых систем ядра
+ </h2>
+ <p>
+ Теперь смонтируйте оставшиеся виртуальные файловые системы:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">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</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров монтирования для devpts:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>gid=5</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр гарантирует, что все узлы устройств, созданные
+ devpts, принадлежат группе с идентификатором 5. Это
+ идентификатор, который мы будем использовать позже для группы
+ <code class="systemitem">tty</code>. Мы используем
+ идентификатор группы вместо имени, поскольку хост-система
+ может использовать другой идентификатор для своей группы
+ <code class="systemitem">tty</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>mode=0620</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр гарантирует, что все узлы устройств, созданные
+ devpts, будут иметь права 0620 (доступен для чтения и записи
+ пользователем, доступен для записи группе). Вместе с
+ вышеуказанной опцией это гарантирует, что devpts создаст узлы
+ устройств, соответствующие требованиям grantpt(), а это
+ означает, что вспомогательный файл Glibc <span class=
+ "command"><strong>pt_chown</strong></span> (который не
+ установлен по умолчанию) не требуется.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ В некоторых хост-системах <code class="filename">/dev/shm</code>
+ является символической ссылкой на каталог <code class=
+ "filename">/run/shm</code>. /run tmpfs был смонтирован выше,
+ поэтому сейчас необходимо только создать каталог с правильными
+ разрешениями.
+ </p>
+ <p>
+ В других хост-системах <code class="filename">/dev/shm</code>
+ является точкой монтирования для tmpfs. В этом случае монтирование
+ /dev приведет только к созданию /dev/shm как каталога в среде
+ chroot. В этой ситуации мы должны явно смонтировать tmpfs:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">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</kbd></pre>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="changingowner.html" title=
+ "Смена владельца">Пред.</a>
+ <p>
+ Смена владельца
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="chroot.html" title=
+ "Вход в окружение Chroot">След.</a>
+ <p>
+ Вход в окружение Chroot
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter07.html" title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>