Безопасное выключение Pi без SSH или монитора?

25

Мой Pi в настоящее время не отвечает на SSH, и единственный монитор HDMI у меня есть большой телевизор в нескольких метрах. Я слышал плохие вещи о его отключении, но есть ли у меня другой вариант?

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

vpzomtrrfrt
источник
3
Пока это не сработает, но вы можете добавить кнопку к своим выводам GPIO, чтобы в будущем отключить ее должным образом
Rizzle Light
Как назначение данных: в течение нескольких лет я использовал RPis для различных задач на мобильных роботах с батарейным питанием. Они отключаются часто и без предупреждения. Мне еще не приходилось сталкиваться с проблемой с любой из карт Pis / SD (ну, кроме SD-соединения, ослабевшего от постоянной вибрации и удара в стену).
Майк Оунсворт,
Вы не можете временно переместить монитор HDMI на несколько метров, а затем положить его обратно, когда закончите?
jpmc26
@ jpmc26 это вниз по лестнице, и это довольно большой телевизор.
vpzomtrrfrt

Ответы:

25

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

По умолчанию светодиод ACT показывает активность ввода-вывода на SD-карте. Если он выключен, скорее всего, система бездействует. Это не обязательно так, но убийство системы, которая занята процессорами, интенсивно использующими процессор (а не ввод / вывод), в любом случае не является проблемой. Операционная система кэширует информацию о файловой системе в памяти, что означает, что она может быть не синхронизирована с фактическим хранилищем на SD-карте, но с этим следует иметь дело, по крайней мере, каждые несколько секунд (иногда вы можете вывести этот шаблон из ACT светодиод).

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

Мне, вероятно, сто раз пришлось тянуть шнур на пи (или было отключено электричество) более сотни раз, и я не могу вспомнить, чтобы из-за этого у меня было горе Иногда я помещаю карту в другую машину и запускаю e2fsck -fв корневой файловой системе, что стоит. ОС будет проверять файловую систему автоматически при загрузке, но возможно, что эта проверка завершится неудачно (или будет выполнена неправильно) и останется незамеченной.

Златовласка
источник
8
Период бездействия от 5 до 10 секунд обусловлен тем, что для Linux по умолчанию установлено значение /proc/sys/vm/dirty_writeback_centisecs500 центсекунд (5 секунд). Поэтому, если в Linux есть неписанные данные, хранящиеся в буферах ввода / вывода, он начнет сбрасывать их на диск через 5 секунд, если вы не изменили их. Теоретически журналирующая ФС должна быть защищена от повреждения всей файловой системы, даже если вы отключите питание во время записи, но ожидание простоя дает вам гораздо больше шансов не повредить любые недавно измененные файлы. (Какая журнализация защищает только с ext3 / ext4 data = journal, что не является значением по умолчанию)
Питер Кордес,
31

Волшебный ключ SysRq

Это должно начать вас.

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

Вы можете подключить клавиатуру и напечатать этот материал вслепую (без монитора.)

Нет повреждения файловой системы, не требуется дополнительное оборудование.


Кнопка GPIO

Как и предполагал Rizzle Light, вы можете взять какую-то кнопку и подключить ее к выводам GPIO, и немного поработать над программированием, чтобы при нажатии кнопки выполнялась команда «poweroff» (с правами администратора, конечно).

Есть множество онлайн-уроков по программированию на GPIO, которые вы можете адаптировать, как этот .

Rahul R Dhobi имеет хороший двухстрочный скрипт на python , который отключит Raspberry Pi:

import os
os.system("shutdown now -h")

Запустите ваш скрипт с правами суперпользователя.

Hydraxan14
источник
3
Документация magic-SysRQ ядра Linux - это единственный документ, который я когда-либо печатал на бумаге :). (И это было тогда, когда у меня был только один компьютер.)
Питер Кордес
3

Не нужно угадывать; просто подключите клавиатуру и введите это и нажмите enter:

sudo shutdown -h now

Для выполнения этой shutdownкоманды необходима привилегия root.

Гонки легкости с Моникой
источник
4
Сначала вам нужно будет войти в систему (вслепую) и либо использовать привилегированную учетную запись, либо (предположительно сверхспособный piпользователь Raspbian ...) sudo.
Златовласка
2
@goldilocks: Вы, вероятно, хотите поставить sudoв начале команды, а не добавлять ее :-)
psmears
@goldilocks: Да, все же, вход в систему не кажется такой уж тяжелой работой.
Легкость гонки с Моникой
1
Я не комментировал уровень сложности;) @psmears Ой, оставил вас! Исправлено.
Златовласка
@goldilocks: Достаточно справедливо :)
Легкость гонок с Моникой
1

Последовательный порт является хорошим запасным вариантом для таких ситуаций, и он включен по умолчанию.

Вы можете попробовать подключиться к последовательному порту, используя Putty. Если это работает, войдите под своим именем пользователя и выполните команду sudo poweroff, чтобы безопасно завершить работу.

Смотрите http://elinux.org/RPi_Serial_Connection для получения дополнительной информации ...

кварцевый
источник
0

Когда я столкнулся с той же проблемой, я тестировал файловый сервер в какой-то части дома без легкого доступа к монитору. Следующее сработало для меня, предполагая, что ваш pi загружается в среду графического интерфейса по умолчанию:

  1. Подключите клавиатуру (если это еще не сделано).
  2. Нажмите, Alt-F2чтобы открыть диалоговое окно Run.
  3. Введите следующее и нажмите Enter, чтобы открыть окно терминала:

    lxterminal
    
  4. Подождите несколько секунд, чтобы быть в безопасности, а затем введите следующее:

    sudo shutdoown now -h
    
  5. Нажмите Enter.

Это должно отключить Пи. Если это работает, клавиатура горит, и все подключенные USB-устройства отключаются. Если нет, вы можете повторить шаги, описанные выше, если вы допустили ошибку при вводе команд.

Nealios
источник
-1

Окно кнопка - девять раз кнопка вниз - 2 раза войти ... Наслаждайтесь ...

Прахар Пандей
источник
1
Спасибо за ответ - все отзывы приветствуются. Меня попросили предложить некоторые изменения, которые помогут вам улучшить ваш ответ: во-первых, я предполагаю, что под «кнопкой окна» вы подразумеваете кнопку с логотипом Microsoft на клавиатурах Windows. Если это так, вы должны заявить об этом явно. Кроме того, в вашем ответе подразумевается последовательность клавиш, но она недостаточно конкретна. Короче говоря, пожалуйста, перепишите свой ответ, чтобы было однозначно ясно, каков ваш ответ на самом деле, а не полагаться на предположения.
Симус
Также отметим, что у Аскера работает безголовый распбиан. Это означает, что среда рабочего стола не установлена, поэтому эта последовательность клавиш, вероятно, не поможет.
Hydraxan14