Hiparco

Recetas y trucos de GNU/Linux e informática en general

Alojado en http://guimi.net

Uso de SysRq (PetSis) en GNU/Linux

Puede ocurrir que alguna vez la consola se quede congelada, sin responder al ratón o al teclado, pero perfectamente operativa si conectas vía ssh. Esto puede ocurrir probando nuevas configuraciones de las X, por un fallo en un disco swap o en una tarjeta de video…
Aunque mucha gente lo desconoce, a no ser que haya un kernel panic, la consola sigue siendo siempre operativa. Lo que hay que hacer es indicarle a la máquina que queremos hablarle directamente al núcleo (¡qué bien suena dicho así!).

Dándole menos poesía, si pulsamos la tecla SysRq (System Request o PetSis -Petición al Sistema-) podemos darle órdenes directas al núcleo Linux. Esa tecla se “esconde” a día de hoy bajo la tecla de impresión de pantalla (“ImpPant” o “PrnScr”) y para utilizarla hay que pulsar “Alt” (el de la izquierda) + “ImpPant”.

Así en caso de un “cuelgue” de la consola, si pulsamos Alt+ImpPant+r, le indicamos al núcleo que iniciamos el modo crudo (raw), sin intérpretes de teclado por medio.
Después podemos probar a pasar un “Ctrl+Alt+Sup” (y esperar, pues no veremos lo que está haciendo), o probar con un “Alt+Ctrl+Fx” para obtener una consola… si no funciona podemos seguir haciéndole peticiones directas al núcleo, entre otras:

  • r Inicia el modo crudo (raw)
  • e Envía SIGTERM a todos los procesos excepto a init.
  • i Envía SIGKILL a todos los procesos excepto a init.
  • s Sincroniza todos los sistemas de ficheros montados (o lo intenta ;-).
  • u Remonta todos los sistemas de ficheros utilizados como solo-lectura.
  • b Reinicia inmediatamente el sistema.

Esta secuencia permite reiniciar limpiamente un sistema Linux, siempre que nos acordemos de esperar unos segundos tras cada orden para dar tiempo a que se ejecute.
El modo de acordarse de la secuencia cuando llegue un problema y no puedas leer esto es recordar “BUSIER”, al revés.

Hay más ordenes que se le pueden pasar al núcleo en la wikipedia.

El uso de SysRq suele estár habilitado en las distribuciones por defecto, pero se puede (des)habilitar haciendo:
# echo [0|1] > /proc/sys/kernel/sysrq

También se pueden enviar órdenes desde una consola (por ejemplo vía ssh) haciendo:
# echo (letra_elegida) > /proc/sysrq-trigger

Uso de SysRq (PetSis) en GNU/Linux, System Request en Linux, Peticiones al sistema en GNU/Linux

Categoría: GNU/Linux