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

Сборка и установка ядра в Mandriva

5 min read Linux Обновлено 09 Oct 2025
Сборка и установка ядра в Mandriva
Сборка и установка ядра в Mandriva

Шаг 5 — Сборка ядра

Чтобы собрать пакет ядра в формате RPM, выполните в каталоге исходников команду:

make rpm

Сборка ядра может занять от нескольких минут до нескольких часов в зависимости от конфигурации ядра и скорости процессора. Наблюдайте за выводом компилятора на предмет ошибок. Если процесс завершился успешно, в результате появятся два типа пакетов: исходный SRC.RPM и бинарный RPM.

Важно: убедитесь, что у вас достаточно свободного места в /usr/src и в /boot, а также что установлены зависимости для сборки (gcc, make, rpm-build и т.д.).

Шаг 6 — Установка нового ядра

После успешной сборки пакеты разместятся в следующих каталогах:

  • Исходный пакет: /usr/src/rpm/SRPMS/

    Чтобы увидеть его имя, выполните:

    ls -l /usr/src/rpm/SRPMS/

    На моей системе это было что-то вроде kernel-2.6.18.3default-1.src.rpm.

  • Бинарный RPM: /usr/src/rpm/RPMS/<архитектура>/, например /usr/src/rpm/RPMS/i386/ или /usr/src/rpm/RPMS/x86_64/.

    Например:

    ls -l /usr/src/rpm/RPMS/i386/

    В моём случае пакет назывался kernel-2.6.18.3default-1.i386.rpm.

Установите RPM-пакет ядра (в примере для i386):

cd /usr/src/rpm/RPMS/i386/
rpm -ivh kernel-2.6.18.3default-1.i386.rpm

Преимущества RPM: вы можете перенести этот rpm на другие Mandriva-системы и установить его там без повторной компиляции.

Далее создайте initrd (ramdisk) для нового ядра — без него система, скорее всего, не загрузится:

mkinitrd /boot/initrd-2.6.18.3-default.img 2.6.18.3-default

Примечание: имя initrd и версия ядра должны совпадать с тем, что будет указано в конфигурации загрузчика.

Шаг 7 — Настройка загрузчика LILO

Теперь нужно обновить конфигурацию загрузчика LILO так, чтобы при перезагрузке система загружалась с нового ядра.

Сначала посмотрите содержимое каталога /boot, чтобы убедиться в наличии vmlinuz- и initrd-файлов:

ls -l /boot

Обычно имена начинаются с vmlinuz- и initrd-. Запомните точные имена, например vmlinuz-2.6.18.3-default и initrd-2.6.18.3-default.img.

Отредактируйте /etc/lilo.conf. Найдите рабочие stanza (блоки) для существующих ядер и используйте один из них как образец для нового блока: замените строки image и initrd на новые пути и поставьте новый блок выше остальных. Обязательно задайте уникальный label (например linux-2.6.18.3-default) и укажите тот же label в строке default, если вы хотите, чтобы новый вариант был загружен по умолчанию.

Запустите редактор:

vi /etc/lilo.conf

Ниже приведён пример конфигурации до добавления нового блока (оставлено без изменений, только перевод комментариев не требуется в конфиге):

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="linux"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz
        label="linux"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5"
image=/boot/vmlinuz
        label="failsafe"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" failsafe resume=/dev/sda5"

А так — после добавления нового stanza (обратите внимание на default и label):

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="linux-2.6.18.3-default"
boot=/dev/sda
map=/boot/map
keytable=/boot/us.klt
menu-scheme=wb:bw:wb:bw
compact
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz-2.6.18.3-default
        label="linux-2.6.18.3-default"
        root=/dev/sda6
        initrd=/boot/initrd-2.6.18.3-default.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5 splash=silent"
        vga=788
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" resume=/dev/sda5"
image=/boot/vmlinuz
        label="failsafe"
        root=/dev/sda6
        initrd=/boot/initrd.img
        append=" failsafe resume=/dev/sda5"

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

lilo

Если lilo завершился без ошибок, перезагрузите систему:

shutdown -r now

После загрузки проверьте текущую версию ядра:

uname -r

Ожидаемый вывод, например:

2.6.18.3-default

Если система не загружается с новым ядром, при старте в меню LILO выберите старую запись ядра и загрузитесь с неё. На экране меню LILO вы увидите варианты загрузки — выберите старый label для восстановления рабочей системы.

Меню загрузчика LILO: выбор старого ядра для восстановления системы

Не забудьте: после исправления конфигурации или удаления проблемного stanza снова выполнить:

lilo

и затем перезагрузиться.

Шаг 8 — Полезные ссылки


Краткая методология (шаги в цифрах)

  1. make rpm — собрать RPM-пакет.
  2. Найти .src.rpm и .rpm в /usr/src/rpm/SRPMS/ и /usr/src/rpm/RPMS/<арх>/.
  3. rpm -ivh — установить пакет.
  4. mkinitrd — создать initrd для новой версии.
  5. Обновить /etc/lilo.conf: добавить stanza, задать уникальный label и при необходимости изменить default.
  6. lilo — записать загрузчик.
  7. reboot и uname -r — проверка.

Чек-лист администратора

  • Проверить свободное место в /usr/src и /boot
  • Сохранить копию /etc/lilo.conf (например /etc/lilo.conf.bak)
  • Убедиться, что установлены сборочные зависимости
  • Сохранить старые vmlinuz и initrd (резервная копия в /boot)
  • После изменений выполнить lilo и проверить его вывод на ошибки
  • Иметь под рукой LiveCD/резервный носитель для восстановления в случае неудачной загрузки

Runbook: что делать, если система не загружается

  1. При загрузке в меню LILO выбрать старую запись (label) и загрузиться.
  2. Посмотреть /var/log/messages и dmesg на предмет ошибок модуля/файловой системы.
  3. Восстановить рабочую конфигурацию /etc/lilo.conf из резервной копии, удалить проблемный stanza.
  4. Выполнить lilo и перезагрузиться.
  5. Если проблема в модуле, пересобрать ядро с отключением проблемного драйвера или собрать модуль отдельно.

Важно: сохраняйте резервные копии конфигураций перед изменениями.

Альтернативные подходы и когда они подходят

  • Использовать GRUB вместо LILO — рекомендовано на современных системах: гибкая работа с именами ядра, поддержка UUID для root.
  • Использовать динамическую установку модулей (DKMS) для поддержки внешних модулей без перекомпиляции всего ядра.
  • На дистрибутивах, отличных от Mandriva, механизм сборки RPM и расположение пакетов может отличаться — используйте упаковочные утилиты конкретного дистрибутива.

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

  • Система загружается с новым ядром без ошибок.
  • uname -r показывает ожидаемую версию.
  • Все критичные службы запускаются и работают нормально (network, storage, db и т.д.).
  • При обнаружении проблем возможно быстро переключиться на старое ядро через LILO.

Однострочный глоссарий

  • initrd — начальный RAM-диск, загружаемый перед основным образом ядра; содержит модули и скрипты для монтирования root-файловой системы.

Примечания по безопасности и совместимости

  • Всегда проверяйте цифровую подпись пакетов и целостность, если пакеты распространяются между машинами.
  • Новое ядро может менять ABI для модулей; убедитесь, что проприетарные драйверы (например графические или RAID) совместимы с новой версией.

Итог

Следуйте описанным шагам: сборка make rpm, установка rpm, создание initrd, обновление /etc/lilo.conf и выполнение lilo. Держите резервные копии и план отката — это сократит время восстановления в случае ошибок.

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

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

Исправление ошибки устройства в Windows
Windows

Исправление ошибки устройства в Windows

Просмотр писем в простом тексте — Gmail, Outlook, Thunderbird
Почта

Просмотр писем в простом тексте — Gmail, Outlook, Thunderbird

Как отменить подписку Midjourney — инструкция
Руководства

Как отменить подписку Midjourney — инструкция

Фирменный AR‑фильтр для Instagram — руководство
AR маркетинг

Фирменный AR‑фильтр для Instagram — руководство

Как включить тёмную тему в Google Search
Руководства

Как включить тёмную тему в Google Search

Pokémon GO на ПК через BlueStacks — понятный гид
Игры

Pokémon GO на ПК через BlueStacks — понятный гид