En esta guia explicare paso a paso como crear un cd de arranque para
maquinas que no tengan soporte para arrancar discos desde usb.
Actualmente me veo obligado a usar este metodo en mi maquina porque no
tengo discos duros (los quemé) y utilizo uno externo. Como mi
placa no tiene soporte para arrancar desede usb ya que es algo antigua,
arranco el grub desde un cd y este me lanza un init y un kernel que
crean el sistema minimo que esta compilado con los modulos usb para que
pueda leer el sistema de ficheros y cargar el resto de programas. La
imagen no llega a los 15 megabytes por lo que la podeis grabar en un cd
mini de 8 cm (unos 50 megabytes). Como tener el arranque en un cd nos
impide poder actualizar el kernel, ya que habria que volver a grabar un
nuevo cd con el init y el kernel de la nueva version, yo utilizo un cd
rw, y asi para cambiar algo simplemente tengo que borrar el cd y volver
a crear una imagen. En la imagen meteremos un menu.lst para tener una
configuracion minima de grub.
Pulsa leer mas ver entera la guia
[break]
Lo primero de todo mencionar que esta guia la cree a partir de:
-Lista
de correo Debian En este mensaje se hace para arrancar un sda desde
un hda
-Manual
de Grub Como instalar grub en un cd
Que necesitamos:
-grub (realmente solo necesitamos la stage2_eltorito)
-mkisofs (para crear la imagen)
-init y vmlinuz de nuestro linux
Todo esto lo hago sobre debian, ya que en la instalacion me reconoce el
disco externo, pero sentiros libres de probar otras distros. Una vez lo
teneis instalado, como se supone que no
podeis arrancar vuestro propio linux, podeis meter un live cd, y desde
hay con chroot compilar el init con el soporte usb. Por tanto, empezare
suponiendo que estais en un live cd y que debian esta instalado en el
disco externo (sda).
1º. Montamos el
disco externo donde tenemos debian instalado:
# mkdir /debian
# mount -t ext3 /dev/sda1 /debian
-cambia ext3 por el sistema de ficheros que tengais
# mount -o bind /dev
/debian/dev
# mount -o bind /proc /debian/proc
# mount -o bind /sys /debian/sys
-esto es para tener los dispositivos, y ram que creo el live cd en
debian
# chroot /debian
- entramos ahora en nuestro debian (u otra distro que tengais instalada)
2º. Crear el
init
# ls /boot/initrd*
-Esto te mostrara el initrd que tengas. Si tienes una version <
2.6.15 usaras initrd (opcion A), pero si tienes una version > 2.6.15
usa initramfs (opcion B). Recuerda que ahora estas como si hubieras
arrancado debian.
-KERNEL_VERSION es el numerito que aparece al final de cuando hiciste
el ls /boot/initrd*. te hara falta para el resto de cosas.
A.- Para initrd
# vim
/etc/mkinitrd/mkinitrd.conf
cambiar la variable DELAY a 12
(DELAY=12)
#vim
/etc/mkinitrd/modules
Añadir:
usb-storage
scsi_mod
sd_mod
sr_mod
ehci-hcd
ohci-hcd
usbcore
# mkinitrd -o
/boot/initrd.img-KERNEL_VERSION KERNEL_VERSION
B.- Para initramfs
# vim
/etc/initramfs-tolls/initramfs.conf
y si no lo encuentras
# vim
/etc/mkinitramfs/initramfs.conf
añadir a la variable WAIT 12 (WAIT=12)
# vim
/etc/initramfs-tools/modules.conf
Añadir:
usb-storage
scsi_mod
sd_mod
sr_mod
ehci-hcd
ohci-hcd
usbcore
# mkinitramfs -o
/boot/initrd.img-KERNEL_VERSION KERNEL_VERSION
El wait=12 o delay=12 es para que al arrancar le de tiempo al kernel a
crear los /dev/sda y tener los dispositivos disponibles, vamos que se
para el proceso de arranque unos 12 segundos, hay ya estaran disponible
los discos y se prosigue con la carga del sistema que esta en el disco
externo.
# exit
# umount /debian/dev
# umount /debian/proc
# umount /debian/sys
Nos salimos de nuestro debian y volvemos al cd live (no desmontes
/debian que nos va a hacer falta ahora).
3º. Creamos la imagen con
los correspondientes archivos.
# mkdir /iso
# mkdir -p /iso/boot/grub
Ahora tenemos que copiar el stage2_eltorito que es el grub para cd
#cp
/usr/lib/grub/i386-pc/stage2_eltorito /iso/boot/grub
Si no esta ahí buscalo por carpetas de usr, o en /boot/grub o
bajatelo desde aqui
Copiamos el kernel y el init generado anteriormente:
#cp /debian/boot/initrd.img-2.6.8-3-386 /iso/boot
#cp /debian/boot/vmlinuz-2.6.8-3-386 /iso/boot
Ahora necesitaremos unos cuantos archivos para meter en el cd (puedes
modificarlos a tu gusto).
- menu.lst -> Configuracion del
grub
- background.xpm.gz -> Fondo
personalizado del grub
Y teniendo estos dos archivos deberia quedarnos unos directorios asi:
/iso/boot
-initrd.img-2.6.8-3-386
-vmlinuz-2.6.8-3-386
/iso/boot/grub
-background.xpm.gz
-menu.lst
-stage2_eltorito
3.5º.Antes de
crear la imagen hay que crear el archivo de configuracion de grub:
#Entrada por defecto a cargar
# 0 es la primera, 1 es la segunda, 2 es la tercera....
default 0
#Imagen de fondo
splashimage=(cd)/boot/grub/background.xpm.gz
#Tiempo de espera antes de cargar la entrada por defecto
timeout 30
#Entrada para cargar el disco usb
title Debian GNU/Linux 2.6.8-3-386
#con cd lo que hacemos es decir que estamos leyendo los archivos desde
esa ubicacion
root (cd)
# si actualizais el kernel, simplemente hay que grabar una imagen con
el kernel nuevo, y el initrd nuevo y cabiar
# aqui los nombres de los archivos, aunque si pones un nombre generico
luego no tendras que modificar este archivo.
kernel /boot/vmlinuz-2.6.8-3-386 root=/dev/sda1 ro
initrd /boot/initrd.img-2.6.8-3-386
boot
#Una entrada para windows por si necesitamos entrar en el.
#Por defecto en el primer disco que halla
title Microsoft winbug
#Esto se debe cambiar por donde se tenga el disco duro con windows, no
pasa nada si no
# se hace porque grub da la opcion de editar estas lineas antes de
cargar
root (hd0,0)
chainloader +1
Una vez tenemos el archivo de configuracion ya solo nos queda crear la
imagen
Si hacemos un man mkisofs podemos averiguar:
mkisofs [ options ] [ -o filename ] pathspec [pathspec
...]
[-R: algo del rock-ridge protocol (ni puta idea, pero funciona asi)]
[-b: eltorito boot image. Donde esta el stage2 (ruta relativa al ultimo
parametro)]
[-no-emul-boot: no emula la imagen] [-boot-load-size: numero de
sectores para cargar en el modo no-emulation, 4 para mayor
compatibilidad]
[-boot-info-table: tabla con informacion de la especificacion "el
torito" (ni puta idea de esto, pero asi funciona)]
[-o: archivo de salida]
[el ultimo parametro es la carpeta raiz de donde estan los archivos de
la imagen]
Entonces hacemos:
# mkisofs -R -b
boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub.iso /iso
Esto te dara una imagen, grabala con el k3b o con lo que quieras y con
ese cd podremos arrancar desde cd, cualquier disco. Tambien vale por si
no quieres poner el grub en un disco y lo prefieres en un cd (valdria
con que hicieses desde el punto 3).