Perteneciente a LPI Topic 202: System Startup
mountfsckinittab, telinit and init with SysV init/boot/, /boot/grub/ and /boot/efi/grub-installefibootmgrinitrd, initramfssystemctlGRUB (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:
/)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
default: indica qué sistema operativo arranca primerotimeout: cuenta atrás hasta que se arranque el sistema por defectotitle: nombre de la opción del menúkernel: ubicación del kernelinitrd: ramdiskVersió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:
/etc/default/grub: opciones/etc/grub.d/: archivos con información de la configuración de GRUB.
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
}
set root especifica el disco y la partición a utilizarlinux especifica el archivo del kernel a usar y la particióninitrd especifica el archivo ramdisk que se usará para descomprimir el kernel.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.
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.
El siguiente apartado trata de aplicar los conocimientos adquiridos para recuperar un sistema en caso de errores, utilizando los siguientes conceptos:
grub-installSi 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>
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
El GRUB instalado en el MBR fue accidentalmente sobrescrito. Después de arrancar con un disco de recuperación, ¿cómo podemos recuperarlo?
grub-installUna 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?
init=/bin/bash