Crea sito
 

Avviare da GRUB2 una LIVE.iso in una partizione avente UUID noto

Avviare da GRUB2 una LIVE.iso in una partizione avente UUID noto (syslinux.cfg)

La seguente guida, spiega come e perché modificare il menù di GRUB2 della distribuzione di Linux che governa il menù del bootloader per consentire l’avvio di Linux GParted prendendo i parametri dal file syslinux.cfg contenuto nella mesesima LIVE.iso corrispondente, collocata in una cartella denominata /iso/ a sua volta collocata all’interno di una partizione del disco fisso.

La procedura è utilizzabile anche per molte altre distribuzioni di Linux diverse da quella da me trattata in questo esempio, anche se le relative LIVE.iso si trovano in una cartella diversa da quella da me indicata, anche se la cartella (e quindi la LIVE.iso) si trova in una porta USB connessa direttamente alla scheda madre, purché si provveda a modificare di conseguenza le istruzioni.

A quanto mi risulta, è possibile avviare una .iso contenuta in una memoria di massa USB solo se la stessa è connessa ad una porta USB connessa direttamente alla scheda madre, in quanto solo queste ultime sono gestite direttamente dal BIOS, mentre le porte USB connesse alla scheda madre tramite connettori PCI sono gestite dal Sistema Operativo, quindi funzionano come porte USB solo dopo l’avvio del Sistema Operativo.

1) Per l’esempio, utilizzo la LIVE.iso di GParted chiamata
gparted-live-0.26.1-5-i686.iso
scaricata dal sito
http://gparted.org/
e depositata nella cartella
/mnt/dati/iso

2) Per prima cosa, è opportuno verificare UUID e punto di mount relativi rispettivamente alla partizione ed alla cartella in cui sappiamo di aver collocato la LIVE.iso, nonchè il “percorso” che porta alla LIVE.iso stessa.

Per fare ciò, dobbiamo studiare l’output dei comandi
lsblk -o vendor,model,serial,name,uuid,mountpoint # Verifica mome, UUID, e Punto di mount delle partizioni delle memorie di massa connesse al computer
e
find /home -name *.iso # Verifica il percorso della *.iso collocata in una sottocartella della /home o nella /home stessa
oppure
find /media -name *.iso # Verifica il percorso della *.iso collocata all'interno di una partizione montata automaticamente, collocata in un disco rigido interno oppure in una memoria di massa USB oppure
find /mnt -name *.iso # Verifica il percorso della *.iso collocata all'interno di una partizione montata come impostato nel file /etc/fstab
(in quest’ultimo caso, se il punto di mount non inizia con /mnt, utilizzare il punto di mount corretto)

Siccome, in questo esempio, *.iso corrisponde a gparted-live-0.26.1-5-i686.iso, collocata in una partizione del disco fisso a cui è stato dato un punto di mount che inizia nell’apposita cartella /mnt, l’output è il seguente:

[email protected]:~$ lsblk -o vendor,model,serial,name,uuid,mountpoint # Verifica mome, UUID, e Punto di mount delle partizioni delle memorie di massa connesse al computer
VENDOR   MODEL            SERIAL       NAME   UUID                                 MOUNTPOINT
ATA      FUJITSU MHT2040A NP0ST4B28AMS sda                                         
                                       ├─sda1 69919cba-135d-44a9-ab58-a0fc36be31f4 /
                                       ├─sda2 c7ec4a10-6a53-489d-af1d-abd52a70a0f9 /mnt/dati
                                       └─sda3 f78112e3-8443-4e73-9788-74896f70ec6c [SWAP]
MATSHITA DVD-RAM UJ-830Sx              sr0                                         
[email protected]:~$ find /mnt -name gparted-live-0.26.1-5-i686.iso # Verifica il percorso della LIVE.iso collocata all'interno di una partizione montata come impostato nel file /etc/fstab
/mnt/dati/iso/gparted-live-0.26.1-5-i686.iso
[email protected]:~$ 

.
Siccome noi SAPPIAMO di aver messo la LIVE di Linux denominata gparted-live-0.26.1-5-i686.iso nella cartella
/mnt/dati/iso
presente sul disco rigido interno al PC, analizzando l’output suddetto possiamo dedurre che:
sda2 è la partizione in cui abbiamo depositato la LIVE.iso
c7ec4a10-6a53-489d-af1d-abd52a70a0f9 è il codice UUID della partizione in cui abbiamo depositato la LIVE.iso
/mnt/dati è il punto di mount della partizione in cui abbiamo depositato la LIVE.iso
/iso/gparted-live-0.26.1-5-i686.iso è il nome -completo del percorso, ma senza il punto di mount- della LIVE.iso che vogliamo avviare.

Si noti che il percorso è suddiviso in due parti:
/mnt/dati/
che è la parte del percorso relativa al punto di montaggio, mentre
/iso/gparted-live-0.26.1-5-i686.iso
è la parte del percorso interamente residente nella partizione contenente la LIVE.iso, seguita dal nome della LIVE.iso.

3) A questo punto, apriamo il File-Manager, andiamo nella cartella in cui si trova gparted-live-0.26.1-5-i686.iso, e clicchiamoci sopra, per vederne il contenuto. N.B.: questa operazione, non è alla portata di tutte le distribuzioni di Linux; in alcune, potrebbe essere necessario aprire la LIVE.iso usando il Gestore di Archivi, oppure creando un punto di mount per la LIVE.iso.

4) Ora cerchiamo il file syslinux.cfg, al cui interno troveremo le istruzioni-base per avviare la LIVE.iso.

Nel caso specifico di gparted-live-0.26.1-5-i686.iso, syslinux.cfg si trova nella cartella /syslinux.
/syslinux/syslinux.cfg, contiene vari sottomenù per l’avvio di gparted-live-0.26.1-5-i686.iso; Potrebbero andar bene tutti, noi prendiamo in considerazione

label GParted Live (To RAM)
# MENU DEFAULT
# MENU HIDE
MENU LABEL GParted Live (To RAM. Boot media can be removed later)
# MENU PASSWD
kernel /live/vmlinuz
append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap toram=filesystem.squashfs ip= net.ifnames=0 nosplash
TEXT HELP
All the programs will be copied to RAM, so you can
remove boot media (CD or USB flash drive) later
ENDTEXT

5) Di tutte queste righe, a noi interessano i parametri della riga kernel ed i parametri della riga append, vale a dire
kernel /live/vmlinuz
append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap toram=filesystem.squashfs ip= net.ifnames=0 nosplash

che noi useremo per comporre la sesta e la settima riga del menù di GRUB2 per avviare la LIVE.iso.

6) Ora, combinando opportunamente i dati trovati al punto 2) e quelli trovati al punto 5) abbiamo tutti i dati che ci occorrono per creare un menù di GRUB2 in grado di avviare la nostra LIVE.iso; infatti:

menuentry "gparted-live-0.26.1-5-i686.iso LIVE (/dev/sd_UUID c7ec4a10-6a53-489d-af1d-abd52a70a0f9)" {
      set root=c7ec4a10-6a53-489d-af1d-abd52a70a0f9
      search --no-floppy --fs-uuid --set=root c7ec4a10-6a53-489d-af1d-abd52a70a0f9
      set isofile="/iso/gparted-live-0.26.1-5-i686.iso"
      loopback loop $isofile
      linux (loop)/live/vmlinuz findiso=$isofile boot=live union=overlay username=user config components quiet noswap noeject  toram=filesystem.squashfs ip= net.ifnames=0  nosplash 
      initrd (loop)/live/initrd.img
}

.
ATTENZIONE: dopo “findiso=$isofile“, potrebbe essere necessario inserire dei parametri diversi da quelli trovati al punto 5) riga “append“; se ciò si verifica, potrebbe essere utile fare una ricerca con google per trovare i parametri più adatti allo scopo. Ciò vale anche per i parametri da mettete nella riga del menù che inizia con “search“.

7) Spieghiamo a cosa servono le 8 righe che cominciano con “menuentry” e terminano con “}
La prima riga (menuentry), fissa il contenuto della riga che apparirà nel menù del bootloader, ed il suo contenuto è deciso dall’utente.
La seconda riga (set root), fornisce al bootloader il codice UUID della partizione in cui si trova la LIVE.iso da avviare.
La terza riga (search), dice al bootloader in quale partizione andare a cercare la LIVE.iso da avviare
La quarta riga (set isofile), fornisce al bootloader il nome della LIVE.iso da avviare, completo del percorso.
La quinta riga (loopback), ordina a GRUB2 di “montare” la LIVE.iso da avviare.
La sesta riga (linux), indica al GRUB2 dove si trova il kernel contenuto all’interno della LIVE.iso da avviare, e fornisce vari parametri indispensabili all’avvio della LIVE.iso
La settima riga (initrd) indica al GRUB2 dove si trova il file initrd.img interno della LIVE.iso da avviare.
Il simbolo } contenente nella riga ottava, comunica a GRUB2 che le istruzioni che compongono la singola voce del menù del bootloader sono terminate.

8) A questo punto, apriamo, come SuperUtente, il file /etc/grub.d/40_custom, aggiungiamo in coda le righe spiegate al punto 6) da “menuentry” a “}” e salviamo il file 40_custom così modificato.

9) Per incorporare nel menù del bootloader la nuova voce del menù, aprire un terminale in modalità SuperUtente ed impartire i comandi:
update-grub2 # Aggiorna il menù del bootloader
reboot # Spegne e riaccende il PC

10) Qualora il Sistema Operativo da cui sono state eseguite le operazioni spiegate in precedenza non sia il Sistema Operativo che governa il menù del bootloader, le modifiche impostate non possono agire sul menù che compare all’avvio.
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), possiamo fare in modo che il S.O. Linux che stiamo usando diventi il Sistema Operativo che governa il menù del bootloader.
Per fare ciò, 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

11) Se si desidera installare in una partizione del disco fisso la distribuzione avviata dal medesimo disco fisso, è possibile farlo senza doverla avviare da LIVE-USB nè doverla masterizzare su CD o DVD, a condizione che, prima di avviare l’installazione, si apra un terminale in modalità SuperUtente e si impartisca il comando:

rm /etc/mtab

L’eliminazione del file mtab inganna l’installer consentendo di installare sullo stesso disco fisso in cui è la LIVE.iso.
Alla domanda se il sistema deve smontare la partizione dove risiede la LIVE.iso, cliccare su NO

Per vedere altri esempi di utilizzo del metodo qui descritto, si veda la pagina WEB
http://sargonsei.altervista.org/607-2/