2023-05-23 09:22:34 +03:00
|
|
|
|
<?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-bootable-kernel" role="wrap">
|
|
|
|
|
<?dbhtml filename="kernel.html"?>
|
|
|
|
|
|
|
|
|
|
<sect1info condition="script">
|
|
|
|
|
<productname>kernel</productname>
|
|
|
|
|
<productnumber>&linux-version;</productnumber>
|
|
|
|
|
<address>&linux-url;</address>
|
|
|
|
|
</sect1info>
|
|
|
|
|
|
|
|
|
|
<title>Linux-&linux-version;</title>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-bootable-kernel">
|
|
|
|
|
<primary sortas="a-Linux">Linux</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<sect2 role="package">
|
|
|
|
|
<title/>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Этот пакет содержит ядро Linux.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<segmentedlist>
|
|
|
|
|
<segtitle>&buildtime;</segtitle>
|
|
|
|
|
<segtitle>&diskspace;</segtitle>
|
|
|
|
|
|
|
|
|
|
<seglistitem>
|
|
|
|
|
<seg>&linux-knl-sbu;</seg>
|
|
|
|
|
<seg>&linux-knl-du;</seg>
|
|
|
|
|
</seglistitem>
|
|
|
|
|
</segmentedlist>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2 role="installation">
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<title>Установка ядра</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Сборка ядра состоит из нескольких этапов—настройка, компиляция и установка. Ознакомьтесь
|
|
|
|
|
с файлом <filename>README</filename> в дереве исходных тектов, чтобы узнать об альтернативных
|
|
|
|
|
способах настройки ядра.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Подготовьте пакет к компиляции, выполнив следующую команду:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="pre">make mrproper</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Выполнение этой команды гарантирует, что дерево исходников будет абсолютно чистым.
|
|
|
|
|
Разработчики ядра рекомендуют запускать эту команду перед каждой компиляцией. Не следует полагаться
|
|
|
|
|
на то, что дерево исходных текстов ядра будет чистым после распаковки.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Существует несколько способов настройки параметров ядра. Обычно это делается с помощью
|
|
|
|
|
псевдографического интерфейса, например так:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>make menuconfig</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<title>Значения необязательных переменных окружения make:</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<term><parameter>LANG=<переменная_LANG_хоста> LC_ALL=</parameter></term>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Устанавливает значение локали на то, которое используется на хосте. Это может
|
|
|
|
|
понадобиться для правильного отображения интерфейса menuconfig с помощью ncurses в текстовой
|
|
|
|
|
консоли Linux с UTF-8.</para>
|
|
|
|
|
|
|
|
|
|
<para>Если это необходимо, обязательно замените значение
|
|
|
|
|
<replaceable><переменной_LANG></replaceable> на значение переменной
|
|
|
|
|
<envar>$LANG</envar> вашего хоста. В качестве альтернативы вы можете использовать
|
|
|
|
|
значения переменных <envar>$LC_ALL</envar> или <envar>$LC_CTYPE</envar>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><command>make menuconfig</command></term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Эта команда запускаеи интерфейс на основе ncurses. Для использования других
|
|
|
|
|
(графических) интерфейсов, выполните <command>make help</command>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
|
|
<!-- Support for compiling a keymap into the kernel is deliberately removed -->
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Для получения общей информации о настройке параметров ядра, смотрите <ulink
|
|
|
|
|
url="&hints-root;kernel-configuration.txt"/>. Книга BLFS содержит некоторую информацию о
|
|
|
|
|
требованиях к конфигурации ядра для поддержки пакетов, которые отсутствуют в LFS. Эта
|
|
|
|
|
информация доступна по ссылке <ulink url="&blfs-book;longindex.html#kernel-config-index"/>.
|
|
|
|
|
Дополнительную информацию о настройке и сборке ядра можно найти по адресу
|
|
|
|
|
<ulink url="http://www.kroah.com/lkn/"/>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Хорошей отправной точкой для настройки ядра, может стать запуск команды
|
|
|
|
|
<command>make defconfig</command>. В результате её выполнения будет создана базовая
|
|
|
|
|
конфигурация с учётом архитектуры системы.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Обязательно включите/отключите/настройте следующие параметры, иначе система может
|
|
|
|
|
работаеть некорректно или вообще не загружаться:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-14 13:34:58 +03:00
|
|
|
|
|
|
|
|
|
<screen role="nodump" revision="sysv">General setup -->
|
2023-05-23 09:22:34 +03:00
|
|
|
|
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
|
|
|
|
|
< > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
|
|
|
|
|
Device Drivers --->
|
|
|
|
|
Graphics support --->
|
|
|
|
|
Frame buffer Devices --->
|
|
|
|
|
[*] Support for frame buffer devices ----
|
|
|
|
|
Generic Driver Options --->
|
|
|
|
|
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
|
|
|
|
|
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
|
|
|
|
|
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]</screen>
|
|
|
|
|
|
2023-06-14 13:34:58 +03:00
|
|
|
|
<screen role="nodump" revision="systemd">General setup -->
|
2023-05-23 09:22:34 +03:00
|
|
|
|
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
|
|
|
|
|
[ ] Auditing Support [CONFIG_AUDIT]
|
|
|
|
|
CPU/Task time and stats accounting --->
|
|
|
|
|
[*] Pressure stall information tracking [CONFIG_PSI]
|
|
|
|
|
< > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
|
|
|
|
|
[*] Control Group support [CONFIG_CGROUPS] --->
|
|
|
|
|
[*] Memory controller [CONFIG_MEMCG]
|
|
|
|
|
[ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED]
|
|
|
|
|
[*] Configure standard kernel features (expert users) [CONFIG_EXPERT] --->
|
|
|
|
|
[*] open by fhandle syscalls [CONFIG_FHANDLE]
|
|
|
|
|
General architecture-dependent options --->
|
|
|
|
|
[*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP]
|
|
|
|
|
Networking support --->
|
|
|
|
|
Networking options --->
|
|
|
|
|
<*> The IPv6 protocol [CONFIG_IPV6]
|
|
|
|
|
Device Drivers --->
|
|
|
|
|
Generic Driver Options --->
|
|
|
|
|
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
|
|
|
|
|
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
|
|
|
|
|
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]
|
|
|
|
|
Firmware Loader --->
|
|
|
|
|
[ ] Enable the firmware sysfs fallback mechanism [CONFIG_FW_LOADER_USER_HELPER]
|
|
|
|
|
Firmware Drivers --->
|
|
|
|
|
[*] Export DMI identification via sysfs to userspace [CONFIG_DMIID]
|
|
|
|
|
Graphics support --->
|
|
|
|
|
Frame buffer Devices --->
|
|
|
|
|
<*> Support for frame buffer devices --->
|
|
|
|
|
File systems --->
|
|
|
|
|
[*] Inotify support for userspace [CONFIG_INOTIFY_USER]
|
|
|
|
|
Pseudo filesystems --->
|
|
|
|
|
[*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Включите некоторые дополнительные параметры, если вы создаете 64-битную
|
|
|
|
|
систему. Если вы используете menuconfig, включите их в следующем порядке: сначала
|
|
|
|
|
<parameter>CONFIG_PCI_MSI</parameter>, затем
|
|
|
|
|
<parameter>CONFIG_IRQ_REMAP</parameter>, и, наконец,
|
|
|
|
|
<parameter>CONFIG_X86_X2APIC</parameter>, это связано с тем что каждый следующий
|
|
|
|
|
вариант появляется после включения зависимостей.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen role="nodump">Processor type and features --->
|
|
|
|
|
[*] Support x2apic [CONFIG_X86_X2APIC]
|
2023-06-14 13:34:58 +03:00
|
|
|
|
Memory Management options --->
|
|
|
|
|
[ ] Enable userfaultfd() system call [CONFIG_USERFAULTFD]
|
2023-05-23 09:22:34 +03:00
|
|
|
|
Device Drivers --->
|
|
|
|
|
[*] PCI Support ---> [CONFIG_PCI]
|
|
|
|
|
[*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI]
|
|
|
|
|
[*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT]
|
|
|
|
|
[*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]</screen>
|
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<note revision="systemd">
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Хотя "Протокол IPv6" не является строго обязательным, он настоятельно рекомендуется
|
|
|
|
|
разработчиками systemd.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para revision="sysv">Есть несколько других параметров, которые могут понадобиться
|
|
|
|
|
в зависимости от особенностей системы. Для получения списка необходимых опций для пакетов BLFS
|
|
|
|
|
смотрите <ulink
|
|
|
|
|
url="&lfs-root;blfs/view/&short-version;/longindex.html#kernel-config-index">Список опций ядра BLFS</ulink>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
(&lfs-root;blfs/view/&short-version;/longindex.html#kernel-config-index).</para>
|
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с помощью него, вам необходимо
|
|
|
|
|
настроить некоторые параметры ядра, следуя инструкции
|
|
|
|
|
<ulink url="&blfs-book;postlfs/grub-setup.html#uefi-kernel">на странице BLFS</ulink>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<title>Пояснения для выбранных выше параметров ядра:</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<parameter>
|
|
|
|
|
Compile the kernel with warnings as errors
|
|
|
|
|
</parameter>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Включение этого параметра может привести к сбою сборки, если компилятор и/или конфигурация отличается
|
|
|
|
|
от конфигурации ядра разработчиков.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<parameter>
|
|
|
|
|
Enable kernel headers through /sys/kernel/kheaders.tar.xz
|
|
|
|
|
</parameter>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Для сборки ядра с этим параметром необходим пакет <command>cpio</command>.
|
|
|
|
|
<command>cpio</command> не устанавливается в LFS.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Support for uevent helper</parameter></term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Включение этого параметра может вызвать сбои при управление устройствами через Udev/Eudev.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Maintain a devtmpfs</parameter></term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>С помощью этого параметра узлы устройств создаются автоматически и заполняются самим
|
|
|
|
|
ядром, даже без запуска Udev. Udev будет работать поверх, управляя разрешениями и добавляя
|
|
|
|
|
необходимые символические ссылки. Этот элемент конфигурации необходим всем пользователям Udev/Eudev.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Automount devtmpfs at /dev</parameter></term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Этот параметр позволит смонтировать представление ядра устройств в /dev при
|
|
|
|
|
переключении на корневую файловую систему непосредственно перед запуском init.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Support x2apic</parameter></term>
|
|
|
|
|
<listitem>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Поддержка запуска 64-разрядного контроллера прерываний для x86 процессоров
|
|
|
|
|
в режиме x2APIC. x2APIC может быть включен в BIOS на системах x86 и у ядра собранного
|
|
|
|
|
без этой опции будет kernel panic при загрузке. Эта опция не окажет никакого эффекта,
|
|
|
|
|
но и не причиняет вреда, если x2APIC отключен в BIOS.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2023-06-14 13:34:58 +03:00
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Enable userfaultfd() system call</parameter></term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Если этот параметр включен, уязвимость в системе безопасности ядра
|
|
|
|
|
Linux-&linux-version; не исправлена, и доступна для эксплуатации. Отключите
|
|
|
|
|
эту опцию, чтобы предотвратить эксплуатацию уязвимости. Этот системный вызов
|
|
|
|
|
не используется ни одной частью LFS или BLFS.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>В качестве альтернативы, в некоторых ситуациях может быть уместно использование команды
|
|
|
|
|
<command>make oldconfig</command>. Смотрите файл <filename>README</filename> для получения
|
|
|
|
|
дополнительной информации.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>По желанию, вы можете пропустить настройку ядра, скопировав конфигурационный файл ядра
|
|
|
|
|
<filename>.config</filename>, из хост системы(если он доступен) в каталог куда было распаковано
|
|
|
|
|
ядро <filename class="directory">linux-&linux-version;</filename>. Однако, мы не рекомендуем
|
|
|
|
|
этот вариант. Намного лучше изучить все параметры меню и создать конфигурацию ядра с нуля.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Скомпилируйте образ ядра и модули:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="make">make</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>При использовании модулей, могут потребоваться файлы конфигурации, которые расположены в
|
|
|
|
|
каталоге <filename class="directory">/etc/modprobe.d</filename>. Информация о модулях и конфигурации
|
2023-06-12 17:27:05 +03:00
|
|
|
|
ядра находится в <xref linkend="ch-config-udev"/> и в документации к ядру <filename
|
2023-06-12 00:42:42 +03:00
|
|
|
|
class="directory">linux-&linux-version;/Documentation</filename>. Кроме этого, стоит ознакомиться с
|
|
|
|
|
руководством <filename>modprobe.d(5)</filename>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Если поддержка модулей не была отключена в параметрах ядра, установите модули с помощью:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="install">make modules_install</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>После окончания компиляции, необходимо выполнить еще несколько шагов для завершения
|
|
|
|
|
установки ядра. Некоторые файлы должны быть скопированы в каталог
|
|
|
|
|
<filename class="directory">/boot</filename>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<caution>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Если хост система содержит отдельный раздел для каталога /boot, файлы скопированные ниже,
|
|
|
|
|
должны находится в нём. Самый простой способ это сделать - выполнить монтирование каталога /boot
|
|
|
|
|
хост системы (вне chroot) к каталогу /mnt/lfs/boot перед тем, как продолжить. Из-под пользователя
|
|
|
|
|
&root; в <emphasis>хост системе</emphasis> выполните команду:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>mount --bind /boot /mnt/lfs/boot</userinput></screen>
|
|
|
|
|
</caution>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Путь к образу ядра может различаться в зависимости от используемой платформы. Имя файла, может
|
|
|
|
|
быть произвольным, но начинаться должно с <emphasis>vmlinuz</emphasis> для обеспечения
|
|
|
|
|
совместимости с автоматической настройкой процесса загрузки, описанного в следующем разделе.
|
|
|
|
|
Следующая команда предполагает архитектуру x86:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="install">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-&linux-version;-lfs-&version;</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para><filename>System.map</filename> - это символьный файл для ядра. Он содержит точки входа каждой
|
|
|
|
|
функции в API ядра, а также адреса структур данных для запущенного ядро. Он используется в качестве
|
|
|
|
|
ресурса при исследовании проблем с ядром. Выполните следующую команду для установки файла:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="install">cp -iv System.map /boot/System.map-&linux-version;</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Файл конфигурации ядра <filename>.config</filename> создается на шаге <command>make menuconfig</command>
|
|
|
|
|
и содержит все параметры ядра, которое было скомпилировано только что. Рекомендуется сохранить этот
|
|
|
|
|
файл на будущее:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="install">cp -iv .config /boot/config-&linux-version;</userinput></screen>
|
|
|
|
|
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Установите документацию ядра:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput remap="install">install -d /usr/share/doc/linux-&linux-version;
|
|
|
|
|
cp -r Documentation/* /usr/share/doc/linux-&linux-version;</userinput></screen>
|
|
|
|
|
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Важно отметить, что файлы в каталоге исходных кодов ядра не принадлежат пользователю
|
|
|
|
|
<emphasis>root</emphasis>. Всякий раз, когда пакет распаковывается от пользователя
|
|
|
|
|
<emphasis>root</emphasis> (как это и выполнялось внутри среды chroot), файлы имеют те
|
|
|
|
|
идентификаторы пользователя и группы, которые были присвоены при распаковке. Обычно
|
|
|
|
|
это не вызывает проблем для других устанавливаемых пакетов, так как каталог с исходными
|
|
|
|
|
кодами удаляется после установки пакета. Однако исходный код ядра Linux часто сохраняется
|
|
|
|
|
в течение длительного времени. Из-за этого существует вероятность того, что идентификатор
|
|
|
|
|
пользователя, используемый при распаковке, будет назначен другому пользователю. В таком
|
|
|
|
|
случае, этот пользователь будет иметь доступ на запись в этот каталог.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>В ряде случаев требуется обновить конфигурацию ядра для пакетов, которые будут
|
|
|
|
|
установлены позже в BLFS. В отличии от других пакетов, нет необходимости удалять дерево
|
|
|
|
|
исходного кода ядра после установки только что собранного ядра.</para>
|
|
|
|
|
|
|
|
|
|
<para>Если вы планируете оставить каталог с исходным кодом ядра, выполните команду
|
|
|
|
|
<command>chown -R 0:0</command> в каталоге <filename
|
|
|
|
|
class="directory">linux-&linux-version;</filename>, чтобы все файлы принадлежали
|
|
|
|
|
пользователю <emphasis>root</emphasis>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<warning>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>В некоторой документации по ядру рекомендуется создать символическую ссылку
|
|
|
|
|
<filename class="symlink">/usr/src/linux</filename> указывающую на каталог с исходниками
|
|
|
|
|
ядра. Эта рекомендация относится к ядрам до версии 2.6 и <emphasis>не должна</emphasis>
|
|
|
|
|
выполняться в системе LFS, так как это может вызвать проблемы с пакетами, которые вы, возможно,
|
|
|
|
|
захотите собрать, когда ваша базовая система LFS будет готова.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</warning>
|
|
|
|
|
|
|
|
|
|
<warning>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Заголовочные файлы в системном каталоге <filename class="directory">include</filename>
|
|
|
|
|
(<filename class="directory">/usr/include</filename>) <emphasis>всегда</emphasis> используются те,
|
|
|
|
|
которые применялись при компиляции Glibc, то есть подготовленные заголовочные файлы, установленные в
|
2023-06-12 17:27:05 +03:00
|
|
|
|
<xref linkend="ch-tools-linux-headers"/>. Поэтому их <emphasis>никогда</emphasis> не следует заменять
|
2023-06-12 17:09:10 +03:00
|
|
|
|
на чистые заголовочные файлы ядра или любые другие подготовленные заголовочные файлы.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</warning>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2 id="conf-modprobe" role="configuration">
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<title>Настройка порядка загрузки модулей Linux</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<indexterm zone="conf-modprobe">
|
|
|
|
|
<primary sortas="e-/etc/modprobe.d/usb.conf">/etc/modprobe.d/usb.conf</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>В большинстве случаев модули Linux загружаются автоматически, но иногда требуется
|
|
|
|
|
определенный порядок. Программа, которая загружает модули, <command>modprobe</command>
|
|
|
|
|
или <command>insmod</command>, использует файл <filename>/etc/modprobe.d/usb.conf</filename>
|
|
|
|
|
как раз для этой цели. Этот файл должен быть заполнен таким образом, что если USB-драйверы
|
|
|
|
|
(ehci_hcd, ohci_hcd и uhci_hcd) были собраны в виде модулей, то они будут загружены в правильном
|
|
|
|
|
порядке; ehci_hcd должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы избежать
|
|
|
|
|
предупреждений во время загрузки.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Создайте новый файл <filename>/etc/modprobe.d/usb.conf</filename>, выполнив следующую команду:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput>install -v -m755 -d /etc/modprobe.d
|
|
|
|
|
cat > /etc/modprobe.d/usb.conf << "EOF"
|
|
|
|
|
<literal># Begin /etc/modprobe.d/usb.conf
|
|
|
|
|
|
|
|
|
|
install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
|
|
|
|
|
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
|
|
|
|
|
|
|
|
|
|
# End /etc/modprobe.d/usb.conf</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
<sect2 id="contents-kernel" role="content">
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<title>Содержимое пакета Linux</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<segmentedlist>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<segtitle>Установленные файлы</segtitle>
|
|
|
|
|
<segtitle>Созданные каталоги</segtitle>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<seglistitem>
|
|
|
|
|
<seg>config-&linux-version;,
|
|
|
|
|
vmlinuz-&linux-version;-lfs-&version;,
|
2023-06-12 17:09:10 +03:00
|
|
|
|
и System.map-&linux-version;</seg>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<seg>/lib/modules, /usr/share/doc/linux-&linux-version;</seg>
|
|
|
|
|
</seglistitem>
|
|
|
|
|
</segmentedlist>
|
|
|
|
|
|
|
|
|
|
<variablelist>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<bridgehead renderas="sect3">Краткое описание</bridgehead>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<?dbfo list-presentation="list"?>
|
|
|
|
|
<?dbhtml list-presentation="table"?>
|
|
|
|
|
|
|
|
|
|
<varlistentry id="config">
|
|
|
|
|
<term><filename>config-&linux-version;</filename></term>
|
|
|
|
|
<listitem>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Содержит в себе все параметры конфигурации ядра</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<indexterm zone="ch-bootable-kernel config">
|
|
|
|
|
<primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry id="lfskernel">
|
|
|
|
|
<term><filename>vmlinuz-&linux-version;-lfs-&version;</filename></term>
|
|
|
|
|
<listitem>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Ядро системы Linux. При включении компьютера ядро — это первая загружаемая часть
|
|
|
|
|
операционной системы. Оно обнаруживает и инициализирует все компоненты аппаратного
|
|
|
|
|
обеспечения компьютера, делает их доступными в виде дерева каталогов с файлами для доступа
|
|
|
|
|
к ним программам и превращает один процессор в мультизадачную машину, способную выполнять
|
|
|
|
|
множество программ как будто одновременно.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<indexterm zone="ch-bootable-kernel lfskernel">
|
|
|
|
|
<primary sortas="b-lfskernel">lfskernel-&linux-version;</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
<varlistentry id="System.map">
|
|
|
|
|
<term><filename>System.map-&linux-version;</filename></term>
|
|
|
|
|
<listitem>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>Список адресов и символов; файл содержит точки входа и адреса всех функций и структур
|
|
|
|
|
данных в ядре</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<indexterm zone="ch-bootable-kernel System.map">
|
|
|
|
|
<primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
</sect1>
|