martes, 2 de diciembre de 2008

Como solventar un kernel panic

Navegando por la blogosfera es fácil encontrar usuarios que han sufrido un kernel panic, esto es un fallo crítico del kernel (núcleo del pc). Una posible definición sería:


"A kernel panic is a type of error that occurs when the core (kernel) of an operating system receives an instruction in an unexpected format, or that it fails to handle properly. A kernel panic may also follow when the operating system is not able to recover from a different type of error. A kernel panic can be caused by damaged or incompatible software or, more rarely, damaged or incompatible hardware."

O lo que traducido podría ser algo como:
"Un kernel panic es un tipo de error producido cuando el núcleo (kernel) del sistema operativo recibe una instrucción en un formato inesperado, o que no es capaz de procesar. Un kernel panic puede ser consecuencia de que el sistema operativo no pueda recuperarse de otro error diferente. Puede ser causado por daño o incompatibilidad con algún programa o, más raramente, daño o incompatibilidad de hardware."

Kernel panic que fué introducido por primera vez en un sistema UNIX en una "versión temprana" y dá nombre a una página web de contenidos OpenBSD, Linux y software libre en general. Puede ser debido como bien dice la "definición anterior" a peticiones que el núcleo no es capaz de procesar, intentos de acceder a segmentos de la memoria no válidos, errores de compatibilidad software o hardware o daño en algún dispositivo físico del equipo.

Como puede ser debido a muchas causas, por muchos problemas distintos, por muchos paquetes distintos; se hace imposible intentar hacer una guía de como solucionarlos. Pero si que tenemos a nuestra disposición herramientas con las que mitigar el efecto que esto pueda suponer en nuestra máquina. Para ellos podemos forzar el reinicio automático cuando un kernel panic se produce o utilizar las teclas Magyc SysRq, con las que podemos mandar una serie de instrucciones predefinidas al kernel.
1- Forzar reinicio tras un kernel panic

Esiste un archivo de confiruración del sistema, sysctl.conf, situado en etc/; en el que aparecen multitud de parametros con los que podemos configurar nuestro equipo. Para el caso que nos ocupa, debemos editar dicho archivo para especificar el tiempo que tardará el sistema en forzar el reinicio. Una de las maneras de conseguirlo temporalmente puede ser escribiendo en la consola:

Hostname:/# echo "n" > /proc/sys/kernel/panic

Para comprobar que ha sido guardado el cambio, y que no está establecido su valor inicial (0, que lo desactiva), utilizamos:


Hostname:/# cat /proc/sys/kernel/panic

n



Donde "n" corresponde a el número de segundos que han de pasar antes de que el sistema se reinicie.

Para hacer este cambio permanente debemos configurar el archivo antes citado, /etc/sysctl.conf, en el que añadiremos la siguiente línea: kernel.panic=n. Para indicar que, de nuevo, han de pasar n segundos antes de que se reinicie el sistema. Como siempre, lo podemos hacer de varias maneras:

1- Modificarlo en una sola línea de código:

1.1-Hostname:/# echo "kernel.panic=5" >> /etc/sysctl.conf
1.2-Hostname:/# /sbin/sysctl -w kernel.panic=n

2- Editarlo manualmente:

Hostname:/# vi | nano /etc/sysctl.conf
Añadir:kernel.panic=n
2- Magic SysRq

En todo teclado de ordenadores hay una tecla que mucha gente no utiliza, muchos ni siquiera la conocen. La tecla en cuestión es "Impr Pant", que se utiliza para hacer un "Copy" a la pantalla del ordenador, para después poder utilizar dicha foto con lo que estemos trabajando. Pués bien, si esa tecla es desconocida para muchos usuarios de informática, la función que la acompaña todavía lo es más. Me refiero a "Pet Sis", "Sys Req", etc... esas palabritas que hay en la parte inferior de esa misma tecla. ¿Para qué se utilizan, cuál será su significado...?

Pues bien, gracias a ésta estupenda entrada de blog nos podemos hacer una idea para que se utiliza y como sacarle jugo para nuestro equipo.... Situándonos un poco en el caso al que lo aplicamos, podemos decir que es la manera idónea de reiniciar una máquina que ha sufrido un kernel panic, tanto si tenemos acceso físico al dispositivo como si es en remoto.

Gracias a este conjunto de teclas somos capaces de mandar ordenes al kernel sin importar si el sistema está "colgado", aunque no funcione el teclado (esto no lo he comprobado... cuando me toque lo probaré Giñar ) siempre y cuando tengamos acceso a una consola y/o tty (terminal serial virtual).

El funcionamiento es muy sencillo, se trata de pulsar una serie de teclas que están asociadas a instrucciones del kernel. La secuencida requerida para reiniciar correctamente un equipo sería: SUB. Esto, traducido a los comandos que vamos a utilizar, sería algo tal que:

Ctrl + Alt + PrintScreen + REISUB

R - Recupera el teclado
S - Sincroniza los discos duros
E - Finaliza las aplicaciones
I - Mata las aplicaciones que no finalizaron
U - Desmonta todas las unidades y las vuelve a montar como sólo lectura
B - Reinicia el sistema

En esta página se explica, con un ejemplo, como reiniciar un servidor cuando no tenemos acceso físico al equipo, pero tenemos configurado una conexión serial con otra máquina a la que nos podemos contectar remotamente. Al igual que otros consejos con los que poder intentar subsanar el error crítico que ha llevado al kernel a ponerse farruco... XD

2 comentarios:

Anónimo dijo...

La combinación correcta es:
R - Recupera el teclado
S - Sincroniza los discos duros
E - Finaliza las aplicaciones
I - Mata las aplicaciones que no finalizaron
U - Desmonta todas las unidades y las vuelve a montar como sólo lectura
B - Reinicia el sistema

DJ_DEXTER dijo...

Sorry de ahi lo corrijo

Saludos!!!