Averigua el kernel bueno en un servidor que no dé problemas
En ese servidor ejecuta:
$ uname -r 4.10.0-37-generic
Ya tenemos el kernel bueno.
Instala el kernel bueno en el servidor que falla
Simple:
# apt install linux-image-4.10.0-37-generic
Averigua la línea de grub que corresponde al kernel
En /boot/grub/grub.cfg
encontramos toda la configuración de Grub, así que
vamos a buscar la entrada del kernel que quiero que sea el que se arranque por
defecto. En mi caso es el 4.10.0-37-generic
, así que ejecuto esto:
# grep -E 'menuentry.*4.10.0-37-generic' /boot/grub/grub.cfg menuentry 'Ubuntu, with Linux 4.10.0-37-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-37-generic-advanced-de41c4d3-5429-4c65-8624-9e4b4619f280' { menuentry 'Ubuntu, with Linux 4.10.0-37-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.10.0-37-generic-recovery-de41c4d3-5429-4c65-8624-9e4b4619f280' {
De las 2 líneas que me ha devuelto, la 2ª es la del modo recovery, así que me
interesa la primera. Copiaré el churro que aparece al final:
gnulinux-4.10.0-37-generic-advanced-de41c4d3-5429-4c65-8624-9e4b4619f280
.
Utiliza dicho kernel para el próximo reinicio
El kernel por defecto se escoge en /etc/default/grub
, y es el que está
seleccionado en la variable GRUB_DEFAULT
. Por defecto, encontrarás
GRUB_DEFAULT=0
, que significa que usará el primer kernel de la lista.
En mi caso, quiero que use un kernel concreto, así que le pegaré en esa línea el ID
del kernel que he copiado antes, por duplicado y separado con
>
; quedará como:
GRUB_DEFAULT='gnulinux-4.10.0-37-generic-advanced-de41c4d3-5429-4c65-8624-9e4b4619f280>gnulinux-4.10.0-37-generic-advanced-de41c4d3-5429-4c65-8624-9e4b4619f280'
El resto de opciones las dejo sin tocar.
Actualiza la configuración de grub
Fácil también:
# update-grub
Reinicia
# reboot
Tras reiniciar, deberías tener el kernel correcto cargado:
$ uname -r 4.10.0-37-generic