summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter10/kernel.html
diff options
context:
space:
mode:
authorSn4il <sn4il@thedroth.rocks>2024-01-10 16:57:29 +0300
committerSn4il <sn4il@thedroth.rocks>2024-01-10 16:57:29 +0300
commitc4d43142181a45b849a15cf8ec5ebe61cea33897 (patch)
tree459a90d19e6f1ece81fbf364c1b5292214d99615 /lfs-12.0-sysv/chapter10/kernel.html
parenta044ba7b1561a513e33de0b7c1876aaa401a26d7 (diff)
downloadsn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.tar.gz
sn4il-site-c4d43142181a45b849a15cf8ec5ebe61cea33897.zip
LFS 12 mirror
Diffstat (limited to 'lfs-12.0-sysv/chapter10/kernel.html')
-rw-r--r--lfs-12.0-sysv/chapter10/kernel.html752
1 files changed, 752 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter10/kernel.html b/lfs-12.0-sysv/chapter10/kernel.html
new file mode 100644
index 0000000..ed8aeee
--- /dev/null
+++ b/lfs-12.0-sysv/chapter10/kernel.html
@@ -0,0 +1,752 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
+ <title>
+ 10.3. Linux-6.4.12
+ </title>
+ <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
+ <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
+ "text/css" media="print" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body class="lfs" id="lfs-12.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </h4>
+ <h3>
+ Глава 10. Делаем систему LFS загрузочной
+ </h3>
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="fstab.html" title=
+ "Создание файла /etc/fstab">Пред.</a>
+ <p>
+ Создание файла /etc/fstab
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="grub.html" title=
+ "Использование GRUB для настройки процесса загрузки">След.</a>
+ <p>
+ Использование GRUB для настройки процесса загрузки
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter10.html" title=
+ "Глава 10. Делаем систему LFS загрузочной">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="wrap" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-bootable-kernel" name="ch-bootable-kernel"></a>10.3.
+ Linux-6.4.12
+ </h1>
+ <div class="package" lang="en" xml:lang="en">
+ <p>
+ Этот пакет содержит ядро Linux.
+ </p>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Приблизительное время сборки:</strong>
+ <span class="segbody">1.5 - 130.0 SBU (обычно около 12
+ SBU)</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Требуемое дисковое
+ пространство:</strong> <span class="segbody">1200 - 8800 MB
+ (обычно около 1700 MB)</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="installation" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ 10.3.1. Установка ядра
+ </h2>
+ <p>
+ Сборка ядра состоит из нескольких этапов—настройка, компиляция и
+ установка. Ознакомьтесь с файлом <code class=
+ "filename">README</code> в дереве исходных текстов, чтобы узнать об
+ альтернативных способах настройки ядра.
+ </p>
+ <div class="admon important">
+ <img alt="[Важно]" src="../images/important.png" />
+ <h3>
+ Важно
+ </h3>
+ <p>
+ Сборка ядра Linux в первый раз — одна из самых сложных задач в
+ LFS. Правильный выбор параметров зависит от конкретного
+ оборудования для целевой системы и ваших потребностей. Для ядра
+ доступно почти 12 000 элементов конфигурации, хотя для
+ большинства компьютеров требуется только около трети из них.
+ Редакторы LFS рекомендуют пользователям, не знакомым с этим
+ процессом, внимательно следовать описанным ниже процедурам.
+ Главная цель сейчас состоит в том, чтобы довести первоначальную
+ систему до состояния, когда вы сможете войти в систему из
+ командной строки при последующей перезагрузке в <a class="xref"
+ href="../chapter11/reboot.html" title=
+ "11.3. Перезагрузка системы">Раздел&nbsp;11.3, «Перезагрузка
+ системы»</a>. Вопросы оптимизация и кастомизация второстепенны.
+ </p>
+ <p>
+ Для получения общей информации о конфигурации ядра смотрите
+ <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt">
+ https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt</a>.
+ Дополнительную информацию о настройке и сборке ядра можно найти
+ по адресу <a class="ulink" href=
+ "https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/">https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/</a>.
+ Эти ссылки немного устарели, но все же дают разумное
+ представление о процессе.
+ </p>
+ <p>
+ Если ничего не помогает, вы можете обратиться за помощью в список
+ рассылки <a class="ulink" href=
+ "https://www.linuxfromscratch.org/mail.html">lfs-support</a>.
+ Обратите внимание, что подписка необходима для того, чтобы
+ рассылка не содержала спама.
+ </p>
+ </div>
+ <p>
+ Подготовьте пакет к компиляции, выполнив следующую команду:
+ </p>
+ <pre class="userinput"><kbd class="command">make mrproper</kbd></pre>
+ <p>
+ Выполнение этой команды гарантирует, что дерево исходников будет
+ абсолютно чистым. Разработчики ядра рекомендуют запускать эту
+ команду перед каждой компиляцией. Не следует полагаться на то, что
+ дерево исходных текстов ядра будет чистым после распаковки.
+ </p>
+ <p>
+ Существует несколько способов настройки параметров ядра. Обычно это
+ делается с помощью псевдографического интерфейса, например так:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make menuconfig</kbd></pre>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Значения необязательных переменных окружения
+ make:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class=
+ "parameter"><code>LANG=&lt;переменная_LANG_хоста&gt;
+ LC_ALL=</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Устанавливает значение локали на то, которое используется на
+ хосте. Это может понадобиться для правильного отображения
+ интерфейса menuconfig с помощью ncurses в текстовой консоли
+ Linux с UTF-8.
+ </p>
+ <p>
+ Если это необходимо, обязательно замените значение <em class=
+ "replaceable"><code>&lt;переменной_LANG&gt;</code></em> на
+ значение переменной <code class="envar">$LANG</code> вашего
+ хоста. В качестве альтернативы вы можете использовать
+ значения переменных <code class="envar">$LC_ALL</code> или
+ <code class="envar">$LC_CTYPE</code>.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><span class="command"><strong>make
+ menuconfig</strong></span></span>
+ </dt>
+ <dd>
+ <p>
+ Эта команда запускает интерфейс на основе ncurses. Для
+ использования других (графических) интерфейсов, выполните
+ <span class="command"><strong>make help</strong></span>.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Хорошей отправной точкой для настройки ядра, может стать запуск
+ команды <span class="command"><strong>make
+ defconfig</strong></span>. В результате её выполнения будет
+ создана базовая конфигурация с учётом архитектуры системы.
+ </p>
+ <p>
+ Обязательно включите/отключите/настройте следующие параметры,
+ иначе система может работать некорректно или вообще не
+ загружаться:
+ </p>
+ <pre class="screen"><span class="blue">G</span>eneral setup ---&gt;
+ [ ] <span class=
+"blue">C</span>ompile the kernel with warnings as errors [WERROR]
+ <span class="blue">C</span>PU/Task time and stats accounting ---&gt;
+ [*] <span class=
+"blue">P</span>ressure stall information tracking [PSI]
+ [ ] <span class=
+"blue">R</span>equire boot parameter to enable pressure stall information tracking
+ ... [PSI_DEFAULT_DISABLED]
+ &lt; &gt; <span class=
+"blue">E</span>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
+ [*] <span class=
+"blue">C</span>ontrol Group support ---&gt; [CGROUPS]
+ [*] M<span class=
+"blue">e</span>mory controller [MEMCG]
+ [ ] <span class=
+"blue">C</span>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
+
+<span class="blue">P</span>rocessor type and features ---&gt;
+ [*] <span class=
+"blue">B</span>uild a relocatable kernel [RELOCATABLE]
+ [*] <span class=
+"blue">R</span>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
+
+<span class="blue">G</span>eneral architecture-dependent options ---&gt;
+ [*] <span class=
+"blue">S</span>tack Protector buffer overflow detection [STACKPROTECTOR]
+ [*] <span class=
+"blue">S</span>trong Stack Protector [STACKPROTECTOR_STRONG]
+
+<span class="blue">D</span>evice Drivers ---&gt;
+ <span class="blue">G</span>eneric Driver Options ---&gt;
+ [ ] <span class=
+"blue">S</span>upport for uevent helper [UEVENT_HELPER]
+ [*] M<span class=
+"blue">a</span>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
+ [*] <span class=
+"blue">A</span>utomount devtmpfs at /dev, after the kernel mounted the rootfs
+ ... [DEVTMPFS_MOUNT]
+ <span class="blue">G</span>raphics support ---&gt;
+ <span class="blue">F</span>rame buffer Devices ---&gt;
+ &lt;*&gt; <span class=
+"blue">S</span>upport for frame buffer devices ---&gt; [FB]
+ <span class="blue">C</span>onsole display driver support ---&gt;
+ [*] <span class=
+"blue">F</span>ramebuffer Console support [FRAMEBUFFER_CONSOLE]</pre>
+ <p>
+ Включите некоторые дополнительные функции, если вы собираете
+ 64-битную систему. Если вы используете menuconfig, включите их в
+ следующем порядке: сначала <em class=
+ "parameter"><code>CONFIG_PCI_MSI</code></em>, затем <em class=
+ "parameter"><code>CONFIG_IRQ_REMAP</code></em>, и, наконец,
+ <em class="parameter"><code>CONFIG_X86_X2APIC</code></em>, потому
+ что параметр отображается только после выбора его зависимости.
+ </p>
+ <pre class="screen"><span class=
+ "blue">P</span>rocessor type and features ---&gt;
+ [*] <span class=
+"blue">S</span>upport x2apic [X86_X2APIC]
+
+<span class="blue">D</span>evice Drivers ---&gt;
+ [*] <span class=
+"blue">P</span>CI support ---&gt; [PCI]
+ [*] M<span class=
+"blue">e</span>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI]
+ [*] <span class=
+"blue">I</span>OMMU Hardware Support ---&gt; [IOMMU_SUPPORT]
+ [*] <span class=
+"blue">S</span>upport for Interrupt Remapping [IRQ_REMAP]</pre>
+ <p>
+ Если вы создаете 32-разрядную систему, работающую на оборудовании
+ с объемом оперативной памяти более 4 ГБ, измените конфигурацию
+ таким образом, чтобы ядро могло использовать до 64 ГБ оперативной
+ памяти:
+ </p>
+ <pre class="screen"><span class=
+ "blue">P</span>rocessor type and features ---&gt;
+ H<span class="blue">i</span>gh Memory Support ---&gt;
+ (X) <span class=
+"blue">6</span>4GB [HIGHMEM64G]</pre>
+ <p>
+ Если раздел для системы LFS находится на NVME SSD (то есть узлом
+ устройства для раздела является <code class=
+ "filename">/dev/nvme*</code>, а не <code class=
+ "filename">/dev/sd*</code>), включите параметр NVME support,
+ иначе система LFS не будет загружается:
+ </p>
+ <pre class="screen"><span class=
+ "blue">D</span>evice Drivers ---&gt;
+ N<span class="blue">V</span>ME Support ---&gt;
+ &lt;*&gt; N<span class=
+"blue">V</span>M Express block device [BLK_DEV_NVME]</pre>
+ </div>
+ <p>
+ Есть несколько других параметров, которые могут понадобиться в
+ зависимости от особенностей системы. Для получения списка
+ необходимых опций для пакетов BLFS смотрите <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.0/longindex.html#kernel-config-index">
+ Список опций ядра BLFS</a>.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с
+ помощью него, вам необходимо настроить некоторые параметры ядра,
+ следуя инструкции <a class="ulink" href=
+ "https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/grub-setup.html#uefi-kernel">
+ на странице BLFS</a>, <span class="bold"><strong>даже если вы
+ будете использовать загрузчик UEFI из основного
+ дистрибутива</strong></span>.
+ </p>
+ </div>
+ <div class="variablelist">
+ <p class="title">
+ <strong>Пояснения для выбранных выше параметров ядра:</strong>
+ </p>
+ <dl class="variablelist">
+ <dt>
+ <span class="term"><em class="parameter"><code>Randomize the
+ address of the kernel image (KASLR)</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включите ASLR для образа ядра, чтобы уменьшить вероятность
+ некоторых атак, основанных на фиксированных адресах
+ конфиденциальных данных или кода в ядре.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Compile the
+ kernel with warnings as errors</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включение этого параметра может привести к сбою сборки, если
+ компилятор и/или конфигурация отличается от конфигурации ядра
+ разработчиков.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Enable kernel
+ headers through /sys/kernel/kheaders.tar.xz</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Для сборки ядра с этим параметром необходим пакет
+ <span class="command"><strong>cpio</strong></span>.
+ <span class="command"><strong>cpio</strong></span> не
+ устанавливается в LFS.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Configure
+ standard kernel features (expert users)</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Эта опция приведет к отображению некоторых параметров в
+ интерфейсе конфигурации, но изменение этих параметров может
+ быть опасным. Не используйте её, если вы не знаете, что
+ делаете.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Strong Stack
+ Protector</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включите SSP для ядра. Мы включили его для всего
+ пользовательского пространства с помощью <em class=
+ "parameter"><code>--enable-default-ssp</code></em>, настроив
+ GCC, но ядро не использует настройки GCC по умолчанию для
+ SSP. Мы включаем это явно здесь.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Support for
+ uevent helper</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Включение этого параметра может вызвать сбои при управление
+ устройствами через Udev.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Maintain a
+ devtmpfs</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ С помощью этого параметра узлы устройств создаются
+ автоматически и заполняются самим ядром, даже без запуска
+ Udev. Udev будет работать поверх, управляя разрешениями и
+ добавляя необходимые символические ссылки. Этот элемент
+ конфигурации необходим всем пользователям Udev.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Automount
+ devtmpfs at /dev</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Этот параметр позволит смонтировать представление ядра
+ устройств в /dev при переключении на корневую файловую
+ систему непосредственно перед запуском init.
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Framebuffer
+ Console support</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Это параметр необходим для отображения консоли Linux на
+ устройстве с фреймбуфером. Чтобы ядро могло печатать
+ отладочные сообщения на ранней стадии загрузки, его не
+ следует собирать как модуль (если только не будет
+ использоваться initramfs). И, если <code class=
+ "option">CONFIG_DRM</code> (Direct Rendering Manager -
+ Диспетчер прямого рендеринга) включен, скорее всего, также
+ должен быть включен <code class=
+ "option">CONFIG_DRM_FBDEV_EMULATION</code> (включить
+ устаревшую поддержку fbdev для вашего modesetting драйвера).
+ </p>
+ </dd>
+ <dt>
+ <span class="term"><em class="parameter"><code>Support
+ x2apic</code></em></span>
+ </dt>
+ <dd>
+ <p>
+ Поддержка запуска 64-разрядного контроллера прерываний для
+ x86 процессоров в режиме x2APIC. x2APIC может быть включен в
+ BIOS на системах x86 и у ядра собранного без этой опции будет
+ kernel panic при загрузке. Эта опция не окажет никакого
+ эффекта, но и не причиняет вреда, если x2APIC отключен в
+ BIOS.
+ </p>
+ </dd>
+ </dl>
+ </div>
+ <p>
+ В качестве альтернативы, в некоторых ситуациях может быть уместно
+ использование команды <span class="command"><strong>make
+ oldconfig</strong></span>. Смотрите файл <code class=
+ "filename">README</code> для получения дополнительной информации.
+ </p>
+ <p>
+ По желанию, вы можете пропустить настройку ядра, скопировав
+ конфигурационный файл ядра <code class="filename">.config</code>,
+ из хост системы(если он доступен) в каталог куда было распаковано
+ ядро <code class="filename">linux-6.4.12</code>. Однако, мы не
+ рекомендуем этот вариант. Намного лучше изучить все параметры меню
+ и создать конфигурацию ядра с нуля.
+ </p>
+ <p>
+ Скомпилируйте образ ядра и модули:
+ </p>
+ <pre class="userinput"><kbd class="command">make</kbd></pre>
+ <p>
+ При использовании модулей, могут потребоваться файлы конфигурации,
+ которые расположены в каталоге <code class=
+ "filename">/etc/modprobe.d</code>. Информация о модулях и
+ конфигурации ядра находится в <a class="xref" href=
+ "../chapter09/udev.html" title=
+ "9.3. Взаимодействие с устройствами и модулями">Раздел&nbsp;9.3,
+ «Взаимодействие с устройствами и модулями»</a> и в документации к
+ ядру <code class="filename">linux-6.4.12/Documentation</code>.
+ Кроме этого, стоит ознакомиться с руководством <code class=
+ "filename">modprobe.d(5)</code>.
+ </p>
+ <p>
+ Если поддержка модулей не была отключена в параметрах ядра,
+ установите модули с помощью:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">make modules_install</kbd></pre>
+ <p>
+ После окончания компиляции, необходимо выполнить еще несколько
+ шагов для завершения установки ядра. Некоторые файлы должны быть
+ скопированы в каталог <code class="filename">/boot</code>.
+ </p>
+ <div class="admon caution">
+ <img alt="[Внимание]" src="../images/caution.png" />
+ <h3>
+ Внимание
+ </h3>
+ <p>
+ Если вы решили использовать отдельный <code class=
+ "filename">/boot</code> раздел для системы LFS (возможно, общий
+ раздел <code class="filename">/boot</code> с хост-дистрибутивом),
+ скопированные ниже файлы должны быть помещены туда. Самый простой
+ способ сделать это — сначала создать запись для <code class=
+ "filename">/boot</code> в <code class=
+ "filename">/etc/fstab</code> (подробности читайте в предыдущем
+ разделе), затем выполните следующую команду от имени пользователя
+ <code class="systemitem">root</code> в среде <span class=
+ "emphasis"><em>chroot</em></span>:
+ </p>
+ <pre class="userinput"><kbd class="command">mount /boot</kbd></pre>
+ <p>
+ Путь к узлу устройства в команде опущен, поскольку <span class=
+ "command"><strong>mount</strong></span> может прочитать его из
+ <code class="filename">/etc/fstab</code>.
+ </p>
+ </div>
+ <p>
+ Путь к образу ядра может различаться в зависимости от используемой
+ платформы. Имя файла, может быть произвольным, но начинаться должно
+ с <span class="emphasis"><em>vmlinuz</em></span> для обеспечения
+ совместимости с автоматической настройкой процесса загрузки,
+ описанного в следующем разделе. Следующая команда предполагает
+ архитектуру x86:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.4.12-lfs-12.0</kbd></pre>
+ <p>
+ <code class="filename">System.map</code> - это символьный файл для
+ ядра. Он содержит точки входа каждой функции в API ядра, а также
+ адреса структур данных для запущенного ядро. Он используется в
+ качестве ресурса при исследовании проблем с ядром. Выполните
+ следующую команду для установки файла:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv System.map /boot/System.map-6.4.12</kbd></pre>
+ <p>
+ Файл конфигурации ядра <code class="filename">.config</code>
+ создается на шаге <span class="command"><strong>make
+ menuconfig</strong></span> и содержит все параметры ядра, которое
+ было скомпилировано только что. Рекомендуется сохранить этот файл
+ на будущее:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -iv .config /boot/config-6.4.12</kbd></pre>
+ <p>
+ Установите документацию ядра:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">cp -r Documentation -T /usr/share/doc/linux-6.4.12</kbd></pre>
+ <p>
+ Важно отметить, что файлы в каталоге исходных кодов ядра не
+ принадлежат пользователю <span class=
+ "emphasis"><em>root</em></span>. Всякий раз, когда пакет
+ распаковывается от пользователя <span class=
+ "emphasis"><em>root</em></span> (как это и выполнялось внутри среды
+ chroot), файлы имеют те идентификаторы пользователя и группы,
+ которые были присвоены при распаковке. Обычно это не вызывает
+ проблем для других устанавливаемых пакетов, так как каталог с
+ исходными кодами удаляется после установки пакета. Однако исходный
+ код ядра Linux часто сохраняется в течение длительного времени.
+ Из-за этого существует вероятность того, что идентификатор
+ пользователя, используемый при распаковке, будет назначен другому
+ пользователю. В таком случае, этот пользователь будет иметь доступ
+ на запись в этот каталог.
+ </p>
+ <div class="admon note">
+ <img alt="[Примечание]" src="../images/note.png" />
+ <h3>
+ Примечание
+ </h3>
+ <p>
+ В ряде случаев требуется обновить конфигурацию ядра для пакетов,
+ которые будут установлены позже в BLFS. В отличии от других
+ пакетов, нет необходимости удалять дерево исходного кода ядра
+ после установки только что собранного ядра.
+ </p>
+ <p>
+ Если вы планируете оставить каталог с исходным кодом ядра,
+ выполните команду <span class="command"><strong>chown -R
+ 0:0</strong></span> в каталоге <code class=
+ "filename">linux-6.4.12</code>, чтобы все файлы принадлежали
+ пользователю <span class="emphasis"><em>root</em></span>.
+ </p>
+ </div>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ В некоторой документации по ядру рекомендуется создать
+ символическую ссылку <code class="filename">/usr/src/linux</code>
+ указывающую на каталог с исходниками ядра. Эта рекомендация
+ относится к ядрам до версии 2.6 и <span class="emphasis"><em>не
+ должна</em></span> выполняться в системе LFS, так как это может
+ вызвать проблемы с пакетами, которые вы, возможно, захотите
+ собрать, когда ваша базовая система LFS будет готова.
+ </p>
+ </div>
+ <div class="admon warning">
+ <img alt="[Предупреждение]" src="../images/warning.png" />
+ <h3>
+ Предупреждение
+ </h3>
+ <p>
+ Заголовочные файлы в системном каталоге <code class=
+ "filename">include</code> (<code class=
+ "filename">/usr/include</code>) <span class=
+ "emphasis"><em>всегда</em></span> используются те, которые
+ применялись при компиляции Glibc, то есть подготовленные
+ заголовочные файлы, установленные в <a class="xref" href=
+ "../chapter05/linux-headers.html" title=
+ "5.4. Заголовочные файлы Linux-6.4.12 API">Раздел&nbsp;5.4,
+ «Заголовочные файлы Linux-6.4.12 API»</a>. Поэтому их
+ <span class="emphasis"><em>никогда</em></span> не следует
+ заменять на чистые заголовочные файлы ядра или любые другие
+ подготовленные заголовочные файлы.
+ </p>
+ </div>
+ </div>
+ <div class="configuration" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="conf-modprobe" name="conf-modprobe"></a>10.3.2. Настройка
+ порядка загрузки модулей Linux
+ </h2>
+ <p>
+ В большинстве случаев модули Linux загружаются автоматически, но
+ иногда требуется определенный порядок. Программа, которая загружает
+ модули, <span class="command"><strong>modprobe</strong></span> или
+ <span class="command"><strong>insmod</strong></span>, использует
+ файл <code class="filename">/etc/modprobe.d/usb.conf</code> как раз
+ для этой цели. Этот файл должен быть заполнен таким образом, что
+ если USB-драйверы (ehci_hcd, ohci_hcd и uhci_hcd) были собраны в
+ виде модулей, то они будут загружены в правильном порядке; ehci_hcd
+ должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы
+ избежать предупреждений во время загрузки.
+ </p>
+ <p>
+ Создайте новый файл <code class=
+ "filename">/etc/modprobe.d/usb.conf</code>, выполнив следующую
+ команду:
+ </p>
+ <pre class="userinput"><kbd class=
+ "command">install -v -m755 -d /etc/modprobe.d
+cat &gt; /etc/modprobe.d/usb.conf &lt;&lt; "EOF"
+<code class="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</code>
+EOF</kbd></pre>
+ </div>
+ <div class="content" lang="en" xml:lang="en">
+ <h2 class="sect2">
+ <a id="contents-kernel" name="contents-kernel"></a>10.3.3.
+ Содержимое пакета Linux
+ </h2>
+ <div class="segmentedlist">
+ <div class="seglistitem">
+ <div class="seg">
+ <strong class="segtitle">Установленные файлы:</strong>
+ <span class="segbody">config-6.4.12, vmlinuz-6.4.12-lfs-12.0, и
+ System.map-6.4.12</span>
+ </div>
+ <div class="seg">
+ <strong class="segtitle">Созданные каталоги:</strong>
+ <span class="segbody">/lib/modules,
+ /usr/share/doc/linux-6.4.12</span>
+ </div>
+ </div>
+ </div>
+ <div class="variablelist">
+ <h3>
+ Краткое описание
+ </h3>
+ <table border="0" class="variablelist">
+ <colgroup>
+ <col align="left" valign="top" />
+ <col />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <a id="config" name="config"></a><span class=
+ "term"><code class="filename">config-6.4.12</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Содержит в себе все параметры конфигурации ядра
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="lfskernel" name="lfskernel"></a><span class=
+ "term"><code class=
+ "filename">vmlinuz-6.4.12-lfs-12.0</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Ядро системы Linux. При включении компьютера ядро — это
+ первая загружаемая часть операционной системы. Оно
+ обнаруживает и инициализирует все компоненты аппаратного
+ обеспечения компьютера, делает их доступными в виде
+ дерева каталогов с файлами для доступа к ним программ и
+ превращает один процессор в мультизадачную машину,
+ способную выполнять множество программ как будто
+ одновременно.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <a id="System.map" name="System.map"></a><span class=
+ "term"><code class=
+ "filename">System.map-6.4.12</code></span>
+ </p>
+ </td>
+ <td>
+ <p>
+ Список адресов и символов; файл содержит точки входа и
+ адреса всех функций и структур данных в ядре
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="navfooter">
+ <ul>
+ <li class="prev">
+ <a accesskey="p" href="fstab.html" title=
+ "Создание файла /etc/fstab">Пред.</a>
+ <p>
+ Создание файла /etc/fstab
+ </p>
+ </li>
+ <li class="next">
+ <a accesskey="n" href="grub.html" title=
+ "Использование GRUB для настройки процесса загрузки">След.</a>
+ <p>
+ Использование GRUB для настройки процесса загрузки
+ </p>
+ </li>
+ <li class="up">
+ <a accesskey="u" href="chapter10.html" title=
+ "Глава 10. Делаем систему LFS загрузочной">Наверх</a>
+ </li>
+ <li class="home">
+ <a accesskey="h" href="../index.html" title=
+ "Линукс с нуля - Версия 12.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>