sirwalrus,
как это можно побороть?
Например не выдергивать питание, а выключать нормально.
Извиняюсь что не по теме, но не смог пройти мимо.
Меня всегда умиляли таки 'знатоки'. А в сети встречал ещё такие ответы:"А Вас что, в Google забанили?" или "А на Вашем месте я бы в поиске поискал" и т.п. Это можно было бы сравнить с такой ситуацией, в которой человек на улице, у прохожего, спрашивает как пройти на Садовую, а тот отвечает, что мол вообще-то, на вашем месте, надо было бы у кого-то спросить. И ведь не лень им такие ответы писать, тратят своё время, а пользы ни на грош.
Я часто сталкиваюсь с такими 'знатоками' - вот и сейчас. Когда там настроить что-то надо или работает не так, как хотелось бы, я лезу в google, ну наверняка я не первый, кто с этим столкнулся.
Так и здесь. У меня тот же вопрос, по поводу загрузчика и проблем с не корректной остановкой машины. Пару раз было, что grub вываливался в меню и сам дальше не шел, приходилось к монитору подключать и смотреть в чем дело, очень не удобно. Решил посмотреть, может это легко лечиться, одной строкой. Искал и нашел пост на форуме с точно таким же вопросом. И что? А советуют, мол с питанием по-аккуратнее. Тот, кто даёт такие советы либо хам, либо дурак.
Пользователь решил продолжить мысль 17 Февраля 2014, 21:53:18:
Нашел ответ на этой странице
https://help.ubuntu.ru/wiki/grub Защита от зацикливания на перезагрузке
Если загрузка ОС не закончилась успешно, или осуществлялась загрузка в режим восстановления, то при следующей загрузке - меню выбора GRUB будет выводится и ждать явного вмешательства оператора (так же, как если бы вы выставили GRUB_TIMEOUT=-1). При этом последующие аппаратные сбросы системы - не помогут проскочить меню.
Зачем это сделано
При загрузке в лог файлы пишется информация и размеры логов растут. В нормально загруженной систем работают сервисы, которые архивируют и подчищают логи. В нормально работающей системе постоянно пополнение лог-файлов не требует внимания со стороны пользователя.
Совсем иная ситуация при загрузке - никакие сервисы по очистке логов не работают (они запускаются позже) и, если, в процессе загрузки система свалится и начнет перезагружаться, то лог будет только расти. И расти он будет до тех пор пока будут повторятся перезагрузки, и будет хватать места на том разделе диска, где расположен каталог /var/log. А когда на разделе с /var/log место кончится то система зависнет уже наглухо и даже в режим восстановления ее будет не загрузить. Загрузится можно будет только с LiveCD/USB (с Live системы и надо будет лечить систему, первым делом руками зачистив логи).
Защита встроенная в GRUB не позволит системе попасть в столь тяжелое положение.
А что если...
Функция (как видно) - безусловно полезная, однако она может быть неудобной для без-клавиатурных станций - на них «зависшее» меню GRUB-а - это не преимущество, а некоторые сложности (без подключения клавиатуры такая станция, попавшая в меню GRUB, никогда не загрузится вообще).
А что если отключить?
Собственно сами случаи, когда циклится загрузка - не так и часты, если машина работает без графики то там вообще мало чему падать на этапе загрузки, да еще так, что бы система вышла на перезагрузку. Разве что совсем кривой прикладной софт встроенный в процесс загрузки…
Гораздо чаще загрузка прерывается из за внешних условий - например пропадает питание, или кто-то сбрасывает систему.
Отключаем...
Как это работает
Реализовано все достаточно просто - в скрипте /boot/grub/grub.cfg переменная окружения GRUB recordfail устанавливается в ходе каждой загрузки в 1. Скрипт /etc/init.d/grub-common запускается на финальных этапах загрузки (линки с именем S99grub-common есть в /etc/rc2.d, /etc/rc3.d, … /etc/rc5.d). grub-common сбрасывает переменную recordfail в 0. Если скрипт /etc/init.d/grub-common не отработает, то не сброшенное значение recordfail предотвращает автоматическую загрузку, меню GRUB появляется и потребуется явное интерактивное вмешательство со стороны оператора.
Для того, что бы убрать необходимость интерактивного вмешательства в процесс загрузки нужно установить переменную GRUB_RECORDFAIL_TIMEOUT в /etc/defaul/grub в то количество секунд, которые меню GRUB-а будет ждать ввода в случае когда recordfail=1. Сохранить изменения и обновить GRUB (sudo update-grub).