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.
Utilice los valores predeterminados de mkusb al crear la unidad USB persistente.
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.
La consola DUS después de la instalación.
GParted antes de la modificación de la partición.
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: cree una carpeta de nombre exclusivo para cada sistema operativo (que requiere 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.
Cree una carpeta para los archivos ISO en la partición USBdata de NTFS.
Agregue algunos ISO a la carpeta ISO.
ubicación de 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 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),
Después de la instalación, cree una carpeta para ISO y, si es necesario, carpetas para persistencia (similar al procedimiento anterior).
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.