GRUB-Cómo

TÍTULO:		GRUB-Cómo
VERSIÓN LFS:	cualquiera
AUTOR:		Fabio Fracassi <turiya@linuxfromscratch.org>
TRADUCTOR:	Proyecto LFS-ES

SINOPSIS:
	GRUB es una alternativa a LILO. Este documento explica cómo
	hacerlo funcionar.

RECETA:
GRUB es el Gran Gestor de Arranque Unificado de GNU (GNU GRand Unified
Bootloader), un proyecto que intenta solucionar todos los problemas de
arranque de una vez por todas.

Una de las características más interesantes es que no tienes que
instalar una partición nueva o un núcleo nuevo, puedes cambiar todos los
parámetros en el arranque usando la Consola GRUB, ya que conoce los
sistemas de ficheros.

Empecemos a trabajar:

	1. - Descarga: ftp://alpha.gnu.org/pub/gnu/grub/grub-0.92.tar.gz
	1b.- PARECE QUE NO HAY UN PARCHE PARA ESTA VERSIÓN, SI SABES DE ALGUNO
		ENVÍAME UNA NOTA, POR FAVOR.
		Descarga: http://linuxfromscratch.org/~gerard/grub-0.91-vga16.patch
		Esto añade el soporte para un dibujo de fondo en grub, si lo
		quieres.
	2. - Extrae: tar -xvzf grub-0.92.tar.gz
	2b.- Opcionalmente, aplica el parche: patch -Np1 -i grub-0.91-vga16.patch
	3. - Instala:
			./configure --prefix=/usr  # lee INSTALL para saber más opciones
			make
			make install

			mkdir /boot/grub
			cp /usr/share/grub/i386-pc/stage1 /boot/grub
			cp /usr/share/grub/i386-pc/stage2 /boot/grub
			Y, si quieres, copia también uno de los ficheros stage1.5
			(posteriormente daremos más detalles).
	4. - Iniciando Grub:
		Ahora hay dos formas de continuar, puedes iniciar la Consola GRUB
		usando /usr/sbin/grub (que a mí no me funcionó demasiado bien :( )
		o utilizando un disco de arranque:
			cd /boot/grub
			cat stage1 stage2 >/dev/fd0 # ¡Asegúrate de tener un disco vacío
							# en la disquetera!
	    ¡Reinicia!

	5. - Configuración:
		Ahora tienes que definir tu configuración:
		Primero, GRUB quiere saber en qué partición está instalado. GRUB
		nombra a las particiones como sigue:
		(hd<NúmBios>,<NúmPartición>) esto es, /dev/hda es (hd0),
		/dev/hda1 (hd0,0), /dev/hdb2 (hd1,1)...
		(Espero que hayas cogido la clave ;) - si no, lee man grub o
		info grub)

		Si no sabes la partición, puedes intentar con
			find /boot/grub/stage1
		en la Consola GRUB.

		Ahora di a GRUB dónde está instalado:
			root (hd0,1) # Esta es mi configuración (/dev/hda2)

		E instálalo en el Registro Maestro de Arranque (MBR)
			setup (hd0) 

		Si quieres, puedes reiniciar ahora, y con
			kernel (hd0,1)/boot/bzImage root=/dev/hda2
		iniciar tu sistema.

		Existe la posibilidad de "enseñar" a GRUB sobre el sistema de
		ficheros, de esa forma, GRUB no necesita un mapa de bloques para
		el fichero stage2 y es, entonces, más robusto contra cambios en
		el sistema de ficheros. Esto se consigue con los ficheros
		stage1.5:
		después de hacer
			root (hd0,1)
		escribe
			embed /boot/grub/reiserfs_stage1_5 (hd0) # o e2fs_stage1_5
		y anota el número de sectores
		ahora escribe
			setup (hd0)
		o
			install /boot/grub/stage1 (hd0) (hd0)1+<número_sectores_que_devolvió_embed> p 
/boot/grub/stage2 /boot/grub/menu.lst

	6. - Instalando un Menú de Arranque:
		Simplemente crea un fichero menu.lst en el directorio
		/boot/grub. ¡Puedes poner allí la mayoría de los comandos de la
		Consola GRUB! (Lee info grub)

		Como referencia, aquí está mi configuración:

		# Fichero /boot/grub/menu.lst - Definición del Menú de Arranque
		#
 
		# Arrancar por defecto la Entrada 0
		default 0
		timeout 10
 
		# para hacerlo más bonito ;)
		color green/black light-green/black
 
		# Si has aplicado el parche Pixmap, puedes definir un dibujo
		# como fondo aquí
		# La bonita imagen de LFS se puede encontrar en
		# http://linuxfromscratch.org/~gerard/lfslogos/lfs-grub-splash.xpm
		splashimage (hd0,1)/boot/grub/lfs-grub-splash.xpm
 
		#Teclado alemán
		setkey y z
		setkey z y
		setkey Y Z
		setkey Z Y
		setkey equal parenright
		setkey parenright parenleft
		setkey parenleft asterisk 
		setkey doublequote at
		setkey plus bracketright
		setkey minus slash
		setkey slash ampersand
		setkey ampersand percent
		setkey percent caret
		setkey underscore question
		setkey question underscore
		setkey semicolon less
		setkey less numbersign
		setkey numbersign backslash
		setkey colon greater
		setkey greater bar
		setkey asterisk braceright  

		#Linux Estándar
		title LFS-Linux 2.4
		kernel (hd0,1)/boot/bzImage root=/dev/hda2

		#Linux Antiguo
		title Antiguo Suse Linux 6.4
		kernel (hd1,0)/bzImage root=/dev/hdb2
 
		#Windows 98
		title Windows 98
		chainloader (hd0,0)+1
 
		#instala grub
		title (Re)Instala grub
		root (hd0,1)
		embed /boot/grub/reiserfs_stage1_5
		install /boot/grub/stage1 (hd0) (hd0)1+19 p /boot/grub/stage2 
/boot/grub/menu.lst                    

Creo que esto te da una idea de cómo es de poderosa la herramienta GRUB,
y ves que tampoco es tan difícil :)
El único problema que me he encontrado fue que los comandos de
instalación y configuración no funcionaron desde /usr/sbin/grub, pero no
tuve ningún problema con el disco de arranque. No sé mucho más sobre
GRUB que lo que he escrito aquí, consulta la Documentación
(especialmente, info grub) para más información.

Gracias a la Revista German C't por el gran artículo sobre GRUB.

Actualización: 17/Abr/2002 Fabio Fracassi (turiya@linuxfromscratch.org)

Gracias a Gerard Beekmans por el Parche Splashscreen (y por el LFS ;) )