LINUX.ORG.RU
ФорумAdmin

Альтернативная загрузка

 ,


0

2

Хочется иметь возможность автоматической альтернативной загрузки.

Т.е. если в меню grub, например, есть 5 пунктов.

И если при загрузке какого-то пункта меню, возникают какие-либо проблемы, например что-то не так с файловыми системами или паника ядра, то по истечению заданного тайм аута автоматически происходит перезапуск grub с другим пунктом меню, в заданном порядке.

Например: 3 -> 5 -> 2 -> 1 -> 4, естественно порядок должен быть настраиваемым.

Это, конечно, не даст 100% гарантию того что какая-нибудь система загрузиться, но значительно повысит вероятность загрузки. При администрировании удаленных систем, это было бы очень полезно.

Желательно иметь возможность задать путь куда сбросить лог ошибок для каждого пункта меню, если текущий /var/log будет не доступен.

Возможно что-то подобное уже есть, но я не смог найти.

Граб только передает управление загрузчику ОС, дальше он уже не работает. Кто будет ребутить комп, если у тебя кернел паник?

Zhbert ★★★★★ ()
Ответ на: комментарий от Zhbert

Событие «кернел паник» какя-то функция обрабатывает, та, которая выводит сообщение о панике на экран. Эта же функция может выполнить рестарт. Проще всего, конечно, сделать полный резет, но тогда при каждой загрузке придется переписывать mbr, а этого хотелось бы избежать.

Да еще, естественно все это должно работать с raid-1.

Ushenin ()
Ответ на: комментарий от Ushenin

Я вот не в курсе про grub.conf, но если дефолт можно прописать там, то вся задача сводится к написанию скрипта, который будет менять порядок и запуск его сразу после того, как примонтируется /boot/

crutch_master ★★★★★ ()
Ответ на: комментарий от Ushenin

кернел не рассчитывает на альтернативные себе системы :)
можешь пропатчить ядро и сделать как хочешь.

pfg ★★★★★ ()
Ответ на: комментарий от Ushenin

А,тну тогда все просто. Пиши патч в ядро и васякот.

Zhbert ★★★★★ ()
Ответ на: комментарий от pfg

Я, конечно, могу все сделать сам, но у меня уже несколько проектов в работе. Так что если до сих пор такого не сделали, то нужно подкинуть идейку тем кто ищет «что бы такого сделать полезного» :)

В принципе ничего сверх сложного.

Если если grub обнаруживает проблему до того как завершил загрузку ядра и initrd, то сам груб переходит к обработке следующего пункта по (не по порядку, а по настраиваемому списку).

Если ядро и initrd успешно загружены, то при при передаче управления этому ядру передается дополнительные параметры. Например имя блочного устройства и номер сектора которые следует загрузить при кернел паник, либо просто имя бинарного файла. Отдельный параметр может задать место куда следует записать информацию об ошибке, это тоже может быть сектор блочного устройства.

При настройке grub придется записать в соответствующие секторы устройств код рестарта и/или добавить в initrd необходимые файлы.

Ushenin ()
Ответ на: комментарий от Ushenin

напиши ТЗ погромистам, оплати работу - сделают.

Используй виртуалки, Люк !!

для игр с операционками они и сделаны. в разы удобней мультибута, это могу по своему опыту сказать.

pfg ★★★★★ ()

Нужен комп(телефон, и т.д. ) который будет контролировать загрузку, если не загрузилось за определенное время, hard reset и выбор другой загрузки, либо виртуалки если нет загрузки, др виртуалка.

Busf ()
Ответ на: комментарий от pfg

напиши ТЗ погромистам, оплати работу - сделают.

Не настолько мне это нужно что бы финансировать проект полостью, но если бы такое появилось на кик старте, то пару баксов я бы не пожалел :)

Думаю вполне возможно было бы собрать достаточную сумму для достойной оплаты этой работы.

Используй виртуалки, Люк !!

Использую, но хост системы тоже нужно админить.

Кстати, при перезапуске после паники не стоит заморачиваться с блочными устройствами и фалами. Можно просто сохранить grub со всеми его данными в ram, при необходимости ядро может переместить его в другое место. После завершения загрузки, эту память можно освободить. А если потребуется то вернуть grub на исходное место и передать ему управление.

Ushenin ()
Ответ на: комментарий от Ushenin

Ваша идея вряд ли реализуема в общем виде. Единственное, что вы можете - это пользоваться ситуациями, когда система перед смертью и потерей контроля имеет возможность подать сигнал на ресет или выполнить иные потребные вам действия. Но среди всевозможных зависаний и отключений таких ситуаций будет меньшинство. То есть смысла особого нет. Хотите более эффективной работы - делайте простейший внешний вочдог.

vaddd ★☆ ()
Ответ на: комментарий от Ushenin

Я, конечно, могу все сделать сам

Ты сначала игрушки у себя в комнате убери, маленький мамин какер.

anonymous ()
Ответ на: комментарий от vaddd

Ваша идея вряд ли реализуема в общем виде.

Если ядро при загрузке повиснет «наглухо», то, конечно, ничего не сделать, кроме жесткого ресета. Но это происходит чрезвычайно редко, я не помню что бы со мной такое случилось хотя бы раз. А очень часто ядро до паники довожу :)

Если система реагирует на Ctr-Alt-Del или на Power Button, то система не сохраняет достаточно работоспособности для перезапуска grub.

Ushenin ()
Ответ на: комментарий от Ushenin

Ве равно логики не просматривается. Вы хотите лени ради частично автоматизировать процесс нажатия на кнопочку? Или вы хотите повысить надежность системы, работающей без присмотра? Вы в обоих случаях цели не достигнете.

vaddd ★☆ ()
Ответ на: комментарий от vaddd

Все это нужно для удаленного администрирования. Иногда требуется переустановить всю систему, либо просто сделать что-то очень не стандартное. И в том и другом случае велика вероятно что система не загрузится с первого раза. И тогда потребуется загрузиться в другую, резервную систему и из нее разбираться что пошло не так.

Ushenin ()
Ответ на: комментарий от Ushenin

Разверни на виртуалке и переустанавливай сколько влезет

iTA05 ()
Ответ на: комментарий от Ushenin

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

bass ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.