Avviare una .iso di una distribuzione di Linux direttamente da GRUB2

16 Maggio, 2011 (15:15) | Linux | By: sargonsei

Avviare una .iso di una distribuzione di Linux direttamente da GRUB2.

In questo mio intervento, descriverò passo-passo come far partire Parted Magic 6.0 LIVE dal bootloader di GRUB2 senza doverla installare.
In fondo a questo articolo, ho collocato i parametri relativi ad altre distribuzioni di Linux.


1) Scaricare
il file pmagic-6.0.iso da qui:
http://partedmagic.com/doku.php?id=downloads
2) Copiare ed incollare il file pmagic-6.0.iso in una cartella della partizione che si ritiene opportuno (in questo esempio, nella cartella iso della partizione /deb/sda13).
3) Apriamo, in modalità SuperUtente, il file /etc/grub.d/40_custom, vi aggiungiamo le righe


menuentry “Parted Magic 6.0 – ISO (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/pmagic-6.0.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=256MiB keymap=it it_IT
initrd (loop)/pmagic/initramfs
}

e salviamo il file /etc/grub.d/40_custom così modificato.

4a) Se abbiamo a che fare con un PC che installa GRUB2 nel MBR del disco fisso (quindi non fa uso del Secure Boot o Boot UEFI che dir si voglia), occorre aprire un terminale in modalità SuperUtente ed impartire i seguenti comandi:grub-install /dev/sda # Installa il BootLoader nell'MBR del disco fisso sda
update-grub2 # Aggiorna il menù del bootloader
reboot # Spegne e riaccende il PC

4b) Se abbiamo a che fare con un PC che fa uso del Secure Boot o Boot UEFI che dir si voglia (quindi installa GRUB2 nell’apposita partizione /boot/efi del disco fisso),occorre aprire un terminale in modalità SuperUtente ed impartire i seguenti comandi:grub-install # Installa il bootloader sotto UEFI
update-grub # Aggiorna il bootloader sotto UEFI
reboot # Spegne e riaccende il PC
Questo comando fa sì che le modifiche apportate al file /etc/grub.d/40_custom vengano incorporate nel file /boot/grub/grub.cfg che è il file che gestisce l’elenco di Sistemi Operativi a cui accedere al boot.
Così facendo, alla prossima riaccensione del PC, sarà possibile scegliere se avviare
Parted Magic 6.0 LIVE.

-o-
Che significano
le istruzioni aggiunte al file /etc/grub.d/40_custom ?
Spieghiamole una per una.

menuentry “Parted Magic 6.0 – ISO (/deb/sda13)” {
Inserisce il testo contenuto fra doppi apici (qualunque esso sia) all’interno del menù del bootloader; siccome ciò che mettiamo fra i doppi apici è ciò che apparirà nella nuova riga del menù del BootLoader, meglio metterci qualcosa di significativo, tipo “NomeDellaDistribuzione – Partizione”. Quando selezioneremo questa voce del menù, verranno eseguite le istruzioni che vanno da { a }.

set root='(hd0,msdos13)’
Dice al GRUB in quale partizione trovare la .iso da avviare. Il contenuto fra parentesi identifica il disco e la partizione (HD0= primo disco fisso, msdos13= partizione 13).

set isofile=”/iso/pmagic-6.0.iso”
Il contenuto fra apici, che è semplicemente il nome (completo del percorso) del file-immagine da montare, viene messo all’interno della variabile isofile.

loopback loop (hd0,msdos13)$isofile
Questa istruzione monta il file .iso ubicato nel disco fisso e nella partizione indicate fra parentesi il cui nome, completo del percorso, è contenuto nella variabile isofile

linux (loop)/pmagic/bzImage iso_filename=$isofile edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=256MiB keymap=it it_IT
La quinta riga monta il kernel, e imposta i parametri che occorre passare al bootloader per attivare correttamente la LIVE. Il nome del file del Kernel deve essere fornito completo del percorso.

initrd (loop)/pmagic/initramfs
La sesta riga monta il disco RAM iniziale, noto con il nome Initrd. è un file-system speciale che viene realizzato in modo da essere innestato inizialmente dal kernel Linux, allo scopo di avviare un sistema minimo, con cui eseguire alcune operazioni preliminari

}
Da ultimo, il simbolo per comunicare che le istruzioni sono terminate.

-o-

Se vogliamo poter avviare più di una .iso, dobbiamo aggiungere TUTTE le istruzioni relative alle .iso che ci interessano.

Segue una sequenza di istruzioni da aggiungere, singolarmente o tutte assieme, al file 40_custom per avviare le .iso richiamate nelle istruzioni stesse.

Notare come le .iso possano essere anche ammassate all’interno di una partizione in un’unica cartella, e che i parametri ed i files che cerchiamo, anche se hanno funzioni simili, possono avere nomi diversi da distribuzione a distribuzione (nella maggioranza dei casi, il kernel è contenuto in un file di nome vmlinuz , ed il disco RAM iniziale è contenuto in un file di nome initrd).

Esplorando la .iso che vogliamo montare, è molto probabile verificare che al suo interno è collocato un file chiamato syslinux.cfg contenente i dati da mettere nelle due righe che precedono il comando di fine istruzione ( } ).

EDIT 23/06/2015
All’epoca in cui questa guida è stata scritta, le schede video da me usate non davano grossi problemi. In seguito, per molte distribuzioni di Linux (specialmente se dotate di ambiente grafico quale KDE4 e GNOME3), si è osservato come la scheda grafica in mio possesso potesse essere inadeguata rispetto alle soluzioni implementate dalla distribuzione di Linux che si vuole avviare. Quando cio’ si verifica, per poter utilizzare le istruzioni descritte in questa guida, diventa necessario aggiungere l’opzione nomodeset alle altre opzioni di avvio.
Per esempio, nel caso di Kubuntu 15.04 con KDE4 da avviare su un PC dotato di scheda video
NVIDIA Corporation C61 [GeForce 6150SE nForce 430]
per poter usare questa guida, ho dovuto sostituire le opzioni
quiet splash
con le opzioni
quiet splash nomodeset

menuentry “Parted Magic 6.0 – ISO (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/pmagic-6.0.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=256MiB keymap=it it_IT
initrd (loop)/pmagic/initramfs
}

menuentry “GParted 0.7.1-5 LIVE (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/gparted-live-0.7.1-5.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt vga=788 ip=frommedia toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}

menuentry “SystemRescueCD x86-2.1.1.iso (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/systemrescuecd-x86-2.1.1.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/isolinux/rescuecd isoloop=$isofile setkmap=it
initrd (loop)/isolinux/initram.igz
}

menuentry “Ubuntu 11.4 LIVE (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/ubuntu-11.04-desktop-i386.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/casper/vmlinuz file=(loop)/preseed/mint.seed boot=casper iso-scan/filename=$isofile quiet splash —
initrd (loop)/casper/initrd.lz
}

menuentry “Linux Mint 10 GNOME -ISO LIVE (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/linuxmint-10-gnome-dvd-i386.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/casper/vmlinuz file=(loop)/preseed/mint.seed boot=casper iso-scan/filename=$isofile quiet splash —
initrd (loop)/casper/initrd.lz
}

menuentry “Linux Mint 11 RC GNOME -ISO LIVE (/deb/sda13)” {
set root='(hd0,msdos13)’
set isofile=”/iso/linuxmint-11-gnome-dvd-32bit-rc.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/casper/vmlinuz file=(loop)/preseed/mint.seed boot=casper iso-scan/filename=$isofile quiet splash —
initrd (loop)/casper/initrd.lz
}

menuentry “Clonezilla Live – 800×600 maverick (/deb/sda13)” {
set isofile=”/iso/clonezilla-live-20110328-maverick.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/live/vmlinuz boot=live live-config noswap nolocales edd=on nomodeset ocs_live_run=\”ocs-live-general\” ocs_live_extra_param=\”\” ocs_live_keymap=\”\” ocs_live_batch=\”no\” ocs_lang=\”\” vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}

menuentry “PCLinuxOS-2011.7-XFCE ISO (on /dev/sda13)” {
set isofile=”/iso/pclinuxos-phoenix-2011-07.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/isolinux/vmlinuz root=/dev/sda13 bootfromiso=$isofile livecd=livecd acpi=on splash=verbose fstab=rw,auto
initrd (loop)/isolinux/initrd.gz
}

menuentry “PCLinuxOS-openbox-2011.08 ISO (on /dev/sda13)” {
set isofile=”/iso/pclinuxos-openbox-2011.08.iso”
loopback loop (hd0,msdos13)$isofile
linux (loop)/isolinux/vmlinuz root=/dev/sda13 bootfromiso=$isofile livecd=livecd acpi=on splash=verbose fstab=rw,auto
initrd (loop)/isolinux/initrd.gz
}

menuentry “Razorqt Salentos-12.04.4-x86 ISO LIVE (/dev/sda15)” {
set root='(hd0,msdos15)’
set isofile=”/iso/Ubuntu/razorqt-salentos-12.04.4-x86.iso”
loopback loop (hd0,msdos15)$isofile
linux (loop)/casper/vmlinuz file=(loop)/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile quiet splash —
initrd (loop)/casper/initrd.lz
}