Reparar arranque de equipo con Linux CentOS 7 cuando falla el arranque y se inicia en modo «Dracut». Este procedimiento es válido para otras distribuciones de Linux como Ubuntu, Debian, Red Hat, Fedora, Manjaro o Mint. El proceso de acceso a la recuperación del sistema es similar para todas las distribuciones Linux. Mostramos cómo reparar el arranque de Linux en varias situaciones.

Síntomas de arranque fallido en Linux

Cuando un equipo con Linux al arrancar muestra mensajes del tipo:

dracut-initqueue[271]: Warning: dracut-initqueue timeout – starting timeout scripts
dracut-initqueue[271]: Warning: Could not boot.
dracut-initqueue[271]: Warning: /dev/centos/root does not exist.
dracut-initqueue[271]: Warning: /dev/centos/swap does not exist.
dracut-initqueue[271]: Warning: /dev/mapper/centos-root does not exist.

Y accede a una línea de comandos especial, a dracut:

Síntomas de arranque fallido en Linux

Es debido a que el sistema ha encontrado algún problema con el acceso a las unidades/particiones que lo componen y no ha podido arrancar de forma normal. Los motivos pueden ser muy variados, uno de ellos, por ejemplo, es que se ha hecho una conversión de una máquina virtual de un entorno de virtualización a otro y las unidades de disco no son compatibles. Otro motivo puede ser la corrupción de algunos ficheros de arranque. En algunas ocasiones el fallo de arranque se debe a que la unidad de disco de arranque se ha llenado por completo.

Desde la línea de comandos de dracut, ejecutando el comando

journalctl

Síntomas de arranque fallido en Linux

Nos devolverá más información del error, por ejemplo:

localhost.localdomain kernel: pci 0000:00:15.6: BAR 13: failed to assign [io size 0]
localhost.localdomain kernel: pci 0000:00:15.7: BAR 13: no espace for [io size 0x100]

Síntomas de arranque fallido en Linux

Iniciar el modo de recuperación en un equipo Linux CentOS

Para iniciar en modo recuperación en un equipo Linux deberemos disponer del ISO de instalación de Linux, bien sea en CD/DVD o en pendrive. En el caso de una máquina virtual, la apagaremos y agregaremos la unidad de CD/DVD desde sus propiedades:

Iniciar el modo de recuperación en un equipo Linux CentOS

Elegiremos «Archivo ISO del almacén de datos»:

Iniciar el modo de recuperación en un equipo Linux CentOS

Buscaremos el fichero ISO con el sistema operativo Linux CentOS (o el que estemos usando):

Iniciar el modo de recuperación en un equipo Linux CentOS

Marcaremos «Conectar»:

Iniciar el modo de recuperación en un equipo Linux CentOS

Desde las Opciones de máquina virtual, marcaremos «Forzar configuración de BIOS». De forma que en el próximo arranque acceda a la BIOS:

Iniciar el modo de recuperación en un equipo Linux CentOS

Iniciaremos la máquina virtual:

Iniciar el modo de recuperación en un equipo Linux CentOS

Se iniciará la máquina virtual y accederá a la BIOS. Desde «Boot» elegiremos como unidad de arranque el CD-ROM Drive:

Iniciar el modo de recuperación en un equipo Linux CentOS

Se iniciará el arranque en el CD/DVD de Linux, elegiremos la opción «Troubleshooting»:

Iniciar el modo de recuperación en un equipo Linux CentOS

En las opciones de Troubleshooting elegiremos «Rescue a CentOS system»:

Iniciar el modo de recuperación en un equipo Linux CentOS

El arranque en modo recuperación nos indicará que:

The rescue environment will now attempt to find your Linux installation and mount it under the directory /mnt/sysimage. You can then make any changes required to your system. If you want to proceed with this step choose ‘Continue’. You can also choose to mount your file systems read-only instead of read-write by choosing ‘Read-only’. If for some reason this process fails you can choose ‘Skip’ and this step will be skipped and you will go directly to a command shell.

Básicamente nos indica que el sistema intentará montar la instalación de Linux (si es capaz de encontrarla) en /mnt/sysimage. Si indicamos «Continue» montará esta unidad para que podamos escribir en ella, si indicamos «Read-Only» la montará como sólo lectura. Y si no puede montar la unidad podremos pulsar en «Skip».

En nuestro caso pulsaremos en «Continue» para que intente montar la unidad de arranque de Linux actual como lectura/escritura:

Iniciar el modo de recuperación en un equipo Linux CentOS

También nos inidicará que para que el sistema montado en /mnt/sysimage sea el entorno raíz ejecutemos el comando:

chroot /mnt/sysimage

Iniciar el modo de recuperación en un equipo Linux CentOS

Si ha conseguido montar el sistema en /mnt/sysimage nos lo indicará a continuación:

Iniciar el modo de recuperación en un equipo Linux CentOS

El sistema arrancará en una línea de comandos completa, desde la que podremos realizar las tareas de recuperación.

Una vez iniciado el modo recuperación, lo primero que haremos será establecer el teclado a español, para poder introducir teclas especiales sin problemas. Para ello ejecutaremos el comando:

loadkeys es

A continuación ejecutaremos el comando que nos sugería el asistente de recuperación:

chroot /mnt/sysimage

Iniciar el modo de recuperación en un equipo Linux CentOS

Reparar arranque de Linux

No existe un único método para reparar el arranque de un sistema operativo, sea Windows, Linux o MAC OS. En función del problema que ha originado el fallo de arranque, se procederá a realizar la recuperación de una forma u otra. Es muy importante dejar claro este punto, cada problema de arranque tendrá una manera de solucionarlo. Incluso en ocasiones, si el problema es físico por ejemplo, puede que no tenga solución el arranque.

A continuación mostramos algunos métodos de recupeación de equipos Linux, que han funcionado en determinadas circunstancias concretas, errores de arranque concretos.

Reparar arranque de Linux cambiando la imagen de arranque

Si nuestro equipo Linux no arranca, uno de los métodos de recuperación puede ser cambiando la imagen de arranque. Para ello, desde la línea de comandos de recuperación, ejecutaremos el comando:

df -h

Nos mostrará las unidades montadas en el equipo:

Reparar arranque de Linux cambiando la imagen de arranque

Debería aparecer el punto de montaje /boot, que en nuestro caso está montado sobre /dev/sda1. Accederemos al punto de montaje /boot con:

cd /boot

Y haremos mostraremos los ficheros con:

ls -lah

Nos mostrará los ficheros .img del boot del sistema (el arranque).

Este procedimiento de recuperación haremos una copia del fichero de arranque en otro lugar e indicaremos que arranque con el fichero copiado. Este método soluciona algunos de los problemas de arranque de Linux. Para ello, ejecutaremos el comando:

Cambiaremos, como es lógico, el nombre del fichero .img por el que tengamos en el equipo, mostrado anteriormente, respetando, también con el nombre correspondiente, el texto tras el espacio, en nuestro caso 3.10.0-123.el7.x86_64:

Reparar arranque de Linux cambiando la imagen de arranque

Iniciará el proceso, que tardará unos minutos:

Reparar arranque de Linux cambiando la imagen de arranque

Cuando acabe volverá a la línea de comandos, indicando:

Creating initramfs image file … done

Reparar arranque de Linux cambiando la imagen de arranque

Una vez finalizado el proceso, extraeremos el CD con Linux para que no vuelva a arrancar desde él. A continuación ejecutaremos el comando exit dos veces, una para salir del modo chroot y otra para salir del modo de rescate. El equipo se reiniciará y arrancará con la imagen restablecida de Linux. Si todo es correcto arrancará de forma normal:

Reparar arranque de Linux cambiando la imagen de arranque

Reparar arranque fallido en Linux cuando el tipo de unidad no es compatible en VMware

En algunas ocasiones, cuando realizamos una importación de una máquina virtual desde otros sistemas de virtualización, como VirtualBox, a nuestro entorno VMware ESXi, podremos encontrarnos con que la máquina virtual arranca con error y en modo «dracut».

Cuando sucede este error de arranque y hemos establecido el disco duro virtual a SCSI, a veces se soluciona cambiando el tipo de disco duro de SCSI a IDE.

Para ello, con la máquina virtual apagada, accederemos al entorno de virtualización VMware con vSphere (o el cliente que usemos). Editaremos las propiedades de la máquina virtual desde «ACCIONES» – «Editar configuración…»:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

Desplegaremos «Disco duro 1»:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

En «Nodo de dispositivo virtual» tendremos «Controladora SCSI 0». Desplegaremos y elegiremos «IDE 0»:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

Quedando IDE 0 y IDE (0:0) Disco duro 1:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

Guardaremos los cambios y esperaremos a que el proceso de conversión del tipo de disco de ISCSI a IDE concluya:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

Cuando haya finalizado, volveremos a iniciar la máquina virtual de forma normal. Si todo es correcto, el equipo arrancará normalmente:

Reparar arranque fallido en Linux cuando la unidad no es compatible en VMware

Obtener información de las particiones disponibles en modo rescate de Linux

Cuando hemos iniciado en modo rescate, tendremos la opción de comprobar qué particiones existen en el sistema, para averiguar, por ejemplo, si alguna unidad está defectuosa y no ha sido montada/cargada.

Para ello podremos ejecutar el comando:

fdisk -l

Que nos mostrará todas las particiones detectadas por el inicio en modo rescate:

Obtener información de las particiones disponibles en modo rescate de Linux

Nos mostrará información útil sobre las particiones, como el sistema usado (Linux o Linux LVM) o su ruta: /dev/sda1, dev/sda2 y cuál es la partición de arranque, marcada con un asterisco «*» en Boot.

Con el siguiente comando también obtendremos información de las unidades montadas en el equipo:

df -h

Obtener información de las particiones disponibles en modo rescate de Linux

Si estamos usando particiones LVM, como hemos comprobado con el comando fdisk -l, podremos obtener más información de los volúmenes con el comando:

lvdisplay

Obtener información de las particiones disponibles en modo rescate de Linux

Esta información nos será muy útil para posibles recuperaciones y para saber si todas las unidades/particiones/volúmenes están disponibles o hay alguno dañado.