Grub: configurando el gestor de arranque
Post dedicado al colo que hoy me preguntó cómo recuperar grub una vez instalado el maleducado de Windows que sobreescribe el MBR sin preguntar >=(
El artículo lo escribí hace un par de años y ya que estoy le adhiero algunas cosas de configuración de Grub, todo esto lo publiqué hace un año en el foro linuxespanol aquí. Que lo disfruten.

----------------------------------------------------------------------------------------
Instale Windows y ahora no puedo iniciar Linux! Cómo recupero el grub???
La indignación que esto produce es muy grande, pero por suerte tiene una solución muy sencilla.
Lo que hace windows al instalarse es sobre-escribir el MBR (Master Boot Record) con su propio gestor de arranque sin siquiera preguntar al usuario para saber si lo debe hacer o no >=(
Hay varias formas de recuperar grub, siendo quizas la más sencilla usando SuperGrub (http://www.supergrubdisk.org/)
Otra forma bastante simple (suponiendo que la partición donde esta instalado grub esta mapeado a /dev/sda1) es la siguiente:
1 iniciar el sistema con algun live-cd (knoppix, ubuntu, etc)
2 crear un directorio para montar la partición donde se encuentra instalado grub:
mkdir /media/linux
3 montar la partición donde se encuentra instalado grub
mount /dev/sda1 /media/linux
4 hacer un bind del /dev del live cd, al /dev de la particion recien montada
mount --bind /dev /media/linux/dev
5 cambiar el origne del directorio raíz
chroot /media/linux
6 instalar grub en el MBR del disco de arranque
grub-install /dev/sda


Cómo modificar la configuración de grub?

Como casi todo en linux, para editar algún programa, debemos editar un archivo, en este caso, el archivo en cuestión es /boot/grub/menu.lst
Este archivo es muy fácil de editar dado q en él vienen ejemplos de como hacerlo, las lineas que vienen como comentarios son aquellas precedidas por un #. Toda linea que pongamos de esta forma, no sera tomada en cuenta a la hora de ejecutarse.
Ahora bien, voy a describir:

Como cambiar el formato predefinido de arranque
Como agregar una entrada al grub
Como agregar una imagen al grub

Cómo cambiar el formato predefinido de arranque?
El grub al instalarse, definirá un sistema operativo como predeterminado, que sera el que se cargara en el caso de q el usuario no elija una opción después de un cierto tiempo.
Nosotros podemos cambiar tanto el sistema operativo predeterminado, como el tiempo que deberá esperar grub antes de arrancar el sistema predeterminado.
Para cambiar el sistema que se cargara predeterminadamente, debemos cambiar el valor de la linea que lleva el parámetro default.
Predeterminadamente, el grub suele tener estas líneas así:
## 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
El numero que debemos poner, es el numero que tiene el sistema operativo en la lista de sistemas. Si por ejemplo tenemos:
title Debian GNU/Linux, kernel 2.6.17.6
root (hd0,2)
kernel /boot/vmlinuz-2.6.17.6 root=/dev/sda3 ro
initrd /boot/initrd.img-2.6.17.6
savedefault
boot

title Debian GNU/Linux, kernel 2.6.8-2-386
root (hd0,2)
kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/sda3 ro
initrd /boot/initrd.img-2.6.8-2-386
savedefault
boot

title Knoppix, kernel 2.6.11 Default
root (hd0,3)
kernel /boot/vmlinuz root=/dev/sda4 ro ramdisk_size=100000 lang=es apm=power-off nomce vga=791
initrd /boot/initrd.img
savedefault
boot

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1
Cada entrada tiene un numero asociado, la primera es la 0, la segunda es la 1, y así sucesivamente.
Si en este caso, quisiera que mi sistema arranque con Knoppix, kernel 2.6.11 Default, en el parámetro default, debería poner:
default 2
Si quisiera que arranque con windows, debería poner:
default 3
Se entiende?

Ahora, para cambiar el tiempo que queremos que grub espere antes de arrancar con la opción predeterminada, debemos cambiar el parámetro timeout, con este parámetro se indican los segundos que se deben esperar. Poniendo por ejemplo, timeout 10, va a esperar 10 segundos, poniendo timeout 15, va a esperar 15.
Un ejemplo es:
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10

Cómo agregar una entrada al grub?
Para agregar una entrada al grub, debemos agregar en /boot/grub/menu.lst una entrada de la forma:
title Debian GNU/Linux, kernel 2.6.17.6
root (hd0,2)
kernel /boot/vmlinuz-2.6.17.6 root=/dev/sda3 ro
initrd /boot/initrd.img-2.6.17.6
savedefault
boot
Donde lo que nos interesa saber es, que:
- tittle es el titulo que aparecerá en el menu de selección al encender la maquina
- root indica cual es la partición donde esta el sistema
- kernel indica donde está la imagen del kernel y donde está el directorio raíz.
- initrd indica donde esta el initrd.
Hay q aclarar que para indicar una dirección en una partición, se hace a través del mapeo (hd*,nro), donde hd* indica en qué disco tenemos ese sistema, si el sistema lo tenemos en el disco 0, entonces el formato será (hd0, nro). Si el sistema esta en el disco 1, el formato será (hd1,nro). El nro es el número de nuestro dispositivo menos uno, es decir, si por ejemplo, el dispositivo asociado a nuestra partición es sda3 (donde sda suele ser el disco 0, sdb el disco 1, etc), la dirección de la partición será de la forma (hd0,2) como en nuestro ejemplo.

Para agregar una entrada para bootera algún windows, el formato es distinto, dado que no indicamos donde esta el kernel o el initrd.
El formato de una entrada para un windows que está instalado en la particion sda3 (aunque puede tener alguna opción más o alguna opción menos) es:
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda3
title Microsoft Windows XP Professional
root (hd0,2)
savedefault
makeactive
chainloader +1

Como agregar una imagen al grub?
Para agregar una imagen a nuestro grub, lo hacemos agregando el parametro splashimage, con este parametro y la direccion de una imagen, logramos q nuestro grub tenga de fondo una imagen, y asi queda muy cool =)
Algo para tener en cuenta es q la imagen debe ser de 640x480, de 16 colores y debe tener la extencion .xpm.gz, es decir, debe ser de formato xpm, y debe estar comprimido con gzip.
Ahora si, un ejemplo de como debemos escribir la linea con el parametro splashimage es:
splashimage=(hd0,2)/boot/grub/tux.xpm.gz
Donde al igual q antes (hd0,2) indica q la imagen se encuentra en el dispositivo sda3, en la direccion /boot/grub/tux.xpm.gz

0 comentarios:

Publicar un comentario