summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter04
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.2-sysv/chapter04')
-rw-r--r--lfs-12.2-sysv/chapter04/aboutsbus.html184
-rw-r--r--lfs-12.2-sysv/chapter04/abouttestsuites.html132
-rw-r--r--lfs-12.2-sysv/chapter04/addinguser.html209
-rw-r--r--lfs-12.2-sysv/chapter04/chapter04.html108
-rw-r--r--lfs-12.2-sysv/chapter04/creatingminlayout.html142
-rw-r--r--lfs-12.2-sysv/chapter04/introduction.html92
-rw-r--r--lfs-12.2-sysv/chapter04/settingenvironment.html404
7 files changed, 1271 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter04/aboutsbus.html b/lfs-12.2-sysv/chapter04/aboutsbus.html
new file mode 100644
index 0000000..82bd9b9
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/aboutsbus.html
@@ -0,0 +1,184 @@
+<!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>
+ 4.5. О SBU (Стандартная единица времени сборки)
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="settingenvironment.html" title=
+ "Настройка окружения">Пред.</a>
+ <p>
+ Настройка окружения
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="abouttestsuites.html" title=
+ "О наборах тестов">След.</a>
+ <p>
+ О наборах тестов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-preps-aboutsbus" name="ch-preps-aboutsbus"></a>4.5. О SBU
+ (Стандартная единица времени сборки)
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Многие люди хотели бы знать заранее, сколько примерно времени
+ потребуется для компиляции и установки каждого пакета. Поскольку
+ Linux From Scratch может быть собран на различных системах,
+ невозможно дать точную оценку времени. Сборка самого большого пакета
+ (gcc) займет около 5 минут на быстрых системах, но может занять
+ несколько дней на более медленных компьютерах! Вместо фактического
+ времени в книге используется показатель "стандартная единица времени
+ сборки" (SBU).
+ </p>
+ <p>
+ Показатель SBU рассчитывается следующим образом. Первым пакетом,
+ который нужно скомпилировать, является binutils в <a class="xref"
+ href="../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a>. Время, необходимое
+ для компиляции этого пакета с использованием одного ядра, будет
+ называться стандартной единицей времени сборки или SBU. Время
+ компиляции остальных пакетов будет рассчитано относительно этого
+ времени.
+ </p>
+ <p>
+ Например, рассмотрим пакет, время компиляции которого составляет 4,5
+ SBU. Это означает, что если вашей системе потребовалось 4 минуты для
+ компиляции и сборки первого прохода binutils, то для сборки этого
+ пакета потребуется <span class="emphasis"><em>примерно</em></span> 18
+ минут. К счастью, в большинстве случаев, время сборки меньше, чем у
+ binutils.
+ </p>
+ <p>
+ В целом, величина SBU не совсем точна, поскольку она зависит от
+ множества факторов, начиная от версии GCC хост-системы. Она приведены
+ здесь, чтобы дать оценку того, сколько времени может потребоваться
+ для сборки пакета, но в некоторых случаях цифры могут отличаться на
+ десятки минут.
+ </p>
+ <p>
+ В современных материнских платах есть возможность управлять тактовой
+ частотой процессора. Это можно сделать с помощью команды, такой как,
+ <span class="command"><strong>powerprofilesctl</strong></span>.
+ Данная возможность отсутствует в LFS, но может быть доступна в
+ хост-дистрибутиве. После сборки LFS управление производительностью и
+ электропитанием можно добавить в систему с помощью инструкций,
+ описанных на странице <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.2/sysutils/power-profiles-daemon.html">
+ BLFS power-profiles-daemon</a>.
+ </p>
+ <p>
+ Перед измерением времени сборки любого пакета рекомендуется
+ задействовать профиль энергопотребления системы, настроенный на
+ максимальную производительность (и максимальное энергопотребление).
+ </p>
+ <p>
+ В противном случае измеренное значение SBU может быть неточным,
+ поскольку система может по-разному реагировать на сборку <a class=
+ "xref" href="../chapter05/binutils-pass1.html" title=
+ "5.2. Binutils-2.43.1 - Проход 1">binutils-pass1</a> или других
+ пакетов.
+ </p>
+ <p>
+ Имейте в виду, что даже если для обоих пакетов используется один и
+ тот же профиль, все равно могут возникнуть существенные неточности,
+ поскольку система может реагировать медленнее, если система
+ простаивает при запуске процедуры сборки. Установка для профиля
+ питания режима <span class="quote">«<span class=
+ "quote">производительность</span>»</span> сведет к минимуму эту
+ проблему. И, очевидно, это также ускорит сборку LFS.
+ </p>
+ <p>
+ Если <span class="command"><strong>powerprofilesctl</strong></span>
+ доступен, введите команду <span class=
+ "command"><strong>powerprofilesctl set performance</strong></span>,
+ чтобы выбрать профиль <code class=
+ "literal">производительность</code>. Некоторые дистрибутивы для
+ управления профилями предоставляют команду <span class=
+ "command"><strong>tuned-adm</strong></span> вместо <span class=
+ "command"><strong>powerprofilesctl</strong></span>, в этих
+ дистрибутивах введите команду <span class="command"><strong>tuned-adm
+ profile throughput-performance</strong></span>, чтобы выбрать профиль
+ <code class="literal">производительность</code>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Когда используется несколько ядер, единицы измерения SBU будут
+ различаться еще больше, чем обычно. В некоторых случаях make просто
+ завершится ошибкой. Анализ выходных данных процесса сборки также
+ будет более сложным, поскольку строки разных потоков будут
+ чередоваться. Если вы столкнулись с проблемой на этапе сборки,
+ вернитесь к сборке на одном ядре, чтобы проанализировать сообщения
+ об ошибках.
+ </p>
+ <p>
+ Представленные здесь значения времени для всех пакетов (за
+ исключением <a class="xref" href="../chapter05/binutils-pass1.html"
+ title="5.2. Binutils-2.43.1 - Проход 1">binutils-pass1</a>, который
+ собирается на одном ядре) рассчитаны при использовании четырех ядер
+ (-j4). Время, указанное в главе 8, также включает время выполнения
+ регрессионных тестов для пакета, если не указано иное.
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="settingenvironment.html" title=
+ "Настройка окружения">Пред.</a>
+ <p>
+ Настройка окружения
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="abouttestsuites.html" title=
+ "О наборах тестов">След.</a>
+ <p>
+ О наборах тестов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/abouttestsuites.html b/lfs-12.2-sysv/chapter04/abouttestsuites.html
new file mode 100644
index 0000000..694809e
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/abouttestsuites.html
@@ -0,0 +1,132 @@
+<!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>
+ 4.6. О наборах тестов
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="aboutsbus.html" title=
+ "О SBU (Стандартная единица времени сборки)">Пред.</a>
+ <p>
+ О SBU (Стандартная единица времени сборки)
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../part3.html" title=
+ "Сборка кросс-компилятора и набора временных инструментов">След.</a>
+ <p>
+ Сборка кросс-компилятора и набора временных инструментов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-preps-abouttestsuites" name=
+ "ch-preps-abouttestsuites"></a>4.6. О наборах тестов
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Большинство пакетов предоставляют набор тестов. Запуск набора тестов
+ для только что собранного пакета — хорошая идея, потому что он может
+ обеспечить <span class="quote">«<span class="quote">проверку
+ работоспособности</span>»</span>, указывающую, что все скомпилировано
+ правильно. Набор тестов, который проходит свой набор проверок, обычно
+ доказывает, что пакет работает так, как задумал разработчик. Однако
+ это не гарантирует, что пакет полностью без ошибок.
+ </p>
+ <p>
+ Некоторые наборы тестов более важны, чем другие. Например, наборы
+ тестов для основных инструментов — GCC, binutils и glibc — имеют
+ первостепенное значение из-за их центральной роли в правильно
+ функционирующей системе. Выполнение наборов тестов для GCC и glibc
+ может занять очень много времени, особенно на медленном оборудовании,
+ но их выполнение настоятельно рекомендуется.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Запуск наборов тестов, описанных в <a class="xref" href=
+ "../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a> и <a class="xref"
+ href="../chapter06/chapter06.html" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>,
+ не имеет смысла, поскольку программы компилируются с помощью
+ кросс-компилятора, они, вероятно, не могут работать на хосте
+ сборки.
+ </p>
+ </div>
+ <p>
+ Распространенной проблемой при запуске наборов тестов для binutils и
+ GCC является нехватка псевдотерминалов (PTY). Это может привести к
+ большому количеству неудачных тестов. Причин может быть несколько, но
+ наиболее вероятная причина заключается в том, что в хост-системе
+ неправильно настроена файловая система <code class=
+ "systemitem">devpts</code>. Этот вопрос более подробно обсуждается на
+ странице <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys">https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys</a>.
+ </p>
+ <p>
+ Иногда наборы тестов не работают, по причинам, о которых знают
+ разработчики и которые они считают некритичными. Просмотрите журналы,
+ расположенные по адресу <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/lfs/build-logs/12.2/">https://mirror.linuxfromscratch.ru/lfs/build-logs/12.2/</a>,
+ чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех
+ наборов тестов, описанных в книге.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="aboutsbus.html" title=
+ "О SBU (Стандартная единица времени сборки)">Пред.</a>
+ <p>
+ О SBU (Стандартная единица времени сборки)
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="../part3.html" title=
+ "Сборка кросс-компилятора и набора временных инструментов">След.</a>
+ <p>
+ Сборка кросс-компилятора и набора временных инструментов
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/addinguser.html b/lfs-12.2-sysv/chapter04/addinguser.html
new file mode 100644
index 0000000..871c9f0
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/addinguser.html
@@ -0,0 +1,209 @@
+<!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>
+ 4.3. Создание пользователя LFS
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="creatingminlayout.html" title=
+ "Создание ограниченной иерархии папок в файловой системе LFS">Пред.</a>
+ <p>
+ Создание ограниченной иерархии папок в файловой системе LFS
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="settingenvironment.html" title=
+ "Настройка окружения">След.</a>
+ <p>
+ Настройка окружения
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-preps-addinguser" name="ch-preps-addinguser"></a>4.3.
+ Создание пользователя LFS
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ При входе в систему под учетной записью <code class=
+ "systemitem">root</code> допущение одной ошибки может привести к
+ повреждению или разрушению системы. Поэтому пакеты в следующих двух
+ главах собираются из-под учетной записи непривилегированного
+ пользователя. Вы можете использовать свое собственное имя
+ пользователя, но чтобы упростить настройку рабочей среды, создайте
+ нового пользователя с именем <code class="systemitem">lfs</code>,
+ который является членом одноименной группы и выполняйте команды
+ из-под этой учетной записи в процессе установки. От имени
+ пользователя <code class="systemitem">root</code> выполните следующие
+ команды, чтобы добавить нового пользователя:
+ </p>
+ <pre class="userinput"><kbd class="command">groupadd lfs
+useradd -s /bin/bash -g lfs -m -k /dev/null lfs</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение параметров командной строки:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class="parameter"><code>-s
+ /bin/bash</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Устанавливает <span class=
+ "command"><strong>bash</strong></span> оболочкой по умолчанию
+ для пользователя <code class="systemitem">lfs</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>-g
+ lfs</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Эта опция добавляет пользователя <code class=
+ "systemitem">lfs</code> в группу <code class=
+ "systemitem">lfs</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>-m</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Создает домашний каталог для пользователя <code class=
+ "systemitem">lfs</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>-k
+ /dev/null</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр предотвращает возможное копирование файлов из
+ предустановленного набора каталогов (по умолчанию <code class=
+ "filename">/etc/skel</code>) путем изменения местоположения
+ ввода на специальное null-устройство.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>lfs</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Это имя нового пользователя.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ Если вы хотите войти в систему как <code class=
+ "systemitem">lfs</code> или переключиться на <code class=
+ "systemitem">lfs</code> из учетной записи непривилегированного
+ пользователя (в отличие от переключения на пользователя <code class=
+ "systemitem">lfs</code> при входе в систему как <code class=
+ "systemitem">root</code>, для которого не требуется пароль
+ пользователя <code class="systemitem">lfs</code>), вам необходимо
+ установить пароль для <code class="systemitem">lfs</code>. Выполните
+ следующую команду от имени пользователя <code class=
+ "systemitem">root</code>, чтобы установить пароль:
+ </p>
+ <pre class="userinput"><kbd class="command">passwd lfs</kbd></pre>
+ <p>
+ Предоставьте пользователю <code class="systemitem">lfs</code> полный
+ доступ ко всем каталогам в папке <code class="filename">$LFS</code>,
+ назначив <code class="systemitem">lfs</code> владельцем:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
+case $(uname -m) in
+ x86_64) chown -v lfs $LFS/lib64 ;;
+esac</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ В некоторых хост-системах следующая команда не выполняется должным
+ образом и приостанавливает вход пользователя <code class=
+ "systemitem">lfs</code> в фоновом режиме. Если подсказка "lfs:~$"
+ не появляется сразу, ввод команды <span class=
+ "command"><strong>fg</strong></span> устранит проблему.
+ </p>
+ </div>
+ <p>
+ Затем запустите оболочку, работающую от имени пользователя
+ <code class="systemitem">lfs</code>. Это можно сделать, войдя в
+ систему как <code class="systemitem">lfs</code> на виртуальной
+ консоли или с помощью следующей команды замены/переключения
+ пользователя:
+ </p>
+ <pre class="userinput"><kbd class="command">su - lfs</kbd></pre>
+ <p>
+ Аргумент <span class="quote">«<span class="quote"><em class=
+ "parameter"><code>-</code></em></span>»</span> передает значение
+ команде <span class="command"><strong>su</strong></span> для запуска
+ оболочки входа в систему, а не обычной оболочки. Разница между этими
+ двумя типами оболочек подробно описана в <a class="ulink" href=
+ "https://man.archlinux.org/man/bash.1">bash(1)</a> и <span class=
+ "command"><strong>info bash</strong></span>.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="creatingminlayout.html" title=
+ "Создание ограниченной иерархии папок в файловой системе LFS">Пред.</a>
+ <p>
+ Создание ограниченной иерархии папок в файловой системе LFS
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="settingenvironment.html" title=
+ "Настройка окружения">След.</a>
+ <p>
+ Настройка окружения
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/chapter04.html b/lfs-12.2-sysv/chapter04/chapter04.html
new file mode 100644
index 0000000..4aeb69b
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/chapter04.html
@@ -0,0 +1,108 @@
+<!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>
+ Глава 4. Заключительный этап подготовки
+ </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>
+ Часть&nbsp;II.&nbsp;Подготовка к сборке
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter03/patches.html" title=
+ "Необходимые патчи">Пред.</a>
+ <p>
+ Необходимые патчи
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="introduction.html" title=
+ "Введение">След.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part2.html" title=
+ "Часть&nbsp;II.&nbsp;Подготовка к сборке">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="chapter">
+ <a id="chapter-final-preps" name="chapter-final-preps"></a>4.
+ Заключительный этап подготовки
+ </h1>
+ <div class="chapter" lang="ru" xml:lang="ru">
+ <div class="toc">
+ <h3>
+ Содержание
+ </h3>
+ <ul>
+ <li class="sect1">
+ <a href="introduction.html">Введение</a>
+ </li>
+ <li class="sect1">
+ <a href="creatingminlayout.html">Создание ограниченной иерархии
+ папок в файловой системе LFS</a>
+ </li>
+ <li class="sect1">
+ <a href="addinguser.html">Создание пользователя LFS</a>
+ </li>
+ <li class="sect1">
+ <a href="settingenvironment.html">Настройка окружения</a>
+ </li>
+ <li class="sect1">
+ <a href="aboutsbus.html">О SBU (Стандартная единица времени
+ сборки)</a>
+ </li>
+ <li class="sect1">
+ <a href="abouttestsuites.html">О наборах тестов</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="../chapter03/patches.html" title=
+ "Необходимые патчи">Пред.</a>
+ <p>
+ Необходимые патчи
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="introduction.html" title=
+ "Введение">След.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="../part2.html" title=
+ "Часть&nbsp;II.&nbsp;Подготовка к сборке">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/creatingminlayout.html b/lfs-12.2-sysv/chapter04/creatingminlayout.html
new file mode 100644
index 0000000..ff6e1d2
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/creatingminlayout.html
@@ -0,0 +1,142 @@
+<!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>
+ 4.2. Создание ограниченной иерархии папок в файловой системе LFS
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="addinguser.html" title=
+ "Создание пользователя LFS">След.</a>
+ <p>
+ Создание пользователя LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</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-creatingminlayout" name=
+ "ch-tools-creatingminlayout"></a>4.2. Создание ограниченной иерархии
+ папок в файловой системе LFS
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ В этом разделе мы начинаем заполнять файловую систему LFS элементами,
+ которые будут основой конечной системы Linux. Первым шагом является
+ создание ограниченной иерархии каталогов, чтобы программы,
+ скомпилированные в <a class="xref" href="../chapter06/chapter06.html"
+ title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ (а также glibc и libstdc++ в <a class="xref" href=
+ "../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a>), могли быть
+ установлены в их конечном расположении. Это необходимо для того,
+ чтобы эти временные программы были перезаписаны при сборке
+ окончательных версий в <a class="xref" href=
+ "../chapter08/chapter08.html" title=
+ "Глава 8. Установка базового системного программного обеспечения">Глава&nbsp;8</a>.
+ </p>
+ <p>
+ Создайте необходимую иерархию каталогов, выполнив следующую команду
+ от имени <code class="systemitem">root</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
+
+for i in bin lib sbin; do
+ ln -sv usr/$i $LFS/$i
+done
+
+case $(uname -m) in
+ x86_64) mkdir -pv $LFS/lib64 ;;
+esac</kbd></pre>
+ <p>
+ Программы в <a class="xref" href="../chapter06/chapter06.html" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>
+ будут скомпилированы с помощью кросс-компилятора (более подробная
+ информация приведена в разделе <a class="xref" href=
+ "../partintro/toolchaintechnotes.html" title=
+ "Технические примечания по сборочным инструментам">Технические
+ примечания по сборочным инструментам</a>). Чтобы отделить
+ кросс-компилятор от других программ, он будет установлен в
+ специальный каталог. Создайте этот каталог с помощью следующей
+ команды:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">mkdir -pv $LFS/tools</kbd></pre>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Редакторы LFS намеренно решили не использовать каталог <code class=
+ "filename">/usr/lib64</code>. В процессе сборки предпринимается ряд
+ шагов, чтобы убедиться, что набор инструментов не будет его
+ использовать. Если по какой-либо причине этот каталог появится (это
+ может произойти, если вы допустили ошибку, следуя инструкциям, или
+ потому что вы установили бинарный пакет, создавший его после сборки
+ LFS), это может привести к поломке вашей системы. Вы должны быть
+ уверены, что этого каталога не существует.
+ </p>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="introduction.html" title=
+ "Введение">Пред.</a>
+ <p>
+ Введение
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="addinguser.html" title=
+ "Создание пользователя LFS">След.</a>
+ <p>
+ Создание пользователя LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/introduction.html b/lfs-12.2-sysv/chapter04/introduction.html
new file mode 100644
index 0000000..63acdf2
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/introduction.html
@@ -0,0 +1,92 @@
+<!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>
+ 4.1. Введение
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter04.html" title=
+ "Заключительный этап подготовки">Пред.</a>
+ <p>
+ Заключительный этап подготовки
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="creatingminlayout.html" title=
+ "Создание ограниченной иерархии папок в файловой системе LFS">След.</a>
+ <p>
+ Создание ограниченной иерархии папок в файловой системе LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-preps-introduction" name="ch-preps-introduction"></a>4.1.
+ Введение
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ В этой главе мы выполним несколько дополнительных настроек для
+ подготовки к сборке временной системы. Мы создадим несколько
+ каталогов в <code class="filename">$LFS</code> (в котором установим
+ временные инструменты), добавим непривилегированного пользователя и
+ настроим окружение для этого пользователя. Кроме этого, будут даны
+ пояснения по стандартной единице времени сборки, или <span class=
+ "quote">«<span class="quote">SBU</span>»</span>, которую мы
+ используем для измерения времени необходимого для сборки пакетов LFS,
+ и предоставим некоторую информацию о наборах тестов.
+ </p>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="chapter04.html" title=
+ "Заключительный этап подготовки">Пред.</a>
+ <p>
+ Заключительный этап подготовки
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="creatingminlayout.html" title=
+ "Создание ограниченной иерархии папок в файловой системе LFS">След.</a>
+ <p>
+ Создание ограниченной иерархии папок в файловой системе LFS
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>
diff --git a/lfs-12.2-sysv/chapter04/settingenvironment.html b/lfs-12.2-sysv/chapter04/settingenvironment.html
new file mode 100644
index 0000000..9cacc02
--- /dev/null
+++ b/lfs-12.2-sysv/chapter04/settingenvironment.html
@@ -0,0 +1,404 @@
+<!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>
+ 4.4. Настройка окружения
+ </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>
+ Глава 4. Заключительный этап подготовки
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="addinguser.html" title=
+ "Создание пользователя LFS">Пред.</a>
+ <p>
+ Создание пользователя LFS
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="aboutsbus.html" title=
+ "О SBU (Стандартная единица времени сборки)">След.</a>
+ <p>
+ О SBU (Стандартная единица времени сборки)
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <h1 class="sect1">
+ <a id="ch-preps-settingenviron" name="ch-preps-settingenviron"></a>4.4.
+ Настройка окружения
+ </h1>
+ <div class="sect1" lang="ru" xml:lang="ru">
+ <p>
+ Настроим хорошо работающее окружение, создав два новых файла запуска
+ для оболочки <span class="command"><strong>bash</strong></span>.
+ Войдя в систему как пользователь <code class="systemitem">lfs</code>,
+ введите следующую команду, чтобы создать новый <code class=
+ "filename">.bash_profile</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; ~/.bash_profile &lt;&lt; "EOF"
+<code class=
+"literal">exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</code>
+EOF</kbd></pre>
+ <p>
+ При входе в систему под учетной записью пользователя <code class=
+ "systemitem">lfs</code> или при переключении на <code class=
+ "systemitem">lfs</code>, используя команду <span class=
+ "command"><strong>su</strong></span> с опцией <span class=
+ "quote">«<span class="quote"><em class=
+ "parameter"><code>-</code></em></span>»</span>, начальная оболочка
+ представляет собой оболочку <span class=
+ "emphasis"><em>login</em></span>, которая читает данные из
+ <code class="filename">/etc/profile</code> хоста (который, вероятно,
+ содержит некоторые настройки и переменные среды), а затем
+ <code class="filename">.bash_profile</code>. Команда <span class=
+ "command"><strong>exec env -i.../bin/bash</strong></span> в файле
+ <code class="filename">.bash_profile</code> заменяет запущенную
+ оболочку новой, не содержащей переменные среды, за исключением
+ переменных <code class="envar">HOME</code>, <code class=
+ "envar">TERM</code>, и <code class="envar">PS1</code>. Это
+ гарантирует, что никакие нежелательные и потенциально опасные
+ переменные среды из хост-системы не попадут в среду сборки.
+ </p>
+ <p>
+ Новый экземпляр оболочки представляет собой <span class=
+ "emphasis"><em>non-login</em></span> оболочку, которая не считывает и
+ не выполняет содержимое файлов <code class=
+ "filename">/etc/profile</code> и <code class=
+ "filename">.bash_profile</code>, а вместо этого выполняет чтение из
+ файла <code class="filename">.bashrc</code>. Создайте файл
+ <code class="filename">.bashrc</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt; ~/.bashrc &lt;&lt; "EOF"
+<code class="literal">set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=$(uname -m)-lfs-linux-gnu
+PATH=/usr/bin
+if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
+PATH=$LFS/tools/bin:$PATH
+CONFIG_SITE=$LFS/usr/share/config.site
+export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</code>
+EOF</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значение настроек в <code class=
+ "filename">.bashrc</code></strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class="parameter"><code>set
+ +h</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Команда <span class="command"><strong>set +h</strong></span>
+ отключает хэш-функцию <span class=
+ "command"><strong>bash</strong></span>. Хеширование является
+ полезной функцией —<span class=
+ "command"><strong>bash</strong></span> использует хеш-таблицу
+ для запоминания полного пути к исполняемому файлу, чтобы
+ избежать многократного поиска одного и того же исполняемого
+ файла в переменной окружения <code class="envar">PATH</code>.
+ Однако новые инструменты требуется использовать сразу же после
+ их установки. Отключение хэш-функции, заставляет оболочку
+ искать переменную окружения <code class="envar">PATH</code>,
+ всякий раз, когда программу необходимо запустить. Таким
+ образом, оболочка найдет вновь скомпилированные инструменты в
+ <code class="filename">$LFS/tools/bin</code>, как только они
+ станут доступны, не запоминая предыдущую версию той же
+ программы, предоставленную хост-дистрибутивом, в <code class=
+ "filename">/usr/bin</code> или <code class=
+ "filename">/bin</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>umask
+ 022</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Установка значения пользовательской маски создания файлов
+ (umask) 022 гарантирует, что вновь созданные файлы и каталоги
+ доступны для записи только их владельцу, но будут доступны для
+ чтения и выполнения остальным пользователям (при условии, что
+ системный вызов <a class="ulink" href=
+ "https://man.archlinux.org/man/open.2">open(2)</a> использует
+ режимы по умолчанию, новые файлы получат разрешения 644, а
+ каталоги 755).
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>LFS=/mnt/lfs</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Переменная окружения <code class="envar">LFS</code> должна
+ указывать на выбранную точку монтирования.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>LC_ALL=POSIX</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Переменная <code class="envar">LC_ALL</code> управляет
+ локализацией определенных программ, и формирует сообщения в
+ соответствии с локализацией указанной страны. Установка в
+ <code class="envar">LC_ALL</code> значения <span class=
+ "quote">«<span class="quote">POSIX</span>»</span> или
+ <span class="quote">«<span class="quote">C</span>»</span> (они
+ эквивалентны) гарантирует, что все будет работать должным
+ образом в среде кросс-компиляции.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>LFS_TGT=$(uname
+ -m)-lfs-linux-gnu</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Переменная <code class="envar">LFS_TGT</code> устанавливает
+ нестандартное, но совместимое описание компьютера для
+ использования при создании кросс-компилятора и компоновщика, а
+ также при кросс-компиляции временного набора инструментов.
+ Дополнительная информация об этом представлена в <a class=
+ "xref" href="../partintro/toolchaintechnotes.html" title=
+ "Технические примечания по сборочным инструментам">Технические
+ примечания по сборочным инструментам</a>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>PATH=/usr/bin</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Многие современные дистрибутивы Linux объединили <code class=
+ "filename">/bin</code> и <code class=
+ "filename">/usr/bin</code>. В этом случае стандартной
+ переменной <code class="envar">PATH</code> необходимо
+ установить значение <code class="filename">/usr/bin/</code> для
+ окружения из <a class="xref" href="../chapter06/chapter06.html"
+ title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>.
+ Когда это не так, следующая строка добавит <code class=
+ "filename">/bin</code> к пути.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>if [ ! -L /bin ];
+ then PATH=/bin:$PATH; fi</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Если <code class="filename">/bin</code> не является
+ символической ссылкой, то его необходимо добавить в переменную
+ <code class="envar">PATH</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>PATH=$LFS/tools/bin:$PATH</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Поместив <code class="filename">$LFS/tools/bin</code> перед
+ стандартным <code class="envar">PATH</code>, кросс-компилятор,
+ установленный в начале <a class="xref" href=
+ "../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a>, будет
+ обнаружен оболочкой сразу после его установки. Это, в сочетании
+ с отключением хеширования, ограничивает риск использования
+ компилятора хоста вместо кросс-компилятора.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>CONFIG_SITE=$LFS/usr/share/config.site</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ В <a class="xref" href="../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a> и <a class=
+ "xref" href="../chapter06/chapter06.html" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>,
+ если эта переменная не задана, сценарии <span class=
+ "command"><strong>configure</strong></span> могут попытаться
+ загрузить элементы конфигурации, специфичные для некоторых
+ дистрибутивов, из <code class=
+ "filename">/usr/share/config.site</code> в хост-системе.
+ Переопределите её, чтобы предотвратить потенциальное влияние
+ хоста.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>export
+ ...</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Приведенные выше команды установили некоторые переменные, чтобы
+ сделать их видимыми в любых вложенных оболочках, мы
+ экспортируем их.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Некоторые коммерческие дистрибутивы добавляют недокументированный
+ экземпляр <code class="filename">/etc/bash.bashrc</code> для
+ инициализации <span class="command"><strong>bash</strong></span>.
+ Этот файл потенциально может изменить среду пользователя
+ <code class="systemitem">lfs</code> таким образом, что это может
+ повлиять на сборку важных пакетов LFS. Чтобы убедиться, что
+ пользовательская среда <code class="systemitem">lfs</code> чиста,
+ проверьте наличие файла <code class=
+ "filename">/etc/bash.bashrc</code> и, если он есть, переименуйте
+ его. От имени пользователя <code class="systemitem">root</code>,
+ запустите:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE</kbd></pre>
+ <p>
+ Когда пользователь <code class="systemitem">lfs</code> больше не
+ нужен (в начале <a class="xref" href="../chapter07/chapter07.html"
+ title=
+ "Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
+ Глава&nbsp;7</a> ) вы можете безопасно восстановить <code class=
+ "filename">/etc/bash.bashrc</code> (по желанию).
+ </p>
+ <p>
+ Обратите внимание, что пакет LFS Bash, который мы создадим в
+ <a class="xref" href="../chapter08/bash.html" title=
+ "8.36. Bash-5.2.32">Раздел&nbsp;8.36, «Bash-5.2.32»</a>, не
+ настроен на загрузку или выполнение <code class=
+ "filename">/etc/bash.bashrc</code>, поэтому этот файл бесполезен в
+ готовой системе LFS.
+ </p>
+ </div>
+ <p>
+ Для многих современных систем с несколькими процессорами (или ядрами)
+ время компиляции пакета можно сократить, выполнив <span class=
+ "quote">«<span class="quote">параллельную сборку</span>»</span>, либо
+ установив переменную среды, либо сообщив программе <span class=
+ "command"><strong>make</strong></span>, сколько ядер задействовать
+ для сборки. Например, процессор Intel Core i9-13900K имеет 8 ядер P
+ (производительность) и 16 ядер E (энергоэффективность), ядро P может
+ одновременно запускать два потока, поэтому каждое ядро P моделируется
+ ядром Linux как два логических ядра. В результате получается 32
+ логических ядра. Очевидный способ задействовать все эти логические
+ ядра - разрешить <span class="command"><strong>make</strong></span>
+ создавать до 32 заданий сборки. Это можно сделать, передав параметр
+ <em class="parameter"><code>-j32</code></em> команде <span class=
+ "command"><strong>make</strong></span>:
+ </p>
+ <pre class="userinput"><kbd class="command">make -j32</kbd></pre>
+ <p>
+ Или установите переменную окружения <code class=
+ "envar">MAKEFLAGS</code>, и ее содержимое будет автоматически
+ использоваться <span class="command"><strong>make</strong></span> в
+ качестве параметров командной строки:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">export MAKEFLAGS=-j32</kbd></pre>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Никогда не передавайте параметр <em class=
+ "parameter"><code>-j</code></em> без номера в <span class=
+ "command"><strong>make</strong></span> и не устанавливайте такой
+ параметр в <code class="envar">MAKEFLAGS</code>. Иначе <span class=
+ "command"><strong>make</strong></span> будет создавать бесконечные
+ задания сборки, что вызовет проблемы со стабильностью системы.
+ </p>
+ </div>
+ <p>
+ Чтобы использовать все логические ядра, доступные для сборки пакетов
+ в <a class="xref" href="../chapter05/chapter05.html" title=
+ "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a> и <a class="xref"
+ href="../chapter06/chapter06.html" title=
+ "Глава 6. Кросс-Компиляция временных инструментов">Глава&nbsp;6</a>,
+ укажите параметр <code class="envar">MAKEFLAGS</code> в <code class=
+ "filename">.bashrc сейчас</code>:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cat &gt;&gt; ~/.bashrc &lt;&lt; "EOF"
+<code class="literal">export MAKEFLAGS=-j<em class=
+"replaceable"><code>$(nproc)</code></em></code>
+EOF</kbd></pre>
+ <p>
+ Замените <em class="replaceable"><code>$(nproc)</code></em>
+ количеством логических ядер, которые вы хотите использовать, если вы
+ планируете использовать не все логические ядра.
+ </p>
+ <p>
+ Наконец, чтобы убедиться, что среда полностью подготовлена для сборки
+ временных инструментов, перечитайте только что созданный профиль
+ пользователя:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">source ~/.bash_profile</kbd></pre>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="addinguser.html" title=
+ "Создание пользователя LFS">Пред.</a>
+ <p>
+ Создание пользователя LFS
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="aboutsbus.html" title=
+ "О SBU (Стандартная единица времени сборки)">След.</a>
+ <p>
+ О SBU (Стандартная единица времени сборки)
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter04.html" title=
+ "Глава 4. Заключительный этап подготовки">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.2">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>