Начиная с версии ядра 3.2.5, программа make-initrd неправильно определяет наличие и состав RAID на компьютере. На компьютере имеется 2 винта, разбитых одинаково на несколько разделов. Каждый раздел одного винта связан с аналогичным разделом другого винта в soft-RAID1. Каждый физический раздел при просмотре через fsck помечен меткой raid-autodetect. Таким образом, на машине имеется 6 независимых soft-RAID, в каждом рейде нет разбиения на разделы, файловая система создана непосредственно на рейде. В файле /etc/mdadm.conf так и настроено, это видно и в /proc/mdstat. При создании initrd для нового ядра make-initrd почему-то считает, что на компьютере не 6 отдельных рейдов, а один RAID1 и объединяет в RAID винты целиком. В результате: 1) после перезагрузки ядерный рейд-модуль вместо /dev/md{1..6} создает /dev/md127 и /dev/md127p{1,5,6,7,8,9} (что видно из загрузочных сообщений) 2) ядро не знает, что делать с разделами, помеченными как linux_raid_member и не может примонтировать корневой раздел на рейде 3) если загрузиться с флешки с созданным make-initrd разделом, то повторное создание образа невозможно (при заходе через chroot в смонтированный корень многострадальной системы), так как make-initrd затыкается на несуществующем модуле linux_raid_member. 4) монтирование этих разделов таки возможно, но только вручную с принудительным указанием типа файловой системы каждого раздела 5) перегенерация grub.conf с новыми разделами загрузке не помогает. Однако mkinitrd создаёт правильный загрузочный образ на всех ядрах после 3.2.5.
Приложите пожалуйста результат make-initrd bug-report на этой системе, образ созданный mkinitrd и образ созданный make-initrd.
Created attachment 5379 [details] Отчет make-initrd
Created attachment 5380 [details] Рабочий образ от mkinitrd
Created attachment 5381 [details] Образ от make-initrd-0.7.2-alt1, номер 1 Данный образ создан make-initrd-0.7.2-alt1 в системе, загруженной при помощи mkinitrd. Висит на старте udevd. Ядро 3.2.9-std-def-alt1.1
Created attachment 5382 [details] Образ от make-initrd-0.6.2-alt1 Нерабочий образ, создан в chroot после загрузки системы с флешки. При создании в chroot были проброшены /dev, /proc, /sys. Ядро 3.2.5-std-def-alt1 (на флешке не смог создать данный образ при 3.2.7-std-def-alt1 и 3.2.9-std-def-alt1.1 по причине неработоспособности make-initrd).
Created attachment 5383 [details] Образ от make-initrd-0.7.2-alt1, номер 2 Нерабочий образ, создан в chroot после загрузки системы с флешки. При создании в chroot были проброшены /dev, /proc, /sys. Ядро 3.2.5-std-def-alt1 (на флешке не смог создать данный образ при 3.2.7-std-def-alt1 и 3.2.9-std-def-alt1.1 по причине неработоспособности make-initrd).
Created attachment 5384 [details] Отчет make-initrd-0.7.2-alt1 Данный отчет сделан в системе, загруженной с флешки. Система 3.2.7-std-def-alt1. Работа make-initrd останавливается после безуспешной попытки найти модуль linux_raid_member
Всё генерилось для ядра 3.2.9-std-def-alt1.1.
Мне кажется я знаю в чём дело.
Вы не могли бы проверить версию из git ? http://git.altlinux.org/people/legion/packages/make-initrd.git
Попробовал, останавливается на стадии initrd: Starting udevd... [ ] udevd[1068]: starting version 172
Тогда приложите ещё раз полученный initrd.
Created attachment 5392 [details] Образ от make-initrd для std-def-3.2.10-alt1 Данный образ собран при установленных пакетах (alt1.1 - это полностью Ваша сборка, я только изменил релиз, чтобы точно видеть что и как): make-initrd-luks-0.7.2-alt1.1 make-initrd-0.7.2-alt1.1 make-initrd-mdadm-0.7.2-alt1.1 make-initrd-devmapper-0.7.2-alt1.1 make-initrd-nfs-0.7.2-alt1.1 make-initrd-multipath-0.7.2-alt1.1 make-initrd-lvm-0.7.2-alt1.1 Ядро, под которым собиралось: 3.2.10-std-def-alt1, загружен с образом от mkinitrd.
Created attachment 5393 [details] Образ от mkinitrd для 3.2.10-std-def-alt1 С этим образом ядро 3.2.10-std-def-alt1 грузится.
Created attachment 5394 [details] Bug-report от Вашего тестового make-initrd
Ну сейчас у вас используется исключительно mdadm в initrd. Попробуйте добавить: DISABLE_FEATURES += mdadm в /etc/initrd.mk и пересоздать образ.
Если стоит только пакет make-initrd, то полученный образ тоже неработоспособен, так как загрузка пишет, что запускается поиск raid, появляются все мои рейды на экране, после чего выпадает сообщение, что рейдов не найдено и поиск начинается снова. И так до бесконечности. Вариант сборки с установленным make-initrd-mdadm сейчас приложу.
Created attachment 5395 [details] make-initrd без mdadm Данная сборка с добавленной строкой в /etc/initrd.mk: DISABLE_FEATURES += mdadm Загрузка "висит" на запуске udevd (как и другие).
Какой-то последний образ совсем нерабочий. Поддержки рейдов тут вообще нет. Не могли бы вы показать образ, когда вы удалили make-initrd-mdadm вообще ?
Created attachment 5396 [details] Установлен только make-initrd Данный образ собран при наличии только пакета make-initrd-0.7.2-alt1.1 и без строки DISABLE_FEATURES += mdadm в файле /etc/initrd.mk.
(В ответ на комментарий №19) > Какой-то последний образ совсем нерабочий. Поддержки рейдов тут вообще нет. > Не могли бы вы показать образ, когда вы удалили make-initrd-mdadm вообще ? Так сработал параметр DISABLE_FETURES += mdadm :) Сейчас попробовал собрать образ с помощью только make-initrd и make-initrd-mdadm (без других пакетов make-initrd.*) без отключения mdadm, чтобы исключить make-initrd-devmapper. Останов загрузки на этапе запуска udevd (как и всегда с make-initrd).
(В ответ на комментарий №21) > DISABLE_FETURES += mdadm В make-initrd есть несколько механизмов сборки рейда. Одна через mdadm, другая как в mkinitrd через autodetect. У вас не работают обе, хотя autodetect должен работать. > Останов загрузки на этапе запуска udevd (как и всегда с make-initrd). Это не этап запуска udevd, а ожидание появления устройства похожего на рут.
Собрал стенд в qemu с корнем на raid1, котором две партиции двух дисков. С версией make-initrd из git такая конфигурация грузится без проблем.
(В ответ на комментарий №23) > Собрал стенд в qemu с корнем на raid1, котором две партиции двух дисков. С > версией make-initrd из git такая конфигурация грузится без проблем. У меня сервер на двух процессорах Xeon E5440. Этот компьютер ещё привередлив и к выбору ядра (ядро un-def на нём отказывается работать напрочь). Или у Вас в git сейчас что-то обновилось в make-initrd по сравнению с последним сообщением? Может, конфигурация mdadm ему не нравится? Вот конфиг: MAILADDR root PROGRAM /sbin/mdadm-syslog-events DEVICE /dev/sda* /dev/sdb* ARRAY /dev/md1 level=1 name=BOOT devices=/dev/sda1,/dev/sdb1 ARRAY /dev/md5 level=1 name=SWAP devices=/dev/sda1,/dev/sdb1 ARRAY /dev/md6 level=1 name=ROOT devices=/dev/sda1,/dev/sdb1 ARRAY /dev/md7 level=1 name=USR devices=/dev/sda1,/dev/sdb1 ARRAY /dev/md8 level=1 name=VAR devices=/dev/sda1,/dev/sdb1 ARRAY /dev/md9 level=1 name=HOME devices=/dev/sda1,/dev/sdb1
Я забыл сказать, что завелось это у меня без mdadm на простом raid (autodetect). Я не делал никаких изменений с коммента #23, но с #22 изменения были.
То есть можно взять из git и потестировать на проблемной машине?
(В ответ на комментарий №26) > То есть можно взять из git и потестировать на проблемной машине? Угу.
Created attachment 5428 [details] Новая сборка make-initrd Ядро 3.2.10-std-def-alt1. Установлены пакеты: make-initrd (от 04.04) make-initrd-mdadm (от 04.04) make-initrd-devmapper (от 04.04) Параметра DISABLED_FEATURE += mdadm в настройках нет.
Забыл указать, что загрузка останавливается на этапе старта udevd
Created attachment 5429 [details] Новая сборка make-initrd без devmapper Ядро 3.2.10-std-def-alt1. Установлены пакеты: make-initrd (от 04.04) make-initrd-mdadm (от 04.04) Параметра DISABLED_FEATURE += mdadm в настройках нет. Загрузка останавливается на этапе старта udevd.
Created attachment 5430 [details] Новая сборка make-initrd без devmapper с отключенным mdadm Ядро 3.2.10-std-def-alt1. Установлены пакеты: make-initrd (от 04.04) make-initrd-mdadm (от 04.04) make-initrd-devmapper (от 04.04) Параметр DISABLED_FEATURE += mdadm в настройках включён. Загрузка не стопорится, но рейды не находит.
Created attachment 5431 [details] Список пакетов на машине на момент создания initrd
Created attachment 5432 [details] Список устройств
Created attachment 5433 [details] Список разделов
Created attachment 5434 [details] Список модулей
Created attachment 5435 [details] Вывод команды mdadm --misc --detail-platform
Created attachment 5436 [details] Выводы mdadm --misc --detail /dev/mdX
Created attachment 5437 [details] cat /proc/mdstat
В общем, пока всё на месте стоит. Я привёл данные по системе для понимания, что имеется. Надеюсь, пригодятся.
Про верьте пожалуйста ещё раз master.
Created attachment 5440 [details] Рабочий образ с make-initrd Сегодня скачал с git и проверил сборку make-initrd + make-initrd-mdadm. Заработало! Теперь модуль raid собрал разделы правильно, загрузка полностью выполнена. Ядро 3.2.14-std-def-alt1, текущий Сизиф. Следующим пришлю bug-report к нему, чтобы было с чем сравнивать.
Created attachment 5441 [details] Отчет make-initrd-0.7.3-alt1.1 А это отчет make-initrd о системе, которую он сам же и загрузил.
Всё заработало, ошибку закрываю. Спасибо большое!
Created attachment 5442 [details] Вывод команды make-initrd Непонятно только, почему программа затолкала столько модулей в initrd, у меня нет ни raid6, ни raid10, только raid1.