viernes, 4 de marzo de 2011

Reiniciar un kernel linux automáticamente con GRUB

Estuve creando un Kernel para un servidor Xen que tiene problemas para iniciar en Debian Squeeze, el problema?, el servidor está en un datacenter y yo estoy en mi oficina, ¿cómo hago para compilar un kernel?, el miedo que siempre ocurre es un fatídico “kernel panic” y tener que trasladarse hasta el equipo para reiniciarlo?, pues hay ciertos trucos de GRUB que los pueden ayudar.

Evitando que GRUB se quede en kernel panic

Para evitar que GRUB se quede en Kernel Panic y reinice “automáticamente” unos segundos después que detecta que el equipo quedó en “kernel panic”, entonces agregamos a cada entrada del GRUB:
panic=x

Donde X es la cantidad de segundos que esperará hasta reiniciar el equipo (porque se encuentra en kernel panic).

ejemplo en /etc/default/grub:
GRUB_CMDLINE_LINUX=”acpi=on numa=on lapic panic=60″

Y obviamente, actualizamos el GRUB

update-grub2

También lo podemos “fijar” para todos los kernels en el PROC mediante:

echo 60 > /proc/sys/kernel/panic

Esto hará, que de detectarse un Kernel Panic, el servidor se reiniciará a los 60 segundos de espera.

¿Muy útil, no? …

Modificando el Arranque por defecto del GRUB

Por lo general, GRUB siempre arrancará “por defecto” desde un kernel específico, dictado por la opción:
GRUB_DEFAULT=0

en /etc/default/grub; sin embargo, podemos cambiar este comportamiento, fijando nosotros (por comando) cual kernel será el por defecto y con cual arrancará en próxima oportunidad, para ello:

1. Editamos el archivo /etc/default/grub
2. Modificamos la opción GRUB_DEFAULT=0 para que diga GRUB_DEFAULT=saved
3. Comentamos opciones como GRUB_TIMEOUT y HIDDEN_TIMEOUT
4. Actualizamos el menu grub ejecutando:

update-grub

Y listo!, ahora, a probar!.

Para definir cual de las entradas en nuestro menú GRUB es la “por defecto”, ejecutamos:

grub-set-default X

Donde X es el número de la entrada, empezando en cero, que contiene el kernel que será nuestro arranque por defecto; ejemplo:

grub-set-default 0

Hará que siempre inicie por la primera entrada.

Luego, debemos definir con “cual” vamos a iniciar, en mi caso, instalé un kernel XEN (y el Hypervisor) nuevo y quedó de 6 en la lista de kernels, así que ejecuté:

grub-reboot 6

y reinicié (reboot)

Así, el equipo “intentó” iniciar con el kernel número 6, pero como este tenía problemas (este equipo me da problemas con Xen), en vez de quedarse “congelado” en un Kernel Panic, se reinició solo y pude volver al kernel por defecto (default=0) previamente configurado.

No se imaginan lo útil que es poder compilar un Kernel Linux remotamente y no tener que desplazarse físicamente …

Fuente: phenobarbital.wordpress.com

No hay comentarios:

Publicar un comentario