¿Apagar el Pi de forma segura sin SSH o un monitor?

25

Actualmente, mi Pi no responde a SSH, y el único monitor HDMI que tengo es un televisor grande a varios metros de distancia. He escuchado cosas malas sobre desconectarlo, pero ¿tengo alguna otra opción?

Actualmente ejecutando raspbian sin cabeza, ¿tal vez podría conectar un teclado y adivinar los comandos?

vpzomtrrfrt
fuente
3
No funcionará por ahora, pero podría agregar un botón a sus pines GPIO para apagarlo correctamente en el futuro
Rizzle Light
Como punto de datos: durante varios años he estado usando RPis para diversas tareas en robots móviles que funcionan con baterías. Estos obtienen su corte de energía a menudo y sin previo aviso. Todavía tengo que encontrar un problema con cualquiera de las tarjetas Pis / SD (bueno, aparte de que la conexión SD se afloja debido a la vibración constante y el choque de la pared).
Mike Ounsworth
¿No puede mover temporalmente el monitor HDMI unos pocos metros y luego volver a colocarlo cuando haya terminado?
jpmc26
@ jpmc26 está bajando unas escaleras y es un televisor bastante grande.
vpzomtrrfrt

Respuestas:

25

Aunque debería considerarse como un último recurso, ya que aumenta el riesgo de corrupción del sistema de archivos, desconectar el cable generalmente está bien si la luz verde ACT no parpadea intensamente .

Por defecto, el led ACT muestra la actividad de E / S en la tarjeta SD. Si está apagado, lo más probable es que el sistema esté inactivo. Esto no es necesariamente cierto, pero matar un sistema que está ocupado con una actividad intensiva de CPU (y no E / S) no es un problema inherente de todos modos. El sistema operativo almacena en caché la información del sistema de archivos en la memoria, lo que significa que puede no estar sincronizado con el almacenamiento real en la tarjeta SD, pero esto debe tratarse al menos cada pocos segundos (a veces puede inferir este patrón desde el ACT LED).

Entonces, si parece inactivo después de mirarlo durante 5-10 segundos y no tiene otra opción, continúe y desconecte la alimentación. Nuevamente, esto no garantiza nada y hay situaciones desafortunadas en las que el sistema puede bloquearse y la sincronización del sistema de archivos no se realiza correctamente, pero en la mayoría de los casos debería estar bien.

Probablemente he tenido que tirar del cable en un pi (o tuve una falla de energía) más de cien veces de esta manera y no puedo recordar haber tenido dolor por eso. A veces coloco la tarjeta en otra máquina y la ejecuto e2fsck -fen el sistema de archivos raíz, lo que vale la pena. El sistema operativo verificará el sistema de archivos automáticamente durante el arranque, pero es posible que esta verificación falle (o no se realice correctamente) y pase desapercibida.

Ricitos de oro
fuente
8
El período de inactividad de 5 a 10 segundos se debe a que la configuración predeterminada de Linux /proc/sys/vm/dirty_writeback_centisecses de 500 centisegundos (5 segundos). Entonces, si Linux tiene datos no escritos en buffers de E / S, comenzará a descargarlos en el disco después de 5 segundos, a menos que lo haya cambiado. En teoría, un FS de registro en diario debería estar a salvo de la corrupción de todo el sistema de archivos, incluso si se apaga durante una escritura, pero esperar a que esté inactivo le brinda una oportunidad mucho mejor de no dañar los archivos modificados recientemente. (Qué registro en diario solo protege con ext3 / ext4 data = journal, que no es el predeterminado)
Peter Cordes
31

Magic SysRq Key

Esto debería ayudarte a comenzar.

La clave mágica SysRq es una combinación de teclas entendida por el kernel de Linux, que permite al usuario ejecutar varios comandos de bajo nivel independientemente del estado del sistema. A menudo se usa para recuperarse de bloqueos o para reiniciar una computadora sin dañar el sistema de archivos . Su efecto es similar al botón de reinicio de hardware de la computadora (o interruptor de encendido) pero con muchas más opciones y mucho más control.

Puede enchufar un teclado y escribir esto a ciegas (sin monitor).

Sin daños en el sistema de archivos, no se requiere hardware adicional.


Botón GPIO

Como sugirió Rizzle Light, puede tomar algún tipo de botón y conectarlo a los pines GPIO, y hacer un poco de magia de programación para hacer que presionar el botón ejecute el comando "poweroff" (con privilegios de administrador, por supuesto).

Hay toneladas de tutoriales de programación GPIO en línea que puede adaptar, como este .

Rahul R Dhobi tiene un bonito script python de dos líneas que cerrará una Raspberry Pi:

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

ejecuta tu script con privilegios de root.

Hydraxan14
fuente
3
La documentación magic-SysRQ del kernel de Linux es la única documentación que he impreso en papel :). (Y eso fue cuando solo tenía una computadora.)
Peter Cordes
3

No hay necesidad de adivinar; solo conecta el teclado y escribe esto y presiona enter:

sudo shutdown -h now

El shutdowncomando necesita un privilegio raíz para ejecutarse.

La ligereza corre con Mónica
fuente
44
Primero debe iniciar sesión (ciego) y usar una cuenta privilegiada o (suponiendo que el piusuario superpoderoso de Raspbian ...) sea anterior sudo.
Ricitos de oro
2
@goldilocks: Probablemente desee colocarlo sudoal comienzo del comando, en lugar de agregarlo :-)
psmears
@goldilocks: Correcto, aún así, iniciar sesión no parece una tarea difícil.
Lightness compite con Monica el
1
No estaba comentando sobre el nivel de difícil;) @psmears ¡Vaya! Corregido
Ricitos de oro
@goldilocks: Bastante justo :)
Lightness compite con Monica el
1

El puerto serie es una buena alternativa para tales situaciones, y está habilitado de forma predeterminada.

Puede intentar conectarse al puerto serie con Putty. Si eso funciona, inicie sesión con su nombre de usuario y emita "sudo poweroff" para apagarse de manera segura.

Ver http://elinux.org/RPi_Serial_Connection para más información ...

Cuarzo
fuente
0

Estaba probando un servidor de archivos en una parte de la casa sin acceso fácil a un monitor cuando me encontré con el mismo problema. Lo siguiente funcionó para mí, suponiendo que su pi se inicie en el entorno predeterminado de la GUI:

  1. Conecte un teclado (si aún no lo ha hecho).
  2. Presiona Alt-F2para abrir un cuadro de diálogo Ejecutar.
  3. Escriba lo siguiente y presione Entrar para iniciar una ventana de Terminal:

    lxterminal
    
  4. Espere unos segundos para estar seguro y luego escriba lo siguiente:

    sudo shutdoown now -h
    
  5. Presione enter.

Esto debería apagar el Pi. Si funciona, las luces del teclado y cualquier dispositivo USB conectado se apagarán. De lo contrario, puede repetir los pasos anteriores en caso de que haya cometido un error al escribir los comandos.

Nealios
fuente
-1

Botón de ventana - nueve teclas hacia abajo - 2 veces ingresar ... Disfrutar ...

Prakhar Pandey
fuente
1
Gracias por la respuesta: todas las entradas son apreciadas. Me han pedido que sugiera algunos cambios para ayudarlo a mejorar su respuesta: Primero, supongo que por "botón de ventana", se refiere al botón con el logotipo de Microsoft en los teclados de Windows. Si es así, debe indicarlo explícitamente. Además, una respuesta clave está implícita en su respuesta, pero no es lo suficientemente específica. En resumen, vuelva a escribir su respuesta para que quede inequívocamente clara cuál es realmente su respuesta, en lugar de basarse en suposiciones.
Seamus
También tenga en cuenta que el autor de la pregunta está ejecutando raspbian sin cabeza . Eso significa que el entorno de escritorio no está instalado, por lo que esta secuencia de teclas probablemente no ayudará.
Hydraxan14