Cuando Linux no arranca correctamente y te muestra un mensaje de texto de busybox durante initramfs, es bastante frustrante. A menudo, la causa principal es algún tipo de fallo del sistema de archivos, como un daño en un superbloque o una discrepancia en los UUID del disco. Sí, no siempre es tan obvio: a veces el sistema muestra mensajes crípticos sobre «INCONSISTENCIA INESPERADA» o simplemente indica que /dev/sda1 no existe. Esto se debe a que Linux no puede encontrar el volumen que necesita, probablemente porque fstab no está alineado con los UUID actuales del disco o porque un superbloque se corrompió.¿Lo bueno? Una vez superado el shock inicial, solucionarlo suele implicar algunos comandos fsck manuales o ajustar la configuración, y el sistema puede volver a funcionar. No siempre es sencillo y a veces ocurren cosas extrañas, como errores de montaje o que el sistema simplemente entre en modo de emergencia. Comprender los conceptos básicos puede ahorrarte muchos dolores de cabeza.
Cómo solucionar problemas de arranque o del sistema de archivos en Linux cuando se ejecuta BusyBox
Comprueba si el sistema de archivos raíz necesita un fsck manual
Este es un problema común. Si el mensaje indica algo como /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY, es señal de que el sistema de archivos tiene problemas. Normalmente, ejecutar # fsck /dev/sda1 -yinitramfs corrige la corrupción, pero primero debe desmontar el volumen si está montado. A veces, el volumen estará montado o el sistema no le permitirá ejecutar fsck directamente.
- Arranca en el shell de busybox e intenta desmontar el volumen raíz:
# umount /dev/sda1. Si está montado, ahí tienes la señal.¿No has tenido suerte? Quizás tengas que arrancar desde una memoria USB externa o un disco de rescate y ejecutar fsck desde allí. - Tras desmontar, ejecute
# fsck /dev/sda1 -y. Analizará y corregirá los errores del sistema de archivos. Aparecerán algunas indicaciones para solucionar los problemas, pero con -y se confirman automáticamente las reparaciones. En algunas configuraciones, este comando es suficiente para recuperar el sistema.
Reparar manualmente un superbloque roto
Si fsck se queja o recibe un error sobre un superbloque dañado, también puede repararlo. Primero, identifique los superbloques de respaldo con # sudo dumpe2fs /dev/vda2 | grep superblock. Busque las ubicaciones de los superbloques de respaldo, generalmente cerca de bloques como el 98304 o similares.
- A continuación, ejecute una comprobación con uno de esos superbloques de respaldo, por ejemplo:
# sudo fsck -b 98304 /dev/vda2 -y. - Si fsck informa de problemas y pregunta, responde que sí. Verás que el sistema soluciona los problemas y, con suerte, después de eso, el volumen volverá a estar limpio.
En algunas máquinas, el volumen podría seguir montado o fsck podría no ejecutarse. En ese caso, tendrás que arrancar desde un entorno en vivo y realizar las reparaciones allí. Porque, claro, Linux lo hace más difícil de lo necesario.
Solucionar problemas de incompatibilidad del UUID del volumen de arranque o fstab
Si lo ves, ALERT! /dev/sda1 does not exist. Dropping to a shell.podría ser que fstab esté haciendo referencia al dispositivo incorrecto según los UUID. Para solucionarlo, arranca desde un medio en vivo y ejecuta # sudo blkidpara listar los UUID de los discos actuales. Comprueba el UUID de la partición montada y compáralo con el de /etc/fstab.
- Monte su partición raíz:
# sudo mount /dev/sda2 /mnt. - Verifique
/mnt/etc/fstaby actualice la línea UUID si es incorrecta. Por ejemplo:UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 / ext4 errors=remount-rw 0 1 - Guarde y desmonte, luego reinicie. Los errores deberían desaparecer si ese era el problema raíz.
Solucione problemas de hardware o puerto SATA mediante grub
Si la BIOS o la configuración de hardware de su sistema interfieren con la detección de discos (como números aleatorios de puertos SATA), editar los parámetros de arranque de grub puede ser útil. Arranque en modo de emergencia o desde un disco Live y luego edite /boot/grub/grub.cfg.
- Encuentra la línea que se ve así:
Linux /boot/vmlinuz-4.15.0-70-generic root=/dev/sda1 rw quiet elevator=noop fsck.repair=yes - Reemplace la ruta del dispositivo raíz con su UUID para mayor estabilidad, como:
Linux /boot/vmlinuz-4.15.0-70-generic root=UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 ro quiet elevator=noop fsck.repair=yes
Esto evita que nombres de dispositivo no coincidentes provoquen fallos de arranque, especialmente si los puertos SATA se reasignan de forma extraña. Tenga cuidado si actualiza el kernel o grub; a veces, estas configuraciones se revierten y tendrá que rehacerlas.
No se garantiza que todas estas correcciones funcionen siempre, pero han salvado algunos sistemas con los que he estado trabajando. Es un poco pesado revisar registros y comandos, pero al menos es mejor que reinstalar Linux desde cero cada vez.
Resumen
- Compruebe fsck manualmente si surgen errores del sistema de archivos durante el arranque.
- Utilice dumpe2fs para encontrar superbloques de respaldo y restaurarlos si es necesario.
- Haga coincidir los UUID en /etc/fstab con
blkidcuando la falta de coincidencia de UUID causa problemas de arranque. - Edite las configuraciones de grub para tener en cuenta peculiaridades del hardware o reasignaciones de SATA.
Resumen
Sinceramente, solucionar problemas de arranque en Linux puede parecer una locura, sobre todo con todas las variables: daños en el sistema de archivos, errores de UUID y fallos de hardware. Pero una vez que se domina qué comando ejecutar y dónde buscar, suele ser posible solucionarlo sin una reinstalación completa. Solo requiere paciencia y una resolución de problemas lógica. Ojalá esto ayude a alguien a ahorrarse algo de tiempo y frustración.