Ядро/Конфигурация

From Gentoo Wiki
< Kernel
Jump to:navigation Jump to:search
This page is a translated version of the page Kernel/Configuration and the translation is 100% complete.

Эта статья описывает ручную конфигурацию и настройку ядра Linux. Автоматический метод 'с безопасными настройками по умолчанию' описан в статье genkernel.

Установка символьной ссылки

Символьная ссылка /usr/src/linux всегда должна указывать на исходный код используемого в настоящий момент ядра. Это может быть сделано одним из трех способов:

1. Установите исходный код ядра с включенным symlink USE-флагом. Это заставит /usr/src/linux указывать на исходный код свежеустановленного ядра. Если необходимо, символьная ссылка может быть изменена позже двумя следующими методами:

2. Настройка символьной ссылки с помощью eselect утилиты:

root #eselect kernel list
Available kernel symlink targets:
[1] linux-3.3.8-gentoo
[2] linux-3.4.9-gentoo

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

root #eselect kernel set 2

3. Установка символьной ссылки вручную:

root #ln -sf /usr/src/linux-3.4.9-gentoo /usr/src/linux
root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 11 Aug 29 22:10 /usr/src/linux -> /usr/src/linux-3.4.9-gentoo

Конфигурация

Инструменты

Ядро предлагает несколько пользовательских утилит для собственной конфигурации.

Команда Описание
make config Конфигуратор с текстовым интерфейсом. Вопросы следуют один за другим. На все вопросы должен быть дан ответ по порядку. Доступ к предыдущим вопросам невозможен.
make menuconfig Конфигуратор, основанный на ncurses с псевдографическим интерфейсом (возможен только ввод текста). Для изменения параметров есть навигация с помощью меню.
make defconfig Создаёт новый конфигурационный файл с настройками по умолчанию, которые берутся из архитектурно-зависимых defconfig файлов. Используйте эту опцию, чтобы снова создать конфигурационный файл с настройками по умолчанию, так же как в архиве с исходным кодом.
make nconfig Ещё один конфигуратор с псевдографическим меню, основанный на ncurses. Должна быть установлена библиотека sys-libs/ncurses.
make xconfig Конфигуратор с графическим интерфейсом, основанный на Qt5. Должен быть установлен пакет dev-qt/qtwidgets.
make gconfig Конфигуратор с графическим интерфейсом, основанный на GTK. Должны быть установлены пакеты x11-libs/gtk+, dev-libs/glib и gnome-base/libglade.
make oldconfig Обзор изменений между версиями ядра, а так же обновление их для создания нового .config для ядра.
make olddefconfig Создаёт новый конфигурационный файл с настройками по умолчанию, которые берутся из архитектурно-зависимых defconfig файлов, сохраняя при этом все предыдущие опции, установленные в файле .config по пути /usr/src/linux/.config. Это быстрый и безопасный метод обновления конфигурации (в которой уже есть все параметры, необходимые для поддержки оборудования) для того, чтобы получить исправления ошибок и патчи безопасности.
make allyesconfig Включает все возможные опции ядра. Эта утилита устанавливает все опции ядра в *. Убедитесь, что сохранена резервная копия конфигурации ядра, прежде чем использовать эту опцию!
make allmodconfig Включает все модули в ядре

Существует несколько скриптов для создания смешанных конфигураций по умолчанию. Они могут помочь сделать более тонкую и в то же время более эффективную настройку. Выполните следующую команду для получения полного списка make targets:

root #make help

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

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

Использование меню

В отображенном меню позиция курсора отмечена синей строкой. С помощью клавиш и можно изменять позицию курсора. Клавиши и проходят по меню внизу и определяют, что произойдет при нажатии клавиши Enter. В меню внизу Select выбирает подменю — пункты меню оканчивающиеся с --->, в то время как Exit выходит из подменю. В качестве альтернативы, можно выйти из подменю двойным нажатием клавиши Esc.

Нажатие клавиш A-Z переместит курсор к пункту меню у которого эта буква выделена жирным шрифтом. Буквы Y, M, N не используются для такой навигации; они нужны для других целей. Если пункт меню начинается с букв Y, M, или N, обычно используется следующая буква для выделения. Например для такого пункта меню "Network Device Support --->" нужно нажать клавишу E.

Могут быть следующие символы перед пунктом меню:

Символ(ы) Описание
[ ], [*] Пункт меню с квадратными скобками может быть включен или выключен. Звездочка отмечает пункт меню как включенный. Это значение также может быть изменено с помощью клавиши space. Кроме того, можно нажать клавишу Y (Yes) для включения или клавишу N (No) для отключения выбранного пункта.


Если пункт включен, то эта функция/драйвер будет собрана в ядро и всегда будет доступна во время загрузки.

< >, <M>, <*> Пункт меню с квадратными скобками может быть включен или выключен, но так же включен как модуль (обозначается как M). Значение, как и ранее, может быть изменено нажатием клавиш Y/N или нажатием клавиши M, для включения функции/драйвера как модуля.


Смотрите статью Kernel Modules с более подробным описанием.

{M}, {*} Пункт меню с фигурными скобками может быть включен или включен как модуль, но не может быть выключен. Это происходит потому, что другая функция/драйвер зависит от этой функции.
-M-, -*- Пункт меню с дефисами включен по зависимости от другой функции/драйвера. Здесь нельзя изменить выбор.

Кроме того, некоторые пункты меню имеют метки в конце:

Метка Описание
(NEW) Этот драйвер является новым в ядре и, может быть, не достаточно стабилен.
(EXPERIMENTAL) Этот драйвер является экспериментальным и, скорее всего, он достаточно не стабилен.
(DEPRECATED) Этот драйвер является устаревшим и не требуется для большинства систем.
(OBSOLETE) Этот драйвер является устаревшим и его не нужно включать.

Большинство параметров имеют описание, которое можно посмотреть нажимая клавишу H или набрав Help в строке меню.

Выбор драйверов

Смотрите статью hardware detection, а также статьи в категории Hardware.

Поиск модулей

Внутри menuconfig можно использовать / для поиска модулей по имени.

Как будет показано ниже, результат поиска покажет число перед совпадениями. Нажатие клавиши 1, в примере ниже, заставит make menuconfig перейти прямо к опции Bluetooth device drivers в структуре меню.

ЯДРО Пример вывода после поиска HCIBTUSB
Symbol: BT_HCIBTUSB [=m]                       
Type  : tristate                               
Prompt: HCI USB driver                         
  Location:                                    
    -> Networking support (NET [=y])           
      -> Bluetooth subsystem support (BT [=y]) 
(1)     -> Bluetooth device drivers            
  Defined at drivers/bluetooth/Kconfig:5       
  Depends on: NET [=y] && BT [=y] && USB [=m]

Включение общих настроек Gentoo Linux

Существует опция конфигурации ядра, называемая CONFIG_GENTOO_LINUX, которая находится только в sys-kernel/gentoo-sources и других ядрах, поддерживаемых проектом ядра. Она ничего не делает сама по себе, но устанавливает различные необходимые опции конфигурации, которые чаще всего нужны для установок.

Пока данная настройка автоматически выбирает поддержку tmpfs и devtmpfs, которые нужны для работы с /dev в Gentoo Linux, но в будущем эта настройка может включать и другие обязательные опции для системы на Gentoo Linux. Для более детальной информации, прочитайте информацию, которую можно получить через систему конфигурации ядра (как было описано выше в данной статье).

Компиляция

После успешной конфигурации ядра скомпилируйте его:

root #make
Заметка
В зависимости от скорости и количества ядер, доступных системе, сборка ядра может занять довольно много времени. Если вы знаете количество ядер процессора в системе, вы можете ускорить процесс сборки ядра, используя опцию -jN (где N — количество доступных ядер плюс 1). Например, двухъядерный процессор содержит два логических ядра, плюс один (2+1). Простой способ определить количество доступных ядер — выполнить команду nproc:

user $nproc
3
root #make -j3

Четырехъядерная система содержит четыре логических ядер плюс один (4+1):

root #make -j5

Установка

Если драйверы включены в виде модулей, необходимо их установить:

root #make modules_install

Модули будут скопированы в подкаталог /lib/modules.

Для того, чтобы установить само ядро:

root #make install

Эта команда запускает скрипт /sbin/installkernel, который является частью пакета sys-apps/debianutils. Новое ядро устанавливается в /boot//vmlinuz-{version}. Если символьная ссылка /boot/vmlinuz уже существует, она обновляется путем создания ссылки из /boot/vmlinuz на новое ядро, а ядро, установленное ранее, доступно как /boot/vmlinuz.old. (installkernel man page). То же самое происходит и для файлов config и System.map. Эти символьные ссылки удобны, потому что они указывают на новейшее ядро без изменения файлового пути (например, они могут быть использованы в конфигурации загрузчика).

Загрузчик

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

После завершения этапа с загрузчиком, перезагрузите систему с новым ядром.

Сравнение текущей конфигурации ядра с конфигурацией по умолчанию

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

root #cd /usr/src/linux
root #cp -p .config ../.config.working
root #make defconfig
root #mv .config ../.config.default
root #cp -p ../.config.working .config
root #cd ..
root #/usr/src/linux/scripts/diffconfig .config.working .config.default > .config.diff

Функцию поиска из make menuconfig можно использовать для поиска обозначения (symbols) и их описание. Когда вы закончите очистите:

root #cd /usr/src/
root #rm .config.working .config.default .config.diff

Смотрите также

  • Genkernel — утилита созданная Gentoo, которая используется для автоматизации процесса сборки ядра и initramfs.
  • Kernel/Configuration/Kernel_Seeds — pre-made kernel configuration files.
  • Kernel/Gentoo Kernel Configuration Guide — является ознакомление с понятием конфигурации ядра вручную и разбор наиболее распространённых проблем.

Внешние ресурсы