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.
- Iniciar el modo de recuperación en un equipo Linux CentOS.
- Reparar arranque de Linux.
- Obtener información de las particiones disponibles en modo rescate de Linux.
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:
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
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]
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:
Elegiremos «Archivo ISO del almacén de datos»:
Buscaremos el fichero ISO con el sistema operativo Linux CentOS (o el que estemos usando):
Marcaremos «Conectar»:
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:
Iniciaremos la máquina virtual:
Se iniciará la máquina virtual y accederá a la BIOS. Desde «Boot» elegiremos como unidad de arranque el CD-ROM Drive:
Se iniciará el arranque en el CD/DVD de Linux, elegiremos la opción «Troubleshooting»:
En las opciones de Troubleshooting elegiremos «Rescue a CentOS system»:
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:
También nos inidicará que para que el sistema montado en /mnt/sysimage sea el entorno raíz ejecutemos el comando:
chroot /mnt/sysimage
Si ha conseguido montar el sistema en /mnt/sysimage nos lo indicará a continuación:
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
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:
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:
1 |
dracut -v --force initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64 |
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:
Iniciará el proceso, que tardará unos minutos:
Cuando acabe volverá a la línea de comandos, indicando:
Creating initramfs image file … done
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 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…»:
Desplegaremos «Disco duro 1»:
En «Nodo de dispositivo virtual» tendremos «Controladora SCSI 0». Desplegaremos y elegiremos «IDE 0»:
Quedando IDE 0 y IDE (0:0) Disco duro 1:
Guardaremos los cambios y esperaremos a que el proceso de conversión del tipo de disco de ISCSI a IDE concluya:
Cuando haya finalizado, volveremos a iniciar la máquina virtual de forma normal. Si todo es correcto, el equipo arrancará normalmente:
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:
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
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
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.