28
Ядро Linux Ядро Linux

Ядро Linux

  • Upload
    kerri

  • View
    66

  • Download
    0

Embed Size (px)

DESCRIPTION

Ядро Linux. Понятие ядра. Ядро обеспечивает инфраструктуру для работы приложений и использования различных аппаратных средств. Это код низкого уровня, который взаимодействует с интерфейсами аппаратных средств, планирует и распределяет память и т.д. - PowerPoint PPT Presentation

Citation preview

Page 1: Ядро Linux

Ядро LinuxЯдро Linux

Page 2: Ядро Linux

Понятие ядраПонятие ядра Ядро обеспечивает инфраструктуру для работы приложений Ядро обеспечивает инфраструктуру для работы приложений

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

Исторически,Исторически, ядро Linux ядро Linux выпускается под определенной выпускается под определенной версией. То есть имеет определенную нумерацию. версией. То есть имеет определенную нумерацию. Нумерация версии ядра LinuxНумерация версии ядра Linux на текущий момент содержит на текущий момент содержит четыре числа, следуя недавнему изменению в долго четыре числа, следуя недавнему изменению в долго используемой до этого политике схемы версий, основанной используемой до этого политике схемы версий, основанной на трёх числах. Для иллюстрации допустим, что номер версии на трёх числах. Для иллюстрации допустим, что номер версии составлен таким образом: составлен таким образом: A.B.C[.D]A.B.C[.D] (например 2.2.1, 2.4.13 (например 2.2.1, 2.4.13 или 2.6.12.3).или 2.6.12.3).

Число Число AA обозначает версию ядра. Оно изменяется менее обозначает версию ядра. Оно изменяется менее часто и только тогда, когда вносятся значительные изменения часто и только тогда, когда вносятся значительные изменения в код и концепцию ядра. Оно изменялось дважды в истории в код и концепцию ядра. Оно изменялось дважды в истории ядра: в 1994 (версия 1.0) и в 1996 (версия 2.0).ядра: в 1994 (версия 1.0) и в 1996 (версия 2.0).

Page 3: Ядро Linux

Понятие ядраПонятие ядра Число Число BB обозначает обозначает старшую версию ревизии ядрастаршую версию ревизии ядра. . Чётные Чётные

числачисла обозначают обозначают стабильные ревизиистабильные ревизии, то есть те, которые , то есть те, которые предназначены для промышленного использования, такие как предназначены для промышленного использования, такие как 1.2, 2.4 или 2.6. 1.2, 2.4 или 2.6. Нечётные числа Нечётные числа обозначают обозначают ревизии для ревизии для разработчиковразработчиков, такие как 1.1 или 2.5. Они предназначены для , такие как 1.1 или 2.5. Они предназначены для тестирования новых улучшений и драйверов до тех пор, пока тестирования новых улучшений и драйверов до тех пор, пока они не станут достаточно стабильными для того, чтобы быть они не станут достаточно стабильными для того, чтобы быть включёнными в стабильный выпуск.включёнными в стабильный выпуск.

Число Число CC обозначает обозначает младшую версию ревизии ядрамладшую версию ревизии ядра. В . В старой трёхчисловой схеме нумерации, оно изменялось тогда, старой трёхчисловой схеме нумерации, оно изменялось тогда, когда в ядро включались заплатки связанные с безопасностью, когда в ядро включались заплатки связанные с безопасностью, исправления ошибок, новые улучшения или драйверы. С новой исправления ошибок, новые улучшения или драйверы. С новой политикой нумерации, однако, оно изменяется только тогда, политикой нумерации, однако, оно изменяется только тогда, когда вносятся новые драйверы или улучшения; небольшие когда вносятся новые драйверы или улучшения; небольшие исправления поддерживаются числом исправления поддерживаются числом DD..

Page 4: Ядро Linux

Понятие ядраПонятие ядра Число Число DD впервые появилось после случая, когда в коде ядра версии впервые появилось после случая, когда в коде ядра версии

2.6.8 была обнаружена грубая, требующая незамедлительного 2.6.8 была обнаружена грубая, требующая незамедлительного исправления ошибка, связанная с NFS. Однако, было недостаточно исправления ошибка, связанная с NFS. Однако, было недостаточно других изменений, для того чтобы это послужило причиной для других изменений, для того чтобы это послужило причиной для выпуска новой младшей ревизии (которой должна была стать 2.6.9). выпуска новой младшей ревизии (которой должна была стать 2.6.9). Поэтому была выпущена версия 2.6.8.1 с единственным Поэтому была выпущена версия 2.6.8.1 с единственным исправлением в виде исправления для этой ошибки. С ядра 2.6.11, исправлением в виде исправления для этой ошибки. С ядра 2.6.11, эта нумерация была адаптирована в качестве новой официальной эта нумерация была адаптирована в качестве новой официальной политики версий. Исправления ошибок и заплатки безопасности политики версий. Исправления ошибок и заплатки безопасности теперь обозначаются с помощью четвёртого числа, тогда как теперь обозначаются с помощью четвёртого числа, тогда как большие изменения выполняются в изменениях младшей версии большие изменения выполняются в изменениях младшей версии ревизии ядра (число ревизии ядра (число CC).).

Ядро Ядро - это код низкого уровня, который взаимодействует с - это код низкого уровня, который взаимодействует с интерфейсами аппаратных средств и управляет системой на интерфейсами аппаратных средств и управляет системой на низшем уровне.  В настоящее время существует громаднейшее низшем уровне.  В настоящее время существует громаднейшее количество разновидностей аппаратного обеспечения, файловых количество разновидностей аппаратного обеспечения, файловых систем и остальных компонентов, с которыми взаимодействует ядро систем и остальных компонентов, с которыми взаимодействует ядро системы. системы.

Page 5: Ядро Linux

Понятие ядраПонятие ядра Для того чтобы ядро не занимало большого количества Для того чтобы ядро не занимало большого количества

оперативной памяти и при этом оставалось универсальным,оперативной памяти и при этом оставалось универсальным,

существуютсуществуют модули ядра. модули ядра. Модули ядраМодули ядра позволяют при позволяют при необходимости загрузить обеспечивающее поддержку необходимости загрузить обеспечивающее поддержку программное обеспечение, такое как драйверы для аппаратных программное обеспечение, такое как драйверы для аппаратных средств или файловые системы. Это позволяет запускать средств или файловые системы. Это позволяет запускать систему с небольшим ядром и затем подгружать модули по систему с небольшим ядром и затем подгружать модули по мере необходимости. Часто эта подгрузка происходит мере необходимости. Часто эта подгрузка происходит автоматически, например, при подключении устройств USB.автоматически, например, при подключении устройств USB.

Команды для выполнения задач загрузки и удаления модулей Команды для выполнения задач загрузки и удаления модулей ядра требуют полномочий суперпользователя root. Команды, ядра требуют полномочий суперпользователя root. Команды, выдающие информацию о модулях, обычно могут быть выдающие информацию о модулях, обычно могут быть выполнены обычным пользователем. Однако, в случае, если выполнены обычным пользователем. Однако, в случае, если они расположены в каталоге /sbin, они будут недоступны для они расположены в каталоге /sbin, они будут недоступны для обычного пользователя, так как этот каталог не включается в обычного пользователя, так как этот каталог не включается в путь поиска PATH. путь поиска PATH.

Page 6: Ядро Linux

Управление ядром Linux Управление ядром Linux ядро Linuxядро Linux обладает минимальными возможностями и обладает минимальными возможностями и

поддержкой оборудования, но при необходимости можно поддержкой оборудования, но при необходимости можно расширить возможности ядра с помощью расширить возможности ядра с помощью kernel modules kernel modules (модулей ядра)(модулей ядра). Для чего может понадобиться . Для чего может понадобиться сборка или сборка или пересборка собственного ядра?пересборка собственного ядра? Например для Например для включения/отключения каких-либо новых возможностей, иливключения/отключения каких-либо новых возможностей, или обновление старого ядраобновление старого ядра на более новое с поддержкой на более новое с поддержкой новых возможностей.новых возможностей.

Получение исходников ядра и подготовка к Получение исходников ядра и подготовка к конфигурированию:конфигурированию: Получить оригинальные архивы кода с The Linux Kernel Получить оригинальные архивы кода с The Linux Kernel

Archives, в виде gzip или bzip2 архивов, с помощью Archives, в виде gzip или bzip2 архивов, с помощью команды: команды: wget wget http://www.kernel.org/pub/linux/kernel/v2.6/http://www.kernel.org/pub/linux/kernel/v2.6/ linux-2.6.36.1.tar.bz2linux-2.6.36.1.tar.bz2

cp linux-2.6.36.1.tar.bz2 /usr/src/cp linux-2.6.36.1.tar.bz2 /usr/src/

Page 7: Ядро Linux

Управление ядром Linux Управление ядром Linux Получить исходники из репозиториев дистрибутивов Получить исходники из репозиториев дистрибутивов

(например: (например: DebianDebian, , UbuntuUbuntu, , CentOSCentOS i386 i386) в виде бинарного ) в виде бинарного пакета deb или rpm (src.rpm) с патчами от производителя пакета deb или rpm (src.rpm) с патчами от производителя дистрибутива. дистрибутива.

Имя архива с исходникамиИмя архива с исходниками или пакета, имеет примерно или пакета, имеет примерно следующий вид: следующий вид: linux-source-2.6.26 linux-source-2.6.26 либо либо kernel-source-kernel-source-2.6.18.2.6.18. Из листинга второго примера, видно что при установке Из листинга второго примера, видно что при установке исходников из репозитория, нам предлагают установить и исходников из репозитория, нам предлагают установить и остальные сопутствующие пакеты, без которых ядро собрать остальные сопутствующие пакеты, без которых ядро собрать не получиться.не получиться.

ПослеПосле получения исходников получения исходников одним из вышеуказанных одним из вышеуказанных путей мы получаем в каталоге путей мы получаем в каталоге /usr/src//usr/src/ - архив с именем, - архив с именем, аналогичным аналогичным linux-source-2.6.26.tar.bz2linux-source-2.6.26.tar.bz2. Необходимо . Необходимо распаковать данный архив командой: распаковать данный архив командой:

tar -xjf linux<version>.tar.bz2tar -xjf linux<version>.tar.bz2. .

Page 8: Ядро Linux

Управление ядром Linux Управление ядром Linux В результате, получаем дерево каталогов исходников ядра, В результате, получаем дерево каталогов исходников ядра,

расположенные в каталоге /usr/src/linux-2.6.36.1/. Так же расположенные в каталоге /usr/src/linux-2.6.36.1/. Так же рекомендуется создать символьную ссылку /usr/src/linux на рекомендуется создать символьную ссылку /usr/src/linux на вышеуказанный каталог:вышеуказанный каталог:

# ln -s linux-2.6.36.1 linux # ln -s linux-2.6.36.1 linux Прежде чем приступать к попытке сборки и Прежде чем приступать к попытке сборки и

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

Page 9: Ядро Linux

Управление ядром Linux Управление ядром Linux В распакованном дереве подкаталогов содержится файл В распакованном дереве подкаталогов содержится файл

MakefileMakefile. . make-файлmake-файл содержит различные цели сборки для содержит различные цели сборки для конфигурирования опций ядра, сборки ядра и его модулей, конфигурирования опций ядра, сборки ядра и его модулей, установки модулей и сборки пакетов RPM или deb. Наиболее установки модулей и сборки пакетов RPM или deb. Наиболее свежие версии исходников ядра позволяют использовать свежие версии исходников ядра позволяют использовать make help для получения краткой справки для каждой цели. В make help для получения краткой справки для каждой цели. В более старых системах было необходимо обращаться к более старых системах было необходимо обращаться к документации или просматривать make-файл. документации или просматривать make-файл.

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

каталог каталог /usr/src/usr/src. Если патчить ядро не нужно, можно смело . Если патчить ядро не нужно, можно смело переходить к конфигурированию. Патчится ядро следующим переходить к конфигурированию. Патчится ядро следующим образом:образом:

# gzip -cd ../patch-2.6.xx.gz | patch -p1 ## gzip -cd ../patch-2.6.xx.gz | patch -p1 #илиили# bzip2 -dc ../patch-# bzip2 -dc ../patch-2.6.xx.bz2 | patch -p12.6.xx.bz2 | patch -p1

Page 10: Ядро Linux

КонфигурированиеКонфигурирование

Текущая конфигурация ядра хранится в файле Текущая конфигурация ядра хранится в файле .config.config. . Данный файл формируется при помощи одной из Данный файл формируется при помощи одной из конфигурационных целей (цель - это, говоря простым языком, конфигурационных целей (цель - это, говоря простым языком, команда выполняемая в видекоманда выполняемая в виде make цель make цель):):

configconfig Цель config использует интерфейс командной строки для Цель config использует интерфейс командной строки для

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

cloneconfigcloneconfig Копирование настроек текущего ядра в файл .config. Данная Копирование настроек текущего ядра в файл .config. Данная

цель устарела и в новых ядрах заменена oldconfig. (удобно цель устарела и в новых ядрах заменена oldconfig. (удобно для добавления новых функций текущего ядра)для добавления новых функций текущего ядра)

Page 11: Ядро Linux

КонфигурированиеКонфигурирование

menuconfigmenuconfig Цель menuconfig использует программу с меню-интерфейсом, Цель menuconfig использует программу с меню-интерфейсом,

построенную на базе ncurses, для создания или обновления построенную на базе ncurses, для создания или обновления файла .config. Вы должны только ответить на вопросы для файла .config. Вы должны только ответить на вопросы для элементов, которые хотите изменить. Этот подход заменил элементов, которые хотите изменить. Этот подход заменил старую цель config. Выполняется в окне терминала удаленно старую цель config. Выполняется в окне терминала удаленно или локально.или локально.

nconfignconfig Цель Цель nconfig nconfig использует программу с меню-интерфейсом, использует программу с меню-интерфейсом,

построенную на базе ncurses, для создания или обновления построенную на базе ncurses, для создания или обновления файла .config. Данная версия основана на файла .config. Данная версия основана на menuconfigmenuconfig, но , но имеет более современный внешний вид. Добавлена после имеет более современный внешний вид. Добавлена после релиза Linux-ядра 2.6.35. Вы должны только ответить на релиза Linux-ядра 2.6.35. Вы должны только ответить на вопросы для элементов, которые хотите изменить. вопросы для элементов, которые хотите изменить. Выполняется в окне терминала удаленно или локально.Выполняется в окне терминала удаленно или локально.

Page 12: Ядро Linux

КонфигурированиеКонфигурирование

xconfigxconfig Цель xconfig использует систему графического меню, Цель xconfig использует систему графического меню,

основанную на QT front-end, используемом в KDE desktop.основанную на QT front-end, используемом в KDE desktop. gconfiggconfig Цель gconfig использует систему графического меню, Цель gconfig использует систему графического меню,

основанную на GTK front-end, используемом в GNOME основанную на GTK front-end, используемом в GNOME desktop.desktop.

oldconfigoldconfig Цель oldconfig позволяет создать конфигурацию с Цель oldconfig позволяет создать конфигурацию с

использованием существующего файла .config, созданного использованием существующего файла .config, созданного ранее или взятого из другой системы. Например,  вы можете ранее или взятого из другой системы. Например,  вы можете скопировать конфигурационный файл для вашей системы из скопировать конфигурационный файл для вашей системы из /lib/modules/$(uname -r)/build/.config в /usr/src/linux. Сделав это, /lib/modules/$(uname -r)/build/.config в /usr/src/linux. Сделав это, можно использовать одну из целей меню конфигурации, можно использовать одну из целей меню конфигурации, чтобы при необходимости внести изменения. чтобы при необходимости внести изменения.

Page 13: Ядро Linux

КонфигурированиеКонфигурирование

Список всех команд можно увидеть, введя Список всех команд можно увидеть, введя make help. make help. Одна из возможных ошибок при выполнении команды – Одна из возможных ошибок при выполнении команды –

отсутствие пакета отсутствие пакета ncursesncurses. Лезем. Лезем вв репозиторийрепозиторий:: /usr/src/linux-2.6.18# yum list *ncurses*/usr/src/linux-2.6.18# yum list *ncurses* СтрокаСтрока:: ncurses-devel - developer's libraries and docs for ncurses-devel - developer's libraries and docs for

ncurses ncurses оказаласьоказалась нужнойнужной. . ДавайтеДавайте установимустановим:: /usr/src/linux-2.6.18# yum install ncurses-devel/usr/src/linux-2.6.18# yum install ncurses-devel Готово, пробуем Готово, пробуем make menuconfigmake menuconfig: :

Page 14: Ядро Linux

КонфигурированиеКонфигурирование

Page 15: Ядро Linux

КонфигурированиеКонфигурирование

Мы видим заветное меню конфигурирования ядра. Ниже Мы видим заветное меню конфигурирования ядра. Ниже показаны различные опции, позволяющие включать компоненты показаны различные опции, позволяющие включать компоненты в ядро или создавать модули. Когда опция подсвечена, при в ядро или создавать модули. Когда опция подсвечена, при помощи клавиши пробела можно перемещаться между помощи клавиши пробела можно перемещаться между возможными вариантами для данного компонента. Чтобы возможными вариантами для данного компонента. Чтобы активировать опцию, нажмите активировать опцию, нажмите yy, чтобы отключить -- , чтобы отключить -- nn, чтобы , чтобы создать, если это возможно, модуль, нажмите создать, если это возможно, модуль, нажмите mm. Выход из . Выход из меню: Esc Esc.меню: Esc Esc.

[*] Компонент будет включен в ядро.[*] Компонент будет включен в ядро. [ ] Компонент не будет включен в ядро.[ ] Компонент не будет включен в ядро. [M] Компонент будет оформлен в виде модуля.[M] Компонент будет оформлен в виде модуля. < > Компонент не будет включен в ядро, но может быть < > Компонент не будет включен в ядро, но может быть

оформлен в виде модуля.оформлен в виде модуля. Перед внесением изменений в файл конфигурации ядра, Перед внесением изменений в файл конфигурации ядра,

сохраните его под сохраните его под другим именем - другим именем - Save Configuration to an Alternative FileSave Configuration to an Alternative File

Page 16: Ядро Linux

КонфигурированиеКонфигурирование

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

Наша задача - повышение производительности системы, Наша задача - повышение производительности системы, этого можно достичь, если точно сконфигурировать ядро и этого можно достичь, если точно сконфигурировать ядро и исключить из его состава ненужный код. исключить из его состава ненужный код.

Ниже приведем описание основных разделов Ниже приведем описание основных разделов конфигурирования меню.конфигурирования меню.

General setupGeneral setup Этот раздел позволяет добавить  Этот раздел позволяет добавить идентификационную строку к вашему ядру, а также ряд идентификационную строку к вашему ядру, а также ряд атрибутов, напимер, атрибутов, напимер, BIGMEMBIGMEM - для поддержки памяти более - для поддержки памяти более 1GB . 1GB .

Page 17: Ядро Linux

КонфигурированиеКонфигурирование

Enable loadable module support.Enable loadable module support. Этот раздел содержит опции,  Этот раздел содержит опции, определяющие, будет ли ваше ядро поддерживать модули и определяющие, будет ли ваше ядро поддерживать модули и будут ли они подгружаться и выгружаться автоматически. Опцию будут ли они подгружаться и выгружаться автоматически. Опцию "Enable loadable module support" следует включить."Enable loadable module support" следует включить.

Processor type and features.Processor type and features. Этот раздел содержит  Этот раздел содержит специфичные для данного типа процессора конфигурационные специфичные для данного типа процессора конфигурационные опции. Здесь вы можете выбрать процессор и семейство опции. Здесь вы можете выбрать процессор и семейство процессора, которые будут поддерживаться вашим ядром. Вы процессора, которые будут поддерживаться вашим ядром. Вы можете включать или отключать поддержку ядром различных можете включать или отключать поддержку ядром различных возможностей, предоставляемых данным процессором. возможностей, предоставляемых данным процессором. Включите поддержку многопроцессорных систем (symmetric multi-Включите поддержку многопроцессорных систем (symmetric multi-processing support), если имеется более одного процессора или processing support), если имеется более одного процессора или процессор поддерживает технологию hyperthreading. Для процессор поддерживает технологию hyperthreading. Для получения большей производительности графической получения большей производительности графической подсистемы в системах с AGP или PCI видеокартами следует подсистемы в системах с AGP или PCI видеокартами следует включить поддержку MTRR.включить поддержку MTRR.

Page 18: Ядро Linux

КонфигурированиеКонфигурирование

Power management options.Power management options. В этом разделе помещены опции,  В этом разделе помещены опции, касающиеся управления питанием. Особенно они важны для касающиеся управления питанием. Особенно они важны для ноутбуков. Кроме контроля состояния питания, вы сможете найти ноутбуков. Кроме контроля состояния питания, вы сможете найти там средства для контроля и мониторинга таких параметров как там средства для контроля и мониторинга таких параметров как температура или состояние охлаждающего вентилятора.температура или состояние охлаждающего вентилятора.

Bus options (PCI etc.)Bus options (PCI etc.) Этот раздел содержит опции для  Этот раздел содержит опции для компьютерных шин, поддерживаемых вашей системой, таких как компьютерных шин, поддерживаемых вашей системой, таких как PCI, PCI Express и PC Card. Здесь вы можете включить PCI, PCI Express и PC Card. Здесь вы можете включить поддержку файловой системы /proc/pci, которой можно поддержку файловой системы /proc/pci, которой можно пользоваться вместе с обычно используемой командой lspci.пользоваться вместе с обычно используемой командой lspci.

Executable file formats / EmulationsExecutable file formats / Emulations Этот раздел содержит  Этот раздел содержит опции, касающиеся поддержки различных форматов бинарных опции, касающиеся поддержки различных форматов бинарных файлов. Следует включить поддержку "ELF binary". Кроме того, файлов. Следует включить поддержку "ELF binary". Кроме того, можно включить поддержку DOS binaries для запуска их под можно включить поддержку DOS binaries для запуска их под DOSEMU. Наконец, для 64-битных систем, поддерживающих 32-DOSEMU. Наконец, для 64-битных систем, поддерживающих 32-битную эмуляцию, вы, возможно, захотите включить поддержку битную эмуляцию, вы, возможно, захотите включить поддержку 32-битных приложений.32-битных приложений.

Page 19: Ядро Linux

КонфигурированиеКонфигурирование

Networking.Networking. Здесь вы можете включить базовую поддержку  Здесь вы можете включить базовую поддержку сокетов, сетей TCP/IP, фильтрацию, маршрутизацию и bridging сокетов, сетей TCP/IP, фильтрацию, маршрутизацию и bridging сетевых пакетов, а также поддержку различных протоколов, сетевых пакетов, а также поддержку различных протоколов, таких как IPV6, IPX, Appletalk и X.25. Кроме того, вы можете таких как IPV6, IPX, Appletalk и X.25. Кроме того, вы можете включить поддержку wireless, infrared и amateur radio.включить поддержку wireless, infrared и amateur radio.

Device driversDevice drivers Здесь вы можете включить поддержку большого  Здесь вы можете включить поддержку большого числа аппаратных устройств, включая IDE/ATAPI или SCSI числа аппаратных устройств, включая IDE/ATAPI или SCSI диски, или flash-диски. Включите DMA для ваших IDE диски, или flash-диски. Включите DMA для ваших IDE устройств; иначе они будут работать в более медленной PIO-устройств; иначе они будут работать в более медленной PIO-моде. Если вы хотите иметь поддержку multiple devices, таких моде. Если вы хотите иметь поддержку multiple devices, таких как RAID или LVM, соответствующие опции также надо как RAID или LVM, соответствующие опции также надо включить. Здесь вы также можете включить поддержку включить. Здесь вы также можете включить поддержку параллельного порта для работы с принтером через этот параллельного порта для работы с принтером через этот интерфейс. Здесь происходит конфигурирование широкого интерфейс. Здесь происходит конфигурирование широкого набора поддерживаемых сетевых устройств для различных набора поддерживаемых сетевых устройств для различных сетевых протоколов, которые мы конфигурировали ранее.сетевых протоколов, которые мы конфигурировали ранее.

Page 20: Ядро Linux

КонфигурированиеКонфигурирование

Здесь вы найдете опции поддержки устройств аудио- и видео-Здесь вы найдете опции поддержки устройств аудио- и видео-захвата, устройств USB и IEEE 1384 (Firewire), а также захвата, устройств USB и IEEE 1384 (Firewire), а также различного рода устройств аппаратного мониторинга. В разделе различного рода устройств аппаратного мониторинга. В разделе управления символьными устройствами (Character Devices) управления символьными устройствами (Character Devices) можно включить поддержку печати через параллельный порт и можно включить поддержку печати через параллельный порт и поддержку direct rendering.поддержку direct rendering.

Firmware driversFirmware drivers Этот раздел содержит несколько опций,  Этот раздел содержит несколько опций, относящихся к установке и обновлению BIOS, таких как относящихся к установке и обновлению BIOS, таких как использование функций Dell System Management на некоторых использование функций Dell System Management на некоторых системах производства компании Dell.системах производства компании Dell.

File systemsFile systems Этот раздел предназначен для конфигурирования  Этот раздел предназначен для конфигурирования файловых систем, поддержку которых вы хотите иметь в вашем файловых систем, поддержку которых вы хотите иметь в вашем ядре, скомпилированных в виде модулей или нет. Также вы ядре, скомпилированных в виде модулей или нет. Также вы сможете найти здесь файловые системы для съемных дисковых сможете найти здесь файловые системы для съемных дисковых устройств (дискеты, CD и DVD устройства), а также сетевых устройств (дискеты, CD и DVD устройства), а также сетевых файловых систем, таких как NFS, SMB или CIFS. файловых систем, таких как NFS, SMB или CIFS.

Page 21: Ядро Linux

КонфигурированиеКонфигурирование

Поддержка различных типов разделов и национальных Поддержка различных типов разделов и национальных кодировок Native Language Support также располагаются в кодировок Native Language Support также располагаются в этом разделе.этом разделе.

Также неплохо было бы включить поддержку квотирования (в Также неплохо было бы включить поддержку квотирования (в случае с сервером). случае с сервером).

Помните, что так как initrd Помните, что так как initrd нене используется, то драйвер используется, то драйвер файловой системы корневого раздела должен быть файловой системы корневого раздела должен быть вкомпилен в ядро ((*), а не (M)). вкомпилен в ядро ((*), а не (M)).

Kernel hackingKernel hacking Этот раздел позволяет включать режим  Этот раздел позволяет включать режим отладки ядра и выбирать, какие дополнительные функции отладки ядра и выбирать, какие дополнительные функции будут включены.будут включены.

Security optionsSecurity options Этот раздел предназначен для  Этот раздел предназначен для конфигурирования опций защиты, а также включения и конфигурирования опций защиты, а также включения и конфигурирования SELinux (Security Enhanced Linux).конфигурирования SELinux (Security Enhanced Linux).

Page 22: Ядро Linux

КонфигурированиеКонфигурирование

Cryptographic optionsCryptographic options В это разделе можно  В это разделе можно сконфигурировать поддержку различных алгоритмов сконфигурировать поддержку различных алгоритмов шифрования, таких как MD4, DES и SHA256.шифрования, таких как MD4, DES и SHA256.Library Library routinesroutines Здесь вы можете указать ряд алгоритмов  Здесь вы можете указать ряд алгоритмов вычисления контрольных сумм (CRC), которые будут вычисления контрольных сумм (CRC), которые будут включены в ядро или собраны как модули.включены в ядро или собраны как модули.

Осталось лишь слегка облегчить ядро, перейдя в раздел Осталось лишь слегка облегчить ядро, перейдя в раздел ""Kernel hackingKernel hacking"" и отключив и отключив ""Kernel debuggingKernel debugging"", , ""Compile the Compile the kernel with frame pointerskernel with frame pointers"" и и ""Remote debugging over FireWire Remote debugging over FireWire early on bootearly on boot««..

Page 23: Ядро Linux

Сборка ЯдраСборка Ядра Теперь, когда мы сконфигурировали ядро, мы готовы к его сборке. Теперь, когда мы сконфигурировали ядро, мы готовы к его сборке.

Если вы не знаете, каково состояние дерева для сборки, прежде Если вы не знаете, каково состояние дерева для сборки, прежде чем приступать к конфигурированию нового ядра выполните make чем приступать к конфигурированию нового ядра выполните make clean. Для более полной очистки выполните make mrproper (при clean. Для более полной очистки выполните make mrproper (при этом - make mrproper - будет удален файл .config, а также этом - make mrproper - будет удален файл .config, а также некоторые другие файлы, используемые в процессе сборки).некоторые другие файлы, используемые в процессе сборки).

В ходе пробы конфигурирования, желательно дать новому ядру В ходе пробы конфигурирования, желательно дать новому ядру специальное название, которое позволит вам легко его специальное название, которое позволит вам легко его идентифицировать. Чтобы сделать это, необходимо установить идентифицировать. Чтобы сделать это, необходимо установить значение Local version и активировать опцию значение Local version и активировать опцию Automatically append Automatically append version information to the version string version information to the version string вв соответствующейсоответствующей строкестроке разделараздела General setup. General setup.

В принципе, для сборки ядра не требуются полномочия root, В принципе, для сборки ядра не требуются полномочия root, несмотря на то, что для несмотря на то, что для установки нового ядра установки нового ядра эти полномочия эти полномочия необходимы.необходимы.

Чтобы начать сборку ядра 2.6, необходимо выполнить make.Чтобы начать сборку ядра 2.6, необходимо выполнить make.

Page 24: Ядро Linux

Сборка ЯдраСборка Ядра Если исходники ядра и компилятор установлены корректно, то Если исходники ядра и компилятор установлены корректно, то

примерно минут через 20 (это зависит от версии ядра и от примерно минут через 20 (это зависит от версии ядра и от быстродействия вашей системы), вы получите быстродействия вашей системы), вы получите откомпилированное ядро. откомпилированное ядро.

Обычно оно помещается в каталог /usr/src/linux/arch/i386/boot Обычно оно помещается в каталог /usr/src/linux/arch/i386/boot

Page 25: Ядро Linux

Установка нового ядраУстановка нового ядра Все, что осталось сделать - скопировать ядро в каталог /boot и Все, что осталось сделать - скопировать ядро в каталог /boot и

внести изменения в конфигурационный файл загрузчика GRUB. внести изменения в конфигурационный файл загрузчика GRUB. # cp arch/x86/boot/bzImage /boot/kernel-2.6.36# cp arch/x86/boot/bzImage /boot/kernel-2.6.36 После окончания сборки ядра, его необходимо установить. После окончания сборки ядра, его необходимо установить.

Перед установкой, необходимо выполнить make modules_install Перед установкой, необходимо выполнить make modules_install для установки модулей ядра в новый подкаталог /lib/modules. для установки модулей ядра в новый подкаталог /lib/modules. После установки модулей, необходимо выполнить make install После установки модулей, необходимо выполнить make install для установки нового ядра и стартового RAM-диска (initial RAM для установки нового ядра и стартового RAM-диска (initial RAM disk) в каталог /boot и обновления конфигурации загрузчика.disk) в каталог /boot и обновления конфигурации загрузчика.

Вот простейший конфиг GRUB: Вот простейший конфиг GRUB: default 0default 0 timeout 15timeout 15 title My Linux 2.6.36title My Linux 2.6.36 kernel /boot/kernel-2.6.36 root=/dev/sda2kernel /boot/kernel-2.6.36 root=/dev/sda2

Page 26: Ядро Linux

Установка нового ядраУстановка нового ядра В процессе сборки автоматически создается необходимый В процессе сборки автоматически создается необходимый

стартовый RAM-диск (initial RAM disk или initrd). Если у вас стартовый RAM-диск (initial RAM disk или initrd). Если у вас возникнет необходимость создать его вручную, это можно возникнет необходимость создать его вручную, это можно сделать при помощи команды mkinitrd.сделать при помощи команды mkinitrd.

После выполнения make install должен обновиться После выполнения make install должен обновиться конфигурационный файл загрузчика. Но если не обновился, конфигурационный файл загрузчика. Но если не обновился, то  выполните команду update-grub.то  выполните команду update-grub.

Page 27: Ядро Linux

Возможные проблемыВозможные проблемы Если вы не укажите драйвер на жесткий диск или не Если вы не укажите драйвер на жесткий диск или не

правильно укажите "root=", ядро не сможет примонтировать правильно укажите "root=", ядро не сможет примонтировать корневой раздел и возле сообщения корневой раздел и возле сообщения Kernel panicKernel panic вы сможете вы сможете найти нечто подобное: найти нечто подобное:

Please append a correct "root=" boot option: here are the Please append a correct "root=" boot option: here are the availableavailablepartitions: После этой строки будет перечислен список partitions: После этой строки будет перечислен список обнаруженных накопителей. Если вашего жесткого диска обнаруженных накопителей. Если вашего жесткого диска среди них нет, то вам надо пересобрать ядро, включив среди них нет, то вам надо пересобрать ядро, включив недостающие драйвера на жесткий диск. Если же ваш недостающие драйвера на жесткий диск. Если же ваш жесткий диск в этом списке есть, значит вы не правильно жесткий диск в этом списке есть, значит вы не правильно указали значение "root=". указали значение "root=".

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

Page 28: Ядро Linux

Возможные проблемыВозможные проблемы Что еще почитать?Что еще почитать? 1. Ставим ядро 2.6, или Ядерная физика для домохозяйки. 1. Ставим ядро 2.6, или Ядерная физика для домохозяйки.

Версия 2.0: http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-Версия 2.0: http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-2.0.html2.0.html2. 2. The Linux Kernel Module Programming Guide The Linux Kernel Module Programming Guide ((ПрограммированиеПрограммирование ядраядра Linux): Linux): http://linux4u.jinr.ru/docs/add04/lkmpg.htmlhttp://linux4u.jinr.ru/docs/add04/lkmpg.html33. Linux From Scratch: http://linux4u.jinr.ru/docs/add04/LFS-. Linux From Scratch: http://linux4u.jinr.ru/docs/add04/LFS-BOOK-5.0-HTML/BOOK-5.0-HTML/