Handbook:Parts/Installation/Kernel/ru

Файлы прошивки
Перед тем, как приступить к настройке ядра, полезно будет помнить, что некоторые аппаратные устройства требуют установки в систему дополнительной, иногда не совместимой с принципами FOSS (free (as in freedom) and open source software/свободное и открытое программное обеспечение), прошивки, прежде чем они будут работать правильно. Чаще всего это касается беспроводных сетевых интерфейсов, обычно встречающихся как в настольных, так и в портативных компьютерах. Современные видеочипы от таких производителей, как AMD, Nvidia и Intel также часто требуют установки внешней прошивки для обеспечения полной функциональности. Большинство прошивок для современных аппаратных устройств можно найти в пакете.

Рекомендуется установить пакет перед первоначальной перезагрузкой системы, чтобы прошивка была доступна в случае необходимости:

Важно отметить, что символы ядра, собранные как модули (M), при загрузке ядром загружают связанные с ними файлы прошивок из файловой системы. Нет необходимости встраивать в двоичный образ ядра файлы прошивок для них.

Микрокод
Вдобавок к сетевому оборудованию и видеокартам, процессоры также могут требовать обновления прошивки. Обычно подобный вид прошивок называется микрокодом. Обновления микрокода иногда нужны, чтобы исправить нестабильность, улучшить безопасность, или исправить прочие разнообразные баги в процессоре.

Обновления микрокода для процессоров AMD распространяются в вышеупомянутом пакете. Обновления микрокода для процессоров Intel находятся в пакете, который необходимо установить отдельно. Смотрите страницу про микрокод для получения дополнительной информации о том, как применять обновления микрокода.

Настройка и сборка ядра
Теперь настало время сконфигурировать и скомпилировать исходные тексты ядра. Для целей процесса установки будут представлены три способа управления ядром, однако в любой момент после установки можно выбрать другой способ.

От наименьшего вмешательства к наибольшему:


 * Полностью автоматический подход: Distribution-ядра: Проект Distribution Kernel используется для конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но по умолчанию включено) файла initramfs. Новые обновления ядра полностью автоматизированы, поскольку они обрабатываются через менеджер пакетов, как и любой другой системный пакет. В случае необходимости можно предоставить пользовательский конфигурационный файл ядра. Это наименее сложный процесс и идеально подходит для новых пользователей Gentoo, так как работает "из коробки" и требует минимального участия системного администратора.
 * Гибридный подход: Genkernel: Новые обновления ядра устанавливаются через системный менеджер пакетов. Системные администраторы используют инструмент Gentoo для общей конфигурации, автоматической сборки и установки ядра Linux, связанных с ним модулей и (опционально, но не  включено по умолчанию) файла initramfs. Можно предоставить пользовательский файл конфигурации ядра, если необходима кастомизация. Будущая конфигурация, сборка и установка ядра требуют участия системного администратора в виде выполнения,  и, возможно, других команд для каждого обновления.
 * Полностью ручная настройка: Новые исходные тексты ядра устанавливаются с помощью системного менеджера пакетов. Ядро конфигурируется, собирается и устанавливается вручную с помощью команды и множества команд . С новыми обновлениями ядра повторяется ручной процесс конфигурирования, сборки и установки файлов ядра. Это самый сложный процесс, но он обеспечивает максимальный контроль над процессом обновления ядра.

Основой, вокруг которой строятся все дистрибутивы, является ядро Linux. Оно является прослойкой между пользовательскими программами и аппаратным обеспечением системы. Хотя руководство предоставляет своим пользователям несколько возможных источников ядра, более подробная информация с более детальным описанием доступна на странице Общие сведения о ядре.

Установка исходного кода ядра
.

При установке и компиляции ядра для систем на базе Gentoo рекомендует использовать пакет.

Выберите подходящий исходный код ядра и установите его с помощью :

Данная команда установит исходный код ядра Linux в, используя в названии версию ядра. Эта команда не установит автоматически символьную ссылку, пока вы не укажете  для выбранного исходного кода ядра.

Обычно, символьная ссылка указывает на исходный код текущего работающего ядра. Однако, эта символьная ссылка не создаётся по умолчанию. Создать её поможет kernel модуль для eselect.

Чтобы подробнее узнать, зачем нужна эта символьная ссылка и как ею управлять, смотрите Kernel/Upgrade/ru.

Для начала, просмотрите список установленных ядер (в виде исходного кода):

Для того, чтобы создать символьную ссылку, используйте:

Альтернатива: Genkernel
Если полностью ручная настройка кажется слишком сложной, системным администраторам следует рассмотреть возможность использования утилиты в качестве гибридного подхода к обслуживанию ядра.

Genkernel предоставляет базовый файл конфигурации ядра, автоматически генерирует ядро ( generates the kernel), initramfs и связанные модули, а затем устанавливает полученные двоичные файлы в соответствующие места. Это обеспечивает минимальную и базовую аппаратную поддержку при первой загрузке системы, а в дальнейшем позволяет дополнительно контролировать обновление и настраивать конфигурацию ядра.

Учтите: хотя использование для поддержки ядра обеспечивает системным администраторам больший контроль над обновлением ядра системы, initramfs и других опций, это требует затрат времени и усилий для выполнения будущих обновлений ядра по мере выпуска новых источников. Тем, кто ищет автоматический подход к обслуживанию ядра, следует использовать distribution-ядра.

Для большей ясности, это является заблуждением, что genkernel автоматически генерирует специальную конфигурацию ядра для оборудования, на котором он запущен; он использует определённую конфигурацию ядра, которая поддерживает большинство оборудования и автоматически обрабатывает команды, необходимые для сборки и установки ядра, сопутствующих модулей и файла initramfs.

Группа лицензий на "программное обеспечение, распространяемое в бинарном виде"
Если пакет linux-firmware был уже установлен, перейдите к разделу установки.

Поскольку по умолчанию для пакета включен USE-флаг , пакетный менеджер также попытается установить пакет. Перед установкой linux-firmware необходимо принять лицензии на "программное обеспечение, распространяемое в бинарном виде".

Эта группа лицензий может быть принята для всей системы путем добавления  в переменную ACCEPT_LICENSE в файле. Лицензия также может быть принята только для пакета linux-firmware с помощью добавления в файле.

При необходимости ознакомьтесь с методами разрешения лицензий на программное обеспечение, о которых говорится в главе руководства Установка базовой системы, а затем внесите некоторые изменения для допустимых лицензий на программное обеспечение.

Для упрощения, примеры разрешения лицензий:

Установка
Итак, установите пакет :

Генерация
Скомпилируйте исходные тексты ядра, выполнив команду. Имейте в виду, что, поскольку компилирует ядро, поддерживающее широкий набор аппаратных средств для различных архитектур компьютеров, процесс компиляции может занять довольно много времени.

.

По завершению работы genkernel будут сформированы ядро, полный набор модулей и файловая система инициализации (initramfs). Ядро и initrd нам понадобятся позднее. Запишите название файлов ядра и initrd, так как они нам понадобятся при настройке загрузчика. Initrd запускается сразу после ядра для определения оборудования (как при загрузке установочного CD), перед запуском самой системы.

После завершения работы genkernel, ядро и начальная файловая система ram (initramfs) будут сформированы и установлены в каталог. Соответствующие модули будут установлены в каталог. initramfs будет запущена сразу после загрузки ядра для автоматического определения оборудования (как при загрузке "живого" (live) загрузочного диска).

Введение
Согласно расхожему мнению, настройка ядра — наиболее сложная процедура, с которой может столкнуться пользователь Linux. Это совсем не так — после нескольких настроек ядра, не всякий вспомнит, что это было сложно!

Однако одна вещь является истиной: при ручной конфигурации ядра очень важно понимать свою систему. Большую часть сведений можно почерпнуть, установив пакет, который содержит в команду :

Другим источником информации о системе может стать вывод команды, по которому можно понять, какие модули ядра использует установочный носитель, чтобы потом включить аналогичные настройки.

Остаётся перейти в каталог с ядром и выполнить, который запустит экран меню конфигурации.

В конфигурации ядра Linux есть много-много разделов. Сначала пройдёмся по пунктам, которые должны быть обязательно включены (иначе Gentoo будет работать неправильно или же вовсе не запустится). Также в вики есть Руководство по настройке ядра Gentoo, которое поможет понять более тонкие детали.

Включение обязательных параметров
При использовании, строго рекомендуется включить Gentoo-специфичные настройки. С помощью них включается необходимый минимум настроек ядра для корректной работы:

Выбор из последних двух строк зависит от того, какую систему инициализации вы выбрали — (OpenRC или systemd). Ничего страшного не случится, если вы включите поддержку обоих систем.

При использовании, этих вспомогательных настроек не будет. Вы можете включить нужные настройки вручную, но это выходит за рамки данного руководства.

Включение поддержки основных компонентов системы
Убедитесь, что все драйверы, необходимые для загрузки системы (такие как контроллер SATA, поддержка блочных устройств NVMe, поддержка файловой системы и другие) собраны прямо в ядре, а не в виде модуля. В противном случае, система может не загрузиться.

Далее следует выбрать тип процессора. Также рекомендуется включить возможности MCE (если они доступны), чтобы пользователи системы могли получать оповещение о любых проблемах с оборудованием. На некоторых архитектурах (например, x86_64) подобные ошибки выводятся не в, а в. А для него понадобится пакет.

Также включите Maintain a devtmpfs file system to mount at /dev, чтобы критически важные файлы устройств были доступны на самом раннем этапе загрузки ( CONFIG_DEVTMPFS и CONFIG_DEVTMPFS_MOUNT ):

Убедитесь, что поддержка SCSI-дисков включена ( CONFIG_BLK_DEV_SD ):

Убедитесь, что включена базовая поддержка NVMe:

Не помешает включить следующую дополнительную поддержку NVMe:

Теперь перейдите в раздел File Systems и выберите те файловые системы, которые планируете использовать. Файловая система, используемая в качестве корневой, должна быть включена в ядро (не модулем), иначе система не сможет подключить раздел при загрузке. Также включите Virtual memory и /proc file system. При необходимости выберите один или несколько параметров, необходимых системе:

Если для подключения к Интернету используется PPPoE или модемное соединение, то включите следующие параметры ( CONFIG_PPP, CONFIG_PPP_ASYNC и CONFIG_PPP_SYNC_TTY ):

Два параметра сжатия не повредят, но и не являются обязательными, как и PPP over Ethernet. Фактически, последний используется в случае, если ppp сконфигурирован на использование ядерный PPPoE режим.

Не забудьте настроить поддержку сетевых карт (Ethernet или беспроводных).

Поскольку большинство современных систем являются многоядерными, важно включить Symmetric multi-processing support ( CONFIG_SMP ):

Если используются USB-устройства ввода (например, клавиатура и мышь) или другие устройства, то не забудьте включить и эти параметры:

Необязательно: Сборка initramfs
В некоторых случаях необходимо собрать initramfs — файловую систему инициализации, размещаемую в оперативной памяти. Самая частая причина — когда важные части системных путей (например, или ) находятся на отдельных разделах. Эти разделы могут быть смонтированы средствами, расположенными внутри initramfs.

Без initramfs есть большой риск того, что система не загрузится правильно, так как программам, необходимым для монтирования файловых систем, нужна информация, которая находится на этих самых разделах. initramfs вытянет все необходимые файлы в архив, который загружается в память сразу же после загрузки ядра, но до того, как управление будет передано системе инициализации. Сценарии initramfs выполнят все необходимые операции для правильного монтирования разделов до того, как продолжится загрузка системы.

Чтобы установить initramfs, сперва установите, затем сгенерируйте initramfs:

initramfs будет сохранён в под названием, начинающимся с «initramfs»:

Теперь продолжите с раздела Модули ядра.

Список доступных модулей ядра
Модули, которые должны загружаться при каждой загрузке, могут быть добавлены в файлы, по одному модулю в строке. Если для модулей необходимы дополнительные параметры, их следует указывать в файлах.

Чтобы просмотреть все модули, доступные для определённой версии ядра, выполните следующую команду. Не забудьте заменить " " на соответствующую версию ядра для поиска:

Принудительная загрузка отдельных модулей ядра
Чтобы принудительно загрузить в систему модуль (драйвер для определённого семейства сетевых карт от 3Com), отредактируйте файл  и добавьте туда имя модуля.

Обратите внимание, что суффикс в имени файла модуля несущественен для механизма загрузки и не включается в файл:

Продолжите установку с раздела Настройка системы.