diff options
author | Sn4il <sn4il@thedroth.rocks> | 2024-03-06 10:25:41 +0300 |
---|---|---|
committer | Sn4il <sn4il@thedroth.rocks> | 2024-03-06 10:25:41 +0300 |
commit | 5a6834585c43296c2207f5f251d3d5c237c7c8d2 (patch) | |
tree | 5c3f9adc4c5fd0b3bdc3b017b021a36016c0f15b /lfs-12.1-sysv/chapter07/kernfs.html | |
parent | 2b6ec04f001bbdf660476a1275d90075d746833c (diff) | |
download | sn4il-site-5a6834585c43296c2207f5f251d3d5c237c7c8d2.tar.gz sn4il-site-5a6834585c43296c2207f5f251d3d5c237c7c8d2.zip |
Update LFS mirror
Diffstat (limited to 'lfs-12.1-sysv/chapter07/kernfs.html')
-rw-r--r-- | lfs-12.1-sysv/chapter07/kernfs.html | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/lfs-12.1-sysv/chapter07/kernfs.html b/lfs-12.1-sysv/chapter07/kernfs.html new file mode 100644 index 0000000..f30a70e --- /dev/null +++ b/lfs-12.1-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.1"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.1 + </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.1">Начало</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. Создание узла устройства">Раздел 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.1">Начало</a> + </li> + </ul> + </div> + </body> +</html> |