Solucionar error «kernel panic – not syncing» en servidor Ubuntu

En Tutoriales y Guías por

No sabía muy bien que título dar a este artículo, puesto que recogeré una serie de instrucciones con las que recuperar un sistema que nos devuelve un error de kernel panic. Este tipo de error es bastante conocido y resulta bastante frustrante, ya que el sistema operativo no se inicia, permaneciendo inaccesible. Concretamente vamos a hablar de la solución cuando nos encontramos el mensaje de error:

kernel panic – not syncing : VFS: Unable to mount root fs on unknown – block (0,0).

kernel panic - not syncing : VFS: Unable to mount root fs on unknown - block (0,0)

El origen del error.

En mi caso el problema vino tras actualizar un servidor Ubuntu con los comandos habituales: sudo apt-get update y sudo apt-get upgrade. Después de la actualización, vi como un mensaje en pantalla me solicitaba que reiniciase el sistema.

Mi sorpresa fue que tras reiniciar, me encontré con el mensaje de error «kernel panic – not syncing : VFS: Unable to mount root fs on unknown – block (0,0)» y ahí empezó el estrés. Se trataba de un servidor VPS con el sistema operativo Ubuntu Server 16.04 (64 bits) contratado en la compañía Vultr.

A pesar de que se trata de un servidor, estas instrucciones servirán en equipos domésticos y seguramente también funcionen en servidores de otras compañías. La solución la encontré en este post de los foros de Ubuntu, pero voy a tratar de dar más detalles sobre el tema.

Recuperar el sistema una vez identificado el error «kernel panic – not syncing» con Finnix.

Una vez que tuve el error identificado, lo primero que se pasó por mi cabeza es crear una copia de seguridad de aquellos archivos importantes. Este paso es casi obligatorio, ya que si por algún motivo el proceso de recuperación sale mal, siempre tendremos un respaldo.

Como el sistema operativo no arranca, debemos recurrir a un LiveCD de recuperación. Existen muchos, pero el que más me ha gustado es Finnix, basado en Debian.

Arrancando Finnix en un PC.

Si lo vamos a usar en un PC, tendremos que crear un pendrive USB booteable con este LiveCD o podemos grabarlo directamente en un CDROM. Una vez que arranque, debemos seguir las instrucciones en pantalla para conseguir una shell en el sistema.

Arrancando Finnix en Vultr.

He elegido Finnix, porque también está disponible en Vultr y lo podemos cargar como una ISO personalizada. Para cargar Finnix, accedemos al panel de control de Vultr, después seleccionamos el servidor que queremos recuperar y nos dirigimos al apartado Settings → Custom ISO y seleccionamos Finnix - 111 x86. Finalmente pulsamos el botón Attach ISO and Reboot.

cargar iso finnix en vultr

Ahora esperaremos a que termine la transferencia de la ISO y pulsaremos sobre el botón View console.

vultr consola

Llegados a este punto tendremos en pantalla algo parecido a lo que vemos en la siguiente imagen.

finnix pantalla de arranque

Sólo nos queda seleccionar la arquitectura con la que queremos iniciar Finnix. En mi caso y en la mayoría de sistemas modernos, seleccionaremos «Boot Finnix (64-bit)». Esperamos a que carguen todos los módulos en memoria y al cabo de unos segundos, tendremos una terminal desde la que trabajar para recuperar el sistema.

Recuperando el sistema y el arranque con Grub.

Empezamos montando los archivos del sistema operativo que queremos recuperar. Para esto, ejecutamos el comando sudo fdisk -l y vemos cuál es la partición de arranque del sistema.

fdisk

En mi caso la partición es /dev/vda1, por lo que ahora tengo que montar esta partición con el comando:
sudo mount /dev/vda1 /mnt

Usando la terminal de Finnix para hacer una copia de seguridad de los archivos.

En mi caso los archivos importantes estarán dentro de la carpeta /mnt/home/zeokat/www, por lo que el primer paso es comprimir esta carpeta con el comando:
tar -zcf backupfiles.tar.gz /mnt/home/zeokat/www

El siguiente paso fue transferir el archivo de copia de seguridad a mi PC, para lo que podemos usar SFTP u otro método que se te ocurra. Para poder acceder por SFTP, tenemos que asignar una contraseña al usuario root, para lo que ejecutamos el comando passwd.

passwd

A continuación, iniciamos el servidor SSH con el comando:
/etc/init.d/ssh start

iniciar ssh finnix

Ahora ya podemos usar nuestro cliente SFTP favorito para descargar los archivos de copia de seguridad.

Ya tenemos los archivos importantes respaldados, asique vamos a intentar recuperar el sistema para que inicie correctamente. Ahora ejecutamos los siguientes comandos:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

Para terminar, ejecutamos:

sudo chroot /mnt
update-initramfs -u -v
grub-install --recheck /dev/vda
update-grub
reboot

Si estáis en un servidor de Vultr, cuando ejecutéis el comando reboot seguramente aparecerá en pantalla un mensaje diciendo «Running in chroot, ignoring request». Por lo que primero hay que ejecutar el comando exit y después ya se puede ejecutar el comando reboot. Finalmente, usamos el botón que pone Remove ISO en el apartado Settings → Custom ISO del panel de control de Vultr.