Si no es posible migrar tu servidor aunque hayas instalado el kernel más reciente, es posible que este esté dañado. Esto puede ocurrir, por ejemplo, si la partición de arranque de tu servidor tenía menos de 100 MB de espacio libre antes de la migración. No obstante, también podría haber otras razones según el caso.

Si el kernel de Linux está dañado, se pueden detectar varios síntomas que indiquen que algo va mal en el sistema. Las siguientes señales y estrategias te pueden ayudar a reconocer si el kernel podría estar dañado:

  • Problemas de arranque: el síntoma más obvio de un kernel dañado son los problemas de arranque. El sistema puede quedarse atascado en un bucle de arranque, bloquearse con mensajes de error o no arrancar en absoluto.

  • Caídas del sistema y mensajes de error: si tu sistema Linux se bloquea con frecuencia o experimenta «kernel panics» inesperados, esto también puede ser un signo de un kernel dañado. Los kernel panics suelen ir acompañados de un mensaje de error en una pantalla azul o negra.

  • Dmesg y registros del sistema: comprueba los registros (logs), especialmente la salida de dmesg inmediatamente después del arranque. dmesg proporciona mensajes relacionados con el kernel que pueden ser útiles para identificar errores o problemas específicos.

root@localhost:~# dmesg | less

  • También puedes utilizar journalctl para comprobar los registros del sistema:

root@localhost:~# journalctl -xb

  • Módulos defectuosos: otro posible síntoma de un kernel dañado son los problemas con los módulos del kernel. Comprueba si se pueden cargar todos los módulos o si aparecen mensajes de error:

root@localhost:~# lsmod 
root@localhost:~# modprobe yourmodulename

  • Inconsistencias en la funcionalidad: si determinadas funciones relacionadas con el sistema (como las operaciones de red, el acceso al sistema de archivos, las interacciones con el hardware, etc.) dejan de ser fiables o se producen errores inexplicables, esto también podría indicar problemas con el kernel.

Arrancar desde un kernel antiguo y reparar la versión más reciente

Si tu servidor tiene instalado un kernel antiguo, puedes arrancarlo con uno de estos kernels para habilitarlo en la red y poder llevar a cabo la búsqueda y resolución de problemas: 

  • Inicia sesión en tu cuenta IONOS.
  • En la barra de menús principal, haz clic en Menú > Servidores & Cloud. Si dispones de varios contratos, selecciona el deseado.
  • Haz clic en Acciones > Abrir consola remota.
    La consola remota se abrirá en una nueva pestaña.
  • Cambia inmediatamente al Cloud Panel y haz clic en Acciones > Reiniciar
    Durante el reinicio, la conexión con la consola se interrumpirá.
  • Cambia de nuevo a la consola remota.
  • En la esquina superior derecha, haz clic en Options > Reconnect hasta que aparezca el siguiente mensaje:
  • Pulsa inmediatamente la tecla ESC manteniéndola hasta que aparezca la siguiente ventana.
  • Selecciona Advanced Options for Ubuntu y pulsa INTRO.
  • Aparecerá una lista de kernels disponibles con el más reciente en la parte superior. Selecciona el segundo kernel más reciente y pulsa INTRO. Si este kernel funciona, tu servidor arrancará de forma normal y te llevará al inicio de sesión (login). 
Nota

¡No selecciones un kernel en modo de recuperación (recovery mode)!

  • Introduce tus datos de acceso.
  • Para comprobar si arrancaste el servidor desde un kernel antiguo, introduce el siguiente comando: 
     

    [root@localhost ~]# uname -r

Hacer una copia de seguridad de los datos de tu servidor

Haz una copia de seguridad de los datos de tu servidor antes de reparar el kernel. Puedes utilizar el servicio de pago Backup Cloud o guardar los datos en tu computadora local con Filezilla.

Para más información sobre Backup Cloud, consulta el siguiente artículo:

Backup Cloud: primeros pasos

Reparar el Kernel

  • Utiliza el siguiente comando para comprobar qué kernels están instalados actualmente en tu servidor:

    [root@localhost ~]# dpkg --list | grep linux-image

    Por ejemplo:

    root@server:~# dpkg --list | grep linux-image 
    rc linux-image-5.15.0-105-generic 5.15.0-105.115 amd64 signed kernel-Image generic 
    ii linux-image-5.15.0-106-generic 5.15.0-106.116 amd64 signed kernel-Image generic 
    iF linux-image-5.15.0-107-generic 5.15.0-107.117 amd64 signed kernel-Image generic 
    ii linux-image-5.15.0-97-generic 5.15.0-97.107 amd64 signed kernel-Image generic 
    rc linux-image-unsigned-5.15.0-107-generic 5.15.0-107.117 amd64 Linux-Kernel-Image for version 5.15.0 en 64 bits x86 SMP 
    root@server:~#

    En este ejemplo, linux-image-5.15.0-107-generic es el último kernel instalado. El kernel linux-image-5.15.0-97-generic es el más antiguo. El estado de un kernel se indica mediante los códigos del estado del paquete:

Código del estado del paquete Significado
ii Correctamente instalado y configurado
iU Instalado, pero no configurado
iF Instalado, pero la configuración ha fallado
iW Instalado, pero posiblemente esperando algo más (poco frecuente)
rc Desinstalado, pero los archivos de configuración siguen presentes
Nota

Para kernels desinstalados que todavía tienen archivos de configuración (rc), estos se pueden eliminar con el siguiente comando:

apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')

  • En este ejemplo, el kernel linux-image-5.15.0-107 tiene el código de estado IF. Este código de estado significa que la configuración falló.
  • Para solucionarlo, debes reinstalar el kernel correspondiente. Para ello, sustituye el marcador de posición en el siguiente comando y, a continuación, insértalo.

    [root@localhost ~]# apt-get install --reinstall IMAGE NAME

    Por ejemplo:

    [root@localhost ~]# apt-get install --reinstall 
    linux-image-5.15.0-107-generic

  • Para comprobar si la reinstalación se realizó correctamente, introduce el siguiente comando:

    [root@localhost ~]# dpkg --list | grep linux-image 
    rc linux-image-5.15.0-105-generic 5.15.0-105.115 amd64 signed kernel-Image generic 
    ii linux-image-5.15.0-106-generic 5.15.0-106.116 amd64 signed kernel-Image generic 
    ii linux-image-5.15.0-107-generic 5.15.0-107.117 amd64 signed kernel-Image generic 
    ii linux-image-5.15.0-97-generic 5.15.0-97.107 amd64 signed kernel-Image generic 
    rc linux-image-unsigned-5.15.0-107-generic 5.15.0-107.117 amd64 signed kernel-Image for version 5.15.0 en 64 bits x86 SMP 
    root@server:/#

    El kernel Linux-image-5.15.0-107-generic muestra ahora el código del estado del paquete ii, lo que significa que está instalado y configurado correctamente. Para completar el proceso, reinicia el servidor. El kernel más reciente se cargará automáticamente.

  • Para completar el proceso, reinicia el servidor.

    [root@localhost ~]# reboot

Reparar el kernel si no hay suficiente espacio en la partición de arranque

Si no hay suficiente espacio en la partición de arranque, la reinstalación del kernel mediante el método descrito anteriormente fallará. En este caso, se mostrará la siguiente información:
 

[root@localhost ~]# apt-get install --reinstall 
linux-image-5.15.0-107-generic
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer 
required:
amd64-microcode libdbus-glib-1-2 libevdev2 libimobiledevice6 libplist3 libupower-glib3 
libusbmuxd6 linux-headers-generic thermald upower usbmuxd
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 2 not 
upgraded.
Need to get 0 B/11.5 MB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 203704 files and directories currently installed.)
Preparing to unpack
.../linux-image-5.15.0-107-generic_5.15.0-107.117_amd64.deb …
Unpacking linux-image-5.15.0-107-generic (5.15.0-107.117) over 
(5.15.0-107.117) …
dpkg: error processing archive 
/var/cache/apt/archives/linux-image-5.15.0-107-generic_5.15.0-107.117_amd64
.deb (--unpack):
cannot copy extracted data for './boot/vmlinuz-5.15.0-107-generic' to 
'/boot/vmlinuz-5.15.0-107-generic.dpkg-new': failed to write (No space left 
on device)
No apport report written because the error message indicates a disk full 
error

dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:

/var/cache/apt/archives/linux-image-5.15.0-107-generic_5.15.0-107.117_amd64
.deb
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@server:/# 


Para solucionar este problema, es necesario liberar espacio de almacenamiento. Procede de la siguiente manera:

Instalación manual del kernel si falla la nueva instalación

Si la reinstalación del kernel falla por una razón distinta a la falta de espacio en la partición de arranque, puedes intentar eliminar y reinstalar manualmente el kernel.

Advertencia

Nunca elimines el kernel que estás utilizando actualmente, ya que esto puede provocar errores graves en tu servidor. Con el comando uname -r puedes comprobar qué kernel estás usando.

Para eliminar el kernel y luego reinstalarlo, sigue estas instrucciones:

  • Utiliza el siguiente comando para comprobar qué kernels están instalados actualmente en tu servidor:

    [root@localhost ~]# dpkg --list | grep linux-image

  • Para comprobar qué kernel estás usando, introduce el siguiente comando:

    [root@localhost ~]# uname -r

  • Para eliminar el paquete del kernel linux-image-5.15.0-107-generic -, introduce el siguiente comando:

    [root@localhost ~]# apt-get purge linux-image-5.15.0-107-generic

  • Para comprobar si se eliminó el paquete del kernel, introduce el siguiente comando:

    [root@localhost ~]# dpkg --list | grep linux-image

  • Para reinstalar el kernel, sustituye los marcadores de posición en el siguiente comando e insértalos con la tecla INTRO: 

    [root@localhost ~]# apt install --install-recommends kernel-VERSION

    Por ejemplo:

    [root@localhost ~]# apt install --install-recommends 
    linux-image-5.15.0-107-generic

  • Comprueba que el paquete del kernel se instaló correctamente.

    [root@localhost ~]# dpkg --list | grep linux-image

  • Para reiniciar el servidor, introduce el siguiente comando:

    [root@localhost ~]# reboot