diff options
Diffstat (limited to 'lfs-12.2-sysv/chapter04')
-rw-r--r-- | lfs-12.2-sysv/chapter04/aboutsbus.html | 184 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/abouttestsuites.html | 132 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/addinguser.html | 209 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/chapter04.html | 108 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/creatingminlayout.html | 142 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/introduction.html | 92 | ||||
-rw-r--r-- | lfs-12.2-sysv/chapter04/settingenvironment.html | 404 |
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. Сборка кросс-тулчейна">Глава 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. Сборка кросс-тулчейна">Глава 5</a> и <a class="xref" + href="../chapter06/chapter06.html" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 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> + Часть II. Подготовка к сборке + </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= + "Часть II. Подготовка к сборке">Наверх</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= + "Часть II. Подготовка к сборке">Наверх</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. Кросс-Компиляция временных инструментов">Глава 6</a> + (а также glibc и libstdc++ в <a class="xref" href= + "../chapter05/chapter05.html" title= + "Глава 5. Сборка кросс-тулчейна">Глава 5</a>), могли быть + установлены в их конечном расположении. Это необходимо для того, + чтобы эти временные программы были перезаписаны при сборке + окончательных версий в <a class="xref" href= + "../chapter08/chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения">Глава 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. Кросс-Компиляция временных инструментов">Глава 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 > ~/.bash_profile << "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 > ~/.bashrc << "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. Кросс-Компиляция временных инструментов">Глава 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. Сборка кросс-тулчейна">Глава 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. Сборка кросс-тулчейна">Глава 5</a> и <a class= + "xref" href="../chapter06/chapter06.html" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 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 и создание дополнительных временных инструментов"> + Глава 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">Раздел 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. Сборка кросс-тулчейна">Глава 5</a> и <a class="xref" + href="../chapter06/chapter06.html" title= + "Глава 6. Кросс-Компиляция временных инструментов">Глава 6</a>, + укажите параметр <code class="envar">MAKEFLAGS</code> в <code class= + "filename">.bashrc сейчас</code>: + </p> + <pre class="userinput"><kbd class= + "command">cat >> ~/.bashrc << "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> |