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