Saltar al contenido

¿Cómo inicio un archivo ISO desde mi unidad usando grub2 en máquinas UEFI?

Solución:

Hay un error en grub 2.04, así que asegúrese de tener una versión anterior o posterior.

Bueno, los conceptos básicos para agregar un archivo ISO a grub son los mismos para una UEFI que para una máquina BIOS: editar /etc/grub.d/40_custom y agrega un menuentry item (GParted se usa en este ejemplo) al final del archivo:

menuentry "GParted Live ISO" {
}

Ahora vamos a agregar una variable que contiene el directorio donde almacenamos la ISO (hasta ahora, todo bien: no hay diferencias con las máquinas BIOS):

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}

Estoy usando /opt para almacenarlos, ya que no me gusta crear directorios en la raíz de mi máquina y, de acuerdo con la jerarquía del sistema de archivos de Linux, ahí es donde debería residir el software opcional de todos modos.

Antes de agregar el loopback variable, necesitamos averiguar en qué disco duro está almacenado el archivo, por lo que hacemos una: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1 y la salida en mi máquina es: /dev/sdb2.

Sin embargo usos grubhdX,Y) notación y esta ¡Aquí es donde entra en juego la diferencia entre las máquinas UEFI y BIOS! Así que ahora reinicia tu máquina, ve al menú de grub y presiona C: Esto lo llevará al símbolo del sistema de grub con comandos diferentes a los que está acostumbrado, pero el único que necesita es: ls.

En mi máquina, la salida es:

(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...

¿Eh? 4 unidades? ¡Solo tengo 3! Y no es (hd1,4) línea en un BIOS pero (hd1,gpt3) en UEFI y (hd0) no tiene particiones en absoluto!

Bueno, aparentemente cuando parte de la NVRAM se usa como almacenamiento y aparece como (hd0) ¡debe comenzar a numerar sus unidades en 1! Mientras que toda la información que encuentra sobre el arranque de archivos ISO dice que debe comenzar a numerar desde 0 (en máquinas BIOS esto es siempre cierto, Este no es necesariamente el caso en algunas máquinas UEFI ! )

Entonces el valor de loopback se convierte en (hd2,gpt2)$GPartedISOFile ya que el archivo ISO en mi máquina era /dev/sdb2 (segundo impulso hd2, segunda partición gpt2):

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
}

Otra diferencia es que el linux y initrd en las máquinas BIOS se llaman linuxefi y initrdefi en máquinas UEFI, lo que nos da nuestro resultado final:

#!/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 "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
  initrdefi (loop)/live/initrd.img
}

Así que ahora guarde ese archivo y actualice grub con:

update-grub

Después de todo lo anterior, reinicie, vaya al menú de grub, elija GParted Live ISO ¡Y ahora puede iniciar fácilmente su ISO sin tener que buscar una memoria USB nunca más!

🙂

Ejemplo de CloneZilla Live (para esta pregunta)

menuentry "CloneZilla ISO" {
  set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
  loopback loop (hd2,gpt2)$ISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
  initrdefi (loop)/live/initrd.img
}

Una alternativa es simplemente agregar un archivo de configuración a 40_custom como este:

menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
} 

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
} 

Hago esto como cuando actualizo un ISO, siempre me olvido de ejecutar sudo update-grub. Las entradas anteriores nunca tienen que cambiar y solo puedo editar livecdimage.cfg, que tiene el mismo formato que cualquier 40_custom pero sin líneas de encabezado, y está en mi carpeta / ISO en mi partición ISO.

Agrego toram como otro parámetro de arranque y en el sistema con Nvidia agrego el parámetro de arranque nomodeset. Pero a menudo es necesario desmontar / isodevice.

No se puede desmontar isodevice desmontar ISO https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

sudo umount -l -r -f /isodevice

Y esto es parte de mi archivo livecdimage.cfg

# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#} 
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root= 
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}

mkusb HACK MULTIBOTAS

Mkusb es una excelente base para proyectos personalizados de unidades de arranque debido a sus capacidades con BIOS y UEFI.

Este truco arranca varios archivos ISO, incluido el instalador de Windows, y tiene un menú grub2.

Los menús de Grub2 para la mayoría de los sistemas operativos están disponibles mediante la Búsqueda de Google y están más allá del alcance de esta respuesta.

valores predeterminados de mkusb

Utilice los valores predeterminados de mkusb al crear la unidad USB persistente.

mkusb usa los valores predeterminados de nuevo

Utilice los valores predeterminados de persistencia de mkusb en caso de duda, el tamaño de la partición se puede ajustar más tarde, pero lleva tiempo.

Consola DUS

La consola DUS después de la instalación.

GParted Antes

GParted antes de la modificación de la partición.

Gparted después

Gpartido después de la modificación: sobrescriba sdb4, la partición del sistema operativo ISO9660 y sdb5, la partición ext2 casper-rw, con una partición FAT32 para archivos de persistencia.

Partición de persistencia

Partición de persistencia: cree una carpeta de nombre exclusivo para cada sistema operativo (que requiere persistencia)

Carpeta de persistencia

Carpeta de persistencia: agregue un archivo casper-rw y un archivo home-rw opcional a cada carpeta de persistencia. Se puede crear un archivo home-rw cambiando el nombre de un archivo casper-rw. Un archivo home-rw es como una partición de inicio separada en una instalación completa, se puede reutilizar después de las actualizaciones de la versión.

Carpeta ISO

Cree una carpeta para los archivos ISO en la partición USBdata de NTFS.

Contenido de la carpeta ISO

Agregue algunos ISO a la carpeta ISO.

Ubicación de GRUB

ubicación de grub.cfg

grub.cfg

Edite grub.cfg para montar en bucle los archivos ISO. Incluir: persistent persistent-path=/<persistent-folder-name>/ si quieres persistencia. Agregue rmmod tpm a grub.cfg encima del primer menú.

EDITAR 18.04+ En grub especificar vmlinuz no vmlinuz.efi y initrd no initrd no initid.lz

sudo parted -ls / dev / sdb

sudo parted -ls / dev / sdb

sudo lsblk -f / dev / sdb

sudo lsblk -f / dev / sdb

Si se requiere un instalador de Windows, posiblemente sea más fácil comenzar con la función mkusb “extraer el instalador de Windows”, (tuve que extraer el ISO de Windows a TAR manualmente),

Instalador de Windows mkusb

Después de la instalación, cree una carpeta para ISO y, si es necesario, carpetas para persistencia (similar al procedimiento anterior).

mkusb grub de Windows

Edite /boot/grub/grub.cfg para montar en bucle cualquier ISO y especificar las carpetas de persistencia.

(no he encontrado una manera de montar en bucle un archivo ISO de Windows).

Si lo anterior se usa como una memoria USB, se puede usar para arrancar los ISO almacenados en una computadora solo con Windows. Grub no es necesario en la unidad interna.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *