Сборка, конфигурирование и установка своего ядра в Ubuntu

Некоторым людям не сидиться на месте спокойно, и им палец в рот не клади, дай что-то поковырять. Я расскажу сегодня, как можно собрать апстрим ядро linux из git репозитария, выполнить его конфигурацию, собрать установочные deb пакеты и установить. А так же, расскажу как сделать ядро — ну прям как его делают в убунте :)

Требования

Для сборки собственного ядра, вам потребуется несколько утилит и пакетов. Пакет  ‘git-core’ предоставляет систему управления версиями ПО — git, который будет использоваться для клонирования основного git репозитария.Пакет  ‘kernel-package’ предоставляет утилиту make-kpkg которая автоматом собирает ядро kernel и генерирует .deb файлы linux-image и linux-header  которые вы затем сможите установить. Вам требуется установить оба этих пакета.

Заметьте, что на новых версиях ubuntu вам нужно будет заменить в вышеприведенной строке «ncurses-dev» на «libncurses5-dev».

Сборка ядра и установка

  1. Смените директорию на ту куда будете клонировать исходники ядра.В примере, будем использовать  $HOME
  2. Клонируем основное дерево исходников ядра.
  3. Переходим в директорию linux-2.6
  4. Копируем конфиг вашего существующего ядра в дерево исходников.
  5. Актуализируйте ваш конфигурационный файл. Ответьте на вопросы которые вам задаст утилита. Если вам неинтересны новые опции, или вы не уверены что они делают, просто выбирайте то что стоит по умолчанию (Дефолтное значение выделено БОЛЬШОЙ буквой и при пустом значении будет выставляться именно оно).

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

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

  6. (опционально) Если вы хотите внести какие-то изменения в ваш конфигурационный файл, выполните следующие изменения и сохраните их когда вас спросят об этом:

    Отмечу, что сборка ядра в Ubuntu делается с отладочной информацией что в результате делает модули ядра (*.ko файлы) намного больше чем они должны были быть (linux-image*.deb будет весить 200-300 Мб вместо положенных 20-30 Мб). Для отключения этого перейдите в раздел «Kernel hacking»; затем в «Kernel debugging», выставьте значение «Compile the kernel with debug info» в OFF. Этот баг известен и будет поправлен (он подтвержден, но на момент написания статьи — никто на него не подписан). См. bug 90283

  7. Чистим директорию исходников.
  8. Создадим .deb файлы заголовков и образа ядра (linux-image и linux-header) CONCURRENCY_LEVEL в приведенной команде так же можно выставить вручную. указав сколько процессоров/ядер использовать при сборке ядра).

    В результате выполнения этой команды вы получите пакеты похожие что-то вроде на linux-image-2.6.35-rc5-custom и linux-headers-2.6.24-rc5-custom, в этом случае версия будет 2.6.35-rc5-custom-10.00.Custom. вы можете изменить эту строку на что-то другое изменив значение опции --append-to-version. Так же вы можете изменить дефолтное значение версии 10.00.Custom на что-то другое используя опцию --revision option.

  9. Перейдем из директории на уровень выше (.deb файлы linux-image и linux-header будут лежать тут)
  10. Теперь установим .deb файлы. В примере это файлы linux-image-2.6.35-rc5-custom_2.6.35-rc5-custom-10.00.Custom_i386.deb и  linux-headers-2.6.35-rc5-custom_2.6.35-rc5-custom-10.00.Custom_i386.deb. Вы можете получить предупреждения о ‘/lib/firmware/2.6.24-rc5-custom/’ -это произойдет, если драйвер который вы включили в конфигурации требует отдельной прошивки для своей работы.
  11. Теперь можете перезагрузиться в своё новое ядро. не забыв его выбрать в меню загрузки.

Использование конфигурации ядра для Ubuntu

Приведенная выше инструкция позволяет легко собрать своё собственное ядро. Однако, если вы хотите собрать ядро которое будет совпадать по конфигурации с официальным ядром от UbuntuВам придется несколько изменить свои действия. Если вы просто хотите попробовать сами ядро от Ubuntu, прочитайте и следуйте инструкции расположенной тут: https://help.ubuntu.com/community/Kernel/Compile.

  1. Выполните шаги с 1 по 7 описанные выше, используя конфиг ядра Ubuntu в шаге 4
  2. Перепиите скрипт по умолчанию: kernel-package на скрипт от Ubuntu:
  3. Соберите пакеты используя наложение (overlay) директории:
  4. далее выполняйте шаги с 9 по 11 которые приведены выше

Примечание: Опция «—overlay-dir» доступна только в Lucid или позже. Если вам требуется собрать ядро в предыдущих релизах попробуйте установить бекпорт kernel-package если это возможно, или вручную поправьте /usr/share/kernel-package как надо.

Автор: Mirivlad

Скромный труженик консоли и окошек.