lunes, septiembre 10, 2007

Reiniciar Linux en caso de bloqueo

¿Que hacer cuando se nos bloquea nuestro Linux? Si el sistema está tan colgado que no funciona la opción de Control + Alt + Backspace ni podemos mover el ratón, antes de darle el botón de Reset que podría dañar seriamente tu sistema:

* Pulsa Alt+ ImprPantalla y mantenlos pulsados.
* Teclea RSEIUB y tu sistema se reiniciará, así de simple.

Aquí está lo que hace cada tecla con detalle:

* R devuelve el control al teclado.
* S sincroniza.
* E manda a los procesos la señal term.
* I manda a los procesos la señal kill.
* U desmonta los sistemas de ficheros.
* B reinicia el sistema.

Otra posible combinación de letras: REISUB.

La secuencia 'SysRq' sirve para poder realizar ciertas tareas elementales de mantenimiento de emergencia en un sistema Linux que ha dejado de responder. A menudo problemas en el hardware (chips de memoria defectuosos, bugs en los drivers, conflictos de IRQs, etc) hacen que el sistema se "congele". En estas situaciones lo más importante es ser capaz de prevenir daños mayores, como una corrupción del sistema de archivos al reiniciar. La secuencia 'SysRq' implica la pulsación simultánea de 3 teclas: la tecla ALT izquierda, la tecla 'SysRq' key (también etiquetada como 'PrtSc', 'ImprPantalla' o 'F13') y una letra. ALT r , por ejemplo, pone el teclado en modo 'raw'. Para apagar el sistema de forma segura, es importante presionar las letras en el orden correcto, sincronizando las unidades antes de desmontarlas, por ejemplo: Raw - tErm - kIll - Sync - Umount - reBoot : REISUB

Hay un nemotécnico sobre qué significan las siglas que dice: "Raising Elephants Is So Utterly Boring" (el cultivo de elefantes es completamente aburrido, en castellano).

No en todas las distribuciones viene activado el soporte de esta secuencia por defecto, por ejemplo en las basadas en RedHat, viene desactivado (CentOS, Fedora...). Para activarlo basta con cambiar en /etc/sysctl.conf la entrada kernel.sysrq y dejarla con valor 1, asi:

kernel.sysrq = 1

Guardamos cambios y ejecutamos "sysctl -p" para activarlos en la sesion actual.

Si el equipo que se cuelga es remoto o no tiene teclado, es posible instalar sysrqd, configurarle la contraseña de acceso y hacer un telnet..
# apt-get install sysrqd
# echo "mypassword" > /etc/sysrqd.secret && chmod 0600 /etc/sysrqd.secret
# /etc/init.d/sysrqd restart
Para acceder:
$ telnet equipo 4094
sysrqd password: mypassword
sysrq> s
sysrq> u
sysrq> b
Algunas opciones sobran... normalmente se puede pulsar: SUB