Handbook:Parts/Installation/Kernel/ru

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Installation/Kernel and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts Handbook
Установка
Об установке
Выбор подходящего источника для установки
Настройка сети
Подготовка дисков
Установка stage3
Установка базовой системы
Настройка ядра
Настройка системы
Установка системных утилит
Настройка загрузчика
Завершение
Работа с Gentoo
Введение в Portage
USE-флаги
Возможности Portage
Система init-скриптов
Переменные окружения
Работа с Portage
Файлы и каталоги
Переменные
Смешение ветвей программного обеспечения
Дополнительные утилиты
Дополнительные репозитории пакетов
Расширенные возможности
Настройка сети
Начальная настройка
Расширенная настройка
Модульное построение сети
Беспроводная сеть
Добавляем функциональность
Динамическое управление


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

Все дистрибутивы строятся вокруг ядра Linux. Ядро является слоем между пользовательскими программами и оборудованием системы. Gentoo предоставляет несколько вариантов исходного кода ядра. Полный список с описанием доступен на странице статье Общие сведения о ядре.

Для систем, основанных на архитектуре, рекомендуется пакет sys-kernel/.

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

root #emerge --ask sys-kernel/

Данная команда установит исходный код ядра Linux в /usr/src/, в котором символьная ссылка linux будет указывать на установленную версию:

root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-

Теперь следует сконфигурировать и собрать ядро. Существует два основных подхода:

  1. Ядро конфигурируется и собирается вручную.
  2. Ядро автоматически собирается и устанавливается с помощью genkernel.

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

По умолчанию: Ручное конфигурирование

Введение

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

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

root #emerge --ask sys-apps/pciutils
Заметка
Находясь внутри изолированного окружения chroot, можно спокойно игнорировать любые предупреждения pcilib (например, pcilib: cannot open /sys/bus/pci/devices), которые могут появляться в выводе lspci.

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

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

root #cd /usr/src/linux
root #make menuconfig

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

Включение обязательных параметров

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

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

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

Ядро Включение поддержки devtmpfs
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

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

Ядро Включение поддержки SCSI-дисков
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

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

Ядро Выбираем необходимые файловые системы
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

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

Ядро Выбираем необходимые драйвера для PPPoE
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

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

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

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

Ядро Включаем поддержку SMP
Processor type and features  --->
  [*] Symmetric multi-processing support
Заметка
Во многоядерных системах каждое ядро считается за один процессор.

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

Ядро Включаем поддержку USB для устройств ввода
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support

Handbook:Parts/Blocks/Kernel/ru

Необязательно: Сборка initramfs

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

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

Для установки initramfs, сперва нужен sys-kernel/genkernel, который его создаст:

root #emerge --ask sys-kernel/genkernel
root #genkernel --install initramfs

Если необходима особая поддержка в initramfs, например LVM или RAID, то следует указать это через соответствующий параметр genkernel. Для более подробной информации см. genkernel --help. В следующем примере включена поддержка LVM и программного RAID (mdadm):

root #genkernel --lvm --mdadm --install initramfs

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

root #ls /boot/initramfs*

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

Альтернатива: Использование genkernel

Если ручная установка кажется слишком сложной, то можно воспользоваться утилитой genkernel, которая сконфигурирует и соберёт ядро автоматически.

genkernel конфигурирует ядро примерно так же, как это делается для установочного носителя. Это значит, что ядро, собранное genkernel, постарается определить всё оборудование в процессе загрузки. Поскольку genkernel не требует ручной конфигурации ядра, он идеально подходит для тех пользователей, кто не готов собирать собственное ядро.

Приступим. Сперва нужно установить sys-kernel/genkernel:

root #emerge --ask sys-kernel/genkernel

Далее отредактируйте файл /etc/fstab, где следует указать в строке /boot/ правильное устройство во втором поле. Если вы следовали примеру разбиения разделов из данного Руководста, то, скорее всего, это будет устройство с файловой системой ext2. Тогда строка должна выглядеть следующим образом:

root #nano -w /etc/fstab
Файл /etc/fstabНастройка точки монтирования /boot
/boot	ext2	defaults	0 2
Заметка
В процессе настройки Gentoo /etc/fstab ещё будет изменён. На данный момент мы правим лишь /boot, так как genkernel использует эту настройку.

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

Заметка
Если для загрузочного раздела не используется ext2 или ext3, то возможно придётся вручную настроить ядро, выполнив genkernel --menuconfig all и добавив поддержку нужной ФС (не как модуля). Пользователям LVM2 следует также добавить --lvm в качестве аргумента.
root #genkernel all

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

root #ls /boot/kernel* /boot/initramfs*

Модули ядра

Конфигурация модулей

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

Укажите модули, которые должны загружаться автоматически в файлах /etc/modules-load.d/*.conf, по одному модулю в строке. Дополнительные параметры для модулей при необходимости можно указывать в файлах /etc/modprobe.d/*.conf.

Чтобы посмотреть доступные модули, выполните команду find, не забыв заменить «<kernel version>» на собранную в предыдущем шаге версию:

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

Например, чтобы автоматически загрузить модуль 3c59x.ko (драйвер для определённого семейства сетевых карт от 3Com), отредактируйте файл /etc/modules-load.d/network.conf, добавив туда имя модуля. Фактическое имя файла несущественно для загрузчика.

root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf
Файл /etc/modules-load.d/network.confПринудительная загрузка модуля 3c59x во время загрузки
3c59x

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

Необязательно: Установка файлов прошивки

Для корректной работы некоторых драйверов требуется установка дополнительных файлов прошивки. Часто подобное требуется для сетевых интерфейсов, особенно беспроводных. Также, современные видеочипы от AMD, NVidia и Intel, при использовании отрытых драйверов, часто нуждаются во внешних файлах firmware. Большинство файлов прошивки поставляется в пакете sys-kernel/linux-firmware:

root #emerge --ask sys-kernel/linux-firmware