Ядро (англ. kernel) – то, вокруг чего строится всё остальное. Именно оно и называется Linux. Сейчас словом Linux в быту называют построенную на нём операционную систему, хотя по-хорошему она называется GNU/Linux (ядро Linux и ПО от проекта GNU, многие десятилетия находящейся в разработке).

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

Каждый релиз Ubuntu имеет собственную версию ядра. LTS-релизы начиная с 10.04 получили возможность обновить ядро до версий, входящих в состав более новых релизов.

Версия UbuntuВерсия ядра
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6.06 LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8.04 LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10.04 LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12.04 LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14.04 LTS 3.13
14.10 3.16
15.04 3.19

Форки

  • pf-kernel – форк ядра, развиваемый одним из участников русскоязычного сообщества. Цель сего проекта — собрать максимально оптимизированное по скорости и возможностям ядро под себя, заодно предоставив другим возможность пользоваться этими наработками.
  • Zen Kernel – форк, в рамках которого развивается ядро пригодное для ежедневного использования. Не расчитано на серверные системы.

Установка

Ядро является одним из жизненно важных компонентов каждого дистрибутива Linux. В Ubuntu ядро содержится в пакетах linux-image-версия_ядра-тип_ядра. Для простоты обновления так же имеется пакет linux-image-тип_ядра, в зависимостях которого указана последняя версия ядра имеющеяся в репозитории.

Нумерация версий ядра Ubuntu и на сайте kernel.org не совпадает, так как для обозначения добавленных патчей разработчики из Canonical добавляют микроверсию. Например, версия 3.2.0-23 будет означать, что ядро базируется на ветке 3.2, на которую было наложено 23 патча.

В репозитории Ubuntu поддерживаются следующие типы ядер:

  • generic – ядро, подходящее для большей части систем.
  • generic-pae2) – ядро, включающее в себя возможность адресовать больше 4Гб оперативной памяти на 32-битных системах.
    • Начиная с Ubuntu 10.04 при установке с MinimalCD3) система автоматически определяет объем оперативной памяти и устанавливает подходящее ядро.
    • Начиная с Ubuntu 12.04 это ядро включено в 32-битную версию дистрибутива по-умолчанию.
  • virtual – специально оптимизированное ядро для работы в виртуальных машинах.
  • server – серверный вариант ядра (начиная с релиза Ubuntu 12.04 обьеденен с generic).
generic-pae ядро позволяет 32-битной системе использовать до 64ГБ общего объёма оперативной памяти, выделяя под нужды конкретного процесса не более 4ГБ, в то время как простое ядро generic работает не более чем с 4ГБ ОЗУ.

64-битное ядро позволяет адресовать до 1ТБ памяти, потребляемой процессами.

Если требуется обновить ядро на более новую мажорную версию4) (обычно это связано с тем, что в новых версиях добавляется поддержка нового оборудования, устраняются регрессии) можно воспользоватся официально поддерживаемым архивом http://kernel.ubuntu.com/~kernel-ppa/mainline/.

Компиляция ядра

Сборка ядра из исходных кодов требует некоторых навыков и знаний о работе ОС.

Перед началом сборки ядра необходимо установить следующие пакеты:

build-essential fakeroot ncurses-dev libssl-dev

Все дальнейшие действия необходимо выполнять от лица суперпользователя:

sudo su

Получение исходного кода

Исходный код ядра, используемого в Ubuntu можно получить установив пакет linux-source:

apt-get install linux-source

После установки в директории /usr/src появится архив называющийся linux-source-верися_ядра.tar.bz2.

Так же можно скачать архив и с исходным кодом ядра с сайта kernel.org.

Скачивая ядро с сайта kernel.org, вам придётся наложить на него патчи

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

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

cd /usr/src
tar xjf ./linux-source-3.2.0.tar.bz2
ln -s ./linux-source-3.2.0 ./linux
cd ./linux

Для упрощения процесса конфигурации ядра можно скопировать настройки текущего:

cp /boot/config-`uname -r` .config

Если вы хотите узнать какие различия появились между новой и текущей версией ядер выполните:

make oldconfig

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

make localmodconfig

Существует три основных варианта конфигурирования ядра:

  • make config

    Способ для смелых и отважных. Конфигуратор задаст вам около четырехста вопросов на которые нужно будет дать ответ.

  • make menuconfig

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

  • make xconfig

    Предоставляет графический конфигуратор.

Сборка

Сборка ядра производится командой

fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j <количество ядер процессора>+1

Вместо ваша_версия подставьте название для вашей версии ядра.

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

Модули ядра

Смотрите страницу Модули ядра.

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

Ссылки

1)
FIXME ссылку бы
2)
Physical Address Extension
3)
FIXME проверить происходит ли это при установке с других версий (desktop, server)
4)
первые две цифры в названии ядра означают мажорную версию, идущие после них – минорную
5)
Здесь и далее будет подразумеваться, что исходный код был получен из репозитория Ubuntu