¿Se puede "aprovechar" un LIVE-CD?

Publicado por the98, Julio 31, 2007, 13:01:58

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

donchmuyo

#15
Cita de: the98 en Mayo 05, 2011, 00:12:51
Hola. Yo en su momento no había podido hacer esto, sin embargo sí había encontrado una imagen de CD que viene con varias distros:

http://multidistro.tlm-project.org/md_en.html

Aunque es un poco vieja, y por lo tanto las distros también lo son. La más liviana en este caso resultó ser Grafpup, que es un proyecto abandonado  :(

Lo que luego hice fue descomprimir la iso para ver cómo estaba hecha, y logré hacer una imagen que funciona con Grub 1. Sin embargo no lo compartí acá porque quería esperar hasta encontrar una forma que permita elegir la distro a bootear desde un menú de grub, pero que no pase a bootear el kernel directamente, sino que te dirija hacia el menú Grub del Live CD en cuestión. O sea, elegís la distro, ponele DSL. Si probás esta imagen vas a ver que elegís DSL y vas directamente al booteo de DSL. Lo que yo quiero es poder entrar al grub de DSL por si querés elegir otra opción para bootear.

En cuanto a distro pequeñas, todas las basadas en Ubuntu no son muy pequeñas que digamos. Mismo si instalaras un Debian actual con XFCE. No sé en qué máquina lo pensás instalar, pero si querés instalar algo así como Ubuntu o Debian en una P I ó P II, te recomiendo un Ubuntu o Debian de hace unos años (Ubuntu ni idea, pero con un Debian Etch vas a estar bien), aunque no está demás probar, el tema es quemar muchos CDs. Como distro que consume pocos recursos, recomiendo MUCHO Sli-Taz y Puppy Linux. DSL no me gusta visualmente, pero consume mucho menos que Puppy (no sé Sli-Taz).

Si la PC tiene puerto USB, no hace falta que quemes CDs, podés grabar la imagen en un USB. Si no tiene USB, quizás puedas conseguir una placa PCI USB y luego bootear con un disquete de booteo (si te interesa tengo la imagen de 2 disquetes de booteo diferentes que hice andar en un 586, pero no con USB, sino CD porque no booteaba ni de CD, aunque permite carga por USB).

Y si todavía te interesa hacer lo del Live CD, cuando tenga tiempo (ahora imposible), vuelvo a revisar cómo se hacía y lo explico acá.

Abrazo.

Gracias My master, el tema es el siguiente, entre mis compañeros de universidad se esta empezando a esparcir el uso de GNU/linux pero somos pocos los que ya lo tenemos, yo mismo solo he usado ubuntu y mint (que es casi lo mismo) y no hay gente con experiencia, pero abundan las pc viejas, desde 256 de ram hasta bichos que parecen salidos del tacho de basura. Por eso queria ver si se podía tener en un mismo cd varias distros desde basadas en ubuntu (por ser el que conozco) pero con escritorios mas livianos hasta esas minidistros de menos de 100 megas.
voy a ver la imagen que pusiste, pero lo mas probable es que termine por grabar varios cds.
Por cierto, si me podes recomendar algún tuto para la instalación de distros menos gráficas que ubuntu, te voy a agradecer.
Un abrazo grande, desde Luján, tu padawan te agradece  :jaja:


EDITO:
http://www.ubuntu-es.org/?q=node/123018
me encontré con esto recién, voy a ver si lo puedo hacer andar, pero no prometo nada, ya que apenas se lo que es el grub2

the98

Paso a explicar cómo hacer esto con Grub 2.

Instalar grub-rescue-pc y genisoimage. Desde Debian y derivados:

# aptitude install grub-rescue-pc genisoimage

Vamos a trabajar en /tmp para no armar quilombo en algún directorio al dopelín. Claro, todo lo que hagamos en /tmp se va a borrar al apagar la PC. De igual manera este paso es opcional.

Buscamos un archivo en /usr/lib/grub-rescue que se llama grub-rescue-cdrom.iso. Extraemos el contenido de esta iso en /tmp (si no se crea un directorio, lo creamos). Para extraerlo podemos usar file-roller (no conozco algún comando desde consola, ¡¡pero seguro que sobran!!). Si hicimos todo bien, se creó un directorio en /tmp llamado grub-rescue-cdrom. Lo que hacemos es copiar todas las isos que queramos en la imagen en este directorio. Por ejemplo, digamos que bajamos las isos tiny-core o SliTaz, las copiamos en /tmp/grub-rescue-cdrom

Ahora viene lo más complicado. Tenemos que editar /tmp/grub-rescue-cdrom/boot/grub/grub.cfg

Lo editamos con el editor que queramos. Primero que nada, borramos las entradas inútiles, quedando más o menos así:


# Sample GRUB configuration file
#

# Boot automatically after 30 secs.
set timeout=30

# By default, boot the first entry.
set default=0

# Fallback to the second entry.
set fallback=1



Lo que ahora tenemos que hacer es incoporar las entradas de cada distro que queramos correr. Las entradas las ubicaremos al final del código de arriba y van a seguir el siguiente formato:


menuentry "NOMBRE QUE SE ME CANTE EL TRASERO" {
    loopback loop DIRECCIÓN_DEL_ISO_DESEADO
    linux (loop)UBICACIÓN_DEL_KERNEL_DENTRO_DEL_ISO iso-scan/filename=DIRECCIÓN_DEL_ISO_DESEADO --
    initrd (loop)DIRECCIÓN_DEL_INITRD
}


Ok, esto es un quilombo o parece, pero en realidad no. Se va a hacer más claro con un ejemplo. Vamos a ver cómo quedaría si esto fuera Tiny Core.


# For booting GNU/Linux
menuentry "Tiny Core" {
    loopback loop /tinycore-current.iso
    linux (loop)/boot/bzImage iso-scan/filename=/tinycore-current.iso --
    initrd (loop)/boot/tinycore.gz
}


Al copiar y pegar la iso de Tiny Core en /tmp/grub-rescue.cdrom, debemos indicarle a Grub que allí es donde se encuentra la iso con la que va a trabajar.

[EJEMPLO PARA QUE SE ENTIENDA]

Si por ejemplo, yo quisiera crear un directorio llamado "isos" y meter las isos ahí, tendría que especificarlo en loopback de la siguiente forma:


loopback loop /isos/tinycore-current.iso


Lo mismo en


linux (loop)/boot/bzImage iso-scan/filename=/isos/tinycore-current.iso --


Aquellas ubicaciones que están especificadas con (loop), me están indicando que se va a utilizar el árbol de directorios de la iso. Por ende, si abrimos la iso con file-roller estaríamos posicionados en el directorio "/" (raíz) de la iso. Como la imagen del kernel "bzImage" está en /boot, debemos especificarlo. Lo mismo pasa en el initrd, debemos buscar el que está dentro de la iso de Tiny Core.

[/EJEMPLO PARA QUE SE ENTIENDA]

La pregunta es, ¿cómo sé el nombre del kernel y del initrd?

Bueno, para eso podemos navegar la iso y buscar el archivo isolinux.cfg (normalmente se lo encuentra en /boot/isolinux/ (de la iso, claro)). En el caso de Tiny Core (nos la hizo fácil en este sentido) el contenido de este archivo es el siguiente:


display boot.msg
default tinycore
label tinycore
kernel /boot/bzImage
append initrd=/boot/tinycore.gz quiet

implicit 0
prompt 1
timeout 300
F1 boot.msg
F2 f2
F3 f3


Como verán nos la hizo fácil porque directamente nos dice "kernel /boot/bzImage" y "initrd=/boot/tinycore.gz" (la opción "quiet" se puede agregar al Grub de nuestro MultiBoot CD).

Repetimos esta operación con todas las distros que queremos meter en la iso.

Una vez que terminamos, abrimos una Terminal y nos posicionamos en el directorio /tmp/grub-rescue-cdrom

$ cd /tmp/grub-rescue-cdrom

Ahora corremos genisoimage:

$ genisoimage -R -J -no-emul-boot -boot-load-size 32 -boot-info-table -b boot/grub/i386-pc/eltorito.img -o /tmp/Mi-ISO.iso -V "T 0.1" -A "NOMBRE DEL DISCO" /tmp/grub-rescue-cdrom

Nota: es importante encontrar la ruta exacta de la imagen "eltorito" que es la que se usa para iniciar la cadena de booteo y que pueda iniciar, por ende, Grub. Esto lo hacemos buscando el archivo en /tmp/grub-rescue-cdrom/boot/grub en cualquier subdirectorio. Teniendo en cuenta que el archivo puede que no se llame "eltorito.img" y que se llame "grub_eltorito.img" o similar.

Una vez creada la iso, recomiendo probarla con Virtual Box para ver que funciones todo OK. Mismo si tienen dudas sobre si pudieron localizar la imagen "eltorito". Si funciona, a quemar un CD/DVD o a grabarla en un dispositivo USB.

En fin, creo que no me olvidé de nada, lo prueban y me avisan si sale.

Saludos.

donchmuyo

Grcias The98, en estos días lo pruebo, por desgracia trabajo a full los fines de semana así que va a tener que esperar al lunes.
Después te digo como salio

donchmuyo

Bueno, creo haber seguido todos los pasos, y obviamente algo hice mal, pero revise cada paso y no se qué fue lo que me faltó/sobró

Así quedó el archivo grub.cfg en la dirección indicada
#
# Sample GRUB configuration file
#

# Boot automatically after 30 secs.
set timeout=30

# By default, boot the first entry.
set default=0

# Fallback to the second entry.
set fallback=1

menuentry Puppy Retro 2.14 {
    loopback loop /tmp/Multiboot/214X-RC5.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/214X-RC5.iso --
    initrd (loop)/initrd.gz
}
menuentry DSL 4.4.10 {
    loopback loop /tmp/Multiboot/dsl-4.4.10.iso
    linux (loop)/boot/isolinux/linux24 iso-scan/filename=/tmp/Multiboot/dsl-4.4.10.iso --
    initrd (loop)/minitr24.gz
}
menuentry LinuxMint 11 Gnome {
    loopback loop /tmp/Multiboot/linuxmint-11-gnome-dvd-32bit.iso
    linux (loop)/casper/vmlinuz iso-scan/filename=/tmp/Multiboot/linuxmint-11-gnome-dvd-32bit.iso --
    initrd (loop)/casper/initrd.lz quiet splash
}
menuentry Macpup 5 {
    loopback loop /tmp/Multiboot/Macpup_511.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/Macpup_511.iso --
    initrd (loop)/initrd.gz
}
menuentry Molinux-Zero 2 {
    loopback loop /tmp/Multiboot/Molinux-Zero_v2.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/Molinux-Zero_v2.iso --
    initrd (loop)/initrd.gz
}
menuentry Nicolinux 2.13 {
    loopback loop /tmp/Multiboot/Nicolinux213.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/Nicolinux213.iso --
    initrd (loop)/initrd.gz
}
menuentry Puppy 431-netbook {
    loopback loop /tmp/Multiboot/pup-431bcm4312v3.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/pup-431bcm4312v3.iso --
    initrd (loop)/initrd.gz
}
menuentry Puppxigen 3.03 Español {
    loopback loop /tmp/Multiboot/Puppxigen_303_ES_LPPC.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/Puppxigen_303_ES_LPPC.iso --
    initrd (loop)/initrd.gz
}
menuentry Boby Linux con OpenOffice en Español {
    loopback loop /tmp/Multiboot/Boby_01OOo.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/Boby_01OOo.iso --
    initrd (loop)/initrd.gz
}
menuentry AntiX-M11 {
    loopback loop /tmp/Multiboot/antiX-M11-486.iso
    linux (loop)/boot/vmlinuz iso-scan/filename=/tmp/Multiboot/antiX-M11-486.iso --
    initrd (loop)/boot/initrd.gz
}


Despues probé la ISO con el virtual box y re contento vi el menú


pero de ahí no pasó nada, pues a cada opción le sigue este mensaje


:crybaby:

the98

Hiciste mal el grub.cfg :P

menuentry Puppy Retro 2.14 {
    loopback loop /tmp/Multiboot/214X-RC5.iso
    linux (loop)/vmlinuz iso-scan/filename=/tmp/Multiboot/214X-RC5.iso --
    initrd (loop)/initrd.gz
}


El directorio de trabajo, que en este caso veo que lo llamaste /tmp/Multiboot, es el directorio raíz para la ISO creada. Por lo tanto, la dirección de la ISO no es /tmp/Multiboot/214X-RC5.iso, sino que es /214X-RC5.iso, quedando la línea loopback así:

loopback loop /214X-RC5.iso

Lo mismo esto:

linux (loop)/vmlinuz iso-scan/filename=/214X-RC5.iso --

Después, en cada ISO tenés que buscar el nombre y dónde se guarda el kernel y el initrd. Creo que en algunas lo hiciste bien porque veo que pusiste alguna variación en los directorios, pero no sé si en todas lo hiciste correctamente. Probá bajar las 2 ISOS de ejemplo que puse en mi post anterior para que entiendas la mecánica. Luego de eso va solo. Revisá el isolinux de cada ISO que eso te va a ayudar.

Creo que el problema era que no indicaste bien dónde estaba el ISO.

Suerte, preguntá cualquier cosa.