PreguntasLinux

Versión Completa: [howto] Arrancando LiveUSB desde grub
Actualmente estas viendo una versión simplificada de nuestro contenido. Para ver la versión completa en el formato correcto, dale click aquí
En este pequeño howto os mostraré como, haciendo uso de un disco duro local en el que tenemos grub instalado (en nuestro caso, el disco donde tenemos Debian Lenny), podremos arrancar otra distribución GNU/Linux instalada en un dispositivo USB (un disco usb o un simple pendrive) en aquellas máquinas que por su antigüedad, carecen de dicha característica en la propia bios.

Para empezar, vamos a situarnos. Imaginemos que tenemos un PC con un disco duro IDE particionado de la siguiente forma (podemos ver la estructura de nuestro disco con "fdisk -l"):

Nº Dispositivo Montaje Tipo Tamaño
1 /dev/hda1 /boot ext3 100mb * <- Esta es la que nos interesa.
2 /dev/hda2 swap swap 256mb
3 /dev/hda5 / ext3 6gb

* En caso de no existir, /boot será un simple directorio en la partición /.

Ahora, al introducir el disco usb, veremos que aparece un nuevo dispositivo (sdX). En mi caso, GNU/Linux lo reconoce como sda, y posee la siguiente estructura de particiones:

Nº Dispositivo Tipo Tamaño
1 /dev/sda1 ext3 38gb (Aquí tengo una Debian Sid)
2 /dev/sda2 swap 256mb (esta en realidad no sería necesaria, puesto que seguramente ya tengamos una swap en el disco local.)

Lo que tenemos que hacer en este momento es montar sda1 en algún lugar para extraer 4 archivos de él. Así, ejecutamos:

Código:
mount /dev/sda1 /mnt
cd /mnt/boot


Dentro de este directorio tendremos los archivos vmlinuz-elquesea, initrd.img-elquesea, system.map-elquesea config-elquesea.

Lo que se trata es de copiar esos cuatro archivos a la partición boot del disco interno (en nuestro caso hda1). Para no ensuciar nuestra distribución con kernels incompletos y que los "update-grub" que ejecutemos a posteriori no los tomen como kernels normales (y los añadan al menu.lst), crearemos antes una carpeta dentro de /boot. Esto es:

Código:
mkdir /boot/sid


Ahora copiamos el kernel y los archivos que lo acompañan.

Código:
cp -a /mnt/boot/vmlinuz-elquesea /boot/sid
cp -a /mnt/boot/system.map-elquesea /boot/sid
cp -a /mnt/boot/initrd.img-elquesea /boot/sid
cp -a /mnt/boot/config-elquesea /boot/sid


La ultima parte es editar el /boot/grub/menu.lst para añadir las lineas que nos permitan arrancar del pendrive.

Código:
nano /boot/grub/menu.lst


Y añadimos al final del archivo (para que el propio grub no las borre tras un update-grub) las lineas:

Cita:
title Sid-USB, kernel elquesea
root (hd0,0) *
kernel /sid/vmlinuz-elquesea root=/dev/sda1 ro
initrd /sid/initrd.img-elquesea


Expliquemos en que consisten estas lineas.
La 1ª (title) nos dará el texto que vemos en grub al arrancar. Puedes poner lo que quieras, pero evita carácteres extraños.
La 2ª (root) es la línea que toma grub para buscar los kernels (en nuestro caso, todos -incluido el de Sid- están dentro de la partición hda1). Esta variable está en formato GRUB, así que ojo (si tienes duda mira el archivo /boot/grub/device.map para ver como se llama tu partición en formato grub).
La 3ª (kernel) indica que kernel se usará para arrancar y con que opciones.
La 4ª (initrd) se refiere a donde está el initrd.img (no lleva opciones).

* ¡Ojo!, hd(0,0) es nuestra partición hda1, la cual está montada como /boot en vez de como /. Ello lleva implícito que en las líneas kernel e initrd ya no se pone el /boot/ . Grub buscará el kernel y el initrd en (hd0,0)/sid/... (en otras palabras, en /boot/sid/...). Si teneis la partición (hd0,0) como / en vez de /boot, las líneas kernel e initrd deberían quedar así:
kernel /boot/sid/vmlinuz-elquesea root=/dev/sda1 ro
initrd /boot/sid/initrd.img-elquesea

Cuando hayais dejado las líneas como querais, cerrais nano (CONTROL+X) y reiniciais la maquina para ver si es capaz de arrancar desde el disco usb.

Espero que os haya sido de utilidad este pequeño howto.

Notas:

1) Como vereis, esto no es más que un "parche" que hace que parte del arranque se haga desde el disco local, se carguen los módulos usb-core y se prosiga el arranque desde el disco usb. Pero ¡funciona!

2) He comprobado que hay determinados kernels, que en presencia de muchos discos scsi o sata junto a dispositivos usb (como un lector de tarjetas) nombran de mil formas diferentes al disco usb (dependiendo de en que orden ven todos esos dispositivos). En mi caso, en un P3 que tiene montada una controladora scsi con 4 discos y un lector de tarjetas, con un kernel el disco USB era el 'sdf' y con otro era el 'sdh'. Os toca jugar hasta que deis con el correcto (en el propio grub podeis modificar temporalmente estas lineas pulsando "e") 1-wink .

3) Por último, decir que en esta guía estamos jugando con grub. Hay que saber lo que se hace en cada momento. Si no sabes para que sirve alguna de las cosas que aquí nombró, te ruego que te informes y preguntes. No me hago responsable de problemas que pudieran surgir tras seguir la guía.

4) Por último, recordaros que esta guía puede contener (y probablemente contenga) errores. No la sigas como si de una receta se tratase.

http://anis-live.dyndns.org/drupal/%3Fq%3Dnode/24

URLs de Referencia