Mandriva Linux не загружается после установки systemd
1887
thkala
У меня есть система Mandriva Linux, которая была обновлена на месте с использованием urpmiверсии 2010.0 до 2010.1, а затем 2011.0. Я столкнулся с несколькими незначительными проблемами, но ничего не мог решить.
Несколько недель назад программа обновления Mandriva сообщила мне, что для обновления shorewallмне нужно было также заменить sysvinitна systemdи systemd-sysvinit. Естественно, я неохотно позволял программе обновлений безосновательно касаться чего-то столь же важного, как система загрузки, поэтому я отложил это. Естественно, апплет Mandriva обновлял меня. Естественно, я в конце концов сдался и согласился. И, естественно, он сделал достаточно беспорядка, что моя система не может загрузить самостоятельно.
Он запускается нормально, изливает несколько сообщений, а затем я получаю много сообщений в этом формате:
Starting XXXX aborted because a dependency failed.
где XXXX является чем-то связанным с файловой системой, будь то fsckвызов или монтирование файловой системы. Это уводит меня в корневую оболочку, где вскоре обнаружившаяся зависимость становится очевидной: большинство массивов MD еще не запущены. Выполнение вручную
# mdadm -As # mount -a # systemctl default
в этом порядке позволяет системе завершить процесс загрузки.
У меня есть несколько физических дисков, разбитых на разделы, которые затем объединяются в несколько массивов RAID-1 (например /boot) и RAID-5 ( /swap и почти все остальное). Разделы и массивы, а также файловые системы, которые они содержат, были созданы вручную, а затем была установлена Mandriva Linux. Там, где нет проблем с запиской и все работало нормально, пока не systemdпришли.
Я думаю, что отследил эту проблему до определенной степени. Старая sysvinitсистема, используемая для запуска, /etc/rc.d/rc.sysinitкоторая, как предусмотрено Mandriva, содержит эту строку:
который запускает любой массив MD, указанный в /etc/mdadm.conf, который не был запущен. Насколько я могу судить, этот файл больше не используется после systemустановки, и строка выше была заменена на эту строку из /lib/systemd/fedora-storage-init:
[ -r /proc/mdstat -a -r /dev/md/md-device-map ] && /sbin/mdadm -IRs
К несчастью. В моей системе отсутствует /dev/md/md-device-mapфайл, поэтому mdadmон не выполняется. Я могу придумать несколько способов «исправить» эту проблему, например, отредактировать systemdсценарии или изменить мой, /boot/initrd.imgчтобы запустить все массивы MD, но я бы предпочел сделать это так, чтобы это не сломалось при следующем обновлении пакета.
Каков формат /dev/md/md-device-mapи как его создать? Этот файл является общим, например, с более новыми mdadmверсиями, или это что-то специфичное для Fedora / Mandriva? Я видел несколько примеров на форумах Fedora, но ничего хорошего.
Что такое «правильный» способ исправить эту ошибку загрузки? Я бы предпочел не прибегать к операции на головном мозге, если смогу избежать этого ...
Почему, почему, почему я не придерживался "Если это не сломано, не исправляйте это!" Максим? (Да, это риторический ...)
1 ответ на вопрос
1
thkala
Мне удалось отследить эту проблему. /dev/md/md-device-mapэто, очевидно, mdadmфайл карты устройства в системах Fedora, в то время как моя система Mandriva использует /dev/.mdadm/mapвместо этого. Таким образом, /lib/systemd/fedora-storage-initскрипт не удалось запустить, mdadmтак как он смотрел в неправильном месте.
Вместо того, чтобы отредактировать этот файл скрипта и рискнуть потерять модификации при следующем обновлении пакета, я добавил свой собственный скрипт:
$ cat /lib/systemd/mdadm-array-start #!/bin/bash # Start any MD RAID arrays that have not been started yet [ -r /proc/mdstat ] && /sbin/mdadm --assemble --scan exit 0
Это гарантирует, что любые массивы MD запускаются без вмешательства администратора.
К вашему сведению: созданные пользователем модули должны идти в `/ etc / systemd / system`.
grawity 12 лет назад
0
@grwity: True, поскольку единицы `/ etc / systemd /` имеют приоритет. В моем случае, однако, я считаю, что мое устройство является частью системы, очень похоже на исправление ошибок ...
thkala 12 лет назад
0
Различие здесь не является «частью системы» или нет; скорее это "установлено менеджером пакетов из пакета" вместо "установленного пользователем / sysadmin вручную".
grawity 12 лет назад
0
@grawity: err ... мое правило * было * установлено * с помощью менеджера пакетов ... это был единственный способ избежать неудачных неудач, которые могли убить мою систему, когда я в 4 часах езды ... Таким образом, `rpm `начнет ныть, если кто-нибудь попытается переписать мои дополнения ...
thkala 12 лет назад
1