PDA

Показать полную графическую версию : Ошибка загрузки операционки


Spaser
14-08-2014, 13:33
Здравствуйте, уважаемые! Сегодня, после обновления системы она перестала загружаться. Загрузка останавливается на следующих строчках:
udevadm: error while loading shared libraries: liblzma.so.5: cannot open object file: No such file or directory
Trying manual resume from /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part6
udevadm: error while loading shared libraries: liblzma.so.5: cannot open object file: No such file or directory
resume device /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part6 not found (ignoring)
Trying manual resume from /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part6
udevadm: error while loading shared libraries: liblzma.so.5: cannot open object file: No such file or directory
resume device /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part6 not found (ignoring)
Waiting for device /dev/root to appear: .......................Could not find /dev/root.
Want me to fall back to /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part5? (Y/n)
Нажатие на кнопки Y/n ни к чему не приводят.
Что могло случиться? Проверял по разным путям наличие liblzma.so.5 - везде есть. Что можно с этим сделать, кроме полной переустановки системы?

El Scorpio
18-08-2014, 08:04
Trying manual resume from /dev/disk/by-id/ata-Hitachi_XXXXXXXXXXXXX-part6 »
Судя по всему в /etc/fstab используется монтирование устройства по такой ссылке.
Возможно, такое обозначение используется в копии /etc/fstab, которая содержится в образе начальной загрузке.
То есть вы поменяли обозначение устройства, а образ повторно не сгенерировали.

Проверьте, создаётся ли данная ссылка при загрузке с LiveDVD

Spaser
19-08-2014, 00:05
Судя по всему в /etc/fstab используется монтирование устройства по такой ссылке. »
Сейчас посмотрел. По этой ссылке монтируется своп.
То есть вы поменяли обозначение устройства, а образ повторно не сгенерировали. »
Я ничего не менял. Просто установил обновления.
Проверьте, создаётся ли данная ссылка при загрузке с LiveDVD »
Как это сделать? Где посмотреть?

El Scorpio
19-08-2014, 01:45
Цитата El Scorpio:
Судя по всему в /etc/fstab используется монтирование устройства по такой ссылке. »

Сейчас посмотрел. По этой ссылке монтируется своп. »
Значит по какой-то причине своп не монтируется.


Цитата El Scorpio:
Проверьте, создаётся ли данная ссылка при загрузке с LiveDVD »

Как это сделать? Где посмотреть? »
1) Загрузить какой-нибудь Linux с LiveCD
2) Открыть каталог /dev/disk/by-id
3) ....
4) PROFIT!!!!

Цитата El Scorpio:
То есть вы поменяли обозначение устройства, а образ повторно не сгенерировали. »

Я ничего не менял. Просто установил обновления. »
Два варианта:
а) Произошло изменение нумерации дисков и/или разделов.
б) произошло повреждение структуры раздела подкачки

Для проверки варианта "а" нужно после загрузки с LiveCD проверить, появилась ли данная ссылка в каталоге /dev/disk/by-id
Такой ссылки нет (имя изменилось) нужно примонтировать корневой каталог установленной системы и исправить файл fstab
Для проверки варианта "б" нужно после загрузки с LiveCD попробовать подключить данный раздел подкачки командой swapon . При ошибке подключения придётся отформатировать раздел подкачки командой mkswap /имя/файла/устройства
Внимание! Убедитесь, что вы вместо раздела подкачки не пытаетесь подключить раздел с данными

На будущее.
Во избежание проблем с изменением нумерации разделов монтируйте разделы по их UUID
При этом записи в файле /etc/fstab будут выглядеть так

# Монтирование /dev/sda1 на /boot
UUID=e3a84cec-3546-4552-aff0-861e90276da7 /boot ext4 defaults 0 1

Получить список UUID для всех разделов можно командой blkid

blkid - вывести сформированный список UUID из файла blkid.tab
blkid -с /dev/null - вывести сформированный список UUID из указанного файла (в данном случае производится новый опрос всех устройств)

Spaser
19-08-2014, 17:30
Тэкс. LiveCD я ещё пока не качал, но! У меня после всех этих обновлений сейчас имеются 2 версии линукса: openSUSE 13.1, with Linux 3.11.10-21-desktop и openSUSE 13.1, with Linux 3.11.10-17-desktop. Так вот, ошибка происходит в версии ...21. А версия ...17 грузится без проблем. В связи с чем:
1) Загрузить какой-нибудь Linux с LiveCD
2) Открыть каталог /dev/disk/by-id
3) ....
4) PROFIT!!!! »
Обязательно ли грузить LiveCD или можно то же самое глянуть в 17-й версии? Если можно, то я это сделал. Все разделы монтируются.
Два варианта:
а) Произошло изменение нумерации дисков и/или разделов.
б) произошло повреждение структуры раздела подкачки »
Вариант "а" проверил. Ссылка в /dev/disk/by-id имеется.
Вариант "б" не имеет смысла, т.к. 17-я версия работает нормально.
На будущее.
Во избежание проблем с изменением нумерации разделов монтируйте разделы по их UUID »
Сделал по Вашему совету из под 17-й версии. Ничего не поменялось. 17-я как работала, так и работает, а в 21-ой та же самая ошибка. С тем же текстом буква в букву.

SharkyUA
19-08-2014, 20:11
Spaser, сравните параметры загрузки обеих версий в загрузчике. Возможно указан не правильный раздел.

Spaser
19-08-2014, 23:50
Spaser, сравните параметры загрузки обеих версий в загрузчике. Возможно указан не правильный раздел. »
Вот данные из раздела submenu файла grub.cfg (если я правильно Вас понял):
menuentry 'openSUSE 13.1, with Linux 3.11.10-21-desktop' --class 'opensuse-13-1' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.11.10-21-desktop-advanced-3240ee21-de32-42d4-b6cb-5f4d1efbd94d' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5 3240ee21-de32-42d4-b6cb-5f4d1efbd94d
else
search --no-floppy --fs-uuid --set=root 3240ee21-de32-42d4-b6cb-5f4d1efbd94d
fi
echo 'Loading Linux 3.11.10-21-desktop ...'
linux /boot/vmlinuz-3.11.10-21-desktop root=UUID=3240ee21-de32-42d4-b6cb-5f4d1efbd94d resume=/dev/disk/by-id/ata-Hitachi_HTS545050A7E380_TEA51A3RJWDBTN-part6 splash=silent quiet showopts
echo 'Loading initial ramdisk ...'
initrd /boot/initrd-3.11.10-21-desktop
}

menuentry 'openSUSE 13.1, with Linux 3.11.10-17-desktop' --class 'opensuse-13-1' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.11.10-17-desktop-advanced-3240ee21-de32-42d4-b6cb-5f4d1efbd94d' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5 3240ee21-de32-42d4-b6cb-5f4d1efbd94d
else
search --no-floppy --fs-uuid --set=root 3240ee21-de32-42d4-b6cb-5f4d1efbd94d
fi
echo 'Loading Linux 3.11.10-17-desktop ...'
linux /boot/vmlinuz-3.11.10-17-desktop root=UUID=3240ee21-de32-42d4-b6cb-5f4d1efbd94d resume=/dev/disk/by-id/ata-Hitachi_HTS545050A7E380_TEA51A3RJWDBTN-part6 splash=silent quiet showopts
echo 'Loading initial ramdisk ...'
initrd /boot/initrd-3.11.10-17-desktop
}

На сколько я вижу, они почти одинаковые. Может ещё где глянуть нужно?

El Scorpio
20-08-2014, 01:00
У меня после всех этих обновлений сейчас имеются 2 версии линукса: openSUSE 13.1, with Linux 3.11.10-21-desktop и openSUSE 13.1, with Linux 3.11.10-17-desktop. Так вот, ошибка происходит в версии ...21. А версия ...17 грузится без проблем. »
Скорее всего 21-я почему-то по другому называет ссылки в /dev/disk/by-id/
Кстати, чем было вызвано использование этих ссылок?
Обычно используется или прямые имена файлов устройств (/dev/sda1) или UUID


Цитата El Scorpio:
На будущее.
Во избежание проблем с изменением нумерации разделов монтируйте разделы по их UUID »

Сделал по Вашему совету из под 17-й версии. Ничего не поменялось. 17-я как работала, так и работает, а в 21-ой та же самая ошибка. С тем же текстом буква в букву. »
1) Обновите конфигурацию GRUB и модуль начальной загрузки - без этого данные файлы будут содержать копию старого fstab
2) Удалите и повторно установите пакет с новой версией системы. В этом случае новые файлы загрузки будут содержать копию правильного fstab

Spaser
20-08-2014, 10:26
Кстати, чем было вызвано использование этих ссылок? »
Хороший вопрос. У меня эта ошибка уже третий раз вылетает. Первые 2 раза я переустанавливал систему, на этот раз решил разобраться что к чему.
1) Обновите конфигурацию GRUB и модуль начальной загрузки - без этого данные файлы будут содержать копию старого fstab »
Хм. Загадочно. Команда update-grub в моей системе не найдена. Попробовал сделать следующее: в Ясте нашёл настройку загрузчика. Далее "Boot Loader Options". В строке "Optional Kernel Command Line Parameter" изменил "/dev/disk/by-id/xxxxxxxxxxxxxxxx" на "/dev/disk/by-uuid/xxxxxxxxxxxxxx" (с соответствующими изменениями в названиях раздела). Теперь ошибка поменялась на Trying manual resume from /dev/disk/by-uuid/XXXXXXXXXXXXX. Из чего делаю вывод, что дело не в самом загрузчике, а где-то ещё.
Пы.Сы. нашёл в интернете про ошибку liblzma.so.0. Там советуют переустановить xz. Пробовал - ничего не поменялось.
2) Удалите и повторно установите пакет с новой версией системы. В этом случае новые файлы загрузки будут содержать копию правильного fstab »
Т.е. переустановка? Не хотелось бы. Даже по той причине, что в ближайшем будущем ошибка может повториться (как уже было пару раз). И опять переустанавливать? Лучше разобраться и устранить раз и навсегда.

SharkyUA
20-08-2014, 12:21
команда update-grub в моей системе не найдена. »
grub2-mkconfig -o /boot/grub2/grub.cfg
Там советуют переустановить xz. Пробовал - ничего не поменялось. »
После установки обновите initramfs
update-initramfs

Spaser
20-08-2014, 12:52
grub2-mkconfig -o /boot/grub2/grub.cfg »
Без изменений. Ошибка сохранилась.
update-initramfs »
Команда не найдена.

SharkyUA
20-08-2014, 16:38
Команда не найдена. »
Давно не сталкивался с OpenSUSE.
Исходя с документации (http://doc.opensuse.org/documentation/html/openSUSE_114/opensuse-reference/cha.boot.html):
mkinitrd

Kent
21-08-2014, 00:02
Давно не сталкивался с OpenSUSE.
Исходя с документации:
mkinitrd»
Это решение гораздо ближе к теме.

Всю тему не осилил, так как не использую grub2. В любом случае, /dev/disk/by-id/ будет работать всегда.

error while loading shared libraries: liblzma.so.5: cannot open object file: No such file or directory »
Ну и посмотрим почему:
kent@lazy /boot % lsinitrd | grep lzma
--- % 64 B / 5 B > 9,999
100 % 6*074,1 KiB / 21,6 MiB = 0,275
100 % 6*074,1 KiB / 21,6 MiB = 0,275
100 % 6*074,1 KiB / 21,6 MiB = 0,275
100 % 6*074,1 KiB / 21,6 MiB = 0,275
-rwxr-xr-x 1 root root 154112 Aug 10 19:32 usr/lib64/liblzma.so.5.0.5
lrwxrwxrwx 1 root root 16 Aug 10 19:32 usr/lib64/liblzma.so.5 -> liblzma.so.5.0.5
Что опять приводит к началу моего сообщения.

Spaser
21-08-2014, 09:14
В любом случае, /dev/disk/by-id/ будет работать всегда. »
Хех. Прикольно. А в этой же теме мне советовали использовать /dev/disk/by-uuid/. Так какое же утверждение наиболее правильное?
Код:
mkinitrd »
Во. После этой команды я вижу изменения. Теперь 17-я версия тоже не работает и выдаёт такую же ошибку. :-D

В общем я принял решение. Сегодня ночью я скачал новую версию Сусе (надеюсь на сайте оперативно они обновляются и версия будет содержать последние обновления). Если за сегодня не придумаем как эту хрень извести (я про ошибку), то буду переустанавливать. Это, конечно, не решит проблему, и она может вылезти позже заново, но хоть работать можно будет нормально на компе. Вообще это нетбук с предустановленной восьмёркой, которую я подвинул и поставил второй системой линукс. Этой ночью, чтобы скачать новую версию, я загружался в винду. Как же она тормозит!! Не хочу работать в винде. Жалко, что некоторые программы не работают в линуксе.

Kent
21-08-2014, 19:30
А в этой же теме мне советовали использовать /dev/disk/by-uuid/. Так какое же утверждение наиболее правильное? »
Насколько я понимаю, uuid генерируется системой, а id диска заложен в его прошивке.

SharkyUA
21-08-2014, 19:57
Скорее всего не корректный линк для liblzma
Переустановите liblzma5 и создайте initrd заново.
mkinitrd --force -v

Или же попробуйте создать initrd без сжатия (не уверен что nocompress поддерживается в OpenSUSE)
mkinitrd --nocompress -v
Насколько я знаю, по умолчанию должен gzip использоваться, а не lzma

Kent
21-08-2014, 23:14
Скорее всего не корректный линк для liblzma Переустановите liblzma5
Не могу представить, как в rpm-системе такое может произойти.

Или же попробуйте создать initrd без сжатия (не уверен что nocompress поддерживается в OpenSUSE) »
Всё гораздо хуже. В openSUSE теперь используется 'dracut'. Хотя не уверен, что это началось с 13.1.
% man mkinitrd
MKINITRD(8) dracut MKINITRD(8)



NAME
mkinitrd-suse - is a compat wrapper, which calls dracut to generate an initramfs

Сегодня, после обновления системы она перестала загружаться.
Вспомнил: обычно в таких случаях спрашивают, какие репозитории подключены, и как обновлялись. :)
Мы этот момент пропустили.

Spaser
22-08-2014, 10:03
Переустановите liblzma5 и создайте initrd заново. »
До того, как создать эту тему, я пытался это сделать. Увидел кучу зависимостей и тупо испугался. Даже не знаю как там поступать с ответами на вопросы, типа: "удалить, оставить, повредить". Ладно, если бы с десяток зависимостей всего был, а там сотни полторы-две. А теперь ещё и 17-я версия не запускается. Как мне переустановить? Из под LiveCD? Как наиболее корректно это сделать?
Вспомнил: обычно в таких случаях спрашивают, какие репозитории подключены, и как обновлялись.
Мы этот момент пропустили. »
Стандартные плюс пакман. До этого (когда в первый раз такая херня произошла) вообще только стандартные были.

Spaser
09-09-2014, 00:11
Блин. Это уже не смешно. На домашнем компе решил поставить Винду и Линя. Изначально на компе стояла хрюша. Я на втором жёстком диске освободил место под линукс, где успешно его и установил. Всё было в норме. Далее я решил переустановить винду (хрюша давно требовала переустановки) на семёрку. Переустановил. Соответственно затёр grub2. Далее я пытаюсь восстановить загрузчик:
mount /dev/sdb6 /mnt
grub2-install --root-directory=/mnt /dev/sda
Загрузчик восстановился, только в нём по прежнему присутствует хрюша. Загружаюсь в линукс и обновляю сам загрузчик:
grub2-mkconfig -o /boot/grub2/grub.cfg
mkinitrd
(инструкция из данной темы) и, отгадайте что получается?! Правильно! Ошибка, с которой начиналась данная тема.
Итак, что мы имеем: комп другой, дистрибутив OpenSuse x86_64 более новый, а ошибка старая. Что делать?!




© OSzone.net 2001-2012