Esto de arrancar una imagen iso directamente usando el grub2 ya lo había hecho otras veces pero ahora con los discos M.2 no.
No sabía como hacerlo solo porque Dios es grande lo pude hacer y es como sigue.
primeramente en la terminal usamos el comando lsblk como se muestra en la siguiente imagen:
buscamos la partición donde se encuentra la imagen iso en mi caso es nvme0n1p2, como en el archivo de arranque debemos colocar (hdX,Y) vemos que aparece sr0 que seria disco cero (0) y nvme0n1p2 que seria de esta forma nvme0n1pY sería disco 1, X=1, y la partición sería la Y =2; esos números son los que debemos colocar en ese orden en este caso (hd1,2) la X = 1 por ser disco 1 y la Y=2 seria la partición 2 por p2 del nvme0n1p2.
vemos este otro caso
sda seria disco 0, sr0 seria 1 y nvme0n1 seria 2; la partición la misma por ser p2; podríamos (hd2,2) este caso no lo he probado pero esa es la lógica.
ahora entramos al siguiente archivo, para entrar en el, debemos cargar el archivo como administrador desde la terminal
sudo nano /etc/grub.d/40_custom
Nos saldrá algo como esto, en este caso uso fedora 40.
##!/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.
nos debe quedar algo como lo siguiente:
##!/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 "Fedora 40 Xfce" {
#no dejar ningun espacio en blanco en esta linea
set isoFileFedora40="/boot/Fedora-Xfce-Live-x86_64-40-1.14.iso"
loopback loop (hd1,2)$isoFileFedora40
linux (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isoFileFedora40 root=live:CDLABEL=Fedora-Xfce-Live-40-1-14 rd.live.image quiet rhgb
initrd (loop)/images/pxeboot/initrd.img
}
Ahora vemos los detalles
En la variable isoFileFedora40 guardamos la ruta donde esta la imagen iso mas el nombre de la imagen, en mi caso la puse en el directorio boot de la partición porque grub solo puede buscar un directorio abajo de la raíz.
Seguidamente debemos entrar en la imagen iso con doble click para encontrar el kernel y el comando de arranque, buscamos en los siguientes directorios para encontrar vmlinuz e initrd.
Luego el lugar donde encontrar el kernel, que se encuentra en el directorio
/imagen/pxeboot/ el kernel llamado vmlinuz.
linux (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isoFileFedora40 root=live:CDLABEL=Fedora-Xfce-Live-40-1-14 rd.live.image quiet rhgb
Despues iso-scan/filename=$isoFileFedora40 donde esta la imagen
esta parte que esta a continuación la encontramos en /boot/grub2/grub.cfg copiamos dicha parte hasta antes de initrd.
root=live:CDLABEL=Fedora-Xfce-Live-40-1-14 rd.live.image quiet rhgb
La siguiente linea
initrd (loop)/images/pxeboot/initrd.img
es indicarle donde esta el archivo initrd.img vemos que es el mismo directorio donde esta el kernel, a initrd (loop)
le ponemos seguido el directorio de dicho archivo.
Luego debemos actualizar el grub creando la configuración y actualizando grub2 dependiendo la distribución lo hacemos de la madera adecuada; en manjaro:
sudo update-grub
es en otras distribuciones hay que hacer grub-mkconfig antes.