Summary: | Когда заменяешь ядро возникает ошибка при генерации initrd и система не загружается. | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Стас <stas.grumbler> | ||||
Component: | bootloader-utils | Assignee: | placeholder <placeholder> | ||||
Status: | NEW --- | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P3 | CC: | aspsk, at, boris, boyarsh, glebfm, ldv, mike, mithraen, placeholder, rider, sbolshakov, sem, shrek, sin, slazav, vitty, vsu, vt, zerg | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Стас
2015-05-23 09:06:24 MSK
Для 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 ==== Если что, 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 --- Created attachment 6286 [details]
проверка кода возврата /sbin/installkernel
Разобрался. При генераци 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 Патч приложил |