Перейти к содержанию

Ядро Linux и initramfs: установка, проверки, диагностика

Все материалы по ядру: единый раздел НАЙС.ОС. Теория ГОСТ-примитивов вынесена в справочник алгоритмов.

В НАЙС.ОС ядро поставляется через RPM-пакет linux. В исследованной версии SPEC 6.12.90 обработчик после транзакции выполняет dracut --force --kver, пересоздаёт меню GRUB и пытается выбрать новый пункт загрузки. Некоторые шаги в scriptlet сопровождаются || :, поэтому их ошибка может не остановить всю RPM-транзакцию.

Не устанавливайте ядро без резервной загрузки

Перед обновлением убедитесь, что доступна консоль гипервизора, существует проверенное предыдущее ядро и достаточно места в /boot. Изменение ядра, модулей и initramfs может сделать сервер незагружаемым.

Проверьте текущее состояние

uname -r
rpm -q linux
rpm -qa | grep -E '^linux(-|$)' | sort
ls -lh /boot
findmnt /boot
findmnt /
df -h /boot /

Точная структура имён RPM может отличаться: команды rpm -q следует интерпретировать по реально установленным пакетам.

Проверка initramfs

command -v dracut
command -v lsinitrd
sudo ls -lh /boot/initramfs* 2>/dev/null

Чтобы проверить образ, передайте lsinitrd конкретный файл, существующий на вашем экземпляре:

# Пример структуры команды; замените путь реальным:
# lsinitrd /boot/initramfs-ВЕРСИЯ-ЯДРА.img | head -n 60

lsinitrd позволяет убедиться, что архив читается и содержит компоненты ранней загрузки. Это не подтверждает полную работоспособность драйверов и монтирование root.

Что делает транзакция linux.spec

  1. После установки пакета вызывается подготовка модулей ядра (depmod).
  2. В %posttrans выполняется генерация initramfs для версии ядра.
  3. Генерируется /boot/grub2/grub.cfg.
  4. Делается попытка изменить saved_entry GRUB на новую версию.
  5. Дополнительно может вызываться grubby, если он установлен.

Это поведение конкретного исследованного рецепта, а не обещание для всех прошлых выпусков. Скрипты и имена файлов нужно сверять с rpm -q --scripts linux и текущим образом.

Контроль после обновления

До перезагрузки:

sudo ls -lh /boot
sudo grub2-editenv list 2>/dev/null || true
systemctl --failed

После перезагрузки:

uname -r
systemctl --failed
journalctl -b -p err --no-pager
ip -br addr

Проверяйте также прикладные службы, Docker, сетевые драйверы, хранилища и модули, от которых зависит инфраструктура.

Если загрузка не удалась

Не повторяйте установку ядра вслепую. Откройте консоль, выберите ранее работавший пункт в GRUB, соберите диагностику и следуйте плану восстановления. Для удалённого сервера автоматический перезапуск до подтверждения исправности initramfs может увеличить простой.