У меня есть система 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, содержит следующую строку:
MDADM_RETURN=`/sbin/mdadm -As --auto=yes --run 2>&1`
который запускает любой массив 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, но ничего хорошего.Что такое "правильный" способ исправить эту ошибку загрузки? Я бы предпочел не прибегать к операции на головном мозге, если смогу избежать этого ...
Почему, почему, почему я не придерживался "Если это не сломано, не исправляйте это!" Максим? (Да, это риторический ...)