Bootear un ISO desde el disco duro usando Grub2
Interesante artículo que nos llega desde el Blog de humanOS donde nos enseñan como bootear un ISO usando Grub2, por lo que nos ahorramos la necesidad de tener que usar una Memoria Flash o un DVD.
[El truco de hoy] Bootear desde grub 2 con un ISO
Autor: Yoandy Pérez Cáceres (a.k.a Kceres)
Hola a todos, después de un buen tiempo sin publicar, hoy les traigo un truco sencillo y que me sacó de un buen apuro este fin de semana ![]()
Resulta que quería instalar Ubuntu 12.10 y como no tenia memoria :’( y el lector de DVD de la PC no se cual era el motivo que no quería leer los DVD que tenía en ese momento, pues me había quedado sin opciones …en ese momento inicié una pequeña investigación y aquí les traigo el fruto ![]()
Precondiciones:
- Tener instalado una distribución de Linux que utilice el grub2.
Pasos a seguir:
- Editar el fichero ubicado en /boot/grub/grub.cfg con el siguiente comando: sudo gedit /boot/grub/grub.cfg
- Adiciona, al final del fichero, las lineas que se encuentran después de este listado de pasos.
- Guarda el fichero.
- Reinicia la PC y selecciona desde el grub “Ubuntu LiveCD 12.10″.
menuentry "Ubuntu LiveCD 12.10" {
set root=(hd0,8)
loopback loop /isos/ubuntu-12.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/isos/ubuntu-12.10-desktop-i386.iso noprompt noeject
initrd (loop)/casper/initrd.lz
}
Explicando el código:
menuentry “Ubuntu LiveCD 12.10″: El texto que aparece entre comillas será el texto que saldrá en el grub2, cuando inicies tu PC.
set root=(hd0,8): nos indica en que partición esta el archivo ISO, en el caso del ejemplo sería dev/sda8.
loopback loop /isos/ubuntu-12.10-desktop-i386.iso: nos indica la ruta, dentro de la partición, donde se encuentra el ISO. En el ejemplo sería, en la carpeta isos, el fichero ISO con nombre ubuntu-12.10-desktop-i386.iso
linux (loop): nos indica que kernel usar para bootear y donde se encuentra. En nuestro caso, el del ISO.
initrd(loop): nos indica donde esta el initrd.
Desde el LiveCD:
Hasta aquí todo bien, podemos probar nuestra distro preferida como si fuera un LiveCD, pero, y si queremos instalar desde ahí mismo y ahorrarnos el DVD o la memoria? La solución a nuestro problema es sencilla, abre una terminal y ejecuta el siguiente comando:
sudo umount -l /isodevice
Finalizando …
Ahora solo tienes que darle doble clic al icono que aparece en el escritorio y que te permitirá instalar Ubuntu sin ningún problema.
Buen aporte, lo probare, a ver si tira con la iso de manjaro, que se niega a bootear desde usb en un acer D255
Con multisystem desde una Ubuntu o yumi desde un MS WOS manjaro – retocando el grub si te la nombra manjaro1 a manjaro, y hazlo con reemplazar todo que son varias – funciona.
Multisystem permite arrancar en equipos “viejos” instalando Plop – en opciones avanzadas del programa – yumi lo he gastado en computadoras ajenas y pocas veces, pero supongo que dispondrá también de la opción de instalar Plop
Este es el menú dentro del GRUB de multisystem, como verás postprocesa la ISO para que sea arrancable.
menuentry “Boot Manjaro Linux Francais” {
linux /manjaro/boot/x86_64/manjaroiso misovar=lang:fr_FR,keymap:fr_FR,timezone:Europe/Brussels misobasedir=manjaro misolabel=multisystem nouveau.modeset=1 i915.modeset=1 radeon.modeset=1
initrd /manjaro/boot/x86_64/manjaro.img
}
menuentry “Boot Manjaro Linux Anglais” {
linux /manjaro/boot/x86_64/manjaroiso misovar=lang:en_US,keymap:es_ES,timezone:Europe/Madrid misobasedir=manjaro misolabel=multisystem nouveau.modeset=1 i915.modeset=1 radeon.modeset=1 lang=de
initrd /manjaro/boot/x86_64/manjaro.img
}
Amigos de DesdeLinux:
Es un buen tip. Hace un tiempo yo estuve tratando de resolver el mismo problema y me di cuenta de que el tipo de soluciones como el que presentan en este artículo sólo sirve para la distro correspondiente (en este caso Ubuntu 12.10). Si quieren utilizar este truco para otra distro (digamos, Fedora u OpenSUSE, deja de funcionar)… incluso aunque se cambien los datos correspondientes (el nombre del archivo iso y demás configuraciones) en las líneas de “pasos a seguir” que se listan más arriba.
La solución más práctica que encontré (y que funciona prácticamente con todas las distros y versiones) es utilizar Unetbootin. No sé si lo notaron pero tiene una opción para hacer esto: cambiar grub para arrancar la PC desde un iso alojado en el disco rígido. Para más info, les recomiendo leer este viejo artículo que escribí: http://usemoslinux.blogspot.com/2011/02/como-arrancar-una-imagen-iso-desde.html. Recuerdo que el artículo tuvo una repercusión impresionante e incluso fue publicado en WebUpd8: http://www.webupd8.org/2011/02/how-to-boot-iso-with-grub2-easy-way.html.
Aprovecho para saludarlos muy afectuosamente y felicitarlos x el blog!
Un abrazo desde Argentina! Pablo.
Disculpa por la demora amigo, como el post contenía 2 links pasó a la cola SPAM, y ahora es que la reviso y apruebo este
Gracias a tí y también felicidades por tu sitio, sin lugar a dudas uno de los emblemáticos de la red
buenisimo Pablo me cae de perlas!
Esa forma me parece genial peri quiero levantar una isi basasa en Debian (blends) y no encuentra la imagen kernel.. que habra que hacer???
Eso es porque no están en la carpeta “casper”.
Abre o monta la ISO y busca por sus directorios los archivos vmlinuz e initrd, son unos archivos aprox de 2MB y 10MB respectivamente, pueden tener cualquier extensión según la distro pero por lo general tienen esos nombres y están juntos. Te respondo de memoria pero creo que en el caso de Debian están en la carpeta install, init o algo así que al verlo te hacer saber que por ahí arranca.
Como digo en otro comentario, puedes sacarlos y ponerlos al lado de la ISO y recordar hacer el cambio de nombre y ruta en la entrada del GRUB.
O dejarlo ahí y usar el (loop) como indican en el tutorial pero también debes estar pendiente de hacer el cambio correcto de nombre y ruta que tenga la imagen que vayas a instalar.
Hola, los tengo a vmlinuz y a initrd.gz en la carpeta /install/ y en la carpeta /install/gtk
Las lineas deberian quedar asi??
menuentry “Huayra Alpha” {
set root=(hd0,4)
loopback loop /home/carlos/Descargas/imagenes/huayra-13-10-2012.iso
linux (loop)/install/vmlinuz boot=casper iso-scan/filename=/home/carlos/Descargas/imagenes/huayra-13-10-2012.iso noprompt noeject
initrd (loop)/install/initrd.gz
}
Gracias
wget pendrivelinux.com/downloads/multibootlinux/grub.cfg
en ese grub están preconfiguradas varias distros
http://www.pendrivelinux.com/boot-multiple-iso-from-usb-via-grub2-using-linux/#more-5352
Aquí el método completo para crear un pendrive multiiso siendo alternativas yumi en MS WOS y Multisystem en ubuntu, y derivadas, en debian LMDE me funcionó Multisystem a medias – no todas las opciones – pero fue, hace tiempo que la desinstalé, no sé si ahora irá.
Que buena info.
Seguro me va a servir.
La primera vez que vi éste manual fue en la (hoy desaparecida) tremenda Wiki de la distro Venenux GNU/Linux y la cantidad de discos y dolores de cabeza que me ha ahorrado.
Vale decir que también funciona para GRUB legacy, sólo que aquí hay que editar es el archivo “menu.lst” y usar la estructura que se usaba ahí que era un tanto diferente. Traducir no es problema, es fácil ver que cosa equivale a la otra, no hay pérdida, salvo que al número de partición hay que restarle un 1, es decir así:
root=(hd0,7): nos indica en que partición esta el archivo ISO, en el caso del ejemplo sería dev/sda8.
En GRUB legacy no me consta si sirve eso de loopback pero no hay problema ya que eso sólo es para “ahorrarse” escribir el chorro de nombre de la distro, en su lugar se pondría directo y ya, mejor si sacan los archivos vmlinuz y initrd y se colocan al lado de la ISO.
Un ejemplo simple de GRUB Legacy sería así:
title Distro GNU/Linux ISO DVDroot (hd0,Y)
kernel /distroiso/vmlinuz boot=fll quiet vga=791 fromiso=/distroiso/ISO_del_ultimo_mes.iso
initrd /distroiso/initrd
Ahora ya hablando del caso que das, si no recuerdo mal esta línea:
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/isos/ubuntu-12.10-desktop-i386.iso noprompt noejectse puede cambiar a:
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=(loop) noprompt noejectNo entiendo porqué al final dices que hay que ejecutar sudo unmount etc, que yo sepa basta instalar ahí mismo como si estuvieses desde un CD/DVD en la unidad, eso sí, hay que tener la ISO en otra partición que no sea la que se va a volar durante la instalación.
Por supuesto esto funciona en toda Distro.
Ok, sólo hacer la acotación de que sirve en toda distro pero sólo hay que adaptar en el GRUB las líneas del initrd y el vmlinuz a como esté su nombre y ruta en la ISO en cuestión. A veces esos archivos no tienen extensión, o tiene extensión lz o gz o 386, etc. A veces es el mismo nombre que tiene algún sufijo. Tampoco están en una carpeta “casper” a menos que sean “lasbuntus” sino en alguna otra carpeta.
Encontrarlos no es difícil porque no hay muchos archivos y carpetas dentro de una ISO, de hecho Lasbuntus son las que más mier+++da traen y si me hubiese tocado adivinar jamás hubiese pensado que estaban en una carpeta “Casper”.
No, no en toda Distro funciona de esa manera, el parametro iso-scan/filename es propio del paquete dracut que viene con Ubuntu (Y posiblemente con Debian) pero en otros casos existen parámetros diferentes y en algunos no existen.
Algunos de los parámetros empleados pueden ser: cdrom-detect cdrom_detect try-usb try_usb iso-scan iso_scan isoloop isofrom iso-from iso_from fromiso from-iso from_iso findiso find-iso find_iso iso-filename iso_filename iso-boot iso_boot isoboot try-usb try_usb tryusb live-dev live_dev live_media live-media bootfrom
Mira tú qué cosas, la primera vez (y todas las veces) que probé con #buntu probé con mi fromsio de toda la vida y no me corrió, no le paré porque igual no corren en mi máquina aunque las pongan desde CD, pero hace unos días traté en la máquina de mi hermano (que no quería gastar un DVD para un simple CD+50MB) y no corría tampoco, ahí fue que descubrí que poniendo iso-scan/filename es que andaba y me fui creyendo que “es que eso era lo nuevo ahora”.
Ahora la cosa es ¿sabes si hay una manera de averiguar el parámetro que debe usarse, viendo en la ISO o en el sistema instalado?.
Sabía que se podía aunque nunca lo había probado, ferpect y +1 para el post!
No quiero ser agua fiesta pero.. Hay una forma mas fácil y practica y es usando UNetbootin. solo hay que señalarle que lo instale en el disco duro ( En mi sistema lo instala en barra “/” ) y reinicia la computadora y aparece en el grub y eso es todo, si quieres eliminarlo solo tienes que iniciar UNetbootin de nuevo y el mismo lo desinstala. UNetbootin esta en los repositorio de la mayoría de las distros.
he aquí un pantallazo http://dl.dropbox.com/u/88303804/fotos/Pantallazo.png
Por la forma en que trabaja unetbootin no estoy tan tranquilo en hacer una instalación que posiblemente me explote el sistema de inicio, además:
1. tu experiencia es solamente con LinuxMint/GRUB2, habría que ver si funciona sin problemas en otros sistemas con GRUB2
2. dudo – no, estoy seguro que tu propuesta no funciona con GRUB Legacy, Lilo, syslinux, Burg o cualquier otro sistema de inicio que no sea GRUB2
3. Usar unetbootin para que lo “instale” en la partición root y luego tener que usarlo nuevamente para desinstalarlo es muy Windows y francamente en GNU/Linux no hacemos las cosas así – la idea que postea eLav es brillante, hiper sencilla, sin arriesgarnos a hacer lío con la partición raíz podemos alojar la ISO donde querramos, no donde un programa quiera hacerlo. Además, qué más sencillo que editar un archivo de configuración para agregar o quitar unas líneas, a mano, donde vemos y sabemos lo que estamos haciendo?
4. unetbootin ha demostrado muchas veces no ser 100% fiable en las imágenes que realiza
Si el método que proponés fuera 100% seguro, flexible y agnóstico de sistema de inicio como lo es el método que propone este post – donde si usamos syslinux cambiamos simplemente un par de líneas y funciona de la misma manera – posiblemente usaría unetbootin, por el momento estoy más tranquilo haciendo la edición a mano que, a rigor de verdad, es más rápida y menos peligrosa.
unetbootin nunca me ha funcionado de manera correcta
El problema es que cada distro es distinto los comandos GRUB y no suelen estar muy documentados.
Hay un archivo que se puede encontrar en Pendrive Linux y otro truco es usar Multisystem en Ubuntu o derivados – desgraciadamente no funciona en otras distros – y copiar la entrada del grub y los archivos generados.
Si se dispone de una aprtición /boot este sistema es también muy útil para disponer de isos de reparación por si pasase algo.
Sería muy útil que alguna distribución basada en ubuntu, las RR no lo necesitan, obligase a disponer de un /boot de 5 Gbs – cada vez las iso son más grandes, y para actualizar copiase la is a /boot, generase la entrada y se actualizase desde esa iso.
incluso que haciendo un update-grub el propio grub detectase las iso y crease automáticamente la entrada, tanto en /boot, como en USBs con isos, y puestos a pedir que las BIOS y UEFIs arrancasen desde ISOs en las llaves USB sin necesidad de instalar grub en ellas.
el archivo de Pendrivelinux es MULTIBOOT, perdón.
Bueno “msx” quizás tengas razón hasta con lo que párese un método muy windows pero personalmente nunca me ha dado problemas ni a los panas linuxseros que lo han usado pero como tu dices quizás solo funcione para grub2. aunque el método expuesto a ser tan linuxsero puede ser estresante para un novato.
Este fue el método que use para probar “<<back | track 5 R3 " y te cuento que me estaba complicando las cosas. (no se si fue por falta de experiencia o falta de tiempo) encontré lo de UNebootin la probé solo fue un minuto en estar lista.
Pero para lo gusto los colores.
Un método muy interesante sin duda alguna, me ha venido de perlas ahora que no tenía una USB libre para probar la nuerva versión de Xubuntu, además de paso me he acordado y he cambiado el nombre a mostrar en grub por Xubuntu xD
Perdón la ignorancia, qué es humanOS? No puedo acceder al blog q ponen al principio.
Saludos.
humanOS es un blog que trata temas sobre GNU/Linux y solo se puede ver desde la intranet cubana, el cual es mantenido por varios chicos de la Universidad de Ciencias Informáticas.
Por qué pude ser accedido sólamente desde Cuba el sitio?
Eso es un problema en la política de la Universidad. Nada que ver con humanOS o nosotros
humanOS es un sitio interno de nuestra comunidad de acá Cuba, el sitio específicamente de la Universidad de Ciencias Informáticas (UCI) de acá. Desafortunadamente por políticas de esa universidad, no se puede acceder al sitio desde IPs que no sean de acá Cuba. Es una verdadera pena que no tenga visibilidad internacional, es un excelente sitio.
Mirá vos, y no pueden hacerle un espejo accesible desde cualquier parte?
Al parecer nop
… una pena de veras que sí.
¡Genial!
Sabía que se podía hacer pero ni idea de cómo configurarlo.
Por cierto, recuerdo haber leido algo sobre una opción del Kernel que al activarla durante el arranque permite (supuestamente) conectar dicho ordenador a otro equipo mediante puerto USB haciéndolo funcionar como si se tratase de un disco duro externo.
¿Es cierto eso? Sería muy útil en portátiles.
¿Cómo se activa?
amigo y como lo puedo modificar para arrancar un iso de xp