Перезагрузка зависает на 100% - возможно в mountall

8

ОБНОВЛЕНИЕ: Кажется, что mountall висит внутри подпрограммы emit_event (), которую он вызывает после / перемонтируется для создания события с таким эффектом. Внутри emit_event он вызывает ply_boot_client_flush (), затем создает массив env, вызывает upstart_emit_event (), затем dbus_pending_call_block (). И там это висит. Итак, есть идеи, почему dbus_pending_call_block зависает бесконечно? Сломанный плимут? DBus? выскочка? Есть предложения по исправлению или дальнейшей диагностике?

Перезагрузка моей Ubuntu 10.04 LTS, 64-битная машина AMD зависает на 100%. Индикатор доступа к диску не горит, но клавиши alt-sysreq работают. Аппаратное обеспечение - ноутбук Lenovo W700ds. Теперь я заранее извиняюсь, потому что я очень ограничен в информации о системе, которую я имею в наличии, и в том, что я могу с ней сделать (потому что она не загружается). Я могу загрузиться с 10.04 CD - используя его как аварийный диск. Я могу fsck, монтировать, читать и писать в мои разделы - они в порядке. Я уже пытался переформатировать своп с помощью mkswap. У меня есть 4 раздела ext4 в моей системе: sda1 - это /, sda2 - это / usr, sda3 - это / home, и 4-й, который я использую для хранения данных / sdb1 (это весь диск, монтируется в точке монтирования / hdb, которую я создал) , Также есть / sda4, который является swap. Прямо сейчас я пишу это из браузера, который я открыл в «спасательной сессии» из 10.

Я был бы очень признателен за предложения / комментарии о том, что я могу сделать, чтобы помочь диагностировать, что висит, почему и что я мог сделать, чтобы это исправить. Я уже выполнил веб-поиск, но ничего нового не нашел (некоторые сообщения об ошибках 1-1,5 лет с похожими симптомами, но их исправления не работали).

Я установил 10.04 на новый диск первого июля, а затем использовал aptitude, чтобы обновить все. С тех пор я установил многопакетов (я прикреплю журнал dpkg ниже). С sda 750GB (/ 20GB, / usr 80GB) у меня было много места для установки пакетов, которые я «когда-нибудь смогу использовать». Интересно, один из этих пакетов, который я установил, испортил мою систему? Я установил ядро ​​2.6.32-32-generic и перезагрузился, но с тех пор установил гораздо больше пакетов. Я перезагружаю эти машины настолько редко, насколько это возможно - предпочитая переводить их в спящий режим при перемещении с места на место. Однако в последнее время я заметил странное поведение, связанное с де-гибернацией: когда система выйдет из режима гибернации, она вызовет экранную заставку gnome с паролем, необходимым для разблокировки - ну, он не узнает мой пароль! Мне пришлось alt-F1, войти в систему как root, и убить заставку. Тогда все будет хорошо, или так казалось. Также, после спячки я часто видел на экране мигающий разноцветный мусор. Это ушло бы, поэтому я не пытался найти причину. Другим, возможно, важным моментом является то, что мне нужно было использовать «nomodeset» при установке 10.04, и при вызове аварийной оболочки с того же компакт-диска, если я использую только nomodeset, он будет зависать с мигающим светодиодом NumLock или Caps Lock ( сбой?), но если я также использую «noapic nolapic acpi = off», то все в порядке. Я попробовал эти варианты с моей системой, чтобы увидеть, излечивают ли они проблему зависания при загрузке - они этого не делают. если я использую только nomodeset, он в конечном итоге будет зависать с мигающим светодиодом NumLock или Caps Lock (сбой?), но если я также использую «noapic nolapic acpi = off», то все в порядке. Я попробовал эти варианты с моей системой, чтобы увидеть, излечивают ли они проблему зависания при загрузке - они этого не делают. если я использую только nomodeset, он в конечном итоге будет зависать с мигающим светодиодом NumLock или Caps Lock (сбой?), но если я также использую «noapic nolapic acpi = off», то все в порядке. Я попробовал эти варианты с моей системой, чтобы увидеть, излечивают ли они проблему зависания при загрузке - они этого не делают.

Это машина, которую я использую как для работы, так и почти для всего остального, поэтому ее повторная загрузка является главным приоритетом. / дом не поврежден, что хорошо. Но я почти сошел с ума, пытаясь диагностировать (а тем более исправить) причину зависания ботинка.

Я загружаю систему, и она запускает скрипт конфигурации mountall в /etc/init/mountall.conf. Я вижу вывод от mountall, выполняющего fsck - 4 строки, в которых говорится: fsck из util-linux-ng 2.17.2 (по одному на раздел ext4). Затем от fsck есть еще 4 строки, информирующие пользователя о том, что разделы признаны «чистыми». И это все - все просто останавливается. Индикатор активности диска гаснет. Я могу использовать ключи alt-sysreq, но они пока не доказали свою полезность. Я видел сообщение об ошибке, в котором один пользователь использовал alt-sysreq-i для уничтожения процесса, и он бросил его в оболочку. Для меня это говорит, что он убил процессы (udev и udev-bridge и plymouth, говорит, что он вызывает udev и т. Д.), Но я не получаю никакой оболочки.

Я пытался определить, что именно висит. Для этого я возился с /etc/init/mountall.conf. Я добавил строки эха, и я добавил опцию -v (подробный) в exec mountall. Никакие линии эха после exec mountall не показаны, так что это может означать, что mountall зависает. Или, возможно, он не отображает последний из выходных данных - в этом случае mountall мог завершиться, и что-то еще может зависать. Я отмечаю, что alt-sysreq-i не говорит, что mountall убит. Я попытался сузить то, что система может зависать, закомментировав sda3 (/ home), swap и sdb1 (/ hdb) из fstab, но все равно зависает.

Есть много, что я могу сделать сам, но чувствую, что я здесь над головой. Я хотел бы, например, получить исходный код для mountall, добавить напечатанные флаги, перекомпилировать и вставить его в мою систему - чтобы сузить A), если mountall на самом деле висит, и B) на чем он висит. НО, я не могу загрузить свою машину в оболочку, из которой можно скомпилировать - а среда на спасательном диске - только 2.6.32-28-generic # 55 - поэтому она не будет соответствовать моей системе. Я хотел бы удалить или переустановить пакеты, но, опять же, я не могу загрузить свою машину и сделать это.

(мой файл журнала dpkg занимает несколько МБ, поэтому я прикреплю его в следующем диалоговом окне)

Спасибо Грег

Greg
источник
хорошо, если вы можете загрузить USB-флешку или livecd, подключите туда диски, которые вы можете подключить к своему компьютеру и удалить пакеты. Но с другой стороны, вы сказали, что это ваш рабочий компьютер, он имеет высший приоритет. Итак, сравните время, потраченное на поиск, что не так со временем чистой установки (у вас дома на отдельном разделе)?
Денверко
Я бы повторил @denwerko - вам, вероятно, понадобится всего несколько часов, чтобы выполнить чистую установку, а затем установить любое дополнительное программное обеспечение, которое вам нужно. Вставьте USB-накопитель / внешний USB-накопитель и скопируйте на него содержимое вашего / дома. Вы можете восстановить его потом. Что касается «стабильности» - это зависит - какие пакеты вы установили и откуда? Установка пакетов из PPA и компиляция кода, скорее всего, вызовут большую нестабильность, чем установка стандартных пакетов из центра программного обеспечения / менеджера пакетов synaptic.
fossfreedom
@greg - какое у вас оборудование, для которого нужны дополнительные драйверы - например, сетевая карта / видеокарта? Вы пытались упростить свой рабочий стол, отключив / вытянув все карты - оставьте только основы, такие как встроенная графика и проводная клавиатура?
fossfreedom
@ Грег, если это решено, почему их нет принятого ответа? Пожалуйста, следуйте общим правилам AskUbuntu, добавьте свое решение к ответам и примите его.
Rinzwind

Ответы:

1

Денверко: Я ничего не сделал с моей машиной, которая должна была дать такой результат. Это было довольно стабильно под Ubuntu 9.10 - никогда не было ничего подобного. Все возиться с исходным кодом, перекомпилировать вещи - все это был пользовательский код. Я вообще не возился с ОС. Я также не установил никакого кода OS-space вне стандартных каналов (менеджер пакетов aptitude / synaptic, пакеты deb, полученные с помощью этих инструментов). Грег вчера

Однако я получил исходный код для mountall 2.15.3 и получил его для компиляции в среде восстановления после 5 установок (libnih-dev, libnihdbus-dev, lindbus-1-dev, linudev-dev, libplymouth-dev) , Я добавил отладочные отпечатки в код с помощью вызовов nih_info (), и я создал порождающие программы, которые выполняют блокировку fsck вместо неблокирования. Я работаю над теорией, что mountall где-то падает (или nih, или dbus, или plymouth ...). Кажется, я не получаю вывод в одно и то же место в коде при каждом запуске, но кажется, что он останавливается через некоторое время после перемонтирования / dev / sda1 в / - в функции mount (). Грег вчера

Я также делал dpkg -r пакетов через chroot, как вы предложили, и это, кажется, работает (за исключением одного сценария deinstall, который хотел что-то сделать с / proc). Я удалил wine, и необходимые ему 32-битные пакеты совместимости (lib32nss, ia32lib, lib32v4l и т. Д.) И несколько пакетов ibus, которые не установлены в среде аварийного восстановления (некоторые пакеты ibus есть, и я старался не удалять их) -removed плазма-виджет-kimpanel-backend-ibus, ibus-qt4, ibus-qt1. Ничто из этого не повлияло на проблему, поэтому я удалил больше пакетов, которые мне больше не нужны (пакеты wx widget, jdk и т. Д.) - без эффекта

ОБНОВЛЕНИЕ: Кажется, что mountall висит внутри подпрограммы emit_event (), которую он вызывает после / перемонтируется для генерации и события с этой целью. Внутри emit_event он вызывает ply_boot_client_flush (), затем создает массив env, вызывает upstart_emit_event (), затем dbus_pending_call_block (). И там это висит. Итак, есть идеи, почему dbus_pending_call_block зависает бесконечно? Сломанный плимут? DBus? выскочка? Есть предложения по исправлению или дальнейшей диагностике?

РЕШЕНИЕ Итак, похоже, я установил cloud-init и cloud-utils, потому что я думал, что когда-нибудь захочу поиграть с ними. Will, откручивает винты cloud-init с конфигурацией ureadahead и запускается, когда происходит событие dbus «смонтировано /», которое привело к зависанию моей системы, как только она отправила это сообщение dbus, которое происходит после того, как / будет перемонтировано из ro в г / мас. Я деинсталлировал cloud-init и cloud-utils, и теперь все выглядит нормально. За исключением того, что я сонный и потерял 24 часа моей жизни: \

Greg
источник