202.2 - Recuperacion del sistema
Introduccion
La recuperacion del sistema es una de las habilidades mas criticas para un administrador Linux. Este subtema cubre las tecnicas necesarias para diagnosticar y reparar sistemas que no arrancan correctamente, incluyendo el uso de modos de rescate, entornos chroot, reparacion de sistemas de archivos y reinstalacion de cargadores de arranque.
Peso del subtema: 4
Modos de arranque para recuperacion
Modo usuario unico (Single-user mode)
El modo usuario unico proporciona acceso al sistema con privilegios de root y sin servicios de red activos. Es util para tareas de mantenimiento basico.
Como acceder:
- Agregar
single,1oSa los parametros del kernel en GRUB - En systemd: agregar
systemd.unit=rescue.target
# En la linea del kernel en GRUB, agregar al final:
linux /vmlinuz root=/dev/sda1 ro single
# Equivalente en systemd
linux /vmlinuz root=/dev/sda1 ro systemd.unit=rescue.targetModo de rescate (rescue mode)
El modo de rescate en systemd (rescue.target) monta los sistemas de archivos y carga servicios basicos, pero no inicia la red ni servicios multiusuario.
# Desde GRUB, agregar al kernel:
systemd.unit=rescue.target
# Desde un sistema en ejecucion:
systemctl isolate rescue.targetCaracteristicas del modo rescate:
- Monta todos los sistemas de archivos de
/etc/fstab - Carga los modulos del kernel necesarios
- Solicita la contrasena de root
- No inicia servicios de red
Modo de emergencia (emergency mode)
El modo de emergencia es el nivel de recuperacion mas basico en systemd. Proporciona un entorno minimo.
# Desde GRUB, agregar al kernel:
systemd.unit=emergency.target
# O simplemente:
emergencyCaracteristicas del modo emergencia:
- Solo monta el sistema raiz en modo solo lectura
- No monta ningun otro sistema de archivos
- No carga ningun servicio adicional
- Solicita la contrasena de root
- El administrador debe montar manualmente cualquier sistema de archivos necesario
Para el examen: Si el sistema no puede arrancar ni siquiera en modo rescate (por ejemplo, un
/etc/fstabcorrupto), el modo emergencia es la opcion correcta porque no intenta montar los sistemas de archivos de fstab.
Arranque con init=/bin/bash
Esta es la forma mas directa de obtener acceso a un sistema. Reemplaza completamente el proceso init por una shell.
# En GRUB, reemplazar init:
linux /vmlinuz root=/dev/sda1 ro init=/bin/bashProcedimiento tipico despues de arrancar con init=/bin/bash:
# El sistema de archivos raiz esta montado en solo lectura
# Remontar en lectura/escritura
mount -o remount,rw /
# Realizar las reparaciones necesarias
# Por ejemplo, restablecer la contrasena de root:
passwd root
# Remontar en solo lectura antes de reiniciar
mount -o remount,ro /
# Reiniciar (sync primero para asegurar escritura a disco)
sync
exec /sbin/init
# O forzar reinicio:
echo b > /proc/sysrq-triggerPara el examen: Cuando se arranca con
init=/bin/bash, el sistema de archivos raiz se monta en solo lectura. Es necesario remontarlo conmount -o remount,rw /antes de poder hacer cambios.
Recuperacion con Live CD/USB
Proceso general de recuperacion con Live CD
Cuando el sistema no puede arrancar en ningun modo, un Live CD o USB proporciona un sistema operativo funcional desde el que se puede acceder a los discos del sistema averiado.
# 1. Arrancar desde el Live CD/USB
# 2. Identificar las particiones del sistema
lsblk
fdisk -l
blkid
# 3. Montar el sistema de archivos raiz
mount /dev/sda2 /mnt
# 4. Montar particiones adicionales si es necesario
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/homeEntornos chroot
El comando chroot cambia el directorio raiz aparente para un proceso, permitiendo trabajar dentro del sistema instalado como si estuviera arrancado normalmente.
# Montar los sistemas de archivos virtuales necesarios
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run
# Entrar al entorno chroot
chroot /mnt /bin/bash
# Ahora estamos "dentro" del sistema instalado
# Podemos ejecutar comandos como si fuera el sistema real
# Para salir del chroot:
exit
# Desmontar los sistemas de archivos virtuales
umount /mnt/dev/pts
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/run
umount /mntPara el examen: Es fundamental montar
/dev,/procy/sysantes de hacer chroot. Sin estos sistemas de archivos virtuales, muchos comandos (comogrub-install) no funcionaran correctamente dentro del entorno chroot.
Alternativa moderna con arch-chroot:
Algunas distribuciones proporcionan scripts que automatizan el montaje de los sistemas de archivos virtuales:
# En Arch Linux y derivados
arch-chroot /mntReparacion del cargador de arranque
Reinstalacion de GRUB
Cuando el cargador de arranque esta danado o ha sido sobrescrito (por ejemplo, por una instalacion de Windows):
# Desde un Live CD, despues de montar y hacer chroot:
# Para sistemas BIOS/MBR:
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
# Para sistemas UEFI:
# Asegurarse de que la particion EFI esta montada
mount /dev/sda1 /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfgShell de rescate de GRUB
Si GRUB puede cargarse parcialmente pero no encuentra su configuracion, se presenta la shell de rescate de GRUB (grub rescue>):
# Listar particiones y buscar el directorio de GRUB
grub rescue> ls
grub rescue> ls (hd0,msdos1)/
grub rescue> ls (hd0,msdos1)/boot/grub/
# Establecer la particion correcta
grub rescue> set root=(hd0,msdos1)
grub rescue> set prefix=(hd0,msdos1)/boot/grub
# Cargar los modulos necesarios
grub rescue> insmod normal
grub rescue> normalSi se accede a la shell normal de GRUB (grub>), se tiene mas funcionalidad:
grub> ls
grub> set root=(hd0,msdos1)
grub> linux /vmlinuz root=/dev/sda1 ro
grub> initrd /initrd.img
grub> bootReparacion de sistemas de archivos
fsck - Comprobacion y reparacion
El comando fsck debe ejecutarse en sistemas de archivos desmontados o montados en solo lectura:
# Comprobar y reparar un sistema de archivos ext4
fsck /dev/sda2
# Reparacion automatica sin preguntas
fsck -y /dev/sda2
# Comprobar tipo especifico
fsck.ext4 /dev/sda2
e2fsck /dev/sda2
# Para XFS (debe estar desmontado)
xfs_repair /dev/sda3
# Verificar sin reparar
fsck -n /dev/sda2Para el examen: NUNCA ejecutar
fscken un sistema de archivos montado en modo lectura/escritura. Esto puede causar corrupcion de datos severa. Si es necesario reparar la particion raiz, arrancar en modo emergencia o desde un Live CD.
Forzar fsck en el proximo arranque
# Crear el archivo indicador en la raiz
touch /forcefsck
# O usar el parametro del kernel
# En GRUB agregar: fsck.mode=force
# Con tune2fs, establecer el contador de montajes
tune2fs -C 100 /dev/sda1Recuperacion de /etc/fstab
Un archivo /etc/fstab corrupto o incorrecto puede impedir el arranque del sistema.
Procedimiento de reparacion
# 1. Arrancar en modo emergencia (no intenta montar fstab)
# Agregar al kernel: systemd.unit=emergency.target
# 2. Remontar raiz en lectura/escritura
mount -o remount,rw /
# 3. Obtener informacion de las particiones
blkid
lsblk -f
# 4. Editar fstab con la informacion correcta
vi /etc/fstab
# Formato de /etc/fstab:
# <dispositivo> <punto_montaje> <tipo_fs> <opciones> <dump> <pass>
# UUID=xxxx / ext4 defaults 1 1
# UUID=yyyy /home ext4 defaults 1 2
# UUID=zzzz swap swap defaults 0 0Para el examen: Si fstab tiene errores, arrancar con
systemd.unit=emergency.targetes la opcion mas segura porque no intenta montar las entradas de fstab. El modo rescate si intenta montarlas y podria fallar.
Backup y restauracion del MBR
Respaldo del MBR con dd
El MBR (Master Boot Record) ocupa los primeros 512 bytes del disco:
# Respaldar el MBR completo (446 bytes bootloader + 64 bytes tabla + 2 bytes firma)
dd if=/dev/sda of=/backup/mbr_sda.img bs=512 count=1
# Respaldar solo el bootloader (sin tabla de particiones)
dd if=/dev/sda of=/backup/bootloader_sda.img bs=446 count=1
# Restaurar el MBR completo (PELIGROSO: incluye tabla de particiones)
dd if=/backup/mbr_sda.img of=/dev/sda bs=512 count=1
# Restaurar solo el bootloader (seguro: no toca la tabla de particiones)
dd if=/backup/bootloader_sda.img of=/dev/sda bs=446 count=1| Seccion del MBR | Bytes | Offset |
|---|---|---|
| Codigo del bootloader | 446 | 0-445 |
| Tabla de particiones | 64 | 446-509 |
| Firma de arranque (0x55AA) | 2 | 510-511 |
Para el examen: Al restaurar el MBR, es importante saber la diferencia entre restaurar los 512 bytes completos (que incluye la tabla de particiones) y restaurar solo los primeros 446 bytes (solo el bootloader). Restaurar los 512 bytes en un disco con tabla de particiones diferente destruira la tabla actual.
Imagenes de disco con dd
# Crear imagen completa de un disco
dd if=/dev/sda of=/backup/disco_completo.img bs=4M status=progress
# Restaurar imagen a un disco
dd if=/backup/disco_completo.img of=/dev/sda bs=4M status=progress
# Crear imagen comprimida
dd if=/dev/sda bs=4M | gzip > /backup/disco.img.gz
# Restaurar imagen comprimida
gunzip -c /backup/disco.img.gz | dd of=/dev/sda bs=4M
# Clonar un disco a otro
dd if=/dev/sda of=/dev/sdb bs=4M status=progressProcedimiento completo de recuperacion
Resumen del flujo de trabajo tipico de recuperacion:
- Intentar modo rescate: agregar
systemd.unit=rescue.targetal kernel - Si falla, intentar modo emergencia: agregar
systemd.unit=emergency.target - Si falla, intentar init=/bin/bash: agregar
init=/bin/bash - Si nada funciona, usar Live CD/USB:
- Arrancar desde medio externo
- Identificar particiones (
lsblk,blkid) - Montar el sistema (
mount /dev/sdXY /mnt) - Montar sistemas virtuales (
/dev,/proc,/sys) - Hacer chroot (
chroot /mnt) - Reparar el problema
- Reinstalar GRUB si es necesario
- Salir del chroot y reiniciar
Resumen de archivos y comandos clave
| Recurso | Funcion en recuperacion |
|---|---|
init=/bin/bash | Arranque sin init, shell directa |
rescue.target | Modo rescate con servicios basicos |
emergency.target | Modo emergencia minimo |
chroot /mnt | Entrar en el sistema montado |
fsck /dev/sdX | Reparar sistema de archivos |
grub-install | Reinstalar bootloader |
dd if= of= bs= | Copiar/respaldar sectores de disco |
mount -o remount,rw / | Remontar raiz en lectura/escritura |
blkid | Identificar particiones y UUIDs |
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
- Con
init=/bin/bashel sistema raiz esta en solo lectura — es obligatorio ejecutarmount -o remount,rw /antes de poder hacer cualquier cambio. Olvidar esto es un error muy comun que hace que las modificaciones (como cambiar la contrasena de root) no se guarden - Restaurar MBR completo (512 bytes) vs solo bootloader (446 bytes) — restaurar los 512 bytes incluye la tabla de particiones, lo que destruira la tabla actual si el disco ha cambiado. Para restaurar solo el bootloader sin tocar particiones, usa
bs=446 count=1 fsckNUNCA en un sistema de archivos montado en lectura/escritura — ejecutarfscken un FS montado rw causa corrupcion severa. Debe estar desmontado o montado en solo lectura. Esta regla es una pregunta clasica del examen- Montar
/dev,/procy/sysantes dechroot— sin estos sistemas de archivos virtuales, comandos comogrub-install,update-initramfsopasswdfallan dentro del entorno chroot. Es un paso que el examen pregunta frecuentemente emergency.targetno monta fstab,rescue.targetsi — si el problema esta en/etc/fstab(linea incorrecta o dispositivo inexistente), arrancar enrescue.targetfallara porque intentara montar todo.emergency.targetes la opcion segura en ese casoddno pide confirmacion — a diferencia decpomv,ddejecuta la copia inmediatamente sin preguntar. Invertirif=yof=destruye los datos del disco de origen. Es la herramienta mas peligrosa si se usa incorrectamentetouch /forcefsckvsfsck.mode=force— ambos fuerzan una verificacion en el proximo arranque, perotouch /forcefsckcrea un archivo indicador que se elimina tras el chequeo, mientras quefsck.mode=forcees un parametro del kernel que se pasa desde GRUB- El orden de recuperacion importa — primero intentar modo rescate, luego emergencia, luego
init=/bin/bash, y como ultimo recurso Live CD. El examen puede presentar un escenario y preguntar cual es la opcion mas adecuada