Остановка бесконечного цикла перезагрузки из /etc/rc.local

Короче говоря, неудачная серия ошибок в разработке с моей стороны привела к тому, что /etc/rc.local быстро выполнил reboot (на Pi в моем случае). Теперь машина застряла в бесконечном цикле перезагрузки.

Могу ли я остановить это? Она перезагружается до появления приглашения к входу в систему, и у меня не было бы времени остановить ее, даже если бы она этого не сделала.

Возможно, есть какое-то волшебное сочетание клавиш, которое предотвращает запуск /etc/rc.local?

Я нашел Выход из бесконечного цикла перезагрузки при запуске (rc.local) здесь, но это на самом деле касается упреждающего предотвращения проблемы, а не устранения ее после факта. Упс.

0
13.04.2017, 15:36
1 ответ

На ПК вы должны отредактировать командную строку ядра и (например) добавить одно из:

  • systemd.unit = Emergency.target , чтобы получить только оболочку (требуется systemd);
  • systemd.unit = rescue.target , чтобы запустить еще кое-что, затем оболочку (требуется systemd);
  • single для загрузки в однопользовательском режиме в системах инициализации SysV. Не совсем уверен, что это позволит избежать rc.local на Wheezy; или
  • init = / bin / bash , что позволит вообще избежать запуска init, вместо этого предоставит вам оболочку (где вы затем можете перемонтировать корневую файловую систему для чтения-записи и отредактировать поврежденный файл). Однако я не совсем уверен в Pi, что это даст вам рабочую клавиатуру. И это требует определенных знаний, поскольку вы будете работать без инициализации, настраивающей систему за вас; обычно вы можете использовать exec / sbin / init для продолжения загрузки. (Работает с любой системой инициализации , потому что вы полностью ее обойдете).

Я не думаю, что есть способ сделать это на Raspberry Pi , если только вы не используете NOOBS. В этом случае, удерживая нажатой клавишу Shift, вы получите интерфейс восстановления, который позволит вам редактировать cmdline.txt - и это изменит командную строку ядра. (Или, возможно, просто отредактируйте поврежденный файл - я бы посоветовал сделать это, если возможно)

Другой альтернативой является вынуть SD-карту из Pi и использовать устройство чтения SD-карт для монтирования загрузочного раздела ( я считаю, что это FAT32, поэтому вы должны иметь возможность сделать это в Windows) или корневой раздел (который, вероятно, является ext4, поэтому вам нужно будет запустить Linux).Затем вы можете либо изменить командную строку ядра в cmdline.txt , либо напрямую исправить свой rc.local . Если вы редактируете cmdline.txt в Windows, убедитесь, что используете редактор, который понимает окончания строк в стиле Unix и не испортит их.

Лично я мог бы смонтировать корневую файловую систему Pi в Linux и отредактировать сломанный rc.local .

После того, как вы снова загрузите Pi, не забудьте, конечно, удалить все параметры восстановления из cmdline.txt .

1
28.01.2020, 02:46

Теги

Похожие вопросы