Сборка и установка собственного ядра Linux
5 Настройка ядра
Лучше всего использовать конфигурацию текущего рабочего ядра как основу для нового. Скопируйте существующую конфигурацию в каталог исходников ядра (/usr/src/linux):
cp /boot/config-`uname -r` ./.config Запустите меню конфигурации ядра:
make menuconfigВ меню выберите “Load an Alternate Configuration File” и укажите файл .config (он содержит конфигурацию текущего рабочего ядра).


Просмотрите опции меню и сделайте нужные выборы. Когда закончите и выберете Exit, ответьте на вопрос “Do you wish to save your new kernel configuration?” — Yes.

Важно: сохраняйте исходный .config до внесения серьёзных изменений. Если вы не уверены в опции, отметьте её как модуль (M) или оставьте по умолчанию.
Примечание: термины
- make menuconfig — текстовый интерфейс конфигурации ядра.
- .config — файл конфигурации ядра.
6 Сборка ядра
Чтобы собрать пакеты .deb, выполните эти две команды в каталоге с исходниками:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headersПосле –append-to-version= можно написать любую строку для идентификации сборки, но она должна начинаться с дефиса (-) и не содержать пробелов.
Будьте терпеливы: компиляция ядра может занять от ~10 минут до нескольких часов в зависимости от конфигурации и скорости процессора. На старых машинах и при включённых многочисленных опциях (например, встроенная поддержка файловых систем или драйверов) время увеличивается.
Факто-бокс:
- Ожидаемое время: от 10 мин до нескольких часов.
- Требуемое свободное место в /usr/src и /boot: обычно десятки мегабайт — сотни мегабайт в зависимости от модулей.
- Рекомендуется: не прерывать процесс, использовать UPS на серверах.
7 Установка нового ядра
После успешной сборки в каталоге /usr/src появятся два .deb файла. Проверьте:
cd /usr/src
ls -lПример имён пакетов на тестовой системе:
linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
Устанавливайте их так:
dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.debСовет: вы можете перенести эти .deb на другие Ubuntu-системы и установить их без повторной компиляции.
Проверьте /boot/grub/menu.lst — там должны появиться две записи для нового ядра. Откройте файл:
vi /boot/grub/menu.lstЗаписи, добавленные на тестовой системе, выглядели так:
| title Ubuntu, kernel 2.6.18.1-custom root (hd0,0) kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash initrd /boot/initrd.img-2.6.18.1-custom savedefault boot title Ubuntu, kernel 2.6.18.1-custom (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.18.1-custom boot |
Теперь перезагрузите систему:
shutdown -r nowПроверьте, что система загрузилась с новым ядром:
uname -rВы должны увидеть что-то вроде:
2.6.18.1-customЕсли система не загружается нормально, при загрузке нажмите ESC, чтобы войти в меню GRUB, и выберите старое ядро.


Календарь отката и план действий при проблеме:
- Шаг 1 — при зависании загрузчика: нажмите ESC, выберите старую запись в GRUB и загрузитесь.
- Шаг 2 — проверьте логи: /var/log/syslog, dmesg, /var/log/boot.log.
- Шаг 3 — если проблема связана с модулем, загрузитесь в режиме восстановления, удалите или замените проблемный модуль, пересоберите ядро.
- Шаг 4 — после исправления удалите нерабочие stanzas в /boot/grub/menu.lst, чтобы не загромождать меню.
Критерии приёмки:
- Система загружается в выбранном режиме (обычный и recovery).
- uname -r показывает ожидаемую версию.
- Вся критичная служба запускается и проходит базовые тесты (network, disk mounts, systemd services).
Роль-по-роли — краткий чеклист:
- Для разработчика модуля:
- Включите поддержку модулей (M) для нужных опций.
- Соберите headers и протестируйте модуль на тестовой машине.
- Для системного администратора:
- Сделайте резервную копию /boot и /etc/grub/menu.lst.
- Подготовьте доступ к консоли/серийному порту.
- Для тестировщика:
- Прогоны reboot, проверка сетевых интерфейсов, файловой системы и критичных демонов.
Мини-методология (быстрый план):
- Скопировать текущий .config.
- Настроить через make menuconfig.
- Собрать пакеты через make-kpkg.
- Установить .deb и перезагрузить.
- Проверить uname -r и логи; при сбое выполнить откат.
Mermaid: решение — загружаем новое ядро или откатываемся
flowchart TD
A[Собрать новое ядро] --> B{Успешная сборка?}
B -- Да --> C[Установить .deb и перезагрузить]
B -- Нет --> D[Исправить ошибки сборки]
C --> E{Загрузка успешна?}
E -- Да --> F[Завершено]
E -- Нет --> G[Загрузиться со старого ядра, проанализировать логи]
G --> DБезопасность и примечания по совместимости:
- Если вы используете нестандартные драйверы (особенно закрытыe), убедитесь в совместимости с новой версией ядра.
- Для серверов рекомендуется тестировать сборку в тестовой среде перед продакшеном.
8 Ссылки
- Ubuntu: http://www.ubuntu.com
- The Linux Kernel Archives: http://www.kernel.org
Краткое резюме:
- Используйте текущее .config как основу.
- make menuconfig для настройки.
- Собирайте через make-kpkg, устанавливайте dpkg -i.
- При проблемах — загрузитесь со старого ядра и анализируйте логи.
Важно: всегда имейте план отката и резервную копию конфигураций загрузчика и /boot.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента