2/7/2012

Arrancar un Live-CD desde el Grub2 con imagen .iso





Ahora que estamos en la era de los multiples entornos de escritorio y shells, no está de más recordar que con el gestor de arranque de Ubuntu 12.04 "Grub2", podemos probar los Live CD, sin la necesidad de grabarlo en un CD o en un pendrive con UNetbootin.
Para ello nos basta la imagen ".iso" del Live CD, descargada en nuestro disco duro.
Además de utilizarlo para probar las distintas distribuciones que nos interese, es muy útil para realizar tareas de las cuales no queramos dejar ni rastro, por ejemplo acceder a nuestra cuenta del banco, ect...
Además, de esta forma nos ahorramos tiempo, ya que arranca y trabaja bastante más rápido que si lo hacemos desde un CD y por supuesto, no tenemos que andar metiendo y sacando CDs.

Vamos a ver como hacerlo:
 

Nota: Como indico al final en "posible error", esto solo vale para los LiveCD de Ubuntu y sus derivadas. Para LiveCD de otras distribuciones como Fedora, OpenSuse, ArchBang, ... hay que modificar el directorio y archivos donde encontrar el Kernel (núcleo) para el booteo.
Creamos un directorio en la raíz del sistema de archivos (/) al que llamaremos "/iso", para tener el sistema de archivos organizado, con el comando:
sudo mkdir /iso
Descargamos la imagen.iso de la distribución que deseemos en nuestra carpeta de "Descargas" (dentro de nuestra carpeta personal).
Importante: En el tutorial voy a utilizar un nombre genérico: nombre-livecd.iso y vosotros tenéis que cambiarlo por el nombre exacto del archivo descargado, en todos los comandos y código que pondré. Es Muy importante que sea el nombre idéntico. Si queréis podéis renombrarlo por otro que os sea más fácil de escribir.
Consejo: en los nombres de los archivos, utilizad los guiones medios ( - ) o bajos ( _ ) entre palabras y no os compliquéis la vida poniendo espacios en blanco, porque entonces tendréis que escribirlos entre comillas. Por ej: "nombre livecd.iso".
Copiamos el archivo descargado en la carpeta Descargas (~/Descargas/nombre-livecd.iso) y lo pegamos dentro del nuevo directorio que hemos creado con anterioridad (/iso), con el comando:
sudo cp ~/Descargas/nombre-livecd.iso /iso
En el archivo /etc/grub.d/40_custom, se pueden añadir sistemas operativos manualmente para que aparezcan en el grub. Lo editamos con el comando:
sudo gedit /etc/grub.d/40_custom
Al final del archivo añadimos las siguientes líneas, pero mucho ojo, antes de pegarlo, seguid leyendo más abajo, porque hay cosas que modificar en ellas (las que están en rojo).
menuentry "nombre livecd" { set root=(hd0,2) loopback loop /iso/nombre-livecd.iso linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/nombre-livecd.iso -- initrd (loop)/casper/initrd.lz }
Vamos a ver las líneas una a una, para comprender qué estamos haciendo:
menuentry "nombre livecd"
"menuentry" es la línea que otorga el nombre que aparecerá en el grub. Podemos cambiar "nombre livecd", por el que queramos, por ejemplo "Xubuntu 12.04" a secas. (Aquí si podéis dejar espacios en blanco entre las palabras, ya que tiene las comillas)
set root=(hd0,2)
"set root=" determina la partición del disco duro "(hd0,2)", donde el sistema encontrará la imagen.iso que hemos pegado en /iso. Esto suele traer confusión, por lo que nos vamos a detener para explicarlo bien. Vamos a suponer que nuestro Ubuntu está en "/dev/sda2", o sea, en la segunda partición (2) del primer disco duro (a). Por lo que entonces deberíamos de escribir: (hd0,2). Básicamente tenemos que tener en cuenta que: - La letra que designa el disco duro (a, b, c, ...) es sustituida por un número (0, 1, 2, ...). La nomenclatura de "hd" comienza por cero, o sea, el primer disco duro (a) es 0, el segundo (b) es 1, el tercero (c) es 2 ... - El número de la partición (1, 2, 3, ...) se quedará igual. Antes había que restar 1, ya que también empezaba por 0 (cero), pero lo modificaron porque creaba mucha confusión.
Os dejo un listado de las respectivas nomenclaturas en los dos primeros discos duros, por si os queda alguna duda:


loopback loop /iso/nombre-livecd.iso
"loopback loop ..." Determina la ruta dentro de la partición, donde encontrará la imagen.iso. No hace falta poner la ruta en la que se montó el disco (/media/.../), ya que en la línea anterior "set root" ya pusimos el disco duro y la partición donde está. Solo tenemos que cambiar nombre-livecd.iso, por el nombre exacto de la imagen.iso que pegamos en /iso.
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/nombre-livecd.iso --
"linux (loop)/casper/vmlinuz boot=..." Determina la ruta del kernel con el que arrancará el Live-cd. En esta línea encontraremos los siguientes parámetros que podemos quitar o dejarlos, según nos convenga (recomiendo dejarlos tal cual): - locale y bootkbd, para que arranque con el idioma y la distribución del teclado en Español. - splash, para que muestre la imagen de carga (splash). Aquí, también debemos de cambiar al final de la línea: nombre-livecd.iso, por el nombre exacto de la imagen.iso que pegamos en /iso.
initrd (loop)/casper/initrd.lz
initrd (loop): determina la ruta dónde está el initrd (sistema de archivos temporal usado por el núcleo Linux durante el inicio del sistema)
Cuando tengamos el archivo correctamente, guardamos, cerramos el archivo y actualizamos el grub con:
sudo update-grub
Nota: se pueden añadir tantos LiveCD como queramos, añadiendo al archivo el correspondiente grupo de líneas ("menuentry {...}) y con sus respectivas imágenes.iso pegadas en el directorio /iso. En el grub aparecerán todos los Live-CD, desde los que podremos arrancar cualquiera de los añadidos
Como ejemplo os dejo mi archivo, en el que he añadido Xubuntu y Lubuntu.
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Lubuntu 12.04 Live" { set root=(hd0,2) loopback loop /iso/lubuntu-12.04-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/lubuntu-12.04-desktop-i386.iso -- initrd (loop)/casper/initrd.lz } menuentry "Xubuntu 12.04 Live" { set root=(hd0,2) loopback loop /iso/xubuntu-12.04-desktop-amd64.iso linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es splash iso-scan/filename=/iso/xubuntu-12.04-desktop-amd64.iso -- initrd (loop)/casper/initrd.lz }
A mi me ha funcionado igual ;)

Gestor de arranque Burg

En el Foro, el compañero Makova, (yo mismo) nos deja que hacer si tenemos Burg (menú animado para el Grub2):
Básicamente hay que hacer lo mismo, a excepción de:
- En lugar de editar el archivo "/etc/grub.d/40_custom", editamos este otro: "/etc/burg.d/40_custom" (cambiar grub por burg):
sudo gedit /etc/burg.d/40_custom
- Al final, actualizar el burg con:
sudo update-burg

Posible error:

Si al arrancar os aparece el siguiente error:
you need to load the kernelk first
Es por que "no encuentra el archivo para el arranque del kernel" y esto es debido a que el directorio /casper y los archivos vmlinuz y initrd.lz solo se utilizan en Debian y derivadas (Ubuntu, Linux Mint, Guadalinex, ...), por lo que en otras distribuciones se debería de cambiar las líneas pertinentes con la ruta/archivo adecuada, para que encuentre el archivo.

Gracias a: Juanetebitel

Fuente: ubuntu-guia.com

Saludos...

6 comentarios:

  1. Hola Makova.

    1º. Muy buen tutorial
    2º. ¿funciona con ISO's de ditribuciones que utilizan Syslinux como gestor de arranque?

    Gracias por la ayuda.

    PD: probando tuto. ;)

    ResponderEliminar
  2. Hola Tiro. Es una copia y pega de la guía de Juanetebitel: http://www.ubuntu-guia.com/2012/06/arrancar-un-livecd-desde-grub2.html En principio es para Debian y derivadas, Ubuntu, Linux Mint, ect. Syslinux es para memorias USB y "creo" que deberías hacer unas modificaciones en syslinux.cfg, otra cosa sería Isolinux :)
    Saludos...

    ResponderEliminar
  3. Hola Mako va,buen tuto,sobre todo para los que estamos probando cosillas para no aburrirnos,una pregunta, si usas la sesión de invitado sería como desde un live CD , me refiero a lo de los rastros etc...?
    Salu2 y gracias

    ResponderEliminar
  4. Hola enae.
    No, si entras en una sesión de invitado seguirás dejando rastro, cokies, caché, ect.
    Lo mejor es teniéndolo como en este tutorial. Probado 100%.
    Saludos y gracias por comentar.

    ResponderEliminar
  5. Saludos Makova, Juanetebitel y a la comunidad Linux que les sigue.

    Estas letras son para agradecer el tema "Arrancar un Live-CD desde el Grub2 con imagen .iso" que pude habilitar sin dificultad.

    Los felicito por el trabajo desinteresado que desarrollan, para enseñarnos a los que somos todavía principiantes en este mundo de la informática con Linux Ubuntu.

    ResponderEliminar
  6. Hola.
    Gracias a ti por comentar.
    Saludos...

    ResponderEliminar

Puedes comentar sin registrarte, si pones tu nick o nombre mejor..