Tabla de Contenidos

202.2 System Recovery

Perteneciente a LPI Topic 202: System Startup

Cargador de arranque

GRUB (Grand Unified Bootloader) cargador de arranque estándar utilizado en la actualidad para Linux.

Es un pequeño programa cargado en el MBR (Master Boot Record) cuya función es realizar la carga del kernel u otros sistemas operativos delegando en otros caargados.

GRUB debe conocer:

Grub 1 (legacy)

Versión 1 de GRUB. Versión ya obsoleta, pero disponible en algunos sistemas.

Fichero de configuración /boot/grub/menu.lst

Ejemplo:

default 0
timeout 10
title Ubuntu 9.10, kernel 2.6.31-16-generic
kernel /boot/vmlinuz-2.6.31-16-generic root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.31-16-generic

GRUB 2

Versión actual de GRUB.

Fichero de configuración /boot/grub/grub.cfg y no se debe modificar directamente.

Las opciones modificables por el usuario están en:

En /etc/grub.d/ hay una serie de ficheros nombrados según el orden en que se usarán (00_header va antes que 05_debian_theme, por ejemplo)

El fichero de configuración se genera automáticamente mediante el uso de alguno de los dos comandos:

Para crear un nuevo fichero de configuración:

grub-mkconfig -o /boot/grub/grub.cfg

Aplicar cambios:

update-grub

Las entradas correspondientes a un sistema operativo en el archivo de configuración comienzan con la palabra menuentry y el contenido va entre llaves:

menuentry 'Linux 3.14.0' {
    set root='hd0,msdos1'
    linux /boot/vmlinuz-3.14.0 root=/dev/sda1 ro quiet
    initrd /boot/initrd.img-3.14.0
}

Podemos interrumpir el arranque normal del GRUB si cuando nos aparece en pantalla usamos las flechas del teclado para seleccionar otras opciones (así interrumpimos la cuenta atrás). Una vez hecho esto podemos seleccionar una entrada y editarla usando la tecla E. Una vez editada, pulsamos F10 para arrancar con los cambios realizados.

Aunque estamos editando partes del fichero /boot/grub/grub.cfg, los cambios que se hagan durante el arranque normal del GRUB no son permanentes.

Podemos pasarle parámetors al kernel para el arranque, añadiendo opciones en la línea linux del GRUB.

Reinstalar GRUB

grub-install [--root-directory=/boot] <DISPOSITIVO>

Ejemplo:

grub-install /dev/sda1

Si tenemos montado un RAID 1 por software, deberíamos instalar GRUB en los dos discos por si uno cae, poder arrancar con el otro.

Ejemplos recuperación del sistema

El siguiente apartado trata de aplicar los conocimientos adquiridos para recuperar un sistema en caso de errores, utilizando los siguientes conceptos:

Reiniciar contraseña de root

Si no sabemos la contraseña de root o la hemos olvidado y tenemos acceso físico al sistema, podemos utilizar GRUB para acceder como root y establecer la contraseña que queramos.

Utilizamos como proceso de init /bin/bash en modo lectura-escritura para poder escribir en el sistema de ficheros.

Al editar la entrada deseada en el GRUB, le pasamos una opción más a la línea linux:

linux /boot/vmlinuz-3.16.0.4-amd64 root=/dev/sda1 quiet init=/bin/bash rw

Con init=/bin/bash indicamos que en el arranque del kernel se saltará el proceso de arrancar el proceso init tal cual y va a arrancar /bin/bash. Al arrancar en esta shell, tendríamos una consola de root.

La opción rw es para que podamos hacer modificaciones en los ficheros de la partición y así realizar cambios en la contraseña de root:

passwd <NUEVA_CONTRASEÑA>

Recuperar GRUB tras sobrescribir el MBR

Si se ha sobrescrito el MBR sin querer, nos quedaremos sin GRUB.

Lo que habría que hacer es arrancar desde un sistema Live CD. Identificar el disco que tiene el problema e instalamos el GRUB:

grub-install /dev/sda1

Suponiendo que el MBR esté en /dev/sda1

Tests

El GRUB instalado en el MBR fue accidentalmente sobrescrito. Después de arrancar con un disco de recuperación, ¿cómo podemos recuperarlo?

Una máquina Linux se queda congelada durante el arranque. Para arrancar directamente en una shell y así poder editar los ficheros y arrancar los servicios, ¿qué instrucción hay que pasarle al kernel para el arranque?