Muchas veces actualizo el kernel de servidores linux que están en sitios remotos, todo lo hago por medio de una sesión ssh, el proceso de la actualización depende de la distribución que use, muchas son por medio de las fuentes originales del kernel linux, otras usando las fuentes que provee Gentoo en el paquete gentoo-sources, paquetes dpkg, rpm, etc. Cualquiera que sea el caso algunas veces no se estará seguro si el nuevo kernel instalado arrancara correctamente o no.
Aqui el problema viene cuando pones tu bootloader para que de manera predeterminada arranque el nuevo kernel instalado, y si por alguna razón este kernel da algún error de kernel panic, ya sea porque no se incluyo el sistema de archivos dentro de el kernel, no se creo una imagen initrd, o se pusieron mal las entradas en el archivo de configuracion de el boot loader. Si esto llegara a pasar por, default el sistema se quedará ahí con el mensaje de kernel panic y no se podrá hacer nada a menos que alguien presione el boton de reiniciar o lo apague y lo vuelva a prender, y para que tengamos de nuevo el sistema funcionando tendra que elegir el kernel correcto dentro de el menu de nuestro boot loader (ya sea grub o lilo).
Esto es un gran problema porque muchas de las veces la tarea de mantenimiento es realizada en horas de la noche donde no se podra afectar la produccion o el funcionamiento de alguna operación, regularmente a estas horas no hay quien pueda ir hasta el servidor, reiniciar la maquina y elegir otro kernel de el menu de el boot loader. La buena noticia es que grub puede hacer todo esto automatico.
Existe un valor que carga el kernel de linux que define el tiempo que debe de esperar antes de que se reinicie automaticamente.
Para revisar su valor actual lo vemos asi:
$ cat /proc/sys/kernel/panic 0
Como vemos su valor esta a 0 (cero) lo que significa que esta desactivado y no se reiniciara.
Para poner el tiempo de espera lo podemos hacer asi:
# echo "5" > /proc/sys/kernel/panic
Donde 5 es el numero de segundos que esperara para reinciarse despues de que salga un mensaje de kernel panic.
Para revisar que el valor este configurado correctamente lo confirmamos asi:
$ cat /proc/sys/kernel/panic 5
Para hacer este valor permanente, lo configuramos por medio de sysctl:
# echo "kernel.panic=5" >> /etc/sysctl.conf
Esto que acabamos de hacer solo fue la parte de el kernel, ahora necesitamos hacer la parte de el boot loader, para que sepa que hacer despues del reboot.
grub tiene una opcion llamada fallback esta opción le dice el número de el kernel que arrancará después del kernel panic.
Normalmente el nuevo kernel yo lo listo al inicio de todos los demas, por ejemplo:
# (0) Slackware 10.2 (2.6.17.8)
title Slackware 10.2 (2.6.17.8-1jm)
root (hd0,0)
kernel /boot/vmlinuz-2.6.17.8-1jm ro root=/dev/hda1 panic=5 vga=normal panic=5
# (1) Slackware 10.2 (2.4.31)
title Slackware 10.2 (2.4.31)
root (hd0,0)
kernel /boot/vmlinuz-ide-2.4.31 ro root=/dev/hda1 vga=773
Como vemos ahi yo le tengo un comentario con el numero el primero listado empieza con el numero 0 y asi consecutivamente, entonces para decirle a grub que de manera predeterminada arranque el nuevo kernel 2.6.17.8 lo hacemos con la opcion default, asi:
default 0
Si el kernel que arranca como default llegara a dar kernel panic se le tiene que poner el tiempo de espera antes de reiniciar, para esto agregamos el argumento panic a la linea de kernel con un valor de 5 (segundos).
Ahora con la opcion fallback le diremos a grub que kernel iniciar despues de que el kernel default dio kernel panic, como sabemos que el kernel 2.4.31 funciona sin problemas y esta listado en el numero 1, entonces el fallback lo pondremos asi:
fallback 1
Un ejemplo completo seria asi:
# cat /boot/grub/menu.lst
# Boot automatically after 5 secs.
timeout 5
# By default, boot the first entry.
default 0
# Fallback to the second entry.
fallback 1
# (0) Slackware 10.2 (2.6.17.8)
title Slackware 10.2 (2.6.17.8-1jm)
root (hd0,0)
kernel /boot/vmlinuz-2.6.17.8-1jm ro root=/dev/hda1 panic=5 vga=normal panic=5
# (1) Slackware 10.2 (2.4.31)
title Slackware 10.2 (2.4.31)
root (hd0,0)
kernel /boot/vmlinuz-ide-2.4.31 ro root=/dev/hda1 vga=773
# end file menu.lst
FIN.
Documento de referencia:
Grub como: http://tuxjm.net/docs/grub-howto-base.txt

Tuxjm es un sitio creado por Jorge Armando Medina (jmedina) para difundir el uso del Software Libre, aunque no soy un programador pero aun así quiero contribuir a la comunidad, estaré publicando documentos (howtos, tipos, articulos, etc) que espero sean de ayuda.
Para más información ver 

Todavía no hay comentarios En Este Post
Suscribirse a Este Post Comment Rss Or TrackBack URL