Гид по технологиям

Как скомпилировать ядро — по‑Ubuntu

• 5 min read • Linux • Обновлено 20 Nov 2025
Как скомпилировать ядро на Ubuntu
Как скомпилировать ядро на Ubuntu

Кратко: этот подробный гид показывает шаги для сборки собственного ядра Linux на Ubuntu из «ванильных» исходников с kernel.org. Описаны подготовка окружения, установка пакетов, загрузка исходников, применение патчей и проверенные советы по отладке. Следуйте шаг за шагом и используйте рубрику «Критерии приёмки» перед установкой нового пакета ядра.

Версия и автор

Версия 1.0
Автор: Falko Timme

Что в этой статье

  • Подготовка системы для сборки ядра на Ubuntu
  • Установка необходимых пакетов
  • Загрузка и распаковка исходников ядра из kernel.org
  • Применение патчей (опционально)
  • Советы по тестированию и откату

Важно: это один из методов сборки ядра. Автор не гарантирует работу на всех конфигурациях. Прочитайте раздел «Когда это не сработает» перед началом.

1 Предварительная заметка

Я предпочитаю выполнять все шаги под root. Если у вас ещё нет пароля для root, создайте его сейчас:

sudo passwd root

Затем войдите под root:

su

Если вы предпочитаете работать как обычный пользователь, ставьте sudo перед всеми командами из этого руководства. Например, когда в примере запускается:

apt-get update

вы должны выполнить:

sudo apt-get update

1.1 /bin/sh в Ubuntu 6.10

На Ubuntu 6.10 ссылка /bin/sh по умолчанию указывает на /bin/dash. Dash иногда вызывает проблемы при сборке из исходников. Чтобы избежать неожиданных ошибок при сборке, можно заменить ссылку на /bin/bash:

rm -f /bin/sh
ln -s /bin/bash /bin/sh

Примечание: это изменение влияет на системные сценарии; возвращайте ссылку обратно, если у вас есть специфические требования к dash.

2 Установка необходимых пакетов для сборки ядра

Сначала обновим базу пакетов:

apt-get update

Установим набор пакетов, полезных при сборке ядра:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Краткое описание пакетов:

  • kernel-package — инструменты для упаковки собранного ядра в .deb
  • libncurses5-dev — для текстовой конфигурации меню (make menuconfig)
  • fakeroot — позволяет создавать пакеты .deb без реального root
  • wget, bzip2 — загрузка и распаковка исходников

3 Загрузка исходников ядра

Загрузите желаемую версию ядра в /usr/src. На www.kernel.org выберите нужный архив, например linux-2.6.18.1.tar.bz2 (все ядра 2.6 находятся здесь: http://www.kernel.org/pub/linux/kernel/v2.6/).

Пример загрузки в /usr/src:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

Распакуйте архив и создайте символьную ссылку linux на каталог с исходниками:

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

Теперь вы в каталоге исходников и можете приступать к конфигурации и сборке.

4 Применение патчей к исходникам (опционально)

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

Предположим, что патч скачан в /usr/src под именем patch.bz2. Протестируйте применение патча без изменений исходников:

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run

Если тест не выдаёт ошибок, выполните реальное применение патча:

bzip2 -dc /usr/src/patch.bz2 | patch -p1

Команда –dry-run помогает обнаружить несовместимости заранее. Если при тестовом применении есть ошибки, не запускайте реальное применение.

Пример: применение prepatch (пример с 2.6.19-rc4)

Если нужна функциональность из релиза-кандидата 2.6.19-rc4, но полноценных исходников ещё нет, есть патч patch-2.6.19-rc4.bz2, который следует применять не к 2.6.18.1, а к предыдущему «полноформатному» релизу 2.6.18. То есть скачайте исходники 2.6.18 и затем применяйте патч:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1

Прочитайте примечания на сайте kernel.org о типах патчей: некоторые патчи рассчитаны на определённые ветви исходников.

5 Рекомендации по конфигурации и сборке (краткий чек‑лист)

  • Создайте резервную копию текущего рабочего ядра и конфигурации: /boot, /etc/default/grub
  • Скопируйте текущую конфигурацию:
cp /boot/config-$(uname -r) /usr/src/linux/.config
  • Обновите конфигурацию (make menuconfig или make oldconfig):
make menuconfig
# или
make oldconfig
  • Соберите пакет .deb через kernel-package (пример для 2.6):

`` make-kpkg clean make-kpkg –rootcmd fakeroot –initrd –revision=1 custom-kernel-image (команды выше — примеры; точный набор параметров зависит от версии kernel-package) ## 6 Тестирование и откат После сборки установите пакеты .deb через dpkg и обновите конфигурацию загрузчика: dpkg -i ../linux-image-*.deb update-grub Перезагрузите систему и выберите новое ядро в меню загрузчика. Если система не загрузится, выберите старый пункт ядра в GRUB и загрузитесь с рабочей конфигурацией. ## Когда это не сработает - Если бинарные модули проприетарных драйверов (например, NVIDIA/VMware) несовместимы с новым ядром, они могут не собраться. В таких случаях ищите патчи или исходники драйверов для вашей версии ядра. - Патч может быть несовместим с конкретной мелкой версией исходников (например, патч для 2.6.19-rc4 нельзя применять к 2.6.18.1). - На сильно кастомизированных дистрибутивах могут быть специфичные изменения в initramfs/загрузчике — проверьте процедуру отката заранее. ## Альтернативные подходы - Использовать готовые пакеты от дистрибутива (apt install linux-image-) — проще и безопаснее. - Собирать модульные расширения (out-of-tree modules) вместо полного ядра, если нужно лишь добавить драйвер. - Использовать инструменты вроде makelocalmodconfig для создания минимальной конфигурации ядра на основе текущих загруженных модулей. ## Методология: шаги высокого уровня 1. Подготовка окружения: обновление пакетов, установка зависимостей. 2. Загрузка и верификация исходников. 3. Применение необходимых патчей (с тестом --dry-run). 4. Перенос/наследование конфигурации (make oldconfig). 5. Сборка и упаковка в формат дистрибутива (.deb). 6. Установка, тестирование, откат при необходимости. ## Ролевые чек‑листы - Системный администратор: - Резервные копии /boot и конфигураций. - Тестовая машина или консольный доступ на случай отката. - Разработчик драйверов: - Проверить API ядра (набор символов) и применить патчи. - Обновить DKMS (если используется) для автоматической пересборки модулей. - Обычный пользователь: - Следовать инструкциям под наблюдением администратора или на тестовой машине. ## Критерии приёмки - Система загрузилась с новым ядром без ошибок в dmesg. - Основные устройства (сеть, диски, графика) функционируют как ранее. - Проприетарные модули собраны и загружены (если требуются). - Имеется рабочая процедура отката и резервная копия старого ядра. ## Небольшой фактбокс - Каталог сборки: /usr/src/linux - Частые пакеты: kernel-package, libncurses5-dev, fakeroot - Источник исходников: http://www.kernel.org/ - Формат исходников: tar.bz2 для старых веток ## Простая блок‑схема принятия решенияmermaid flowchart TD A[Нужно ли новое ядро?] –>|Нет| B[Использовать дистрибутивное ядро] A –>|Да| C[Есть патч/функция в ванильном ядре?] C –>|Да| D[Скачать исходники + применить патч] C –>|Нет| E[Рассмотреть альтернативы: модуль/пакет поставщика] D –> F[Собрать и протестировать] F –> G{Загрузка успешна?} G –>|Да| H[Перевести в продакшен] G –>|Нет| I[Откат к старому ядру] ``` ## Глоссарий в одну строку - ванильное ядро — исходники с kernel.org без патчей дистрибутива;
- patch/prepatch — обновление исходников в виде набора изменений;
- kernel-package — пакет инструментов для создания .deb образов ядра;
- DKMS — система автоматической пересборки модулей при обновлении ядра. ## Итог Сборка собственного ядра даёт гибкость и контроль, но требует осторожности: всегда делайте резервные копии, тестируйте на отдельной системе и имеете план отката. Если вы предпочитаете стабильность и простоту — используйте готовые пакеты дистрибутива. Если требуется специфичный драйвер или экспериментальная функция, сборка из ванильных исходников — оправданный путь. Дополнительные ссылки: - Сайт исходников: http://www.kernel.org/ - О типах патчей: http://kernel.org/patchtypes/pre.html

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро