>
MENU
brasero1

Brasero, masterizzare è user-friendly

furiusiso1

FuriusISOmount: ecco come gestire le immagini

23 febbraio 2009 Visualizzazioni: 924 Focus

Grub: utilizzarlo è un gioco da ragazzi

Capiamo come funziona il boot loader per eccellenza di GNU/Linux e proviamo a cambiare il suo aspetto con immagini personalizzate.


All’atto dell’accensione di un computer, le prime verifiche sullo stato del sistema vengono assolte da un programma residente in una opportuna memoria della scheda madre, di fatto un circuito integrato dedicato. Questo programma si chiama BIOS acronimo di Basic Input/Output System e tra i suoi compiti vi è anche l’inizializzazione dell’hardware. Tra il possibile hardware, di interesse per questo articolo, “toccato” dal BIOS vi è anche il disco fisso il quale presenta una specifica zona detta MBR (Master Boot Record).

Al termine delle operazioni di verifica e inizializzazione delle diverse periferiche, l’ultimo compito del BIOS è quello di caricare in memoria, e quindi permetterne l’esecuzione ad opera del processore, il codice contenuto nell’MBR lasciandogli il controllo. La necessità di far eseguire questo codice è dovuta al fatto che il BIOS, aprioristicamente, non può sapere quali e quanti sistemi operativi sono installati (o verranno installati). Il codice in questione è il cosiddetto bootloader ovvero una piccola applicazione che viene installata all’atto dell’installazione di un sistema operativo, ed è qui che entra in scena GRUB.

Acronimo di GRand Unified Bootloader, GRUB è di fatto diventato con il tempo il sostituto “naturale” di LiLO (Linux LOader), un altro bootloader tipico delle distribuzioni GNU/Linux, poiché corregge la mancanza di flessibilità e interattività che si è avvertita negli anni per quest’ultimo.

COME FUNZIONA?
GRUB è caratterizzato da due stadi detti stage (in realtà, come vedremo, sono in numero di tre poiché c’è uno stadio “intermedio”). Il primo stadio, noto come stage 1, è un semplice programma che serve a mostrare la scritta Grub e a caricare il secondo stadio (stage 2) utilizzando, necessariamente, lo stadio intermedio (stage 1.5). Lo stage 1.5 è posto, fisicamente, subito dopo il settore dell’MBR; la sua peculiarità è di poter accedere ad uno specifico filesystem grazie ad alcuni file (programmi) posti all’interno di /boot/grub. Ad esempio, possiamo trovare file del tipo e2fs_stage1_5, fat_stage1_5 etc la cui funzione è di rendere possibile l’accesso alle informazioni a partire già dalla fase di avvio (boot). A questo punto viene caricato lo stage 2 il quale passa in rassegna il file di configurazione menu.lst presente nella stessa cartella mostrandoci, a video, la classica schermata di scelta relativa a quale sistema avviare e, eventualmente, con quale versione del kernel.

IL FILE DI CONFIGURAZIONE
Questo file, a tutti gli effetti un file di testo consultabile con qualsiasi editor di testi, contiene le informazioni per poter avviare una distribuzione GNU/Linux così come possibili altri sistemi operativi (ad esempio Microsoft Windows). La sua struttura più semplice potrebbe essere simile alla seguente;

timeout 10
default 0
title linux
kernel (hd0,1)/boot/vmlinuz root=UUID=868fef46-9a8f-439d-8b88-dcbe6ed3b904 splash=silent vga=788
initrd (hd0,1)/boot/initrd.img

La prima cosa da ricordare quando si vuole metter mano al file di configurazione di GRUB (oltre a farne una copia di backup da ripristinare in caso di problemi) è che esso inizia a contare da zero e non fa distinzioni tra dispositivi IDE, SCSI e/o SATA. Questo vuol dire che tutti i device saranno identificati con la scritta hd seguita da una coppia di numeri separati da una virgola dove il primo numero indica la catena e il secondo la partizione. Ad esempio la dicitura (hd0,1) nel file riportato poco sopra indica la seconda partizione del primo hard disk. Notare il modo elegante per indicare dov’è situata l’immagine del kernel (di nome vmlinuz) utilizzando il comando kernel seguito dal percorso;

kernel (hd0,1)/boot/vmlinuz

Segue l’identificativo della partizione di root del filesystem (attenzione, la radice del filesystem ovvero la / da non confondere con la cartella dell’amministratore, la /root; sono due cose separate e distinte) e, sulla stessa riga, altri due parametri; splash e vga. L’ultima riga, non sempre presente, riporta la presenza del file initrd (Initial RamDisk).

La direttiva timeout visibile nella prima riga fa si che dopo i secondi indicati venga avviato automaticamente il sistema operativo riportato nella direttiva default; ricordiamoci che il conteggio parte da zero e pertanto in questo caso è indicata la prima voce nell’elenco. Se vi fosse il numero due verrebbe avviato il sistema operativo corrispondente alla terza voce in elenco e così via di seguito. La voce title indica il titolo della sezione ovvero ciò che apparirà a video nella schermata di scelta. Potrebbe spaventare la sequenza di caratteri che identificano la partizione radice del filesystem. Fino a non molto tempo fa veniva indicata in maniera molto più intuitiva, ad esempio;

root=/dev/sda1

Oramai sulla maggioranza delle distribuzioni (anche se non tutte) è stato introdotto l’utilizzo dell’UUID (Universal Unique IDentifier) ovvero un numero di 128bit (16byte) atto a identificare in maniera univoca la partizione in esame. E’ sufficiente cambiare, anche di poco, la dimensione della partizione perché questo numero cambi inesorabilmente. Ma niente paura, per identificare la (eventuale) nuova stringa è sufficiente utilizzare, in una shell, il comando vol_id seguito dalla partizione per la quale vogliamo conoscere l’UUID.

Ad esempio:

vol_id -uuid /dev/sda1

per ricevere in output l’id del volume;

868fef46-9a8f-439d-8b88-dcbe6ed3b904

da inserire nella voce;

root=UUID=

UTILIZZIAMO LA DIRETTIVA SPLASHIMAGE
Ora che conosciamo un po il file di configurazione di GRUB, utilizziamolo per personalizzare il menù di avvio con una immagine di nostro gradimento. Le uniche restrizioni da rispettare sono la dimensione (640×480), i colori (limitati ad un numero pari a 14) e il formato (xpm compresso con gzip).

Assicuriamoci di avere installato il pacchetto imagemagick e procediamo nel modo che segue. Copiamo nella nostra home utente l’immagine da utilizzare al boot, apriamo una shell e convertiamola al livello di colori e dimensioni giuste;

mogrify -geometry 640×480! -colors 14 Immagine.xyz

dove xyz indica il formato dell’immagine; notare il punto esclamativo sul ridimensionamento ad indicare che non verranno rispettate le proporzioni ovvero il ridimensionamento sarà “forzato” al valore indicato. A questo punto convertiamo il formato e comprimiamo l’immagine;

convert Immagine.xyz Immagine.xpm
gzip Immagine.xpm

copiandola, con i diritti di amministratore (comando sudo o su), in /boot/grub

# cp Immagine.xpm /boot/grub

in alcune distribuzioni occorre copiarla in /boot/grub/splashimages. Per terminare aggiungiamo la seguente riga al file menu.lst;

splashimage=(hd0,1)/boot/grub/Immagine.xpm.gz

riavviamo ed il gioco è fatto! Le immagini riportano i risultati sulla schermata di avvio su una Fedora Core 10. Naturalmente la qualità del risultato finale dipende anche dalla “bontà” dell’immagine di partenza.

splashimage-originalesplashimage-modificato

Attenzione: alcune distribuzioni, come ad esempio Mandriva, gestiscono l’immagine di boot attraverso il programma grub-gfxmenu che, tra le altre cose, limita le restrizioni definite poco sopra sulle immagini da utilizzare. In questi casi la procedura elencata non funzionerà. Per rendersi conto se la propria distribuzione utilizza il programma indicato, è sufficiente aprire il file menu.lst e accertarsi della presenza di una riga del tipo;

gfxmenu (hd0,1)/boot/gfxmenu

Al prossimo tutorial!

twittergoogle_pluslinkedinmail
  • LorGia

    Ciao Michele,
    stò tentando di applicare un’immagine al Grub, seguendo questa tua guida,
    ma non riesco, dopo alcuni tentativi, perché non sò in quale posizione và incollata la riga che indichi, nel menu.lst.

    Questa è la stringa che ottengo dopo tutta la “lavorazione” dell’ immagine:
    splashimage=(hd0,1)/boot/grub/splashimages/SplashGrub.xpm.gz.

    • http://www.tuxjournal.net Michele Petrecca

      Holà LorGia, 8-)

      …che distribuzione sta usando?…al di là di questo; verifica se la radice del filesystem è effettivamente in (hd0,1) ovvero nella seconda partizione del primo disco. C’è una cartella splachimages in /boot/grub oppure hai dovuto crearla tu?

      In aggiunta a quanto scritto (non l’ho riportato per evitare di chiamare in causa altri programmi per non “appesantire” il tutto), è possibile utilizzare anche GIMP per “manipolare” l’immagine e renderla adatta alle specifiche. Ad esempio, ipotizzando di aver “ridotto” l’immagine a 640×480 con il comando;

      mogrify -geometry 640×480! Immagine.xyz

      apriamo questa immagine con GIMP andiamo nel menù Immagine->Modalità->Indicizzata e riduciamo il numero di colori a 14 in “Genera tavolozza ottimale” attraverso le frecce alla voce “Numero massimo di colori” che porteremo a 14. Al termine click su COnversione e salviamo l’immagine così ottenuta direttamente in xpm.

      Bye 8-)