martes, 29 de abril de 2008

Gestor de arranque GRUB

GRUB es la abreviatura de GRand Unified Bootloader. GRUB es el programa que se ejecuta para iniciar el sistema, permitiendo seleccionar el sistema operativo con el que el equipo se va a iniciar. La ventana del gestor de arranque de GRUB es la que se muestra en la Figura 2.4.1.



Figura 2.4.1

En esta ventana, aparece una opción por cada uno de los distintos sistemas operativos existentes en el equipo. La configuración de GRUB consiste en especificar el sistema operativo por defecto que se iniciará en el equipo y el tiempo que GRUB esperará la selección de otros sistemas operativos antes de que se inicie el que se ha indicado por defecto. Además, hay que seleccionar la partición de cada sistema operativo e introducir un nombre para cada uno de ellos. Este nombre es el que se muestra en la ventana de la Figura 2.4.1.

La configuración de GRUB se encuentra en el archivo /boot/grub/menu.lst. El contenido de este archivo podría ser el siguiente:

# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.
## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.

default 0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).

timeout 10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu
# Pretty colours
#color cyan/blue white/blue
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#
#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below
## DO NOT UNCOMMENT THEM, Just edit them to your needs
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=4b5be2eb-6973-4943-a21f-072809fef4ae ro
## Setup crashdump menu entries
## e.g. crashdump=1
# crashdump=0
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,3)
## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true
## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash
## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false
## Xen hypervisor options to use with the default Xen boot option
# xenhopt=
## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0
## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery) single
# altoptions=(recovery mode) single
## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all
## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true
## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

title Ubuntu, kernel 2.6.20-16-generic
root (hd0,3)
kernel /boot/vmlinuz-2.6.20-16-generic root=UUID=4b5be2eb-6973-4943-a21f-072809fef4ae ro quiet splash
initrd /boot/initrd.img-2.6.20-16-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-16-generic (recovery mode)
root (hd0,3)
kernel /boot/vmlinuz-2.6.20-16-generic root=UUID=4b5be2eb-6973-4943-a21f-072809fef4ae ro single
initrd /boot/initrd.img-2.6.20-16-generic

title Ubuntu, kernel 2.6.20-15-generic
root (hd0,3)
kernel /boot/vmlinuz-2.6.20-15-generic root=UUID=4b5be2eb-6973-4943-a21f-072809fef4ae ro quiet splash
initrd /boot/initrd.img-2.6.20-15-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-15-generic (recovery mode)
root (hd0,3)
kernel /boot/vmlinuz-2.6.20-15-generic root=UUID=4b5be2eb-6973-4943-a21f-072809fef4ae ro single
initrd /boot/initrd.img-2.6.20-15-generic

title Ubuntu, memtest86+
root (hd0,3)
kernel /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian

# ones.

title Other operating systems:
root

# This entry automatically added by the Debian installer for a non-linux OS

# on /dev/hda1

title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

###### FIN DEL ARCHIVO ########

La información activa (son las líneas que no están comentadas) de este archivo es la siguiente:

La línea default indica la partición que se iniciará por defecto si, transcurrido el tiempo especificado en timeout, el usuario no selecciona otra partición. El valor 0 se refiere a la primera etiqueta title que aparece en el archivo /boot/grub/menu.lst, el valor 1 se refiere a la segunda etiqueta title que aparece en el archivo /boot/grub/menu.lst, y así sucesivamente.

La línea timeout indica los segundos que el sistema esperará para iniciar el sistema operativo por defecto.

Las líneas que se encuentran a continuación de la línea ## ## End Default Options ##, indican el disco duro y la partición donde se encuentran cada uno de los sistemas operativos que se pueden iniciar en el sistema.

Los parámetros quiet splash se utilizan para que durante el inicio del sistema se visualice un entorno gráfico. Si quitamos estos argumentos, el inicio del sistema se visualiza en modo texto.

En el archivo /boot/grub/menu.lst, se pueden definir contraseñas para iniciar cada uno de los sistemas operativos instalados en el sistema. Para ello, hay que añadir la línea password contraseña en los párrafos title que definen cada una de las particiones de sistema.

El archivo /boot/grub/menu.lst se puede instalar ejecutando la orden grub-install /dev/sda. El dispositivo /dev/sda indica el disco duro en el que queremos instalarlo. Esta orden realiza una compilación del archivo y, si no hay errores, lo instala en el Master Boot Record (MBR) del disco duro indicado.

El archivo /boot/grub/menu.lst, se puede crear o modificar ejecutando la orden update-grub. Esta orden busca las versiones del kernel ubicadas en el directorio /boot y crea una entrada en el archivo /boot/grub/menu.lst para cada una de estas versiones. Una posible salida de la ejecución de esta orden podría ser la siguiente:

root@alsico-laptop:~# update-grub

Searching for GRUB installation directory ... found: /boot/grub

Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst

Searching for splash image ... none found, skipping ...

Found kernel: /boot/vmlinuz-2.6.20-16-generic

Found kernel: /boot/vmlinuz-2.6.20-15-generic

Found kernel: /boot/memtest86+.bin

Updating /boot/grub/menu.lst ... done

En realidad, GRUB es un entorno desde el que se pueden realizar varias operaciones, introduciendo comandos propios del entorno. Para iniciar este entorno, hay que pulsar la tecla c en la ventana de la Figura 2.4.1 o, una vez iniciado el sistema, ejecutar la orden grub. Se muestra el prompt grub>, desde el que se pueden escribir las órdenes de GRUB. Desde este entorno se sale escribiendo reboot, si hemos accedido al entorno desde el menú de inicio del sistema, o escribiendo quit, si hemos accedido al entorno una vez iniciado el sistema.

Desde la ventana de la Figura 2.4.1, también se pueden editar líneas del archivo /boot/grub/menu.lst para modificar sus valores e iniciar el sistema con los nuevos valores introducidos. Para ello, hay que pulsar la tecla e en la ventana de la Figura 2.4.1.

Si la línea password contraseña la escribimos fuera de los bloques donde se definen los sistemas operativos, al iniciar el equipo se muestra la ventana de la Figura 2.4.2.



Figura 2.4.2

Como vemos en esta ventana, no se puede acceder a los comandos para entrar en el entorno de GRUB. Para entrar en este entorno, hay que pulsar la tecla p e introducir, en la nueva ventana, la contraseña especificada en el archivo /boot/grub/menu.lst.

Si se ha introducido la orden lock en uno de los bloques title del archivo /boot/grub/menu.lst y se ha asignado una contraseña fuera de estos bloques para deshabilitar la entrada en el entorno de GRUB al iniciar el sistema (ventana de la Figura 2.4.2), tenemos que pulsar la tecla p y escribir la contraseña para poder iniciar desde la partición en la que se ha incluido la orden lock.

Estas contraseñas son visibles consultando el archivo /boot/grub/menu.lst (este archivo lo puede leer cualquier usuario) o editando la opción de inicio en el menú de arranque de la ventana de la Figura 2.4.1 (pulsando la tecla e con la opción de inicio seleccionada). Para que la contraseña no sea legible, podemos encriptarla, Para ello, hay que acceder al entorno GRUB desde la línea de comandos ejecutando la orden grub. Desde este entorno, hay que ejecutar la orden md5crypt y escribir la contraseña a encriptar. El entorno nos devuelve la contraseña encriptada con el mensaje Encrypted: $1$biPFG$wjeFI4XkAPpM6Clio6iZA1. Esta contraseña hay que copiarla para añadirla en el archivo /boot/grub/menu.lst. Salir del entorno GRUB ejecutando la orden quit.

A continuación, editar el archivo /boot/grub/menu.lst e introducir la siguiente línea:

password --md5 $1$biPFG$wjeFI4XkAPpM6Clio6iZA1 (esta es la contraseña encriptada que hemos copiado desde el entorno GRUB).

Cuando se pida una contraseña al iniciar el sistema, hay que escribir la contraseña sin encriptar.

No hay comentarios: