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?
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
ext4
,HFS+
eNTFS
, 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_custom
file 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.
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 }
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
ext4
directory home, ilext2
modulo è necessario. Se è archiviato su una partizione NTFS, è necessarioinsmod ntfs
invece. 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
Downloads
cartella. - loopback : monta il file ISO.
hd0
indica il primo disco rigido del computer e5
il file ISO è archiviato nella quinta partizione del disco. - Il
linux
comando carica un kernel Linux dal percorso specificato. casper / vmlinuz.efi è il kernel Linux all’interno dell’immagine ISO di Ubuntu. - Il
initrd
comando carica un ramdisk iniziale dal percorso specificato. Può essere utilizzato solo dopo che illinux
comando è 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/hda
riferisce al primo disco rigido IDE e si /dev/sda
riferisce al primo disco rigido SCSI o SATA. Se si utilizza un NMVe SSD, potrebbe essere denominato come /dev/nvme0n1
, /dev/nvme1n1
e 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 lsblk
o sudo parted -l
comandare nella finestra del terminale.
Salva e chiudi il file. (Premere Ctrl+O
, quindi premere Enter
per salvare un file nell’editor di testo Nano. Premere Ctrl+X
per 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_custom
file per vedere se c’è un errore di battitura o hai tralasciato uno spazio o qualcosa del genere.
Puoi aggiungere tutte le voci di menu che desideri nel /etc/grub.d/40_custom
file.
Debian ISO
Scarica il file ISO del CD live di Debian . Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_custom
file 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 vmlinuz
e initrd.img
include 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_custom
file 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’ archisolabel
a ARCH_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.
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_custom
file 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_custom
file 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_custom
file 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.
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_custom
file 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.
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_custom
file 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_custom
file 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/vmlinuz
e 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.
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 0
a 10
, 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_custom
file 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.
Quindi trova la tua ISO di Windows 10 in File manager. Aprilo con il mounter dell’immagine del disco .
Apri il file system montato. Seleziona tutti i file e le cartelle e copiali nella partizione NTFS.
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.
Quindi, apri una finestra di terminale e modifica il /etc/grub.d/40_custom
file 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 -l
comando per controllare il numero di partizione NTFS. Se il tuo computer ha più dischi rigidi, usa il drivemap
comando 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.