mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-18 11:50:21 +03:00
Add chapter 2
This commit is contained in:
parent
7b8de821f0
commit
b28c460b86
65
chapter02/aboutlfs.xml
Normal file
65
chapter02/aboutlfs.xml
Normal 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
22
chapter02/chapter02.xml
Normal 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 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>
|
67
chapter02/creatingfilesystem.xml
Normal file
67
chapter02/creatingfilesystem.xml
Normal 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><xxx></replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<para>Замените <replaceable><xxx></replaceable> именем раздела LFS</para>
|
||||||
|
|
||||||
|
<para>Если вы используете существующий <systemitem class="filesystem">раздел
|
||||||
|
подкачки</systemitem>, нет необходимости его форматировать. Если был создан
|
||||||
|
новый <systemitem class="filesystem">раздел подкачки</systemitem>, его нужно
|
||||||
|
будет инициализировать с помощью этой команды:</para>
|
||||||
|
|
||||||
|
<screen role="nodump"><userinput>mkswap /dev/<replaceable><yyy></replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<para>Замените <replaceable><yyy></replaceable> именем <systemitem class="filesystem">раздела подкачки</systemitem>.</para>
|
||||||
|
|
||||||
|
</sect1>
|
190
chapter02/creatingpartition.xml
Normal file
190
chapter02/creatingpartition.xml
Normal 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 – Настоятельно рекомендуется. Используйте этот
|
||||||
|
раздел для хранения ядер и другой загрузочной информации. Чтобы свести к
|
||||||
|
минимуму возможные проблемы с загрузкой дисков большого размера, сделайте
|
||||||
|
этот раздел первым физическим разделом на первом диске. Размер раздела в
|
||||||
|
200 мегабайт вполне достаточен.</para></listitem>
|
||||||
|
|
||||||
|
<listitem><para>/home – Настоятельно рекомендуется. Поделитесь своим
|
||||||
|
домашним каталогом и пользовательской настройкой между несколькими
|
||||||
|
дистрибутивами или сборками LFS. Размер, как правило, довольно большой
|
||||||
|
и зависит от доступного места на диске.</para></listitem>
|
||||||
|
|
||||||
|
<listitem><para>/usr – в 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 – Этот каталог наиболее полезен для BLFS,
|
||||||
|
где можно установить некоторые большие пакеты, такие как Gnome или KDE,
|
||||||
|
без использования иерархии /usr. Для /opt достаточно размера от 5 до 10 гигабайт.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem><para>/tmp – Отдельный каталог /tmp встречается редко,
|
||||||
|
он полезен при настройке тонкого клиента. При использовании, его размер
|
||||||
|
не должен превышать пару гигабайт.</para></listitem>
|
||||||
|
|
||||||
|
<listitem><para>/usr/src – Этот раздел очень удобен для хранения
|
||||||
|
исходных файлов 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
224
chapter02/hostreqs.xml
Normal 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><package-name>-devel</quote> или
|
||||||
|
<quote><package-name>-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 > version-check.sh << "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 -> $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 -> `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(){}' > dummy.c && 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 > library-check.sh << "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>
|
18
chapter02/introduction.xml
Normal file
18
chapter02/introduction.xml
Normal 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
70
chapter02/mounting.xml
Normal 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><xxx></replaceable> $LFS</userinput></screen>
|
||||||
|
|
||||||
|
<para>Замените <replaceable><xxx></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><xxx></replaceable> $LFS
|
||||||
|
mkdir -v $LFS/home
|
||||||
|
mount -v -t ext4 /dev/<replaceable><yyy></replaceable> $LFS/home</userinput></screen>
|
||||||
|
|
||||||
|
<para>Замените <replaceable><xxx></replaceable> и
|
||||||
|
<replaceable><yyy></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><xxx></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><zzz></replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<para>Замените <replaceable><zzz></replaceable> именем <systemitem class="filesystem">раздела подкачки</systemitem>.</para>
|
||||||
|
|
||||||
|
<para>Теперь, когда есть подготовленное рабочее место, пришло время скачать пакеты.</para>
|
||||||
|
|
||||||
|
</sect1>
|
||||||
|
|
86
chapter02/stages.xml
Normal file
86
chapter02/stages.xml
Normal 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>Главы 1–4</title>
|
||||||
|
|
||||||
|
<para>Эти главы выполняются на хост-системе. После перезагрузки обратите
|
||||||
|
внимание на следующее:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Процедуры, выполняемые пользователем
|
||||||
|
<systemitem class="username">root</systemitem> после Раздела 2.4,
|
||||||
|
должны иметь переменную среды LFS, установленную
|
||||||
|
<emphasis>ДЛЯ ПОЛЬЗОВАТЕЛЯ ROOT</emphasis>.</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>Главы 5–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>Главы 7–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>
|
Loading…
Reference in New Issue
Block a user