Objetivo:
Comprender y aplicar los procedimientos críticos de recuperación de un sistema Linux tras una actualización fallida de paquetes o una corrupción severa del sistema de archivos, utilizando un entorno de rescate Live USB, cambio de raíz (chroot), reparación de bloques con fsck y reconstrucción de paquetes rotos mediante el gestor APT.
Escenario:
- Herramientas: Live USB de rescate, terminal Linux, comandos
chroot,mount,fsck,dpkgyapt. - Conceptos analizados: Consistencia de sistemas de archivos ext4/XFS, gestión de dependencias de paquetes rotos, puntos de montaje virtuales y recuperación de entornos de producción colapsados.
- Proceso clave: Arranque mediante medio externo, vinculación de particiones internas, reparación de la integridad de almacenamiento, entrada en entorno chroot y reconfiguración del gestor de paquetes para reparar el sistema operativo.
Escenario Real: Servidor con actualización interrumpida y arranque bloqueado
Un administrador ejecutó una actualización masiva del sistema operativo en un servidor de producción que se interrumpió de forma abrupta debido a un corte de red y una caída de tensión. Al reiniciar, el sistema de ficheros presenta corrupción masiva y el gestor de paquetes se encuentra en un estado inconsistente, impidiendo el arranque normal del equipo. Debes utilizar un entorno de rescate externo para recuperar la integridad de los datos y reparar el sistema de paquetes.
chroot y la reparación de paquetes es el recurso definitivo para un administrador de sistemas.NOTA: Para realizar esta práctica de simulación de rescate, asegúrate de disponer de una máquina virtual o un entorno de prácticas con acceso a un medio Live USB o ISO de rescate.
Instrucciones:
Fase 1: Arranque externo (Live USB) e identificación de volúmenes:
- Arrancar el equipo utilizando un medio de rescate externo (Live USB).
- Abrir una terminal en el entorno Live y listar las particiones de almacenamiento para localizar la partición raíz dañada (ej.
/dev/sda2) mediante:lsblkosudo fdisk -l
Fase 2: Comprobación y reparación del sistema de archivos con fsck:
- Asegurarse de que la partición afectada NO se encuentra montada.
- Ejecutar una comprobación exhaustiva y reparación automática de bloques y metadatos dañados sobre la partición raíz:
sudo fsck -f -y /dev/sda2 - Crear un directorio temporal de montaje y montar la partición raíz reparada:
sudo mkdir -p /mnt/rescate sudo mount /dev/sda2 /mnt/rescate - Si el sistema utiliza una partición EFI independiente, móntala en su ruta correspondiente dentro del directorio de rescate:
sudo mount /dev/sda1 /mnt/rescate/boot/efi
Fase 3: Vinculación de directorios virtuales y cambio de raíz (chroot):
- Montar los sistemas de archivos virtuales del kernel para compartirlos con el entorno de rescate:
sudo mount --bind /dev /mnt/rescate/dev sudo mount --bind /proc /mnt/rescate/proc sudo mount --bind /sys /mnt/rescate/sys sudo mount --bind /run /mnt/rescate/run - Acceder al interior del sistema dañado mediante el comando de cambio de raíz:
sudo chroot /mnt/rescate
Fase 4: Reparación de paquetes rotos y actualización del sistema:
- Una vez dentro del entorno
chroot, forzar la reconfiguración de paquetes pendientes o interrumpidos:dpkg --configure -a - Corregir posibles dependencias rotas y completar las instalaciones interrumpidas utilizando el gestor de paquetes APT:
apt --fix-broken install - Actualizar y limpiar la caché de paquetes para asegurar la consistencia del software instalado:
apt update && apt upgrade -y - Salir del entorno chroot y desmontar ordenadamente todos los directorios vinculados antes de reiniciar:
exit sudo umount /mnt/rescate/dev /mnt/rescate/proc /mnt/rescate/sys /mnt/rescate/run sudo umount /mnt/rescate/boot/efi # Si procede sudo umount /mnt/rescate sudo reboot
Verificación:
- Comprobar que tras retirar el medio externo y reiniciar el equipo, el sistema operativo arranca con normalidad y permite iniciar sesión sin errores de paquetes.
- Verificar mediante
sudo apt statuso ejecutando una comprobación de estado que el sistema de paquetes se encuentra totalmente consistente y operativo.
Posibles errores y resolución de problemas:
Si al intentar ejecutar comandos de APT dentro del entorno chroot obtienes un error persistente de resolución de nombres o incapacidad para conectar a los repositorios, se debe a la falta de conectividad de red.
Solución: Copia temporalmente el fichero de resolución DNS del sistema Live al directorio de rescate para habilitar el acceso a Internet:
sudo cp /etc/resolv.conf /mnt/rescate/etc/resolv.conf
Alternativa directa: Limpieza rápida de paquetes bloqueados
Si el sistema operativo arranca con normalidad pero muestra errores continuos al intentar instalar nuevo software debido a un bloqueo previo del gestor APT causado por una actualización interrumpida, puedes desbloquearlo ejecutando directamente la limpieza de ficheros de bloqueo:
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
Preguntas de reflexión:
- ¿Por qué es un requisito indispensable ejecutar el comando
fsckcon el sistema de archivos completamente desmontado o en modo de solo lectura? - ¿Qué función concreta realiza el comando
dpkg --configure -aal reparar un sistema operativo que sufrió una interrupción durante una actualización de paquetes? - ¿Por qué es necesario copiar o enlazar el fichero
/etc/resolv.confdentro del entorno de rescate antes de intentar utilizar el gestor de paquetes APT mediantechroot? - ¿Qué riesgos implica para la estabilidad del sistema forzar la reparación de dependencias rotas en entornos de producción sin realizar previamente una copia de seguridad?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué es un requisito indispensable ejecutar el comando fsck con el sistema de archivos completamente desmontado o en modo de solo lectura?
Porque si el sistema de archivos está montado en modo de lectura y escritura, el kernel y las aplicaciones continúan modificando bloques y metadatos de forma activa en el disco. Lanzar una reparación de estructuras con fsck en ese estado generaría una corrupción masiva e irreversible de los datos al interferir con las operaciones de escritura en curso.
2. ¿Qué función concreta realiza el comando dpkg --configure -a al reparar un sistema operativo que sufrió una interrupción durante una actualización de paquetes?
Revisa la base de datos interna del gestor de paquetes en busca de aquellos paquetes que quedaron a mitad de su proceso de instalación o configuración (etiquetados como unpacked o half-configured) y reanuda de forma secuencial los scripts de configuración pendientes para devolver el sistema a un estado consistente.
3. ¿Por qué es necesario copiar o enlazar el fichero /etc/resolv.conf dentro del entorno de rescate antes de intentar utilizar el gestor de paquetes APT mediante chroot?
Porque el entorno chroot aísla el directorio raíz, haciendo que los binarios del sistema dañado no tengan acceso a la configuración de red y servidores DNS del sistema Live externo. Sin el fichero resolv.conf adaptado, el sistema no podrá resolver nombres de dominio ni conectar con los repositorios oficiales en Internet.
4. ¿Qué riesgos implica para la estabilidad del sistema forzar la reparación de dependencias rotas en entornos de producción sin realizar previamente una copia de seguridad?
Forzar la resolución o eliminación de paquetes con dependencias conflictivas puede provocar la desinstalación masiva de librerías críticas o componentes esenciales del sistema operativo (como entornos gráficos, demonios de red o herramientas del kernel), dejando el servidor en un estado aún más inoperativo o inaccesible de forma remota.