Con l’avvento delle pendrive i dischi ottici stanno andando incontro alla morte. Si cominciano a vedere nei negozi i primi computer fissi senza lettore CD/DVD, mentre è già da tempo che hanno fatto la loro entrata in scena portatili che non hanno l’unità ottica. Contemporaneamente a questa tendenza sono aumentate le richieste di metodi di installazione alternativi, che sfruttano le pendrive avviabili per installare interi sistemi operativi, ma come combinare la versatilità e l’elevata capienza di questi dispositivi con le mille mila distribuzioni Linux disponibili sul mercato? La risposta è Grub2.

Lo stesso bootloader che viene installato silentemente ogniqualvolta una distribuzione prende possesso del proprio PC permette di eseguire al boot le iso di più distribuzioni contemporaneamente.

La configurazione della pennetta è semplice. Basta eseguire i seguenti passi:

  1. Prima di tutto occorre formattare la partizione in un filesystem più consono del vecchio e inefficiente fat32, con cui di solito vengono vendute le pennette. Il mio consiglio è di usare ext4 in quanto veloce ed affidabile (vedi nota sotto). Per farlo affidatevi a GParted.
  2. Successivamente è necessario installare Grub nella partizione MBR. Da un ambiente in cui è già presente Grub2 lanciate il comando (con permessi di root):
    grub-install --no-floppy /punto/di/mount/della/pendrive /dev/sdx
    dove x è la lettera associata alla pendrive.
  3. L’installazione di Grub non è ancora completa. Per far sì che funzioni correttamente è necessario copiare nella pennetta la cartella /usc/share/grub del proprio sistema che contiene alcuni file necessari per il bootloder. Conviene copiare questa cartella nella cartella boot creata dal comando precedente. Quindi:
    sudo cp -r /usr/share/grub /punto/di/mount/della/pendrive/boot/
  4. L’installazione è quasi completata, manca solo il file grub.cfg (vedi altra nota sotto) che conterrà le entries delle distribuzioni. Sconsiglio di copiare quello presente sul proprio sistema operativo (/boot/grub/grub.cfg) in quanto molte sue parti sono superflue per gli scopi della pennetta. È preferibile farne uno ad-hoc. A questo indirizzo è disponibile il mio grub.cfg (rinominato in grub.txt per ragioni di sicurezza). Come si vede dalla sezione APPEARANCE ho scelto di mettere uno sfondo al bootloader. Sostituite matrix.png con un file di vostra scelta per visualizzare lo sfondo che più vi piace e posizionate il file dentro la cartella /boot/share della pendrive. Se non volete lo sfondo sostituite tutto il blocco APPEARANCE con le seguenti righe:
    set menu_color_normal=light-blue/black
    set menu_color_highlight=light-cyan/blue

A questo punto la pendrive è pronta e configurata, ciò che manca sono le distribuzioni. Purtroppo non tutte permettono di essere avviate via iso, mentre per alcune non è semplice trovare la giusta stringa di avvio che faccia capire al kernel dove e come trovare il proprio filesystem. In linea di massima la struttura essenziale che ogni entry nel grub.cfg deve avere è questa:

menuentry 'nome che comparirà sul bootloader' {
loopback loop (hd0,1)/la/iso/da/montare
set root=(loop)
linux (loop)/il/kernel/dentro/la/iso/da/avviare opzioni_di_avvio
initrd (loop)/initial/ramdisk/da/caricare
}

Oltre a questo si può abbellire la entry mettendo savedefault, se si vuole che Grub evidenzi l’ultima voce avviata precedentemente, oppure delle stampe a schermo mediante il comando echo (vedere il mio grub.cfg) per mostrare dei messaggi durante l’avanzamento dell’esecuzione di Grub.

L’importante è che tra le opzioni di avvio passate al kernel ci sia il parametro che gli faccia capire dove trovare la iso della distribuzione e questo varia da distro a distro. I parametri più comuni sono isoloop, img_loop oppure iso-scan/filename. Tutte le entries presenti nel mio grub.cfg sono funzionanti, se ne volete aggiungere altre fate una ricerca in internet per trovare le giuste combinazioni di parametri.

Infine allego uno screenshot del mio Grub su pennetta.

Multiboot_grub

NOTA SOTTO: Se non si vuole formattare in ext4 è possibile che sia necessario caricare i moduli adeguati per leggere il filesystem. Il comando per caricarli attraverso grub.cfg è insmod, ma per il nome del modulo riferisi alla documentazione di Grub2.

ALTRA NOTA SOTTO: Per modificare il file grub.cfg occorre avere permessi di root, essendo la cartella grub proprietà dell’amministratore.