lunes, 14 de julio de 2014

Reiniciando GNU/Linux con la nariz ;)

Hola, ya es más de un año que no publico nada en este blog , pero bueno, esta vez los aburrire con una forma no muy conocida de reiniciar el sistema GNU/Linux.

Pues bien, ¿qué hacen cuando por alguna razón su sistema operativo se cuelga (X11 no reacciona a ninguna acción, no puedo acceder a las TTYs, etc.)?. Pues la solución de muchas personas (incluyendome) es la de presionar el botón de encendido y nuevamente iniciar el sistema bueno esta solución tiene ciertos inconvenientes:
  • Perdida de archivos
  • No desmontar el sistema de archivos correctamente
  • Procesos no finalizados como deben
Bueno sabiendo esto presionar el botón de encendido tiene un riesgo por detrás. 


Haciendo magia con la tecla SysRq 

Sabiendo estas cosas, el kernel Linux cuenta con una característica especial para estas situaciones (no les parece genial?) pero esta no es muy conocida, de hecho no la conocía hasta hace un par de meses. Esta característica se llama "Linux Magic System Request Key Hacks" (documentación) la cual nos permite ejecutar una serie de comandos a bajo nivel a través de la tecla SysRq (System Request o Petición al Sistema).

Ahora, supongo que varios le dieron un ojo a su teclado y se preguntan cual de todas es SysRq. Por lo general en la mayoría de los teclados la tecla Print Screen o Imprimir Pantalla es la tecla SysRq.


Verificando si esta característica esta o nó habilitada 

Para verificar si esta característica se encuentra habilitada es necesario verificar que el archivo /proc/sys/kernel/sysrq tenga un contenido mayor a cero. Si es así verán un número el cual puede tener los siguientes significados:

  • 0 - Deshabilitado
  • 1 - Todas las funciones de sysrq habilitadas
  • 2 - Habilitar el control de la consola
  • 4 - Habilitar el control del teclado
  • 8 - Habilitar el debug de procesos
  • 16 - Habilitar el comando "sync"
  • 32 - Habilitar el re-montado en solo lectura
  • 64 - Habilitar el envío de señales a los procesos (term, kill, etc.)
  • 128 - Permitir reinicio o apagado
  • 256 - Permitir nicing (no se como traducirlo :P) de todas las tareas en tiempor real RT
Ahora este número es interpretado como una máscara de bits, es decir, que la interpretación está dada a nivel de bits. Si ven el contenido del archivo /proc/sys/kernel/sysrq probablemente vean un 1 o números en la lista de arriba, caso contrario el número que vean es una combinación de los de la lista de arriba. En mi caso muestra 438 que es interpretado por el sistema como:

438 = 2 + 4 + 16 + 32 + 128 + 256

Algunos comandos de SysRq 

Sabiendo todo el por qué de esta característica que nos ofrece el kernel Linux, es momento de hacer uso de esta :D Existen una gran cantidad de comandos asociados a una letra o número [a-z, 0-9], estos son los que me llamaron más la atención y que además nos servirán para poder reiniciar el sistema con la nariz ;)
  • r - Realiza el cambio al modo del teclado, de modo raw (utilizado por aplicaciones como X11) al modo unraw
  • e - Envia una señal SIGTERM para terminar todos los procesos excepto init (PID 1)
  • i - Envia una señal SIGKILL para matar a todos los precesos excepto init (PID 1)
  • s - Intentará sincronizar todos los sistemas de archivos montados
  • u - Intentará remontar todos los sistemas de archivos en modo de solo lectura
  • b - Reinicia el sistema (hard, lo mismo que utilizar el botón de encendido)
  • o - Apaga el sistema (hard)
  • k - Mata todos los procesos en la consola virtual actual
Para ejecturar cualquiera de estos comandos se utiliza la combinación:

ctrl + alt + sysrq + [comando-1] + [comando-2] + ... + [comando-n]

Ojo que como se presionen ejecutará los comandos en el orden en el que se presionaron.

Reiniciando GNU/Linux con la nariz :D 

Ahora si!, sabiendo los comandos de esta característica, cual la combinación que debemos ejecutar es la siguiente:

ctrl + alt + syrq + r + e + i + s + u + b

Esta combinación cambiará el modo del teclado, terminará todos los procesos, matará todos los procesos, sincronizará sistemas de archivo, montará en modo lectura y finalmente reiniciará el sistema. 

Ahora, ¿por qué reiniciar con la nariz?, bueno como se dieron cuenta es una gran cantidad de teclas las que se debe presionar, intentenlo les aseguro que en la mayoría de los casos les faltará un dedo para presionar la letra "b", si lo logran sería genial ver cual fue la combinación, pero en mi caso (laptop) mis manos aguantan hasta la letra "u" y para la "b" hago uso de mi nariz ;) 

Espero les haya gustado y les sea de utilidad :)

4 comentarios:

  1. Sencillamente genial.. jaja :D información muy útil, gracias por compartirlo!

    ResponderEliminar
  2. Muy bueno y publica más seguido che.

    ResponderEliminar
  3. Necesito la ayuda de una tercera mano xD

    ResponderEliminar