Bug 27010 - Генерирует нерабочий образ initrd (md_run)
: Генерирует нерабочий образ initrd (md_run)
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/make-initrd)
: unstable
: all Linux
: P3 critical
Assigned To:
:
: http://lists.altlinux.org/pipermail/s...
:
:
:
  Show dependency tree
 
Reported: 2012-02-29 19:59 by
Modified: 2012-03-26 06:11 (History)


Attachments
make-initrd bug-report (284.04 KB, application/x-bzip2)
2012-03-01 02:45, Evgenii Terechkov
no flags Details
Рабочий образ от 0.6.2 (3.12 MB, application/octet-stream)
2012-03-01 02:46, Evgenii Terechkov
no flags Details
Нерабочий образ от 0.7.0 (3.90 MB, application/octet-stream)
2012-03-01 02:48, Evgenii Terechkov
no flags Details
make-initrd bug-report (178.38 KB, application/x-bzip)
2012-03-02 17:43, Aleksey Borisenkov
no flags Details
образ от 0.6.2 (2.19 MB, application/octet-stream)
2012-03-02 17:44, Aleksey Borisenkov
no flags Details
образ от 0.7.0 (2.25 MB, application/octet-stream)
2012-03-02 17:45, Aleksey Borisenkov
no flags Details
initrddiff (1.16 KB, text/plain)
2012-03-04 03:11, Alexey Gladkov
no flags Details
initramfs.gz (6.52 KB, application/x-gzip)
2012-03-05 19:34, Aleksey Borisenkov
no flags Details


Note

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


Description From 2012-02-29 19:59:15
После обновления ядра до 3.2.8-std-def-alt1 система (ThinkPad T410 в режиме
x86_64) не загружается:

mv: cannot stat '/dev/.initramfs/handler-events/md_run.*': No such file or
directory
initrd: udev: ERROR: event handler failed: md_run
initrd: Stage 'udev' failed
initrd: This shell remains here for debug puproses. Press Ctrl-D to continue.
(initramfs) 

Если тут нажать Ctrl-D, то ядро уходит в панику и показывает трейс, т.к.
убит процесс init. Это вроде логично.

Откат пакетов make-initrd make-initrd-devmapper make-initrd-lvm до
0.6.2-alt1 и вызов 'make-initrd -k 3.2.8-std-def-alt1' помогли.

Нужную дополнительную информацию и/или файл(ы) образов предоставлю если нужно.
------- Comment #1 From 2012-02-29 20:30:29 -------
Систему, установленную на USB-HDD тоже не грузит, доходит до определения
usb-устройств, сам внешний жесткий определяется, а дальше ничего не происходит
- похоже, что sd_mod не подгружается и /dev/sdXX не появляются и всё стопорится
на ожидании появления раздела для монтирования.
------- Comment #2 From 2012-02-29 20:33:00 -------
Да, в общем-то, если в этом шелле набрать lsmod, то лично у меня оно
показывает, что вообще никаких модулей не загружено.
------- Comment #3 From 2012-02-29 23:39:28 -------
приложите пожалуйста результат "make-initrd bug-report", получившийся initrd
(если остался) и рабочий initrd (0.6.2-alt1).
------- Comment #4 From 2012-03-01 02:45:18 -------
Created an attachment (id=5337) [details]
make-initrd bug-report
------- Comment #5 From 2012-03-01 02:46:40 -------
Created an attachment (id=5338) [details]
Рабочий образ от 0.6.2
------- Comment #6 From 2012-03-01 02:48:13 -------
Created an attachment (id=5339) [details]
Нерабочий образ от 0.7.0
------- Comment #7 From 2012-03-02 02:55:09 -------
Не могли бы вы проверить исправление в git:

http://git.altlinux.org/people/legion/packages/make-initrd.git

?
------- Comment #8 From 2012-03-02 03:35:36 -------
У меня случай попроще, нет ни RAID, ни LVM. Просто не может смонтировать root.
Поэтому я не удивился, что исправление не помогло.
А помогло добавление в /etc/initrd.mk строчки
MODULES_PRELOAD += ahci sd_mod ext3
Но в 0.6.2-alt1 и более ранних этого, вроде, не требовалось.
Это так и должно быть?
------- Comment #9 From 2012-03-02 04:45:52 -------
Попробую сегодня вечером проверить.

У меня различий по модулям ядра между образами нет, как видно, так что
initrd.mk я не менял.
------- Comment #10 From 2012-03-02 16:44:11 -------
(В ответ на комментарий №8)
> А помогло добавление в /etc/initrd.mk строчки
> MODULES_PRELOAD += ahci sd_mod ext3
> Но в 0.6.2-alt1 и более ранних этого, вроде, не требовалось.
> Это так и должно быть?

Разумеется так быть не должно, но это другая проблема нежели проблема с md_run.
------- Comment #11 From 2012-03-02 16:48:48 -------
(В ответ на комментарий №10)
> Разумеется так быть не должно, но это другая проблема нежели проблема с md_run.

Завести новый баг? Приложить свои образы сюда?
------- Comment #12 From 2012-03-02 17:39:28 -------
(В ответ на комментарий №11)
> Завести новый баг? Приложить свои образы сюда?

Давайте пока сюда.
------- Comment #13 From 2012-03-02 17:43:53 -------
Created an attachment (id=5344) [details]
make-initrd bug-report
------- Comment #14 From 2012-03-02 17:44:34 -------
Created an attachment (id=5345) [details]
образ от 0.6.2
------- Comment #15 From 2012-03-02 17:45:09 -------
Created an attachment (id=5346) [details]
образ от 0.7.0
------- Comment #16 From 2012-03-02 17:47:46 -------
Симптомы, в общем-то, по ссылке описаны:

[    1.355754] Executing init=/init
initrd: Starting sysklog...
initrd: Loading modules before udevd...
initrd: Starting udevd...
initrd: udev: ERROR: Unable to mount root
initrd: Stage 'udev' failed

Образы с virtualbox'а, но на реальной машине ведёт себя так же точно.
------- Comment #17 From 2012-03-03 05:40:32 -------
(В ответ на комментарий №7)
> Не могли бы вы проверить исправление в git:
> http://git.altlinux.org/people/legion/packages/make-initrd.git
> ?

Проверил, замечательно работает. Удалил пакеты make-initrd-{devmapper,lvm},
убрал raid/lvm из /e/initrd.mk (давно собирался, нужна отпала), перегенерировал
образ, загрузился - замечательно работает.
------- Comment #18 From 2012-03-03 05:59:53 -------
Заодно собрал в сизиф утилиту сравнения образов, называется initrddiff.
------- Comment #19 From 2012-03-03 20:14:21 -------
(В ответ на комментарий №18)
> Заодно собрал в сизиф утилиту сравнения образов, называется initrddiff.

Это ваша утилита ?
------- Comment #20 From 2012-03-04 03:11:37 -------
Created an attachment (id=5355) [details]
initrddiff

Я немного переделал этот скрипт. Теперь он не требует отдельного создания
временных файлов и из-за этого чуть-чуть упростился.
------- Comment #21 From 2012-03-04 08:26:19 -------
Да.

Собрал.
------- Comment #22 From 2012-03-04 23:13:02 -------
(В ответ на комментарий №21)
> Да.

Если хотите, можно добавить эту утилиту в make-initrd.
------- Comment #23 From 2012-03-04 23:24:02 -------
+1
------- Comment #24 From 2012-03-05 03:02:25 -------
Хочу.
------- Comment #25 From 2012-03-05 16:21:54 -------
(В ответ на комментарий №16)
> Симптомы, в общем-то, по ссылке описаны:
> 
> [    1.355754] Executing init=/init
> initrd: Starting sysklog...
> initrd: Loading modules before udevd...
> initrd: Starting udevd...
> initrd: udev: ERROR: Unable to mount root
> initrd: Stage 'udev' failed
> 
> Образы с virtualbox'а, но на реальной машине ведёт себя так же точно.

Вы не могли бы добавить параметр rootdelay=3 и когда появится shell посмотреть
что в /var/log/initramfs ?
------- Comment #26 From 2012-03-05 19:34:34 -------
Created an attachment (id=5358) [details]
initramfs.gz
------- Comment #27 From 2012-03-05 23:31:49 -------
(В ответ на комментарий №26)
> Created an attachment (id=5358) [details] [details]
> initramfs.gz

Очень странно всё. По логам и по содержимому образов всё нормально должно быть.

В порядке догадки попробуйте добавить в initrd.mk строчку:
DISABLE_FEATURES += syslog
------- Comment #28 From 2012-03-05 23:59:10 -------
Мало что изменилось. Логи пропали, остаток лога выдаётся в консоль.
Появилось строчка hrtimer: interrupt took 30947578 ns.
А так всё то же самое.
Согласен, что странно. Нужные модули есть, вручную прекрасно загружаются, а
автоматом не хотят. Но воспроизводится на всех моих сизифах, двух железных и
двух виртуальных (обе архитектуры). И, судя по рассылке, не только у меня.
------- Comment #29 From 2012-03-06 00:15:17 -------
Вы можете подготовить тестовый образ виртуалки для расследования?
Если возможно для qemu (если нет, то любой удобный вам).
------- Comment #30 From 2012-03-06 00:20:19 -------
Ок. Попробую завтра (то есть уже сегодня) соорудить.
------- Comment #31 From 2012-03-06 02:16:45 -------
(В ответ на комментарий №30)
> Ок. Попробую завтра (то есть уже сегодня) соорудить.

Протестируйте пожалуйста make-initrd-0.7.2.
------- Comment #32 From 2012-03-06 02:30:36 -------
Протестировал. Не помогло.
------- Comment #33 From 2012-03-06 13:56:20 -------
Пока делал образ, кажется, нашёл причину.
Помогает удаление udev-initramfs с последующей перегенерацией initrd. Если
вдруг зачем-то этот пакет поставить, то проблема снова возникнет.
------- Comment #34 From 2012-03-06 18:15:24 -------
2legion: предлагаю добавить Obsolete: initrddiff
------- Comment #35 From 2012-03-06 18:22:41 -------
Да пока маленькое и все видевшие точно читали эту багу -- можно сделать вид,
что не было. :)
------- Comment #36 From 2012-03-06 18:58:26 -------
Ну мало ли кто мог установить и не читать багу.
------- Comment #37 From 2012-03-06 20:25:02 -------
0.7.2 работает, udev-initramfs не установлен
------- Comment #38 From 2012-03-07 11:46:38 -------
Ещё говорят про разницу при смонтированном в чруте /sys:
http://lists.altlinux.org/pipermail/sisyphus/2012-March/356983.html
------- Comment #39 From 2012-03-07 20:51:17 -------
(In reply to comment #33)
> Пока делал образ, кажется, нашёл причину.
> Помогает удаление udev-initramfs с последующей перегенерацией initrd. Если
> вдруг зачем-то этот пакет поставить, то проблема снова возникнет.

make-initrd-0.7.2-alt1
udev-initramfs-150-alt8
kernel-image-std-def-3.2.9-alt1.1

Виснет при загрузке на:
initrd: Loading modules before udevd...
initrd: Starting udevd...

Совет про удаление udev-initramfs не очень понятен - там много всего сносится:

# apt-get remove --purge udev-initramfs
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  bootsplash* design-bootsplash-office-server* mkinitrd* udev-initramfs*
0 upgraded, 0 newly installed, 4 removed and 11 not upgraded.

Что делать-то?
------- Comment #40 From 2012-03-07 20:54:20 -------
Сносить. Вместо bootsplash, если очень хочется, сейчас используется plymouth.
mkinitrd не неужен, make-initrd, по сути, его замена.
------- Comment #41 From 2012-03-07 21:00:09 -------
(In reply to comment #40)
> Сносить. Вместо bootsplash, если очень хочется, сейчас используется plymouth.
> mkinitrd не неужен, make-initrd, по сути, его замена.

Ясно, попробую завтра, как до сервера доберусь. Плимут мне там не нужен...
------- Comment #42 From 2012-03-09 21:52:44 -------
(В ответ на комментарий №34)
> 2legion: предлагаю добавить Obsolete: initrddiff

Хорошо. Я не поставил его с самого начала потому что немного переименовал
утилиту.
------- Comment #43 From 2012-03-10 22:18:57 -------
(In reply to comment #40)
> Сносить. Вместо bootsplash, если очень хочется, сейчас используется plymouth.
> mkinitrd не неужен, make-initrd, по сути, его замена.

Снес, перегенерировал initrd, теперь ядро нормально грузится. Всем спасибо за
помощь!
------- Comment #44 From 2012-03-10 22:29:20 -------
Нужно будет провести расследование, что так фатально изменилось в
udev-initramfs.
------- Comment #45 From 2012-03-10 22:45:43 -------
(В ответ на комментарий №44)
> Нужно будет провести расследование, что так фатально изменилось в
> udev-initramfs.

Учитывая, что версия у него 150 (когда у самого udev 172) и пакету более чем
1,5 года, то вряд ли в нём что-то изменилось :)
Но странно, что 0.6.2 с ним работает, а 0.7.x нет.
------- Comment #46 From 2012-03-11 10:50:59 -------
Мне не помогло... Вычистил и udev-initramfs, и mkinitrd.* и *initramfs* с компа
- бесполезно. И перегенерил образы для новых ядер... Все компы (4 штуки) на
ядре 3.2.9-un-def-alt2 и 3.2.9-std-def-alt1.1

В общем, для меня make-initrd нерабочий больше, чем полностью. Версия
0.6.2-alt1 для этих ядер тоже перестала генерить правильные образы...

Старый mkinitrd на всех (кроме raid) делает рабочие образы.
------- Comment #47 From 2012-03-11 11:34:53 -------
Сейчас проверил на 2.6.9-std-def-alt1.1 на софт-raid:
1) make-initrd создает нерабочий initrd, в котором есть /dev/mdXpY. То есть
самовольно объединяет целиком винты в один рейд, из-за чего ядро не может
понять, что же делать с ним и какая там файловая система;
2) mkinitrd создает рабочий образ с файлами /dev/mdZ. То есть каждый раздел на
одном винте объединяется с аналогичным разделом на другом винте в отдельный
рейд. Ядро спокойно разбирается в типе файловой системы каждого рейда.

При этом есть файл /dev/mdadm.conf, который описывает создание рейдов. Что это
за самовольность make-initrd?
------- Comment #48 From 2012-03-11 12:59:27 -------
Специально для тестирования systemd в различных конфигурациях держу несколько
виртуалок.
Перестала грузится виртуалка, где корень на lvm.
Ошибка похожа на 
mv: cannot stat '/dev/.initramfs/handler-events/lvm.*': No such file or
directory

Ощущение, что events создаются в udev-event, а пытаются удалиться из
handler-events.
------- Comment #49 From 2012-03-11 16:35:14 -------
(В ответ на комментарий №48)

> Перестала грузится виртуалка, где корень на lvm.
> Ошибка похожа на 
> mv: cannot stat '/dev/.initramfs/handler-events/lvm.*': No such file or
> directory

Аналогично было и с md в версии 0.7.0-alt1. У меня корень на софт-raid1 под md.
------- Comment #50 From 2012-03-12 10:56:41 -------
Так. Господа, открывайте новые баги т.к. тут уже невозможно понять, что у кого
не работает. Описанная ошибка в md_run была исправлена в 0.7.2.
------- Comment #51 From 2012-03-12 11:02:37 -------
(В ответ на комментарий №46)
> В общем, для меня make-initrd нерабочий больше, чем полностью. Версия
> 0.6.2-alt1 для этих ядер тоже перестала генерить правильные образы...

Это уже не к make-initrd, а к kernel/udev. На старых ядрах make-initrd
работает?
------- Comment #52 From 2012-03-12 11:12:46 -------
(В ответ на комментарий №47)
> Сейчас проверил на 2.6.9-std-def-alt1.1 на софт-raid:
> 1) make-initrd создает нерабочий initrd, в котором есть /dev/mdXpY. То есть
> самовольно объединяет целиком винты в один рейд, из-за чего ядро не может
> понять, что же делать с ним и какая там файловая система;

Самовольно make-initrd ничего не делает.

> При этом есть файл /dev/mdadm.conf, который описывает создание рейдов. 

mkinitrd активизирует рейд через ядро. Это же делает features/raid.
------- Comment #53 From 2012-03-12 11:13:41 -------
УМВР. Не надо смешивать различные проблемы.
------- Comment #54 From 2012-03-12 11:14:46 -------
(В ответ на комментарий №48)
> Ощущение, что events создаются в udev-event, а пытаются удалиться из
> handler-events.

Какую версию вы проверяете ?
------- Comment #55 From 2012-03-12 12:05:02 -------
Перенёс свою проблему в #27061