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-08-02 23:14:31 +03:00
|
|
|
|
<para>Сборка ядра состоит из нескольких этапов—настройка, компиляция и установка.
|
|
|
|
|
Ознакомьтесь с файлом <filename>README</filename> в дереве исходных текстов, чтобы
|
|
|
|
|
узнать об альтернативных способах настройки ядра.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
|
|
|
|
|
<important>
|
|
|
|
|
<para>
|
|
|
|
|
Сборка ядра Linux в первый раз — одна из самых сложных задач в LFS. Правильный выбор
|
|
|
|
|
параметров зависит от конкретного оборудования для целевой системы и ваших потребностей.
|
|
|
|
|
Для ядра доступно почти 12 000 элементов конфигурации, хотя для большинства компьютеров
|
|
|
|
|
требуется только около трети из них. Редакторы LFS рекомендуют пользователям, не знакомым
|
|
|
|
|
с этим процессом, внимательно следовать описанным ниже процедурам. Главная цель сейчас
|
|
|
|
|
состоит в том, чтобы довести первоначальную систему до состояния, когда вы сможете войти
|
|
|
|
|
в систему из командной строки при последующей перезагрузке в <xref linkend="ch-finish-reboot"/>.
|
|
|
|
|
Вопросы оптимизация и кастомизация второстепенны.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Для получения общей информации о конфигурации ядра смотрите <ulink
|
|
|
|
|
url="&hints-root;kernel-configuration.txt"/>. Дополнительную информацию о настройке и
|
|
|
|
|
сборке ядра можно найти по адресу <ulink url="&anduin-sources;/kernel-nutshell/"/>. Эти
|
|
|
|
|
ссылки немного устарели, но все же дают разумное представление о процессе.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
Если ничего не помогает, вы можете обратиться за помощью в список рассылки
|
2023-09-02 00:28:17 +03:00
|
|
|
|
<ulink url="https://www.linuxfromscratch.org/mail.html">lfs-support</ulink>. Обратите
|
2023-08-14 15:11:05 +03:00
|
|
|
|
внимание, что подписка необходима для того, чтобы рассылка не содержала спама.
|
|
|
|
|
</para>
|
|
|
|
|
</important>
|
|
|
|
|
|
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-08-02 23:14:31 +03:00
|
|
|
|
<para>Эта команда запускает интерфейс на основе ncurses. Для использования других
|
2023-06-12 00:42:42 +03:00
|
|
|
|
(графических) интерфейсов, выполните <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 -->
|
|
|
|
|
|
|
|
|
|
<note>
|
2023-09-02 12:43:57 +03:00
|
|
|
|
<?dbfo keep-together="auto"?>
|
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>Обязательно включите/отключите/настройте следующие параметры, иначе система может
|
2023-08-02 23:14:31 +03:00
|
|
|
|
работать некорректно или вообще не загружаться:</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<!-- To editors: for updating kernel configuration, edit
|
|
|
|
|
kernel/*.toml and regenerate kernel/*.xml with
|
|
|
|
|
"make -C kernel KERNEL_TREE=</usr/src/linux-&linux-version> -->
|
|
|
|
|
|
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
href="kernel/sysv.xml"/>
|
|
|
|
|
|
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
href="kernel/systemd.xml"/>
|
|
|
|
|
|
|
|
|
|
<para>Включите некоторые дополнительные функции, если вы собираете 64-битную систему.
|
|
|
|
|
Если вы используете menuconfig, включите их в следующем порядке: сначала
|
|
|
|
|
<parameter>CONFIG_PCI_MSI</parameter>, затем
|
|
|
|
|
<parameter>CONFIG_IRQ_REMAP</parameter>, и, наконец,
|
|
|
|
|
<parameter>CONFIG_X86_X2APIC</parameter>, потому что параметр отображается только
|
|
|
|
|
после выбора его зависимости.</para>
|
|
|
|
|
|
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
href="kernel/x2apic.xml"/>
|
|
|
|
|
|
|
|
|
|
<para>Если вы создаете 32-разрядную систему, работающую на оборудовании с объемом
|
|
|
|
|
оперативной памяти более 4 ГБ, измените конфигурацию таким образом, чтобы ядро могло
|
|
|
|
|
использовать до 64 ГБ оперативной памяти:</para>
|
|
|
|
|
|
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
href="kernel/highmem.xml"/>
|
|
|
|
|
|
|
|
|
|
<para>Если раздел для системы LFS находится на NVME SSD (то есть узлом устройства
|
|
|
|
|
для раздела является <filename>/dev/nvme*</filename>, а не <filename>/dev/sd*</filename>),
|
2024-02-22 22:02:52 +03:00
|
|
|
|
включите параметр NVME support, иначе система LFS не будет загружаться:</para>
|
2023-08-14 15:11:05 +03:00
|
|
|
|
|
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
href="kernel/nvme.xml"/>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</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-08-14 15:11:05 +03:00
|
|
|
|
<para>Есть несколько других параметров, которые могут понадобиться
|
2023-06-12 00:42:42 +03:00
|
|
|
|
в зависимости от особенностей системы. Для получения списка необходимых опций для пакетов BLFS
|
2023-08-14 15:11:05 +03:00
|
|
|
|
смотрите <ulink
|
|
|
|
|
url="&lfs-root;blfs/view/&short-version;/longindex.html#kernel-config-index">Список опций ядра BLFS</ulink>.
|
|
|
|
|
</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<para>Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с помощью него, вам необходимо
|
|
|
|
|
настроить некоторые параметры ядра, следуя инструкции
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<ulink url="&blfs-book;postlfs/grub-setup.html#uefi-kernel">на странице BLFS</ulink>,
|
|
|
|
|
<emphasis role='bold'>даже если вы будете использовать загрузчик UEFI из основного
|
|
|
|
|
дистрибутива</emphasis>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
2023-09-25 23:05:48 +03:00
|
|
|
|
<note arch="ml_32,ml_x32,ml_all">
|
|
|
|
|
<para>
|
|
|
|
|
Ядро в multilib-системе должно иметь возможность идентифицировать и запускать двоичные
|
|
|
|
|
файлы, скомпилированные для архитектур, отличных от архитектуры, используемой по
|
|
|
|
|
умолчанию.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para arch="ml_32,ml_all">
|
|
|
|
|
Если была добавлена поддержка любого 32-битного ABI, убедитесь, что выбран параметр
|
|
|
|
|
"IA32 Emulation". Параметр 'IA32 a.out support' не является обязательным и включен
|
|
|
|
|
как модуль.
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para arch="ml_x32,ml_all">
|
|
|
|
|
Если добавлена поддержка x32bit ABI, убедитесь, что выбрана опция "x32 ABI for 64-bit
|
|
|
|
|
mode".
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<screen arch="ml_32">Binary Emulations --->
|
|
|
|
|
[*] IA32 Emulation [CONFIG_IA32_EMULATION]
|
|
|
|
|
<M> IA32 a.out support [CONFIG_IA32_AOUT]
|
|
|
|
|
</screen>
|
|
|
|
|
<screen arch="ml_x32">Binary Emulations --->
|
|
|
|
|
[*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
|
|
|
|
|
</screen>
|
|
|
|
|
<screen arch="ml_all">Binary Emulations --->
|
|
|
|
|
[*] IA32 Emulation [CONFIG_IA32_EMULATION]
|
|
|
|
|
<M> IA32 a.out support [CONFIG_IA32_AOUT]
|
|
|
|
|
[*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
|
|
|
|
|
</screen>
|
|
|
|
|
</note>
|
|
|
|
|
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<variablelist>
|
2023-06-12 00:42:42 +03:00
|
|
|
|
<title>Пояснения для выбранных выше параметров ядра:</title>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Randomize the address of the kernel image (KASLR)</parameter></term>
|
|
|
|
|
<listitem>
|
2023-08-02 23:14:31 +03:00
|
|
|
|
<para>Включите ASLR для образа ядра, чтобы уменьшить вероятность некоторых атак,
|
2023-08-01 16:19:23 +03:00
|
|
|
|
основанных на фиксированных адресах конфиденциальных данных или кода в ядре.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
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>
|
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<parameter>
|
|
|
|
|
Configure standard kernel features (expert users)
|
|
|
|
|
</parameter>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Эта опция приведет к отображению некоторых параметров в интерфейсе конфигурации,
|
|
|
|
|
но изменение этих параметров может быть опасным. Не используйте её, если вы не знаете,
|
|
|
|
|
что делаете.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Strong Stack Protector</parameter></term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Включите SSP для ядра. Мы включили его для всего пользовательского пространства
|
|
|
|
|
с помощью <parameter>--enable-default-ssp</parameter>, настроив GCC, но ядро не
|
|
|
|
|
использует настройки GCC по умолчанию для SSP. Мы включаем это явно здесь.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term><parameter>Support for uevent helper</parameter></term>
|
|
|
|
|
<listitem>
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<para>Включение этого параметра может вызвать сбои при управление устройствами через Udev.</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 будет работать поверх, управляя разрешениями и добавляя
|
2023-08-02 23:14:31 +03:00
|
|
|
|
необходимые символические ссылки. Этот элемент конфигурации необходим всем пользователям
|
2023-08-14 15:11:05 +03:00
|
|
|
|
Udev.</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>
|
|
|
|
|
|
2023-12-05 21:21:28 +03:00
|
|
|
|
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<varlistentry>
|
2023-12-05 21:21:28 +03:00
|
|
|
|
<term>
|
|
|
|
|
<parameter>
|
|
|
|
|
Enable legacy fbdev support for your modesetting driver
|
|
|
|
|
</parameter> и
|
|
|
|
|
<parameter>Framebuffer Console support</parameter>
|
|
|
|
|
</term>
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<listitem>
|
2023-12-05 21:21:28 +03:00
|
|
|
|
<para>Они необходимы для отображения консоли Linux на графическом процессоре, управляемом
|
|
|
|
|
драйвером DRI (Direct Rendering Infrastructure - инфраструктура прямого рендеринга). Если
|
|
|
|
|
<option>CONFIG_DRM</option> (Direct Rendering Manager - диспетчер прямого рендеринга) включен,
|
|
|
|
|
вам также следует включить эти две опции, иначе вы увидите пустой экран после загрузки драйвера
|
|
|
|
|
DRI.</para>
|
2023-08-01 16:19:23 +03:00
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2023-05-23 09:22:34 +03:00
|
|
|
|
<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
|
|
|
|
|
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>. Кроме этого, стоит ознакомиться с
|
2024-02-01 14:39:54 +03:00
|
|
|
|
руководством <ulink role='man' url='&man;modprobe.d.5'>modprobe.d(5)</ulink>.</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-08-01 16:19:23 +03:00
|
|
|
|
<para>Если вы решили использовать отдельный &boot-dir; раздел для системы LFS (возможно,
|
|
|
|
|
общий раздел &boot-dir; с хост-дистрибутивом), скопированные ниже файлы должны быть
|
|
|
|
|
помещены туда. Самый простой способ сделать это — сначала создать запись для &boot-dir;
|
|
|
|
|
в &fstab; (подробности читайте в предыдущем разделе), затем выполните следующую команду
|
|
|
|
|
от имени пользователя &root; в среде <emphasis>chroot</emphasis>:</para>
|
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>mount /boot</userinput></screen>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2023-08-01 16:19:23 +03:00
|
|
|
|
<para>Путь к узлу устройства в команде опущен, поскольку <command>mount</command> может
|
|
|
|
|
прочитать его из &fstab;.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</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> - это символьный файл для ядра. Он содержит точки входа каждой
|
2024-02-22 22:02:52 +03:00
|
|
|
|
функции в API ядра, а также адреса структур данных для запущенного ядра. Он используется в качестве
|
2023-06-12 00:42:42 +03:00
|
|
|
|
ресурса при исследовании проблем с ядром. Выполните следующую команду для установки файла:</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
|
|
|
|
|
2023-08-14 15:11:05 +03:00
|
|
|
|
<screen><userinput remap="install">cp -r Documentation -T /usr/share/doc/linux-&linux-version;</userinput></screen>
|
|
|
|
|
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
2024-02-22 22:02:52 +03:00
|
|
|
|
<para>Важно отметить, что файлы в каталоге с исходным кодом ядра не принадлежат пользователю
|
|
|
|
|
<emphasis>root</emphasis>. Всякий раз, когда пакет распаковывается от имени пользователя
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<emphasis>root</emphasis> (как это и выполнялось внутри среды chroot), файлы имеют те
|
|
|
|
|
идентификаторы пользователя и группы, которые были присвоены при распаковке. Обычно
|
2024-02-22 22:02:52 +03:00
|
|
|
|
это не вызывает проблем для других устанавливаемых пакетов, так как каталог с исходниками
|
|
|
|
|
удаляется после установки пакета. Однако исходный код ядра Linux часто сохраняется
|
2023-06-12 17:09:10 +03:00
|
|
|
|
в течение длительного времени. Из-за этого существует вероятность того, что идентификатор
|
|
|
|
|
пользователя, используемый при распаковке, будет назначен другому пользователю. В таком
|
|
|
|
|
случае, этот пользователь будет иметь доступ на запись в этот каталог.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
|
|
|
|
|
<note>
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<para>В ряде случаев требуется обновить конфигурацию ядра для пакетов, которые будут
|
|
|
|
|
установлены позже в BLFS. В отличии от других пакетов, нет необходимости удалять дерево
|
|
|
|
|
исходного кода ядра после установки только что собранного ядра.</para>
|
|
|
|
|
|
|
|
|
|
<para>Если вы планируете оставить каталог с исходным кодом ядра, выполните команду
|
2024-02-14 22:13:18 +03:00
|
|
|
|
<command>chown -R 0:0 *</command> находясь в каталоге <filename
|
2023-06-12 17:09:10 +03:00
|
|
|
|
class="directory">linux-&linux-version;</filename>, чтобы все файлы принадлежали
|
|
|
|
|
пользователю <emphasis>root</emphasis>.</para>
|
2023-05-23 09:22:34 +03:00
|
|
|
|
</note>
|
|
|
|
|
|
|
|
|
|
<warning>
|
2024-02-22 22:02:52 +03:00
|
|
|
|
<para>Иногда, в документации к ядру, рекомендуют создать символическую ссылку
|
2023-06-12 17:09:10 +03:00
|
|
|
|
<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. При включении компьютера ядро — это первая загружаемая часть
|
|
|
|
|
операционной системы. Оно обнаруживает и инициализирует все компоненты аппаратного
|
|
|
|
|
обеспечения компьютера, делает их доступными в виде дерева каталогов с файлами для доступа
|
2023-08-02 23:14:31 +03:00
|
|
|
|
к ним программ и превращает один процессор в мультизадачную машину, способную выполнять
|
2023-06-12 17:09:10 +03:00
|
|
|
|
множество программ как будто одновременно.</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>
|