LINUX: Come avviare i file ISO dal boot loader GRUB2

()

come avviare i file ISO memorizzati sul tuo disco rigido con il boot loader GRUB2 . Normalmente è necessario creare un DVD live o una USB live per avviare le immagini ISO di Linux. Puoi farlo con strumenti grafici o dalla riga di comando . Ma cosa succede se non si dispone di un disco ottico o di una chiavetta USB o il computer non supporta la masterizzazione di immagini ISO su un disco ottico?

Avvia i file ISO dal boot loader GRUB2

GRUB in soccorso

GRUB2 ( GRand Unified Bootloader ) è il boot loader standard per Linux. Può avviare i file immagine ISO di Linux archiviati sul disco rigido senza USB o DVD. GRUB Legacy (versione 0.x) non ha questa funzionalità. Molte distribuzioni Linux possono essere avviate direttamente da un file ISO.

  • GRUB2 supporta molti file system, inclusi ma non limitati a ext4HFS+NTFS, il che significa che puoi mettere il tuo file ISO su uno qualsiasi di questi file system.
  • GRUB2 può leggere file direttamente da dispositivi LVM e RAID .
  • GRUB2 ha anche il supporto di rete. È possibile caricare immagini ISO sulla rete utilizzando il protocollo TFTP .

Per utilizzare GRUB2 per avviare i file ISO, è necessaria una distribuzione Linux con GRUB2 come boot loader già installato sul computer. Le seguenti istruzioni funzionano sia sul BIOS tradizionale che sul nuovo firmware UEFI . Tuttavia, se utilizzi UEFI, dovresti disabilitare l’avvio protetto nel firmware per GRUB2 per avviare i file ISO, altrimenti potresti vedere l’errore “impossibile trovare il loopback dei comandi“.

Adesso cominciamo.

Avvia i file ISO di Ubuntu da GRUB2

Accedi a un computer che esegue Linux e scarica un file immagine ISO di Ubuntu . Quindi apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo a riga di comando come Nano.

sudo nano /etc/grub.d/40_custom

La prima riga di questo file #! /bin/sh indica che si tratta di uno script di shell. In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB.

grub 40_custom

Copia e incolla il testo seguente alla fine di questo file.

menuentry " ubuntu-20.04.2.0-desktop-amd64.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/ubuntu-20.04.2.0-desktop-amd64.iso "
  loopback loop ( hd0 , 5 ) $ isofile
  linux (loop) / casper / vmlinuz boot = casper iso-scan / filename = $ isofile quiet noeject noprompt splash
  initrd (loop) / casper / initrd
}
Avvia i file ISO dal boot loader GRUB2 btrfs

Dove:

  • menuentry : questa voce verrà visualizzata nel menu di avvio di GRUB2. Puoi chiamarlo come preferisci.
  • Il comando insmod inserisce un modulo. Poiché il file ISO è memorizzato nella mia ext4directory home, il ext2modulo è necessario. Se è archiviato su una partizione NTFS, è necessario insmod ntfsinvece. Si noti che GRUB potrebbe non essere in grado di riconoscere i file system XFS e Btrfs, quindi non è consigliabile archiviare il file ISO su una partizione XFS o Btrfs.
  • set isofile : specifica il percorso del file immagine ISO. Qui sto usando il file ISO desktop di Ubuntu 20.04 salvato nella Downloadscartella.
  • loopback : monta il file ISO. hd0indica il primo disco rigido del computer e 5il file ISO è archiviato nella quinta partizione del disco.
  • Il linuxcomando carica un kernel Linux dal percorso specificato. casper / vmlinuz.efi è il kernel Linux all’interno dell’immagine ISO di Ubuntu.
  • Il initrdcomando carica un ramdisk iniziale dal percorso specificato. Può essere utilizzato solo dopo che il linuxcomando è stato eseguito. Il ramdisk iniziale è un file system radice minimo montato sulla RAM. casper / initrd.lz è il file initrd all’interno dell’immagine ISO di Ubuntu.

Notare che GRUB non distingue IDE da SCSI. Nel kernel Linux , si /dev/hdariferisce al primo disco rigido IDE e si /dev/sdariferisce al primo disco rigido SCSI o SATA. Se si utilizza un NMVe SSD, potrebbe essere denominato come /dev/nvme0n1/dev/nvme1n1e così via. Ma in GRUB , ci si riferisce sempre al primo disco rigido hd0, indipendentemente dal tipo di interfaccia. Si noti inoltre che i numeri di partizione in GRUB iniziano da 1, non da 0.

Se il file ISO è archiviato su una partizione estesa del disco MBR , il numero della partizione inizia da 5, invece di 1. Ad esempio, la prima partizione logica all’interno di una partizione estesa sarà numerata come 5; la seconda partizione logica all’interno di una partizione estesa sarà numerata come 6. Per controllare il numero della partizione, è possibile eseguire lsblksudo parted -lcomandare nella finestra del terminale.

Salva e chiudi il file. (Premere Ctrl+O, quindi premere Enterper salvare un file nell’editor di testo Nano. Premere Ctrl+Xper uscire.)

Quindi aggiorna il menu di avvio di GRUB con il seguente comando:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Su Fedora, CentOS, RHEL, OpenSUSE, il comando da eseguire è:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Su Debian, Ubuntu, Linux Mint, puoi utilizzare il seguente comando per aggiornare il menu di avvio di GRUB.

sudo update-grub

Potresti non vedere subito la nuova voce di menu, ma la vedrai al riavvio del computer.

sudo shutdown -r now

Vedrai la tua voce personalizzata nella parte inferiore del menu di avvio di GRUB2. Se GRUB non è riuscito ad avviare la tua immagine ISO, controlla il /etc/grub.d/40_customfile per vedere se c’è un errore di battitura o hai tralasciato uno spazio o qualcosa del genere.

avvia il file ISO di Ubuntu da Grub

Puoi aggiungere tutte le voci di menu che desideri nel /etc/grub.d/40_customfile.

Debian ISO

Scarica il file ISO del CD live di Debian . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare un file ISO Debian.

menuentry " debian-live-10.8.0-amd64-lxqt.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/debian-live-10.8.0-amd64-lxqt.iso "
  loopback loop ( hd0,5 ) $ isofile
  linux (loop) / live / vmlinuz- 4.19.0-14 -amd64 boot = live findiso = $ isofile
  initrd (loop) /live/initrd.img- 4.19.0-14 -amd64
}

Notare che il file vmlinuzinitrd.imginclude il numero di versione. Dovresti montare il tuo file ISO Debian e controllare se è necessario aggiornarlo. Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Arch Linux ISO

Scarica il file ISO di Arch Linux . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare un file ISO di Arch Linux.

voce di menu " archlinux-2021.03.01-x86_64.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/archlinux-2021.03.01-x86_64.iso "
  loopback loop ( hd0,5 ) $ isofile
  linux (loop) / arch / boot / x86_64 / vmlinuz-linux archisolabel = ARCH_202103 img_dev = / dev / sda5 img_loop = $ isofile earlymodules = loop
  initrd (loop) /arch/boot/x86_64/initramfs-linux.img
}

Si noti che se si scarica un file ISO di Arch Linux più recenti, come archlinux-2021.04.01-x86_64.iso, allora avete bisogno di aggiornare l’ archisolabelARCH_202104. Puoi anche scoprire quale dovrebbe essere l’etichetta montando l’ISO di Arch Linux nel tuo file manager. L’etichetta verrà mostrata nel tuo file manager.

avviare Arch Linux ISO da GRUB

Inoltre potrebbe essere necessario modificare il valore di img_dev. È il nome del dispositivo in cui è archiviato il file ISO.

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Clonezilla Live ISO

Clonezilla è uno strumento gratuito e open source affidabile per il backup e il ripristino bare metal di unità disco. Scarica il file ISO live di Clonezilla . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare il file ISO di Clonezilla Live.

menuentry " clonezilla-live-20210127-groovy-amd64.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/clonezilla-live-20210127-groovy-amd64.iso "
  loopback loop ( hd0,5 ) $ isofile
  linux (loop) / live / vmlinuz boot = live findiso = $ isofile
  initrd (loop) /live/initrd.img
}

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

RHEL 8 / CentOS Stream ISO

Innanzitutto, scarica il file immagine ISO. Per RHEL 8, leggi il seguente articolo per scoprire come scaricare il file immagine ISO.

L’immagine ISO di CentOS Stream può essere scaricata dal suo sito web ufficiale.

Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare il file ISO RHEL 8 / CentOS / Fedora.

voce di menu " rhel-8.3-x86_64-boot.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/rhel-8.3-x86_64-boot.iso "
  loopback loop ( hd0,5 ) $ isofile
  linux (loop) / isolinux / vmlinuz noeject inst.stage2 = hd: / dev / sda5 : $ isofile
  initrd (loop) /isolinux/initrd.img
}

Nel codice sopra, /dev/sda5è la quinta partizione del primo disco in cui è archiviato il file immagine ISO. Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Fedora ISO

L’immagine ISO di Fedora può essere scaricata dal suo sito web ufficiale. Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare il file ISO di Fedora.

voce di menu " Fedora-Workstation-Live-x86_64-33-1.2.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/Fedora-Workstation-Live-x86_64-33-1.2.iso "
  loopback loop ( hd0 , 5 ) $ isofile
  linux (loop) / isolinux / vmlinuz root = live: CDLABEL = Fedora-WS-Live-33-1-2 rd.live.image verbose iso-scan / filename = $ isofile
  initrd (loop) /isolinux/initrd.img
}

Nel codice sopra, CDLABELè l’etichetta visualizzata nel tuo file manager quando l’immagine ISO è montata.

Etichetta CD immagine ISO Fedora

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

OpenSUSE Leap Live ISO

Scarica il  file ISO live di OpenSUSE Leap . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare il file ISO di OpenSUSE Leap Live.

voce di menu " openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media.iso "
  loopback loop (hd 0 , 5 ) $ isofile
  linux (loop) / boot / x86_64 / loader / linux boot = isolinux root = live: CDLABEL = openSUSE_Leap_15.2_KDE_Live rd.live.image verbose iso-scan / filename = $ isofile
  initrd (loop) / boot / x86_64 / loader / initrd
}

Nel codice sopra, CDLABELè l’etichetta visualizzata nel tuo file manager quando l’immagine ISO è montata.

opensuse leap live etichetta cd

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Kali Linux Live ISO

Scarica il  file ISO live di Kali Linux . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare un file ISO di Kali Linux Live.

menuentry " kali-linux-2021.1-live-amd64.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/kali-linux-2021.1-live-amd64.iso "
  loopback loop (hd 0 , 5 ) $ isofile
  linux (loop) / live / vmlinuz boot = live findiso = $ isofile
  initrd (loop) /live/initrd.img
}

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Linux Mint Live ISO

Scarica il file ISO di Linux Mint . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare un file ISO di Linux Mint.

menuentry " linuxmint-20.1-cinnamon-64bit.iso " {
  insmod ext2
  set isofile = " /home/linuxbabe/Downloads/linuxmint-20.1-cinnamon-64bit.iso "
  loopback loop (hd 0 , 5 ) $ isofile
  linux (loop) / casper / vmlinuz boot = casper iso-scan / filename = $ isofile quiet noeject noprompt splash
  initrd (loop) /casper/initrd.lz
}

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Trovare il kernel Linux e il nome del file initrd

Il kernel Linux e il file initrd ( ramdisk iniziale) possono essere diversi per le diverse immagini ISO di Linux. Per Ubuntu, il kernel Linux si trova in /casper/vmlinuze il file immagine initrd si trova in /casper/initrd. Se non sai dove si trovano, apri la tua immagine ISO con il gestore di archivi. Lo screenshot seguente mostra il file immagine ISO di Arch Linux.

File ramdisk iniziale di Grub

Visualizza il menu di avvio di GRUB

Alcune distribuzioni Linux come Ubuntu nascondono il menu di avvio di GRUB se sul disco rigido è installato un solo sistema operativo. Per mostrare il menu di avvio di GRUB, modificare un file di configurazione.

sudo nano / etc / default / grub

Trova la riga seguente, che dice a GRUB di nascondere il menu di avvio.

GRUB_TIMEOUT_STYLE = nascosto

Aggiungi il #carattere all’inizio per commentare questa riga.

# GRUB_TIMEOUT_STYLE = nascosto

Quindi trova la riga seguente.

GRUB_TIMEOUT = 0

Passa 010, quindi avrai 10 secondi per scegliere una voce nel menu di avvio di GRUB.

GRUB_TIMEOUT = 10

Salva e chiudi il file. Quindi aggiorna le configurazioni di GRUB.

sudo update-grub

Modifica l’ordine di avvio in GRUB

Supponiamo che tu voglia avviare l’ISO per impostazione predefinita in GRUB, quindi modificare il file di configurazione.

sudo nano / etc / default / grub

Trova la riga seguente, che fa selezionare a GRUB la prima voce nel menu di avvio.

GRUB_DEFAULT = 0

Cambialo in qualcosa di simile:

GRUB_DEFAULT = "clonezilla-live-20210127-groovy-amd64.iso"

Se il /etc/grub.d/40_customfile ha questa voce menuentry "clonezilla-live-20210127-groovy-amd64.iso", GRUB selezionerà questa voce per impostazione predefinita. Aggiorna GRUB per rendere effettive le modifiche.

sudo update-grub

Puoi anche mantenere l’ordine di avvio predefinito, ma avviare un file ISO per l’avvio successivo solo con:

sudo grub-reboot clonezilla-live-20210127-groovy-amd64.iso

o

sudo grub2-reboot clonezilla-live-20210127-groovy-amd64.iso

Quindi riavvia.

sudo shutdown -r now

Suggerimenti aggiuntivi

Se hai un disco SATA e un SSD NVMe all’interno del tuo computer, il disco SATA è il primo e l’SSD NVMe è il secondo. Lo stesso vale per un’unità USB e un SSD NVMe. Se hai un disco ottico , GRUB potrebbe pensare che il disco ottico sia il primo disco.

Se viene visualizzato il seguente errore quando GRUB tenta di avviare un file immagine ISO, è probabile che tu abbia specificato il percorso del file ISO su un disco ottico.

non è possibile ottenere il valore C / H / S

Se disponi di un file system che occupa l’intero disco, non è necessario specificare il numero di partizione in GRUB. Ad esempio, ho un file ISO sul mio secondo disco. Non ho creato alcuna partizione sul secondo disco, quindi posso specificare (hd1)nel file di configurazione di GRUB.

 loopback loop (hd1) $ isofile

Se viene visualizzato un messaggio di errore come di seguito durante l’aggiornamento del menu di avvio di GRUB, puoi ignorare questo errore.

grub-probe: errore: impossibile trovare un'unità GRUB per / dev / loop11p3. Controlla la tua mappa del dispositivo.

ISO di Windows 10

Sì, puoi creare un USB avviabile di Windows 10 su Ubuntu o qualsiasi distribuzione Linux . Se non si dispone di una chiavetta USB, è possibile avviare l’ISO di Windows 10 sul disco rigido con GRUB2. Scarica il  file ISO di Windows 10 . Tieni presente che potresti non essere in grado di scaricare l’ISO da questo collegamento su un computer Windows. Questo collegamento per il download è visibile agli utenti su computer Linux.

GRUB2 non può avviare direttamente l’ISO di Windows 10. È necessario creare una partizione NTFS separata sul disco con un editor di partizioni come GParted ed estrarre l’ISO di Windows 10 in quella partizione. L’ultimo file ISO di Windows 10 è 5.8G. La nuova partizione NTFS dovrebbe essere almeno 7G e non dovrebbe essere utilizzata per memorizzare altri file.

Avvio di GRUB BIOS ISO di Windows 10

Quindi trova la tua ISO di Windows 10 in File manager. Aprilo con il mounter dell’immagine del disco .

ubuntu monta l'immagine ISO di Windows 10

Apri il file system montato. Seleziona tutti i file e le cartelle e copiali nella partizione NTFS.

GRUB2 avvia Windows 10 ISO

A volte il file manager su Ubuntu si blocca e sembra che l’operazione di copia si sia interrotta. In realtà, funziona. Sii paziente. Quando vedi un segno di spunta, significa che l’operazione di copia è terminata.

Windows 10 avviabile usb creator linux

Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_customfile con un editor di testo come Nano.

sudo nano /etc/grub.d/40_custom

In questo file, possiamo aggiungere voci personalizzate al menu di avvio di GRUB. In questo caso, vogliamo aggiungere una voce per avviare il programma di installazione di Windows 10. Se il tuo computer utilizza ancora il firmware BIOS tradizionale , aggiungi il testo seguente in questo file.

menuentry "Windows-10-Installer.iso" {
  imposta root = (hd 0 , 6 )
  insmod part_msdos
  insmod ntfs
  insmod ntldr
  # rimuovere il commento dalla riga seguente se il computer dispone di più dischi rigidi. 
  #drivemap -s (hd0) $ {root}
  ntldr / bootmgr
}

Il mio numero di partizione NTFS è 6, quindi lo uso (hd0,6)come root. È possibile eseguire il sudo parted -lcomando per controllare il numero di partizione NTFS. Se il tuo computer ha più dischi rigidi, usa il drivemapcomando per impostare la partizione (hd0,6)come primo disco rigido, così Windows sarà in grado di avviarsi.

Se il tuo computer utilizza il firmware UEFI , aggiungi il testo seguente in questo file.

menuentry "Windows-10-Installer.iso" {
  imposta root = (hd 0 , 6 )
  insmod part_gpt
  insmod ntfs
  catena insmod
  chainloader /efi/boot/bootx64.efi
}

Salva e chiudi il file. Quindi aggiorna il menu di avvio di GRUB.

sudo grub-mkconfig -o /boot/grub/grub.cfg

o

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Scollega tutti i dispositivi di archiviazione USB esterni , quindi riavvia il computer. 

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?