mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-18 11:50:21 +03:00
Translated chapter07
This commit is contained in:
parent
98d02fdebb
commit
9650365d12
@ -10,12 +10,12 @@
|
||||
|
||||
<title>Вход в окружение Chroot</title>
|
||||
|
||||
<para>Теперь, когда все пакеты, необходимые для сборки остальных инструментов находятся
|
||||
<para>Теперь, когда все пакеты, необходимые для сборки остальных инструментов установлены
|
||||
в системе, пришло время войти в окружение chroot и завершить установку временных
|
||||
инструментов. Это окружение также будет использоваться для установки конечной системы.
|
||||
инструментов. Эта среда также будет использоваться для установки конечной системы.
|
||||
От имени пользователя <systemitem class="username">root</systemitem> выполните
|
||||
следующую команду для входа в окружение, которое на данный момент заполнено только
|
||||
временными инструментами:</para>
|
||||
следующую команду для входа в chroot, в которой на данный момент нет ничего, кроме
|
||||
временных инструментов:</para>
|
||||
|
||||
<screen role="nodump"><userinput>chroot "$LFS" /usr/bin/env -i \
|
||||
HOME=/root \
|
||||
@ -24,25 +24,25 @@
|
||||
PATH=/usr/bin:/usr/sbin \
|
||||
/bin/bash --login</userinput></screen>
|
||||
|
||||
<para>Параметр <parameter>-i</parameter> команды <command>env</command>
|
||||
очищает все переменные в окружении chroot. После этого переменные
|
||||
<para>Параметр <parameter>-i</parameter> команды <command>env</command>, очистит
|
||||
все переменные в среде chroot. После этого переменные
|
||||
<envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar> и
|
||||
<envar>PATH</envar> будут установлены заново. Конструкция
|
||||
<parameter>TERM=$TERM</parameter> установит переменную TERM внутри chroot
|
||||
в то же значение, что и вне chroot. Эта переменная необходима для корректной работы таким
|
||||
программам как <command>vim</command> и <command>less</command>. Если понадобятся
|
||||
в то же значение, что и вне chroot. Эта переменная необходима для корректной работы таких
|
||||
программ как <command>vim</command> и <command>less</command>. Если понадобятся
|
||||
другие переменные окружения, такие как <envar>CFLAGS</envar> или <envar>CXXFLAGS</envar>,
|
||||
то это подходящее место для их установки.</para>
|
||||
|
||||
<para>С этого момента больше нет необходимости использовать переменную
|
||||
<envar>LFS</envar>, поскольку вся работа будет ограничена файловой системой
|
||||
LFS. Это связано с тем, что оболочке Bash сообщается, что
|
||||
<filename class="directory">$LFS</filename> теперь является корневым
|
||||
каталогом (<filename class="directory">/</filename>).</para>
|
||||
LFS; команда <command>chroot</command> запускает оболочку Bash с корневым
|
||||
каталогом (<filename class="directory">/</filename>), установленным в
|
||||
<filename class="directory">$LFS</filename>.</para>
|
||||
|
||||
<para>Обратите внимание, что каталог <filename class="directory">/tools/bin</filename> не
|
||||
указан в переменной окружения <envar>PATH</envar>. Это означает, что кросс-тулчейн
|
||||
больше не будет использоваться внутри chroot окружения.</para>
|
||||
больше не будет использоваться.</para>
|
||||
|
||||
<para>Обратите внимание, что в командной строке <command>bash</command> будет указано
|
||||
<computeroutput>I have no name!</computeroutput>. Это нормально, поскольку файл
|
||||
|
@ -18,10 +18,10 @@
|
||||
|
||||
<screen><userinput>rm -rf /usr/share/{info,man,doc}/*</userinput></screen>
|
||||
|
||||
<para>Во-вторых, файлы .la библиотеки libtool полезны только при компоновке
|
||||
статических библиотек. Они не нужны и потенциально опасны при использовании
|
||||
динамических библиотек, особенно при использовании систем сборки, отличных от
|
||||
autotools. Удалите эти файлы, пока вы находитесь в chroot:</para>
|
||||
<para>Во-вторых, в современных системах Linux файлы .la библиотеки libtool полезны
|
||||
только для libltdl. Никакие библиотеки в LFS не загружаются с помощью libltdl.
|
||||
Известно, что некоторые файлы .la могут привести к сбою во время сборки
|
||||
пакетов BLFS. Удалите эти файлы сейчас:</para>
|
||||
|
||||
<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
|
||||
|
||||
@ -42,8 +42,8 @@
|
||||
последующего повторного использования. В случае фатальных сбоев в следующих
|
||||
главах часто оказывается, что удалить все и начать заново (более осторожно) —
|
||||
лучший вариант восстановления. К сожалению, все временные файлы также будут удалены.
|
||||
Чтобы не тратить лишнее время на переделку того, что было успешно собрано, полезно
|
||||
создать резервную копию текущей системы LFS.
|
||||
Чтобы не тратить лишнее время на повторную сборку того, что было успешно собрано,
|
||||
полезно создать резервную копию текущей системы LFS.
|
||||
</para>
|
||||
|
||||
<note><para>
|
||||
@ -57,9 +57,8 @@
|
||||
Следующие шаги выполняются вне среды chroot. Это означает, что прежде чем
|
||||
продолжить вы должны покинуть среду chroot. Причиной этого является то,
|
||||
что необходимо получить доступ к расположению файловой системы за пределами
|
||||
среды chroot для хранения/чтения архива резервных копий, который не следует
|
||||
помещать в иерархию <filename class="directory">$LFS</filename> из соображений
|
||||
безопасности.
|
||||
среды chroot для хранения/чтения архива резервных копий, который не должен
|
||||
размещаться в иерархии <filename class="directory">$LFS</filename>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -72,9 +71,9 @@
|
||||
<para>
|
||||
Все следующие инструкции выполняются пользователем
|
||||
<systemitem class="username">root</systemitem> в вашей хост-системе.
|
||||
Будьте особенно внимательны к командам, которые вы собираетесь запускать,
|
||||
так как ошибки здесь могут изменить вашу хост-систему. Имейте в виду,
|
||||
что переменная окружения <envar>LFS</envar> по умолчанию установлена
|
||||
Будьте особенно внимательны к командам, которые вы собираетесь запускать,
|
||||
поскольку ошибки, допущенные здесь, могут изменить вашу хост-систему. Имейте
|
||||
в виду, что переменная окружения <envar>LFS</envar> по умолчанию установлена
|
||||
для пользователя <systemitem class="username">lfs</systemitem>, но
|
||||
может не быть установлена для <systemitem class="username">root</systemitem>.
|
||||
</para>
|
||||
@ -90,7 +89,8 @@
|
||||
|
||||
<para>Перед созданием резервной копии размонтируйте виртуальные файловые системы:</para>
|
||||
|
||||
<screen role="nodump"><userinput>umount $LFS/dev/pts
|
||||
<screen role="nodump"><userinput>mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
|
||||
umount $LFS/dev/pts
|
||||
umount $LFS/{sys,proc,run,dev}</userinput></screen>
|
||||
|
||||
<para>
|
||||
@ -102,13 +102,9 @@ umount $LFS/{sys,proc,run,dev}</userinput></screen>
|
||||
<para>
|
||||
Обратите внимание, что в приведенных ниже инструкциях указан домашний каталог
|
||||
пользователя <systemitem class="username">root</systemitem> хост-системы,
|
||||
который обычно находится в корневой файловой системе.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Замените <envar>$HOME</envar> каталогом по вашему выбору, если вы не хотите,
|
||||
чтобы резервная копия хранилась в домашнем каталоге пользователя <systemitem
|
||||
class="username">root</systemitem>.
|
||||
который обычно находится в корневой файловой системе. Замените <envar>$HOME</envar>
|
||||
каталогом на ваш выбор, если вы не хотите, чтобы резервная копия хранилась
|
||||
в домашнем каталоге пользователя <systemitem class="username">root</systemitem>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -143,7 +139,7 @@ tar -cJpf $HOME/lfs-temp-tools-&version;.tar.xz .</userinput></screen>
|
||||
время на восстановление. Поскольку исходники находятся в папке
|
||||
<filename class="directory">$LFS</filename>, они также включены в архив резервной
|
||||
копии, поэтому их не нужно загружать повторно. Убедившись, что переменная <envar>$LFS</envar>
|
||||
настроена правильно, восстановите резервную копию, выполнив следующие команды:
|
||||
настроена правильно, вы можете восстановить резервную копию, выполнив следующие команды:
|
||||
</para>
|
||||
|
||||
<!-- Make the following look different so users don't blindly run the
|
||||
@ -159,7 +155,7 @@ rm -rf ./*
|
||||
tar -xpf $HOME/lfs-temp-tools-&version;.tar.xz</computeroutput></screen>
|
||||
|
||||
<para>
|
||||
Еще раз проверьте, правильно ли настроено окружение, и продолжайте сборку системы.
|
||||
Еще раз проверьте, правильно ли настроено окружение, и продолжайте сборку остальной части системы.
|
||||
</para>
|
||||
|
||||
<important>
|
||||
|
@ -38,7 +38,7 @@
|
||||
систем в файле <filename>/etc/mtab</filename>. Современные ядра хранят этот список
|
||||
внутри себя и предоставляют его пользователю через файловую систему <filename
|
||||
class="directory">/proc</filename>. Чтобы удовлетворять требованиям утилит, которые
|
||||
ожидают наличие <filename>/etc/mtab</filename> создайте следующую символическую ссылку:</para>
|
||||
ожидают наличия <filename>/etc/mtab</filename>, создайте следующую символическую ссылку:</para>
|
||||
|
||||
<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
|
||||
|
||||
@ -46,8 +46,8 @@
|
||||
некоторые наборы тестов, а также один из файлов конфигурации Perl:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/hosts << EOF
|
||||
127.0.0.1 localhost $(hostname)
|
||||
::1 localhost
|
||||
<literal>127.0.0.1 localhost $(hostname)
|
||||
::1 localhost</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>Чтобы пользователь <systemitem class="username">root</systemitem> мог войти в
|
||||
@ -153,10 +153,10 @@ users:x:999:
|
||||
nogroup:x:65534:</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>Созданные группы не являются частью какого-либо стандарта — эти группы
|
||||
частично определяются требованиями конфигурации Udev в главе
|
||||
9, и частично соглашением, используемым рядом существующих Linux
|
||||
дистрибутивов. Кроме того, некоторые наборы тестов зависят от конкретных пользователей или
|
||||
<para>Созданные группы не являются частью какого-либо стандарта — это группы,
|
||||
определяемые частично требованиями конфигурации Udev в главе 9, а частично
|
||||
общими соглашениями, используемыми в ряде существующих дистрибутивов Linux.
|
||||
Кроме того, некоторые наборы тестов зависят от конкретных пользователей или
|
||||
групп. Специфкация LSB (доступна по адресу <ulink
|
||||
url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) рекомендует, чтобы,
|
||||
помимо группы <systemitem class="groupname">root</systemitem> с
|
||||
@ -177,7 +177,7 @@ EOF</userinput></screen>
|
||||
и <systemitem class="groupname">nogroup</systemitem> для того, чтобы избежать
|
||||
несопоставленных идентификаторов. Другие дистрибутивы могут обрабатывать этот
|
||||
идентификатор по-разному, поэтому любая переносимая программа не должна зависеть
|
||||
от этого.</para>
|
||||
от этого присвоения.</para>
|
||||
|
||||
<para>Для некоторых тестов в <xref linkend="chapter-building-system"/> требуется
|
||||
обычный пользователь. Добавим такого пользователя здесь и удалим эту учетную запись
|
||||
|
@ -10,10 +10,11 @@
|
||||
|
||||
<title>Создание каталогов</title>
|
||||
|
||||
<para>Пришло время создать структуру каталогов для файловой системы LFS.</para>
|
||||
<para>Пришло время создать полную структуру каталогов в файловой системе LFS.</para>
|
||||
|
||||
<note><para>Некоторые каталоги были созданы ранее с помощью явных инструкций или
|
||||
при установке некоторых пакетов. Они повторяются ниже для полноты картины.</para></note>
|
||||
<note><para>Некоторые из каталогов, упомянутых в этом разделе, возможно, уже
|
||||
были созданы ранее с помощью явных инструкций или при установке некоторых пакетов.
|
||||
Они повторяются ниже для полноты картины.</para></note>
|
||||
|
||||
<para>Создайте несколько каталогов, которые не входили в ограниченный набор,
|
||||
используемый в предыдущих главах, выполнив следующую команду:</para>
|
||||
@ -39,29 +40,40 @@ ln -sfv /run/lock /var/lock
|
||||
install -dv -m 0750 /root
|
||||
install -dv -m 1777 /tmp /var/tmp</userinput></screen>
|
||||
|
||||
<para>По умолчанию каталоги создаются с правами 755, но это нежелательно для
|
||||
всех каталогов. В приведенных выше командах вносятся два изменения — одно
|
||||
в домашний каталог пользователя <systemitem
|
||||
class="username">root</systemitem>, а другое в каталог для временных файлов.</para>
|
||||
<para>По умолчанию каталоги создаются с правами 755, но это нежелательно делать
|
||||
для всех каталогов. В приведенных выше командах вносятся два изменения — одно
|
||||
в домашний каталог пользователя <systemitem class="username">root</systemitem>,
|
||||
а другое в каталоги для временных файлов.</para>
|
||||
|
||||
<para>Первое изменение гарантирует, что никто не сможет войти в каталог
|
||||
<filename class="directory">/root</filename> — но он так же, как обычный пользователь
|
||||
сможет работать в своем домашнем каталоге. Второе изменение гарантирует, что любой
|
||||
пользователь может писать в каталоги <filename class="directory">/tmp</filename> и <filename
|
||||
class="directory">/var/tmp</filename>, но не может удалять из них файлы другого пользователя.
|
||||
Последнее запрещено так называемым <quote>sticky bit (липким битом)</quote>, старшим
|
||||
битом (1) в битовой маске 1777</para>
|
||||
<filename class="directory">/root</filename> — точно так же, как обычный
|
||||
пользователь сделал бы это со своим собственным домашним каталогом. Второе изменение
|
||||
гарантирует, что любой пользователь может писать в каталоги <filename class="directory">/tmp</filename>
|
||||
и <filename class="directory">/var/tmp</filename>, но не может удалять из них файлы
|
||||
другого пользователя. Последнее запрещено так называемым <quote>sticky bit (липким битом)</quote>,
|
||||
старшим битом (1) в битовой маске 1777</para>
|
||||
|
||||
<sect2>
|
||||
<title>Примечание о соответствии требованиям FHS</title>
|
||||
|
||||
<para>Дерево каталогов основано на стандарте иерархии файловой системы (FHS)
|
||||
<para>Это дерево каталогов основано на стандарте иерархии файловой системы (FHS)
|
||||
(доступен по адресу <ulink
|
||||
url="https://refspecs.linuxfoundation.org/fhs.shtml"/>). FHS также указывает, что наличие
|
||||
некоторых каталогов необязательно, например, <filename
|
||||
class="directory">/usr/local/games</filename> и <filename
|
||||
class="directory">/usr/share/games</filename>. Мы создаем только необходимые каталоги.
|
||||
Несмотря на это, вы имеете полное право создать их.</para>
|
||||
class="directory">/usr/share/games</filename>. В LFS мы создаем только те каталоги,
|
||||
которые действительно необходимы. Однако, не стесняйтесь создавать дополнительные
|
||||
каталоги, если хотите.</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
FHS не требует наличия каталога <filename class="directory">/usr/lib64</filename>,
|
||||
и редакторы LFS решили его не использовать. Чтобы инструкции в LFS и BLFS работали
|
||||
корректно, крайне важно, чтобы этот каталог не существовал. Время от времени вам
|
||||
следует проверять, что он не существует, потому что его легко создать непреднамеренно,
|
||||
и это, вероятно, приведет к поломке вашей системы.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
@ -18,15 +18,15 @@
|
||||
</para>
|
||||
|
||||
<para>Для правильной работы изолированной среды необходимо установить связь с
|
||||
работающим ядром. Это делается через так называемые <emphasis>виртуальные файловые
|
||||
системы ядра</emphasis>, которые необходимо монтировать при входе в среду chroot.
|
||||
работающим ядром. Это делается с помощью так называемых <emphasis>виртуальных файловых
|
||||
систем ядра</emphasis>, которые будут смонтированы перед входом в среду chroot.
|
||||
Вы можете проверить, смонтированы ли они, выполнив команду <command>findmnt</command>.</para>
|
||||
|
||||
<para>До <xref linkend="ch-tools-chroot"/> команды должны выполняться от имени
|
||||
<systemitem class="username">root</systemitem> с установленной переменной
|
||||
<envar>LFS</envar>. После входа в chroot все команды выполняются от имени &root;,
|
||||
к счастью, без доступа к операционной системе компьютера, на котором вы собираете LFS.
|
||||
В любом случае будьте осторожны, так как с помощью ошибочно введенных команд легко
|
||||
разрушить всю систему LFS.</para>
|
||||
В любом случае будьте осторожны, так как неверными командами легко разрушить всю
|
||||
систему LFS.</para>
|
||||
|
||||
</sect1>
|
||||
|
@ -14,12 +14,15 @@
|
||||
<primary sortas="e-/dev/">/dev/*</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>Различные файловые системы, экспортируемые ядром, используются для обмена
|
||||
данными с самим ядром и из него. Эти файловые системы являются виртуальными в
|
||||
том смысле, что для них не используется дисковое пространство. Содержимое
|
||||
файловых систем хранится в памяти.</para>
|
||||
<para>Приложения, работающие в пользовательском пространстве, используют различные
|
||||
файловые системы, созданные ядром, для взаимодействия с самим ядром. Эти
|
||||
файловые системы являются виртуальными: для них не используется дисковое пространство.
|
||||
Содержимое файловых систем находится в памяти. Эти файловые системы должны быть
|
||||
смонтированы в дереве каталогов $LFS, чтобы приложения могли найти их в среде
|
||||
<command>chroot</command>.</para>
|
||||
|
||||
<para>Сначала создайте каталоги, в которые будут смонтированы файловые системы:</para>
|
||||
<para>Начните с создания каталогов, в которые будут смонтированы эти виртуальные
|
||||
файловые системы:</para>
|
||||
|
||||
<screen><userinput>mkdir -pv $LFS/{dev,proc,sys,run}</userinput></screen>
|
||||
|
||||
@ -27,17 +30,26 @@
|
||||
<title>Монтирование и заполнение /dev</title>
|
||||
|
||||
<para>Во время обычной загрузки ядро автоматически монтирует файловую систему
|
||||
<systemitem class="filesystem">devtmpfs</systemitem> в каталоге
|
||||
<filename class="directory">/dev</filename>, это позволяет
|
||||
динамически создавать устройства в этой виртуальной файловой системе по мере их
|
||||
обнаружения или получения доступа. Создание устройств обычно выполняется во время
|
||||
процесса загрузки ядром и Udev.
|
||||
Поскольку наша новая система еще не имеет Udev и не загружена, необходимо смонтировать
|
||||
и заполнить <filename class="directory">/dev</filename> вручную.Это достигается
|
||||
путем связного монтирования каталога
|
||||
<filename class="directory">/dev</filename> хост-системы. Связное монтирование - это особый
|
||||
тип монтирования, позволяющий создавать зеркальный каталог или точку монтирования в
|
||||
какое-либо другое место. Используйте следующую команду для этого:</para>
|
||||
<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>
|
||||
|
||||
<screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen>
|
||||
|
||||
@ -85,8 +97,15 @@ mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
|
||||
символической ссылкой на <filename class="directory">/run/shm</filename>.
|
||||
/run tmpfs был смонтирован выше, поэтому нужно создать только каталог.</para>
|
||||
|
||||
<para>В других хост-системах <filename>/dev/shm</filename> является точкой
|
||||
монтирования для tmpfs. В этом случае монтирование /dev приведет только к созданию
|
||||
/dev/shm как каталога в среде chroot. В этой ситуации мы должны явно смонтировать
|
||||
tmpfs:</para>
|
||||
|
||||
<screen><userinput>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</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
Loading…
Reference in New Issue
Block a user