Bug 31027 - Когда заменяешь ядро возникает ошибка при генерации initrd и система не загружается.
: Когда заменяешь ядро возникает ошибка при генерации initrd и система не загру...
Status: NEW
: Sisyphus
(All bugs in Sisyphus/bootloader-utils)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2015-05-23 09:06 by
Modified: 2015-05-25 10:01 (History)


Attachments
проверка кода возврата /sbin/installkernel (1.60 KB, patch)
2015-05-25 10:00, Стас
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2015-05-23 09:06:24
Взял мартовскую сборку "ALT Linux starter kit (Trientalis)" ovz-el, но ядро
оказалось слишком старым. Решил заменить ядро на последнее std-def,
устанавливаю пакет kernel-image-std-def#1:3.14.41-alt1 и вижу нефатальную
ошибку при генерации initrd.

...
Running /usr/lib/rpm/posttrans-filetriggers
Config file: /etc/initrd.mk
Generating module dependencies on host ...
Creating initrd image ...
Adding modules ...
add-module: No module "pci_hotplug" found for kernel 3.14.41-std-def-alt1
make: *** [add-modules] Ошибка 1
make: *** [all] Ошибка 1
------- Comment #1 From 2015-05-23 10:14:55 -------
Для std-def нужен другой intrd.mk, в пакете он не предусмотрен.

Я попытался поменять конфиг initrd, но не удалось сгенерировать initrd, с
которым система загрузится - получаю kernel panic из-за невозможности найти
корневой том на mdraid, поскольку md не находит массив (корень на RAID1).

Неудачный конфиг:
====
AUTODETECT = all

MODULES_ADD += \
    ext4 ata_generic ahci libata pata_acpi sata_via ata_piix raid1 shpchp
scsi_mod \
    crc-t10dif sd_mod \
    libahci 

FEATURES += \
    add-modules cleanup compress fstab mdadm raid syslog

PUT_FILES += /usr/bin/less
====

initrd.mk, работающий с ядром 2.6.32-ovz-el-alt126:
====
AUTODETECT = all

MODULES_ADD += \
    ext4 ata_generic ahci libata pata_acpi sata_via ata_piix raid1 pci_hotplug
shpchp scsi_mod \
    crc-t10dif sd_mod

FEATURES += \
    add-modules cleanup compress fstab mdadm raid syslog

PUT_FILES += /usr/bin/less
====
------- Comment #2 From 2015-05-23 16:03:53 -------
Если что, altlinux-p7-server-ovz устанавливает _два_ ядра (std-def идёт
запасным, оно же в инсталяторе); рядом есть altlinux-p7-server, которое просто
std-def; также при необходимости можно исходить из altlinux-p7-server-hyperv с
un-def на борту (3.19 в 20150312).

Возможно, хватит штатного состояния /etc/initrd.mk:

---
# trying to detect modules and features to access to root volume
AUTODETECT = all
---
------- Comment #3 From 2015-05-25 10:00:23 -------
Created an attachment (id=6286) [details]
проверка кода возврата /sbin/installkernel
------- Comment #4 From 2015-05-25 10:01:22 -------
Разобрался.
При генераци initrd используется /etc/initrd.mk и возникает ошибка (в
MODULES_ADD указан модуль, которого нет в модулях нового ядра). В результате
initrd для нового ядра не сохранён и grub-mkconfig создал grub.cfg без загрузки
initrd для нового ядра. Итог: новое ядро не находит root, получаем Kernel
Panic.

Непосредственная причина в том, что initrd.mk был отредактирован вручную (с
целью сделать универсальный initrd для нескольких серверов) и настроен для
конкретного ядра.

Эта ситуация не была обработана в скрипте /usr/lib/rpm/boot_kernel.filetrigger
- в нём не проверяется код возврата скрипта /sbin/installkernel (ноль - успех,
1 - ошибка).

Таким образом, ошибка в пакете bootloader-utils-0.4.22-alt1
Патч приложил