martes, 25 de agosto de 2020

Arrancar imagen iso desde grub2

 Tenia un problema necesitaba arrancar una iso pero no lo podía hacer desde una USB porque allí tenía un sistema que tenía que instalar en otra computadora y no quería quitarla y volverla a poner si fuera necesario.

No podía ponerla en la partición donde esta instalada el grub porque ya no tenía espacio, así que debía ponerla en una partición disponible y la opción mas viable era arrancar la imagen iso desde grub, me costo trabajo pero aquí dejo como lo hice para los que nos pueda servir también menciono que es en disco duro HD normal NO en un SSD que en SSD es diferente, también es una BIOS lagacy.

Por supuesto debemos descargar la imagen iso de la distribución, lo que ponga aquí servirá para imágenes de ubuntu pero se puede modificar así que descargué la imagen de xubuntu

 xubuntu-20.04.1-desktop-amd64.iso

La copié con otro nombre para que si se arruinaba la imagen de pruebas estaría bien la otra y para mas facilidad en poner el nombre en el archivo, así en la consola podemos hacer.

cp xubuntu-20.04.1-desktop-amd64.iso xubuntu20.iso

Debemos crear un directorio en el directorio raíz podríamos llamarlo iso

sudo mkdir  iso

Lo creamos en la partición que necesitemos.

Después debemos editar uno de los archivos del grub2 de la siguiente forma:

sudo nano /etc/grub.d/40_custom

Ya abierto el archivo debemos agregar al final la entrada del menú para que cargue la imagen iso de la siguiente manera:


menuentry "Xubuntu 20.04.1" {
set root=(hd0,1)
loopback loop /iso/xubuntu20.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash iso-scan/filename=/iso/xubuntu20.iso --
initrd (loop)/casper/initrd
}

 

Quedando de la siguiente manera:


#!/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 "Xubuntu 20.04.1" {
set root=(hd0,1)
loopback loop /iso/xubuntu20.iso
linux (loop)/casper/vmlinuz boot=casper locale=es_ES bootkbd=en console-setup/layoutcode=es quiet splash iso-scan/filename=/iso/xubuntu20.iso --initrd (loop)/casper/initrd
}

1) "Xubuntu 20.04.01" es el título que aparecerá en el menú de grub puede ser el que queramos.
2) set root=(hd0,1) aquí es donde indicamos en que partición esta la imagen iso lo que tenemos que modificar es (hd0,1), donde hd0 es el disco donde esta en mi caso el disco es "sda" el primer disco duro por tanto es el hd0 como es el primer disco duro es 0, si fuera el segundo disco duro seria hd1, luego la primer partición como mi lugar seria sda1 entonces pondríamos el 1 de la primera partición quedándome como lo coloque (hd0,1).

Si tenemos duda de la partición podemos darle al siguiente comando en la consola para ver las particiones de un disco duro, como sigue:

sudo fdisk -l /dev/sda

 

fdisk

3) loopback loop /iso/xubuntu20.iso: aquí es donde decimos en que directorio esta la imagen iso en mi caso como creé un directorio en la raíz que fue "/iso" y el nombre que le pusé a la imagen fue "xubuntu20.iso".

4) linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/xubuntu20.iso --: en esta parte decimos en que directorio esta el kernel adentro de la imagen iso, esta en "/casper", en las imágenes iso de ubuntu pero si fuera otra distro se le pondría el adecuado no olviden esos dos guiones al final de la linea.

- locale y bootkbd, para que arranque con el idioma y la distribución del teclado en Español o ingles yo dejo ingles el teclado.
- splash, para que muestre la imagen de carga (splash) o no si es no seria quiet. 

esos parámetros pueden ser opcionales.

5) initrd (loop)/casper/initrd en esta linea igual se le indica en que directorio de la imagen iso esta el initrd igual que en el inciso 4 y el archivo se llama initrd.


luego que ya quedó bien el archivo lo guardamos actualizamos el grub

sudo update-grub2

se pueden poner mas imágenes iso dentro del directorio "/iso" que creamos poniendo la entrada menuentry por cada iso, yo probé poner el directorio iso dentro de otro directorio pero no funcionó solo me funciono si lo pongo en el directorio raíz.

traté de instalar el sistema en una partición diferente en el mismo disco duro pero no se puede.