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