Add chapter 2

This commit is contained in:
Vladimir Pertsev 2022-05-17 02:46:57 +05:00
parent 7b8de821f0
commit b28c460b86
8 changed files with 742 additions and 0 deletions

65
chapter02/aboutlfs.xml Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-aboutlfs">
<?dbhtml filename="aboutlfs.html"?>
<title>Установка переменной $LFS</title>
<para>В этой книге переменная окружения <envar>LFS</envar> будет использоваться
несколько раз. Вы должны убедиться, что эта переменная всегда определена в
процессе сборки LFS. Он должен быть установлен на имя каталога, в котором
вы будете создавать свою систему LFS — мы будем использовать
<filename class="directory">/mnt/lfs</filename> в качестве примера, но выбор
каталога зависит от вас. Если вы собираете LFS на отдельном разделе, этот
каталог будет точкой монтирования для раздела. Выберите расположение каталога
и установите переменную с помощью следующей команды:</para>
<screen role="nodump"><userinput>export LFS=<replaceable>/mnt/lfs</replaceable></userinput></screen>
<para>Установка этой переменной полезна тем, что такие команды, как
<command>mkdir -v $LFS/tools</command>, можно вводить буквально. Оболочка
автоматически заменит <quote>$LFS</quote> на <quote>/mnt/lfs</quote>
(или любую другую переменную, которая была установлена) при обработке команды.</para>
<caution>
<para>Не забывайте проверять, что <envar>LFS</envar> установлен всякий раз,
когда вы покидаете и снова входите в текущую рабочую среду (например, когда
выполняете <command>su</command> для <systemitem class="username">root</systemitem>
или другого пользователя). Убедитесь, что переменная <envar>LFS</envar>
настроена правильно:</para>
<screen role="nodump"><userinput>echo $LFS</userinput></screen>
<para>Убедитесь, что в выходных данных указан путь к местоположению сборки
вашей системы LFS, то есть <filename class="directory">/mnt/lfs</filename>,
если вы следовали примеру. Если вывод неверен, используйте команду, указанную
ранее, чтобы установить <envar>$LFS</envar> в правильное значение каталога LFS.</para>
</caution>
<note><para>Один из способов гарантировать, что переменная <envar>LFS</envar>
всегда установлена, — отредактировать файл <filename>.bash_profile</filename>
как в вашем личном домашнем каталоге, так и в <filename>/root/.bash_profile</filename>
и ввести приведенную выше команду экспорта. Кроме того, оболочка, указанная в
файле <filename>/etc/passwd</filename> для всех пользователей, которым нужна
переменная <envar>LFS</envar>, должна быть оболочкой bash, чтобы гарантировать,
что файл <filename>/root/.bash_profile</filename> используется как часть процесса
входа в систему.</para>
<para>Еще один способ, который используется для входа в хост-систему. При
входе в систему через диспетчер графического дисплея пользовательский
<filename>.bash_profile</filename> не используется при запуске виртуального
терминала. В этом случае добавьте команду экспорта в файл
<filename>.bashrc</filename> для пользователя и
<systemitem class="username">root</systemitem>. Кроме того, в некоторых
дистрибутивах есть инструкции не запускать <filename>.bashrc</filename> при
неинтерактивном вызове bash. Обязательно добавьте команду экспорта перед
тем, как проверить в неинтерактивном режиме.</para>
</note>
</sect1>

22
chapter02/chapter02.xml Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-partitioning" xreflabel="Chapter&nbsp;2">
<?dbhtml dir="chapter02"?>
<?dbhtml filename="chapter02.html"?>
<title>Подготовка хост-системы</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostreqs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="stages.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingpartition.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingfilesystem.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutlfs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mounting.xml"/>
</chapter>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-creatingfilesystem">
<?dbhtml filename="creatingfilesystem.html"?>
<title>Создание файловой системы на разделе</title>
<para>Теперь, когда пустой раздел создан, можно создать файловую систему.
LFS может использовать любую файловую систему, распознаваемую ядром Linux,
но наиболее распространенными типами являются ext3 и ext4. Выбор файловой
системы может быть сложным и зависит от характеристик файлов и размера
раздела. Например:</para>
<variablelist>
<varlistentry>
<term>ext2</term>
<listitem><para>подходит для небольших разделов, которые редко обновляются,
например /boot.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ext3</term>
<listitem><para>это обновленная файловая система ext2, которая включает в
себя журнал, помогающий восстановить состояние раздела в случае
некорректного завершения работы. Обычно используется в качестве файловой
системы общего назначения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ext4</term>
<listitem><para>является последней версией файловых систем семейства ext.
Она предоставляет несколько новых возможностей, включая временные метки
с точностью до наносекунды, создание и использование очень больших файлов
(16 ТБ) и повышение скорости работы.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и XFS,
полезны для конкретных задач. Дополнительную информацию об этих файловых
системах можно найти по адресу <ulink
url="http://en.wikipedia.org/wiki/Comparison_of_file_systems"/>.</para>
<para>LFS предполагает, что корневая файловая система (/) имеет тип ext4.
Чтобы создать файловую систему <systemitem class="filesystem">ext4</systemitem>
на разделе LFS, выполните следующее:</para>
<screen role="nodump"><userinput>mkfs -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable></userinput></screen>
<para>Замените <replaceable>&lt;xxx&gt;</replaceable> именем раздела LFS</para>
<para>Если вы используете существующий <systemitem class="filesystem">раздел
подкачки</systemitem>, нет необходимости его форматировать. Если был создан
новый <systemitem class="filesystem">раздел подкачки</systemitem>, его нужно
будет инициализировать с помощью этой команды:</para>
<screen role="nodump"><userinput>mkswap /dev/<replaceable>&lt;yyy&gt;</replaceable></userinput></screen>
<para>Замените <replaceable>&lt;yyy&gt;</replaceable> именем <systemitem class="filesystem">раздела подкачки</systemitem>.</para>
</sect1>

View File

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-creatingpartition">
<?dbhtml filename="creatingpartition.html"?>
<title>Создание нового раздела</title>
<para>Как и большинство других операционных систем, LFS обычно устанавливается
на выделенный раздел. Рекомендуемый подход к построению системы LFS состоит в
том, чтобы использовать доступный пустой раздел или, если у вас достаточно
неразмеченного пространства, использовать его</para>
<para>Минимальная система требует раздела размером около 10 гигабайт (ГБ).
Этого достаточно для хранения всех архивов с исходным кодом и компиляции
пакетов. Однако, если система LFS предназначена для использования в качестве
основной системы Linux, вероятно, будет установлено дополнительное программное
обеспечение, для которого потребуется дополнительное пространство. Раздел
размером 30 ГБ является разумным размером для расширения. Сама система LFS
не займет столько места. Большая часть этого требования заключается в
предоставлении достаточного временного хранилища, а также в добавлении
дополнительных возможностей после сборки LFS. Кроме того, для компиляции
пакетов может потребоваться много места на диске, которое будет освобождено
после установки пакета.</para>
<para>Поскольку для компиляции не всегда достаточно оперативной памяти (ОЗУ),
рекомендуется использовать небольшой раздел диска в качестве
<systemitem class="filesystem">раздела подкачки</systemitem>. Он используется
ядром для хранения редко используемых данных и оставляет больше памяти для
активных процессов. <systemitem class="filesystem">Раздел подкачки</systemitem>
для системы LFS может совпадать с разделом, используемым хост-системой, и в
этом случае нет необходимости создавать еще один.</para>
<para>Запустите программу создания разделов диска, такую ​​как <command>cfdisk</command>
или <command>fdisk</command>, с параметром командной строки, указав имя
жесткого диска, на котором будет создан новый раздел, например,
<filename class="devicefile">/dev/sda</filename> для основного диска.
Создайте раздел Linux и
<systemitem class="filesystem">раздел подкачки</systemitem>, если это
необходимо. Пожалуйста, обратитесь к справке по <filename>cfdisk(8)</filename>
или <filename>fdisk(8)</filename>, если вы еще не знаете, как пользоваться
этими программами.</para>
<note><para>Для опытных пользователей возможны и другие схемы разбиения.
Система LFS может располагаться на программном <ulink
url="&blfs-book;postlfs/raid.html">RAID-массиве</ulink> или логическом
томе <ulink
url="&blfs-book;postlfs/aboutlvm.html">LVM</ulink>. Однако для некоторых
опций требуется <ulink
url="&blfs-book;postlfs/initramfs.html">initramfs</ulink>, что является
сложной темой. Эти методы разбиения не рекомендуются начинающим пользователям
LFS.</para></note>
<para>Запомните обозначение созданного раздела (например,
<filename class="devicefile">sda5</filename>). В этой книге он будет
называться разделом LFS. Также запомните обозначение
<systemitem class="filesystem">раздела подкачки</systemitem>. Эти имена
понадобятся позже для файла <filename>/etc/fstab</filename>.</para>
<sect2>
<title>Другие вопросы по созданию разделов</title>
<para>Рекомендации по созданию разделов системы часто публикуются в списках
рассылки LFS. Это очень субъективная тема. По умолчанию для большинства
дистрибутивов используется весь диск, за исключением небольшого раздела
подкачки. Это не оптимально для LFS по нескольким причинам. Это снижает
гибкость, затрудняет совместное использование данных между несколькими
дистрибутивами или сборками LFS, делает резервное копирование более
трудоемким и может тратить дисковое пространство из-за неэффективно
распределенной файловой системы.</para>
<sect3>
<title>Корневой раздел</title>
<para>Корневой раздел LFS (не путать с каталогом
<filename class="directory">/root</filename>) размером в 20 гигабайт
является хорошим компромиссом для большинства систем. Он обеспечивает
достаточно места для построения LFS и большей части BLFS, но
достаточно мал, чтобы можно было легко создать несколько разделов для
экспериментов.</para> </sect3>
<sect3>
<title>Раздел подкачки</title>
<para>Большинство дистрибутивов автоматически создают раздел подкачки.
Обычно рекомендуемый размер раздела подкачки примерно в два раза превышает
объем физической памяти, однако это требуется редко. Если дисковое
пространство ограничено, установите размер раздела подкачки в два гигабайта
и контролируйте его объемом.</para>
<para>Если вы хотите использовать функцию гибернации (suspend-to-disk)
Linux, которая записывает содержимое ОЗУ в раздел подкачки перед выключением
машины. Установите размер раздела подкачки не меньше объема установленной
оперативной памяти.</para>
<para>Использование файла подкачки - это не очень хорошо. Для механических
жестких дисков вы можете определить, что система использует раздел подкачки,
просто слыша активность диска и наблюдая, как система реагирует на команды.
Для SSD-накопителя вы не сможете услышать, что используется раздел подкачки,
но сможете оценить, сколько места раздела подкачки занято, используя команды
<command>top</command> или <command>free</command>. По возможности следует
избегать использования SSD-накопителя для раздела подкачки. Первой реакцией на
активность раздела подкачки должна быть проверка на необоснованное прменение
какой-либо команды, например, попытка редактирования пятигигабайтного файла.
Если использхование раздела подкачки становится обычным явлением, лучшее
решение — приобретение большего объема оперативной памяти для вашей системы.</para> </sect3>
<sect3>
<title>Радел GRUB</title>
<para>Если <emphasis>загрузочный диск</emphasis> размечен с помощью
таблицы разделов GUID (GPT), необходимо создать небольшой раздел, обычно
размером 1 МБ, если он еще не существует. Этот раздел не форматируется,
но должен быть доступен для использования GRUB во время установки загрузчика.
Обычно он помечен как 'BIOS Boot' при использовании
<command>fdisk</command> или имеет код <emphasis>EF02</emphasis> при
использовании <command>gdisk</command>.</para>
<note><para>Раздел Grub Bios должен находиться на диске, который BIOS
использует для загрузки системы. Это не обязательно тот же диск, на
котором расположен корневой раздел LFS. Диски в системе могут использовать
разные типы таблиц разделов. Требования к этому разделу зависят только от
типа таблицы разделов загрузочного диска.</para></note>
</sect3>
<sect3>
<title>Разделы, используемые для удобства</title>
<para>Есть несколько других разделов, которые не являются обязательными, но
их следует учитывать при разработке схемы диска. Следующий список не
является исчерпывающим, а представлен в качестве справочного руководства.</para>
<itemizedlist>
<listitem><para>/boot &ndash; Настоятельно рекомендуется. Используйте этот
раздел для хранения ядер и другой загрузочной информации. Чтобы свести к
минимуму возможные проблемы с загрузкой дисков большого размера, сделайте
этот раздел первым физическим разделом на первом диске. Размер раздела в
200 мегабайт вполне достаточен.</para></listitem>
<listitem><para>/home &ndash; Настоятельно рекомендуется. Поделитесь своим
домашним каталогом и пользовательской настройкой между несколькими
дистрибутивами или сборками LFS. Размер, как правило, довольно большой
и зависит от доступного места на диске.</para></listitem>
<listitem><para>/usr &ndash; в LFS,
<filename class="directory">/bin</filename>,
<filename class="directory">/lib</filename>, и
<filename class="directory">/sbin</filename> являются символическими
ссылками на их аналог в <filename class="directory">/usr</filename>.
Таким образом <filename class="directory">/usr</filename> содержит все
двоичные файлы, необходимые для работы системы. Для LFS отдельный раздел
<filename class="directory">/usr</filename> не требуется. Если он
вам необходим, вы должны сделать раздел достаточно большим, чтобы
поместить туда все программы и библиотеки в системе. В этой конфигурации,
корневой раздел может быть очень маленьким (возможно, всего один
гигабайт), поэтому он подходит для тонкого клиента или бездисковой рабочей
станции (где <filename class="directory">/usr</filename> монтируется с
удаленного сервера). Однако вы должны позаботиться о том, чтобы initramfs
(не включенный в LFS) использовался для загрузки системы с отдельным
разделом <filename class="directory">/usr</filename>.</para></listitem>
<listitem><para>/opt &ndash; Этот каталог наиболее полезен для BLFS,
где можно установить некоторые большие пакеты, такие как Gnome или KDE,
без использования иерархии /usr. Для /opt достаточно размера от 5 до 10 гигабайт.</para>
</listitem>
<listitem><para>/tmp &ndash; Отдельный каталог /tmp встречается редко,
он полезен при настройке тонкого клиента. При использовании, его размер
не должен превышать пару гигабайт.</para></listitem>
<listitem><para>/usr/src &ndash; Этот раздел очень удобен для хранения
исходных файлов BLFS и совместного использования их в сборках LFS. Его
также можно использовать в качестве места для сборки пакетов BLFS. Размера
в 30-50 гигабайт вполне достаточно.</para></listitem>
</itemizedlist>
<para>Любой раздел, который вы хотите автоматически монтировать при загрузке,
необходимо указать в файле <filename>/etc/fstab</filename>. Информация о
том, как указать разделы, будет обсуждаться в Разделе 10.2 <xref
linkend="ch-bootable-fstab"/>.</para>
</sect3>
</sect2>
</sect1>

224
chapter02/hostreqs.xml Normal file
View File

@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-hostreqs" xreflabel="Host System Requirements">
<?dbhtml filename="hostreqs.html"?>
<title>Требования к хост-системе</title>
<para>Ваша хост-система должна иметь следующее программное обеспечение с
указанными минимальными версиями. Это не должно быть проблемой для
большинства современных дистрибутивов Linux. Также обратите внимание на то,
что многие дистрибутивы помещают заголовочные файлы в отдельные пакеты,
как правило в формате <quote>&lt;package-name&gt;-devel</quote> или
<quote>&lt;package-name&gt;-dev</quote>. Обязательно установите эти пакеты,
если ваш дистрибутив их предоставляет.</para>
<para>Более ранние версии перечисленных ниже пакетов могут работать, но
это не проверялось.</para>
<itemizedlist spacing="compact">
<listitem>
<para><emphasis role="strong">Bash-3.2</emphasis> (/bin/sh
должен быть символической или жесткой ссылкой на bash)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Binutils-2.13.1</emphasis> (Версия выше
&binutils-version; не рекомендуется, так как она не тестировалась)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
должен быть ссылкой на bison или небольшой скрипт, запускающий bison)</para>
</listitem>
<listitem>
<para><emphasis role="strong">Coreutils-6.9</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Diffutils-2.8.1</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Findutils-4.2.31</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Gawk-4.0.1</emphasis> (/usr/bin/awk
должен быть ссылкой на gawk)</para>
</listitem>
<listitem>
<para><emphasis role="strong">GCC-4.8</emphasis>, включая компилятор C++,
<command>g++</command> (версии выше 11.2.0 не рекомендуются, поскольку
они не тестировались). Также должны присутствовать стандартные библиотеки
C и C++ (с заголовочными файлами), чтобы компилятор C++ мог осуществлять
сборку программ.</para>
</listitem>
<listitem>
<para><emphasis role="strong">Grep-2.5.1a</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Gzip-1.3.12</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Linux Kernel-&min-kernel;</emphasis></para>
<para>Требования к версии ядра заключается в том, что мы указываем эту
версию при сборке <application>glibc</application> в Главе 5 <xref linkend="chapter-cross-tools"/> и Главе 8 <xref linkend="chapter-building-system"/> по рекомендации
разработчиков. Кроме этого, она необходима для udev.</para>
<para>Если версия ядра ​​хоста меньше, чем &min-kernel;, вам необходимо обновить
ядро ​​на более позднюю версию. Есть два способа сделать это. Во-первых,
посмотрите, предоставляет ли ваш дистрибутив Linux пакет ядра &min-kernel;
или более позднюю версию. Если это так, установите его. Если ваш дистрибутив
не предлагает приемлемый пакет ядра или вы предпочитаете не устанавливать
его, вы можете скомпилировать ядро ​​самостоятельно. Инструкции по компиляции
ядра и настройке загрузчика (при условии, что хост использует GRUB)
находятся в главе 10 <xref linkend="chapter-bootable"/>.</para>
</listitem>
<listitem>
<para><emphasis role="strong">M4-1.4.10</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Make-4.0</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Patch-2.5.4</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Perl-5.8.8</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Python-3.4</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Sed-4.1.5</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Tar-1.22</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Texinfo-4.7</emphasis></para>
</listitem>
<listitem>
<para><emphasis role="strong">Xz-5.0.0</emphasis></para>
</listitem>
</itemizedlist>
<important>
<para>Обратите внимание, что упомянутые выше символические ссылки необходимы
для создания системы LFS с использованием инструкций, содержащихся в этой
книге. Симлинки, указывающие на другое программное обеспечение (например,
dash, mawk и т. д.), могут работать, но не тестируются и не поддерживаются
командой разработчиков LFS, и могут потребовать либо отклонения от
инструкций, либо дополнительных исправлений для некоторых пакетов.</para>
</important>
<!-- Use an empty sect2 element to prevent a pdf warning. -->
<bridgehead renderas="sect2"
id="version-check"
xreflabel="Host System Requirements">
</bridgehead>
<!--<title> </title>-->
<para>Чтобы узнать, есть ли в вашей хост-системе все необходимые пакеты и
возможность компилировать программы, выполните следующий скрипт:</para>
<screen role="nodump"><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -&gt; $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc --version | head -n1`
else
echo "yacc not found"
fi
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -&gt; `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1
echo 'int main(){}' &gt; dummy.c &amp;&amp; g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy</literal>
EOF
bash version-check.sh</userinput></screen>
<!--
<para>Also check for some library consistency:</para>
<screen role="nodump"><userinput>cat &gt; library-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
echo $lib: $(if find /usr/lib* -name $lib|
grep -q $lib;then :;else echo not;fi) found
done
unset lib</literal>
EOF
bash library-check.sh</userinput></screen>
<para>The files identified by this script should be all present
or all absent, but not only one or two present.</para>
-->
</sect1>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-introduction">
<?dbhtml filename="introduction.html"?>
<title>Введение</title>
<para>В этой главе проверяются и при необходимости устанавливаются основные
инструменты, необходимые для построения LFS. Затем подготавливается раздел,
в котором будет размещаться система LFS. Мы создадим сам раздел, создадим на
нем файловую систему и смонтируем </para>
</sect1>

70
chapter02/mounting.xml Normal file
View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-mounting">
<?dbhtml filename="mounting.html"?>
<title>Монтирование нового раздела</title>
<para>Теперь, когда файловая система создана, необходимо сделать раздел
доступным. Для этого раздел необходимо смонтировать в выбранной точке
монтирования. В книге предполагается, что файловая система монтируется в
каталог, указанный в переменной среды <envar>LFS</envar>, как описано в
предыдущем разделе.
</para>
<para>Создайте точку монтирования и смонтируйте файловую систему LFS, выполнив:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS</userinput></screen>
<para>Замените <replaceable>&lt;xxx&gt;</replaceable> на обозначение раздела LFS.</para>
<para>Если вы используете несколько разделов для LFS (например, один для <filename
class="directory">/</filename> и другой для <filename
class="directory">/home</filename>), смонтируйте их, используя:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS
mkdir -v $LFS/home
mount -v -t ext4 /dev/<replaceable>&lt;yyy&gt;</replaceable> $LFS/home</userinput></screen>
<para>Замените <replaceable>&lt;xxx&gt;</replaceable> и
<replaceable>&lt;yyy&gt;</replaceable> соответствующими именами разделов.</para>
<para>Убедитесь, что этот новый раздел не смонтирован со слишком строгими
разрешениями (такими как параметры <option>nosuid</option> или <option>nodev</option>).
Запустите команду <command>mount</command> без каких-либо параметров, чтобы
увидеть, какие параметры установлены для смонтированного раздела LFS. Если
установлены <option>nosuid</option> и/или <option>nodev</option>, раздел
нужно будет перемонтировать.</para>
<warning><para>Приведенные выше инструкции предполагают, что вы не будете
перезагружать компьютер во время процесса сборки LFS. Если вы выключите свою
систему, вам придется либо перемонтировать раздел LFS каждый раз, когда вы
перезапускаете процесс сборки, либо изменить файл /etc/fstab вашей
хост-системы, чтобы он автоматически перемонтировал раздел LFS при загрузке. Например:
<screen role="nodump">/dev/<replaceable>&lt;xxx&gt;</replaceable> /mnt/lfs ext4 defaults 1 1</screen>
Если вы используете дополнительные разделы, обязательно добавьте их.
</para></warning>
<para>Если вы используете <systemitem
class="filesystem">раздел подкачки</systemitem>, убедитесь, что он включен с
помощью команды <command>swapon</command>:</para>
<screen role="nodump"><userinput>/sbin/swapon -v /dev/<replaceable>&lt;zzz&gt;</replaceable></userinput></screen>
<para>Замените <replaceable>&lt;zzz&gt;</replaceable> именем <systemitem class="filesystem">раздела подкачки</systemitem>.</para>
<para>Теперь, когда есть подготовленное рабочее место, пришло время скачать пакеты.</para>
</sect1>

86
chapter02/stages.xml Normal file
View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-stages">
<?dbhtml filename="stages.html"?>
<title>Этапы сборки системы LFS</title>
<para>LFS разработан для сборки за один сеанс. То есть инструкция
предполагает, что система не будет выключаться в процессе. Это не
означает, что система должна быть собрана за один присест. Для
возобновления сборки в точке предыдущей остановки (после
перезагрузки/выключения), необходимо выполнить некоторые процедуры повторно.</para>
<sect2>
<title>Главы&nbsp;1&ndash;4</title>
<para>Эти главы выполняются на хост-системе. После перезагрузки обратите
внимание на следующее:</para>
<itemizedlist>
<listitem>
<para>Процедуры, выполняемые пользователем
<systemitem class="username">root</systemitem> после Раздела 2.4,
должны иметь переменную среды LFS, установленную
<emphasis>ДЛЯ ПОЛЬЗОВАТЕЛЯ ROOT</emphasis>.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Главы&nbsp;5&ndash;6</title>
<itemizedlist>
<listitem>
<para>Раздел /mnt/lfs должен быть смонтирован.</para>
</listitem>
<listitem>
<para>Эти две главы <emphasis>должны</emphasis> быть выполнены из-под
пользователя <systemitem class="username">lfs</systemitem>. Перед
выполнением любой задачи в этих главах необходимо выполнить
<command>su - lfs</command>. В противном случае вы рискуете установить
пакеты на хост и сделать его непригодным для использования.</para>
</listitem>
<listitem>
<para>Выполнение процедур из <xref linkend='ch-tools-generalinstructions'/>
имеет решающее значение. Если есть какие-либо сомнения по поводу установки
пакета, убедитесь, что все ранее развернутые tar-архивы удалены, затем
повторно извлеките файлы и выполните все инструкции.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Главы&nbsp;7&ndash;10</title>
<itemizedlist>
<listitem>
<para>Раздел /mnt/lfs должен быть смонтирован.</para>
</listitem>
<listitem>
<para>Некоторые операции, такие как <quote>Смена владельца</quote>
или <quote>Вход в среду Chroot</quote>, должны быть выполнены от имени
пользователя <systemitem class="username">root</systemitem> с
переменной окружения $LFS, установленной для пользователя &root;.</para>
</listitem>
<listitem>
<para>При входе в chroot переменная среды LFS должна быть установлена
​​для пользователя <systemitem class="username">root</systemitem>. После
этого переменная LFS не используется.</para>
</listitem>
<listitem>
<para>Виртуальные файловые системы должны быть смонтированы. Это можно сделать до или после входа в chroot, переключившись на виртуальный терминал хоста и от имени пользователя <systemitem class="username">root</systemitem> выполнив команды, описанные в разделах 7.3.2 <xref linkend='ch-tools-bindmount'/> и 7.3.3 <xref linkend='ch-tools-kernfsmount'/>.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>