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

Как собрать ядро — способ для Mandriva

• 6 min read • Системное администрирование • Обновлено 21 Nov 2025
Компиляция ядра на Mandriva — руководство
Компиляция ядра на Mandriva — руководство

Краткое описание и цель

Это руководство показывает, как скачать «ванильное» ядро с www.kernel.org, при необходимости применить патчи, настроить конфигурацию, собрать ядро и получить RPM-пакет, который удобно устанавливать и распространять по другим Mandriva-системам. Публикуемый процесс тестировался на Mandriva Free 2007, но общие шаги актуальны для современных Mandriva-подобных окружений.

Важно: это не единственный метод. Я описываю последовательность, которую использую лично. Я не даю гарантий применимости для всех сочетаний железа/ПО.

Основные преимущества подхода

  • Получаете RPM-пакет, который удобно установить и откатить.
  • Независимость от версий ядра, поставляемых дистрибутивом.
  • Возможность добавить патчи/драйверы до сборки.

Что вам понадобится

  • Доступ root или sudo на машине Mandriva.
  • Установленные инструменты сборки: gcc, make, binutils, rpm-build, bzip2/gzip, patch, wget. Убедитесь, что установлены заголовки и зависимости для сборки модулей.
  • Доступ в /usr/src с достаточным местом на диске (несколько сотен мегабайт — гигабайт в зависимости от конфигурации).

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

Цель — получить rpm-пакет ядра, который можно установить стандартными средствами rpm/urpmi и распространять по другим системам. Это выигрывает по сравнению с традиционной ручной установкой, когда пакета не остаётся.

2 Скачивание исходников ядра

Перейдите в /usr/src и скачайте нужную версию ядра с www.kernel.org. Например, для 2.6.18.3:

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

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

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

Примечание: локализуйте пути и версии под вашу задачу. Сохраняйте оригинальные имена файлов.

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

Иногда требуется поддержка оборудования или экспериментальных функций, которые ещё не включены в основную ветку. Если у вас есть патч (например patch.bz2) в /usr/src, протестируйте и примените его так:

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

Первая команда выполняет тест-прогон, вторая — реальное применение. Для gzip-патчей используйте:

gunzip -c /usr/src/patch.gz | patch -p1 --dry-run
gunzip -c /usr/src/patch.gz | patch -p1

Если вы используете prepatch (предрелизный патч, например patch-2.6.19-rc6.bz2), применяйте его к предыдущему полному релизу с трёхчастной версией (см. инструкции на kernel.org). Например, patch-2.6.19-rc6 следует применять к 2.6.18.

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

Important: не применяйте патч, если dry-run выдаёт ошибки.

4 Конфигурация ядра

Рекомендуется взять конфигурацию текущего рабочего ядра как основу:

make clean && make mrproper
cp /boot/config-`uname -r` ./.config

Запустите меню конфигурации:

make menuconfig

В меню выберите Load an Alternate Configuration File и укажите .config (конфигурация вашего текущего ядра). Просмотрите опции и измените настройки по необходимости.

Убедитесь, что задаёте идентификатор версии ядра в General Setup → Local version - append to kernel release. Пример: -default. Это даст пакету имя вида kernel-2.6.18.3-default-1.i386.rpm (в статье автора было kernel-2.6.18.3default-1.i386.rpm без дефиса; используйте удобный вам формат). При последующей сборке новой версии того же точечного релиза не забудьте изменить локальную версию (например, -default1, -default2), иначе RPM будет жаловаться на уже установленный пакет.

Скриншот меню загрузки альтернативного файла конфигурации

Скриншот выбора конфигурации в menuconfig

Просмотрите категории и сохраните конфигурацию при выходе (выберите Yes, когда система спросит «Do you wish to save your new kernel configuration?»).

Сохранение конфигурации ядра

5 Сборка ядра и модулей

Доступно несколько подходов: простая ручная сборка и создание RPM-пакета прямо из исходников. Выберите подход в зависимости от целей.

5.1 Быстрая ручная сборка и установка (подходит для тестирования)

make -j$(nproc)
make modules_install
make install

Эти команды соберут образ ядра, установят модули в /lib/modules/<версия> и, в большинстве систем, создадут файлы в /boot (vmlinuz-*) и обновят записи GRUB. На Mandriva может понадобиться создать initramfs и обновить конфигурацию загрузчика вручную.

5.2 Построение RPM-пакета (рекомендуется для распространения)

Ядро поддерживает цель rpm-pkg, которая создаёт RPM-пакеты в каталоге выше исходников. Это стандартный и переносимый способ получить инсталляционный пакет:

make -j$(nproc) rpm-pkg

После выполнения вы получите набор RPM-файлов (ядро, kernel-devel и т.д.), которые можно установить с помощью rpm или urpmi.

Note: Если команда rpm-pkg не доступна или требует дополнительных пакетов (rpm-build и др.), установите их через менеджер пакетов Mandriva.

6 Установка и обновление загрузчика

После успешной сборки и получения RPM:

rpm -Uvh kernel-*.rpm

Или через urpmi:

urpmi kernel-*.rpm

Проверьте, что запись о новом ядре появилась в конфигурации GRUB (/boot/grub/menu.lst или /boot/grub/grub.cfg). Если требуется, выполните создание initramfs (в зависимости от вашей системы):

  • Для dracut: dracut –force /boot/initramfs-<вер>.img <вер>
  • Для mkinitrd: mkinitrd -o /boot/initrd-<вер>.img <вер>

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

7 Отладка и частые проблемы

  • Если модуль не загружается: проверьте dmesg/journalctl на предмет ошибок загрузки модулей. Проверьте совпадение версий /lib/modules/<версия>.
  • Если ядро не загружается: загрузитесь с рабочего старого ядра и проверьте конфигурационный файл .config на отключенные критичные опции (например, драйвер для вашего дискового контроллера). Если проблема в initramfs, пересоберите его.
  • Если RPM не устанавливается из-за конфликта имён: измените Local version в конфигурации и пересоберите.

Important: всегда сохраняйте рабочую копию старого ядра в меню загрузчика — откат проще, чем восстановление сломанного ядра.

8 Когда этот метод не подходит (контрпример)

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

9 Альтернативные подходы

  • Установка готовых пакетов от поставщика дистрибутива (быстрее и безопаснее).
  • Использование модульных патчей в виде DKMS для динамической сборки модулей без пересборки всего ядра.
  • Использование контейнеров/виртуализации для тестирования новой версии ядра без риска для основной системы.

10 Методология: шаги в виде чеклиста

  1. Подготовить систему: установить инструменты сборки и освободить место.
  2. Скачать исходники и распаковать их в /usr/src.
  3. Применить патчи (dry-run → apply).
  4. Скопировать текущую конфигурацию: cp /boot/config-uname -r .config.
  5. Настроить через make menuconfig; установить Local version.
  6. Собрать (make -j$(nproc)) и создать RPM (make rpm-pkg) или установить напрямую.
  7. Установить пакет и обновить initramfs/GRUB.
  8. Перезагрузить и протестировать.

11 Ролевые контрольные списки

  • Системный администратор:
    • Проверил резервную загрузочную запись.
    • Убедился в наличии консоли/serial для восстановления.
    • Создал RPM и проверил подпись пакета.
  • Разработчик драйверов:
    • Протестировал компиляцию модулей отдельно.
    • Убедился, что заголовки совместимы с целевой версией.

12 Критерии приёмки

  • Система загружается под новым ядром.
  • Модули соответствуют установленной версии и загружаются без ошибок.
  • RPM-пакет можно установить/удалить без конфликтов с другими пакетами.

13 Краткое резюме

Сборка ядра из «ванильных» исходников дает гибкость и контроль над функциональностью системы, а создание RPM упрощает распространение и откат. Планируйте тестирование в изолированной среде, проверяйте конфигурацию и не забывайте о резервных точках загрузки.

Список ключевых команд (шпаргалка):

cd /usr/src
wget 
tar xjf 
ln -s  linux
cd linux
make clean && make mrproper
cp /boot/config-`uname -r` .config
make menuconfig
make -j$(nproc) rpm-pkg    # для RPM
# или
make -j$(nproc)
make modules_install
make install
rpm -Uvh kernel-*.rpm

Notes: настройте Local version, проверяйте dry-run патчей и держите рабочую копию старого ядра в GRUB.


Изображения в статье показывают пункты меню конфигурации и сохранение конфигурации в make menuconfig.

Поделиться: 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 быстро