Как скомпилировать ядро — по‑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 update1.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-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
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента