LPIC-2 Tema 202.2: Recuperación del sistema Linux

Nueva entrada sobre las certificaciones LPIC-2, esta vez centrada en el Tema 202.2, dedicado a la recuperación del sistema Linux. Algo importante para que los futuros administradores de sistemas sepan cómo enfrentarse a situaciones en las que se necesite restablecer el sistema tras los problemas que pueden surgir.

Los candidatos deberán demostrar sus competencias en temas de restauración, también durante el proceso de arranque y el recovery mode, conocer los detalles de arranque en un NVMe, entrar en el shell de GRUB, cambio del kernel por defecto para el arranque, herramientas de recuperación y modos de emergencia de systemd, etc.

Algunos de los directorios y ficheros, así como ciertas herramientas, ya las he comentado en otros artículos. Para no alargar demasiado este artículo enlazaré hacia esos contenidos.

Directorios importantes

Para la recuperación del sistema Linux es importante conocer dónde están las imágenes del kernel y los componentes esenciales para el arranque, como el gestor de arranque o la partición EFI:

  • /boot: aquí encontrarás todos los subdirectorios y ficheros importantes para el arranque. Como las imágenes de las versiones del kernel, el bootloader, etc. Ver más información aquí.
  • /boot/grub/: es el subdirectorio para el gestor de arranque y sus ficheros de configuración.  Ver más información aquí.
  • /boot/initrd.img o initramfs: estas imágenes necesarias para el arranque, generando un sistema de ficheros temprano en RAM para ir cargando los componentes necesarios.  Ver más información aquí.
  • /boot/efi/: es la partición para sistemas EFI, y puede compartirse entre varios sistemas operativos si coexisten.  Ver más información aquí.
  • /etc/inittab: este otro fichero es de configuración donde se puede configurar, por ejemplo, el runlevel. Recuerda que el single-user es importante para temas de recuperación… Ver más información aquí.

En cuanto a las tablas EFI System Partition (ESP) y MBR, también sería importante que conozcas las diferencias, e incluso entre BIOS y UEFI.

Herramientas para la recuperación

Algunas de estas herramientas también las he descrito en otros artículos, como por ejemplo la de systemd. Simplemente sería cuestión de aplicarlas a la recuperación del sistema.

  • mount: sirve para montar particiones. Ver más información aquí.
  • fsck: es una herramienta para comprobar el estado y reparar particiones. Ver más información aquí.
  • telinit, init: con ellas podrás cambiar los runlevels, esto podría hacer entrar al sistema en un estado apropiado para la recuperación. Ver más información aquí.
  • systemctl: es la herramienta para el control de systemd y gestor de servicios. Por supuesto, puede emplearse con fines de recuperación como verás a continuación, como cuando usas las opciones emergency o rescue para entrar en esos modos. Ver más información aquí.

Si el sistema no puede arrancar de forma normal, entonces podrás usar el prompt del gestor de arranque, o el Recovery Mode que tienen algunas distros en el menú del gestor de arranque.

Recuperación del sistema que no arranca desde GRUB

Una de las opciones que tienes para usar las herramientas de diagnóstico y recuperación cuando el sistema no arranca con normalidad, es desde el gestor de arranque GRUB. Algunas distros como Ubuntu tienen opciones avanzadas para entrar en un Recovery Mode, otras permite iniciar en un target de systemd llamado Emergency Mode.

Algunos menús de GRUB incluyen entradas que también son interesantes para el diagnóstico y reparación, como Memtest86+ para realizar test de la memoria principal y comprobar si tiene problemas.

Recuerda que GRUB no llama a los medios de almacenamiento de la misma forma que lo hace Linux, y que en estos modos no están montadas las particiones, por lo que podrás trabajar con ellas con herramientas como fsck.

  1. Enciende la máquina para poder acceder al menú de GRUB. Si no aparece el menú, puedes pulsar la tecla MAYÚSCULAS (Shift) derecha durante el arranque para que aparezca.
  2. Para poderte controlar el menú de GRUB puedes usar:
    • Las teclas de las flechas  y ↓ para moverte por el menú.
    • Usa INTRO para seleccionar la entrada que necesitas.
    • La tecla E para entrar en el editor de órdenes de arranque.
    • O la tecla C para entrar en el CLI Mode, es decir, la línea de comandos.
    • ESC te permitirá volver al menú principal de GRUB en cualquier momento.
  3. Según las opciones que te ofrece, podrías emplear varias posibilidades:
    • Pulsar C para entrar en el shell donde poder ejecutar comandos para la recuperación. Verás que el prompt es grub>,
    • En caso de un problema mayor, como haber eliminado el sistema, verás que directamente aparece grub rescue>, un prompt donde también podrás ejecutar comandos de recuperación.
    • Si seleccionas el Advanced Mode (en algunas distros aparece con el nombre de la distro seguido de recovery) de algunas distros y el (Recovery Mode), entonces también podrás entrar en opciones interesantes para la recuperación. Por cierto, puede que haya varias entradas así debido a que puede que tengas varias versiones del kernel instaladas (debes seleccionar la tuya actual). Por ejemplo, en Ubuntu, cuando vas a Advanced Mode > Recovery Mode, luego te encuentras un menú con las opciones:
      • resume: vuelve al arranque normal.
      • clean: entra en un shell y te dará unas instrucciones que puedes seguir para poder liberar algo de espacio en el disco duro. Muy práctico si tu problema es que se ha colapsado el espacio y no tienes las particiones separadas.
      • dpkg: permite reparar o desinstalar cualquier paquete que esté roto y esté originando algún conflicto. Evidentemente, necesitará conectarse con los repositorios, por lo que necesita conexión a la red (ver opción Network).
      • fsck: como ya sabes, con esta herramienta podrás revisar el sistema de ficheros y particiones, por si hubiera algún problema con ellas. Puede solucionar problemas con las particiones, dar formato, buscar bytes corruptos y solucionarlo, etc.
      • grub: analiza y actualiza el propio gestor de arranque.
      • network: permite activar la red para tener conexión.
      • root: entra en un shell con privilegios de superusuario. Muy interesante para realizar todos los cambios o usar las herramientas de diagnóstico y reparación que necesites.
      • system-sumary: resumen del sistema.
    • Con E para el editor, puedes por ejemplo agregar al final de las configuraciones (puedes usar Ctrl+E para saltar al final) la línea systemd.unit=emergency.target y luego Ctrl+X para arrancar con este modo de emergencia. Esto te permitirá también entrar en un sistema con un shell mínimo desde donde actuar.
    • Por cierto, si en el punto anterior en vez de esa línea usas esta otra systemd.unit=rescue.target siguiendo los mismos pasos, entonces entrarás en el Recovery Mode de la misma manera que lo haces desde el menú de GRUB. Puede ser una buena opción si por algún motivo no tienes la entrada directamente en el menú.
  4. Dentro de estos modos, ejecuta los comandos necesarios para poder diagnosticar el problema, reparar o modificar configuraciones conflictivas.

Recuerda que GRUB no designa a las unidades del mismo modo que Linux, por tanto, deberías conocer la nomenclatura a los que corresponde para poder trabajar con ellas:

  • Linux emplea /dev/sda, /dev/sdb,… para los discos, mientras GRUB los llama hd1, hd2,…
  • En cambio, para las particiones, Linux usa /dev/sda0, /dev/sda1, d…, mientras GRUB emplea hd1,0, hd1,1,…

Recuperación del sistema que no arranca desde UEFI Shell

Si el gestor de arranque tampoco está funcionando, también tienes otra alternativa para realizar algunas reparaciones esenciales y comprobaciones desde el shell que ofrece UEFI.

Cuando se pierde la entrada del boot que apunta a .efi, entonces no podrías entrar en tu bootloader, y lo único que verías es un prompt Shell> que es el que ofrece el UEFI.

Para poder trabajar con las particiones, lo primero es conocer la nomenclatura empleada por UEFI, que también es diferente a la de Linux y GRUB. Verás que antes del prompt aparece Mapping table y te muestra los dispositivos mapeados a tu disposición. Los que te interesan son los que comienzan por FS. Para /dev/sda tendrás FS0, para /dev/sdb tienes el equivalente FS1, y así…

Si por algo has perdido de vista estas designaciones, puedes listar los medios y acceder a una con:

#Listar los dispositivos de almacenamiento disponibles
map

#Accede a fs0
fs0

#Para ver los comandos que puedes usar u obtener ayuda, puedes usar uno de estos os
?
help

Recuerda que en este shell el teclado tomará el layout en inglés, por lo que algunas teclas cambiarán de lugar. Por ejemplo, en la Ñ tendrás :, en la – está /, etc. Otra cosa importante es que las barras para las rutas de los directorios son invertidas \, en vez de la /.

Teclado layout inglés equivalente teclas español

Por ejemplo, para tratar de recuperar la entrada que apunta hacia .efi y que vuelve a arrancar el sistema, podrías usar los siguientes pasos:

#Entra en fs0 (que suele ser el disco de arranque)
fs0

#Localiza el .efi (su nombre es grubx64.efi para Linux o bootx64.efi para Windows) 
#Usa los comandos cd y ls para navegar hasta localizar el directorio EFI con esos ficheros

#Una vez localizado, apunta la ruta completa hacia el .efi. Por ejemplo: 
# fs0:\EFI\ubuntu\grubx64.ef

#Ahora comprueba el estado actual del arranque
bcfg boot dump

#Verás una serie de entradas para los medios arrancables de tu sistema. Y debes agregar una para el EFI
#En este caso, una entrada boot en la posición 0 de fs0 para una distro Ubuntu.
#Puedes modificar la etiqueta y poner otro nombre, como Windows, Debian, o el sistema que tengas...
bcfg boot add 0 fs0:\EFI\ubuntu\grubx64.efi "Ubuntu"

#Ya podrás salir del shell 
exit

Por supuesto, tienes un sin fin de herramientas adicionales que puedes usar desde este shell, e incluso editar ficheros con edit. Por ejemplo, podrías alterar las entradas del boot (¡No lo hagas si no sabes lo que estás haciendo!):

#Eliminar una entrada del boot
bcfg boot rm 0

#Cambiar de orden una entrada. Por ejemplo, la 3 ponerla como prioritaria (0)
bcfg boot mv 3 0

Más información – UEFI Shell Manual

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar