Как собрать ядро — способ для 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 -p1Important: не применяйте патч, если 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 будет жаловаться на уже установленный пакет.


Просмотрите категории и сохраните конфигурацию при выходе (выберите 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 Методология: шаги в виде чеклиста
- Подготовить систему: установить инструменты сборки и освободить место.
- Скачать исходники и распаковать их в /usr/src.
- Применить патчи (dry-run → apply).
- Скопировать текущую конфигурацию: cp /boot/config-
uname -r.config. - Настроить через make menuconfig; установить Local version.
- Собрать (make -j$(nproc)) и создать RPM (make rpm-pkg) или установить напрямую.
- Установить пакет и обновить initramfs/GRUB.
- Перезагрузить и протестировать.
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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента