Recuperación básica del sistema (CentOS/RHEL 7)

Cuando un sistema se corrompe, siempre existen formas de recuperarlo. Esta tarea requiere conocer el sistema bien. RHEL ofrece procedimientos para arrancar una consola en modo de recuperación, o bien en modo de emergencia.

Será necesario arrancar en uno de estos modos en alguna de las siguientes razones:

  • No se puede arrancar normalmente CentOS/RHEL 7.
  • Hay problemas de hardware o bien de software, y se necesita modificar algunos archivos del disco duro.
  • Se ha olvidad la contraseña de root

Entrar en el modo de recuperación

El modo de recuperación provee un entorno monousuario que permite reparar el sistema cuando es imposible completar un arranque completo. En este modo, el sistema trata de montar los sistemas de archivos locales e inicia algunos servicios importantes, pero:

  1. no activa las interfaces de red
  2. no permite a más usuarios loguearse al sistema simultáneamente (entorno monousuario)
  3. el gestor de arranque (grub2) no se ha corrompido

El procedimiento para acceder al modo de recuperación es:.

  1. Iniciar el sistema, y en la pantalla de inicio de Grub2, presionar la tecla e para editar.
  2. Buscar la línea que comienza con la palabra linux16 o bien linuxefi en sistemas UEFI
  3. Pulsar Ctrl+a y después Ctrl+e para saltar al inicio de la línea y luego al final respectivamente.
  4. Añadir el siguiente parámetro:
  5. systemd.unit=rescue.target
  6. Pulsar Ctrl+x para reiniciar el sistema con el parámetro

Entrar en el modo de emergencia

El modo de emergencia proporciona un entorno muy reducido que permite recuperar el sistema incluso en circunstancias en las que no es posible acceder al sistema en modo de recuperación. Se requiere la contraseña de rootEn este modo el sistema sucede lo siguiente:

  • Se monta el directorio raíz en modo de solo lectura.
  • No se montan otros directorios.
  • No se activan las interfaces de red.
  • Se inician solo los servicios esencias para que el sistema funcione.

Para acceder al modo de emergencia, seguir el siguiente procedimiento:

  1. Iniciar el sistema, y en la pantalla de inicio de Grub2, presionar la tecla e para editar.
  2. Buscar la línea que comienza con la palabra linux16 o bien linuxefi en sistemas UEFI
  3. Pulsar Ctrl+a y después Ctrl+e para saltar al inicio de la línea y luego al final respectivamente.
  4. Añadir el siguiente parámetro:
  5. systemd.unit=emergency.target
  6. Pulsar Ctrl+x para reiniciar el sistema con el parámetro

Cambiar la contraseña de root

Si se olvida la contraseña de root, no es posible iniciar los modos de recuperación o de emergencia. En tal caso hay que seguir el siguiente procedimiento:

  1. Iniciar el sistema, y en la pantalla de inicio de Grub2, presionar la tecla e para editar.
  2. Buscar la línea que comienza con la palabra linux16 o bien linuxefi en sistemas UEFI
  3. Pulsar Ctrl+a y después Ctrl+e para saltar al inicio de la línea y luego al final respectivamente.
  4. Añadir el siguiente parámetro:
  5. init=/bin/sh

    En lugar de iniciar el demonio init, el sistema iniciará /bin/sh, lo que significa que habrán funciones del sistema que no arranquen.

  6. Si se desea activar los mensajes del sistema, habra que borrar los parámetros rhgb y quiet.
  7. Pulsar Ctrl+x para reiniciar el sistema con el parámetro
  8. El sistema se montará en modo de solo lectura. Para que pase a ser de lectura, habrá que ejecutar el comando siguiente:
  9. mount -o remount, rw /
  10. Finalmente, se podrá ejectuar el comando passwd para cambiar la contraseña de root.
  11. Si el sistema de archivos está en modo de solo lectura, al ejecutar el comando passwd, se obtendrá el mensaje Authentication token manipulation error.

  12. Para garantizar que el contexto SELinux de los archivos se actualiza corretamente durante el siguiente reinicio, ejecutar el comando siguiente.
  13. touch /.autorelabel
  14. Ejecutar el comando exec /sbin/initpara continuar con el inicio normal del sistema o bien exec /sbin/reboot.

Restaurar la contraseña de root (método 2)

El siguiente procedimiento permite acceder el sistema desde un CD de Centos/RHEL 7.

  1. Iniciar el sistema con el disco de instalación de CentOS/RHEL 7.
  2. Elegir la opción Troubleshooting, tras lo que se abrirán otras opciones.
  3. Elegir la opción Recue a CentOS system
  4. A continuación aparecerá una ventana que nos da 3 opciones: Continue, Read-Only y Skip. Elegir la opción Continue
  5. El texto de la ventana indica lo siguiente: El entorno de recuperación intentará a continuación encontrar sus sistemas Linux instalados. Puede llevar a cabo cualquier cambio sobre él. Si quiere continuar con esto, elija 'Continue'. También puede elegir montar los sistemas de archivos en modo de solo lectura, en lugar de en modo de escritura eligiendo la opción 'Read-Only'. Si por alguna razón este proceso falla, puede elegir la opción 'Skip' que le mandará directamente a una consola de comandos sin realizar el montaje de los sistemas de archivos.

  6. Tras buscar y montar los sistemas de archivos, se mostrará una ventana etiquetada como 'Rescue', que nos indica que el sistema se ha montado en /mnt/sysimage. También nos sugiere el comando chroot /mnt/sysimage para trabajar con el sistema de archivos montado en /mnt/sysimage como directorio raíz. Hacer clic en Ok
  7. Una vez en la consola, recuerda que el teclado está configurado como inglés. Por ello algunos símbolos, como '/', '-' o '=' estarán cambiados de sitio. Busca los símbolos que necesitas desde un principio en el teclado y haz un mapa mental de ellos para evitar errores por inpaciencia.

  8. Ejecutar el comando chroot /mnt/sysimage para que el sistema de archivos del sistema rescatado pase a estar montado en '/'.
  9. A continuación, ejecutar el comando su -, para entrar como usuario root. Veremos que no se nos pide la contraseña.
  10. Ejecutar el comando passwd para cambiar la contraseña de root.
  11. Tras introducir la contraseña dos veces, podremos reiniciar el sistema, ejecutando tres veces el comando exit

Reinstalar el gestor de arranque

En ocasiones el gestor de arranque Grub2 puede ser borrado, corrompido o reemplazado por otro sistema operativo. En tal caso, puede ser imposible tan siquiera iniciar el sistema GNU/Linux. Los siguientes pasos detallan el procedimiento documentado para CentOS 7 para recuperarse de este problema:

  1. Iniciar el sistema con el disco de instalación de CentOS/RHEL 7.
  2. Elegir la opción Troubleshooting, tras lo que se abrirán otras opciones.
  3. Elegir la opción Recue a CentOS system
  4. A continuación aparecerá una ventana que nos da 3 opciones: Continue, Read-Only y Skip. Elegir la opción Continue
  5. El texto de la ventana indica lo siguiente: El entorno de recuperación intentará a continuación encontrar sus sistemas Linux instalados. Puede llevar a cabo cualquier cambio sobre él. Si quiere continuar con esto, elija 'Continue'. También puede elegir montar los sistemas de archivos en modo de solo lectura, en lugar de en modo de escritura eligiendo la opción 'Read-Only'. Si por alguna razón este proceso falla, puede elegir la opción 'Skip' que le mandará directamente a una consola de comandos sin realizar el montaje de los sistemas de archivos.

  6. Tras buscar y montar los sistemas de archivos, se mostrará una ventana etiquetada como 'Rescue', que nos indica que el sistema se ha montado en /mnt/sysimage. También nos sugiere el comando chroot /mnt/sysimage para trabajar con el sistema de archivos montado en /mnt/sysimage como directorio raíz. Hacer clic en Ok
  7. Una vez en la consola, recuerda que el teclado está configurado como inglés. Por ello algunos símbolos, como '/', '-' o '=' estarán cambiados de sitio. Busca los símbolos que necesitas desde un principio en el teclado y haz un mapa mental de ellos para evitar errores por inpaciencia.

  8. Ejecutar el comando chroot /mnt/sysimage para que el sistema de archivos del sistema rescatado pase a estar montado en '/'.
  9. Ejecutar el comando fdisk -l para comprobar cuál es el disco duro donde se encuentra Grub2 instalado. Coincidirá con el disco donde esté la partición de arranque.
  10. Asumiendo que el disco que buscamos es /dev/sda, ejecutamos el comando siguiente:
  11. /sbin/grub2-install /dev/sda
  12. Revisar el archivo /boot/grub/grub.conf, para comprobar que hay al menos una entrada para CentOS 7.
  13. Reiniciar el sistema ejecutando dos veces el comando exit.

Actividad 1. Modifica la contraseña de root (que has olvidado) empleando el procedimiento especificado para CentOS/RHEL. Comprueba que la contraseña ha cambiado en el siguiente inicio.

Comenta en clase el resultado del procedimiento.

Actividad 2. Supón que se ha corrompido el gestor de arranque Grub2 (esto puedes hacerlo como en anteriores ocasiones, empleando el comando 'dd'). Restaura el gestor de arranque empleando el procedimiento especificado para CentOS/RHEL. Comprueba que puedes arrancar de nuevo.

Comenta en clase el resultado del procedimiento.

Actividad 3. Supón que cierto sistema tiene problemas al arrancar, ya que se queda colgado al tratar de iniciar uno de los servicios. Dentro de dicho sistema se encuentran los archivos de una base de datos en producción. ¿Qué estrategia propondrías para recuperar los archivos sin alterar el sistema