grub customization

Personalizzare GRUB – Il Bootloader di Linux

Quando accendiamo il nostro computer, tutto inizia da lì: un breve istante in cui l’hardware prende vita, il BIOS o l’UEFI fa i suoi controlli, e poi… qualcosa si incarica di caricare il sistema operativo.
Su Linux, quel “qualcosa” è GRUB, acronimo di GNU GRand Unified Bootloader.

E anche se lo vediamo solo per pochi secondi — o magari mai, se parte direttamente — GRUB è uno dei componenti più cruciali del nostro sistema. E soprattutto, è uno dei più personalizzabili.

In questo articolo vedremo cos’è GRUB, come funziona, dove si configura, e come possiamo personalizzarlo graficamente e funzionalmente.
E sì, arriveremo anche al famigerato GRUB Customizer, lo strumento amato e odiato dalla community Linux.

🧠 Cos’è GRUB e come funziona

GRUB è un bootloader, ovvero il programma che si occupa di caricare il sistema operativo scelto, subito dopo l’avvio del BIOS o dell’UEFI.
È in pratica il “pontiere” che collega il firmware del computer al kernel del sistema operativo.

La versione moderna — quella che tutti usiamo oggi — si chiama GRUB2.
È un sistema estremamente modulare e configurabile, capace di gestire più sistemi operativi e più kernel, e perfino di avviare immagini ISO direttamente dal menu.

Quando accendiamo il PC, GRUB entra in gioco in più fasi:

  1. Stage iniziale (boot sector) — una piccola porzione di codice si trova nel Master Boot Record (MBR) o nell’EFI System Partition.
    Il suo compito è semplicemente avviare il resto di GRUB.
  2. Caricamento del menu — qui GRUB mostra il classico menu di avvio: le varie voci per Linux, Windows, recovery mode, ecc.
  3. Caricamento del kernel — quando scegliamo una voce, GRUB carica in memoria il kernel Linux (o di un altro OS) insieme ai parametri di avvio e ai moduli necessari.

Insomma, è lui che decide chi parte, come parte e con quali opzioni.

🗂️ Dove si configura GRUB

Uno dei punti forti di GRUB è la sua struttura modulare: le impostazioni sono distribuite in vari file, ognuno con un ruolo preciso.

Vediamoli nel dettaglio.

/etc/default/grub

Questo è il file principale di configurazione.
Qui troviamo le opzioni di comportamento globale: il timeout, il sistema operativo predefinito, la risoluzione del menu, l’immagine di sfondo, e i parametri da passare al kernel.

/etc/grub.d/

Questa directory contiene una serie di script numerati che generano il menu di GRUB in modo dinamico.
Ogni script ha un compito: aggiungere le voci di Linux, di Windows, delle modalità avanzate, e così via.
Se vogliamo aggiungere voci personalizzate, possiamo modificare o creare uno script qui — in particolare nel file:

/etc/grub.d/40_custom

dove possiamo scrivere menuentry personalizzati, ad esempio per avviare un ISO o un sistema su un’altra partizione.

/boot/grub/grub.cfg

Questo è il file finale del menu che GRUB legge effettivamente all’avvio.
⚠️ Non va mai modificato a mano, perché viene generato automaticamente dai file precedenti.
Su sistemi Debian/Ubuntu il comando per rigenerarlo è:

sudo update-grub

Mentre su Arch Linux (e derivate):

sudo grub-mkconfig -o /boot/grub/grub.cfg

/boot/grub/themes/

Qui risiedono i temi grafici di GRUB, completi di immagini, font e file di configurazione.

/boot/

In questa directory possiamo anche conservare immagini o file ISO da avviare direttamente tramite GRUB.
Una funzionalità molto utile se vogliamo, ad esempio, fare il boot da un’ISO di installazione o una live senza doverla masterizzare o scrivere su USB.

📝 Modificare le impostazioni di base

Per modificare il comportamento di GRUB, apriamo il file principale di configurazione:

sudo nano /etc/default/grub

Ecco le voci principali che ci interessa conoscere:

  • GRUB_TIMEOUT
    Indica in quanti secondi GRUB attende prima di avviare il sistema predefinito.
    Possiamo ridurlo o impostarlo a 0 per saltare direttamente il menu.
  • GRUB_DEFAULT
    Imposta quale voce deve essere avviata di default.
    0 corrisponde alla prima voce, 1 alla seconda, e così via.
  • GRUB_CMDLINE_LINUX_DEFAULT
    Qui possiamo aggiungere o rimuovere parametri del kernel.
    Ad esempio, togliendo quiet e splash possiamo vedere tutti i messaggi di avvio del kernel, utilissimi per diagnosticare problemi.
  • GRUB_BACKGROUND="/boot/grub/sfondo.png"
    Imposta un’immagine di sfondo personalizzata per il menu.
  • GRUB_GFXMODE=1920x1080
    Imposta la risoluzione del menu.

Ogni volta che modifichiamo qualcosa, è obbligatorio rigenerare il file di configurazione:

sudo update-grub

(Oppure, come detto, su Arch Linux:)

sudo grub-mkconfig -o /boot/grub/grub.cfg

🖼️ Cambiare solo lo sfondo

Una delle modifiche più semplici (e più visibili) è cambiare lo sfondo del GRUB.

Basta scegliere un’immagine, preferibilmente:

  • con la stessa risoluzione che useremo per il menu,
  • e di dimensioni inferiori a 2 MB.

Copiamola in /boot/grub/ e poi modifichiamo il file /etc/default/grub aggiungendo:

GRUB_BACKGROUND="/boot/grub/sfondo.png"
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=keep

La direttiva GRUB_GFXPAYLOAD_LINUX=keep serve a mantenere la stessa risoluzione anche dopo l’avvio del kernel.

Aggiorniamo GRUB come sempre e… al prossimo riavvio vedremo il nostro nuovo sfondo personalizzato.

🎨 Cambiare il tema completo di GRUB

Se vogliamo andare oltre lo sfondo e dare a GRUB un look moderno e coerente con la nostra distro, possiamo usare i temi grafici.

Uno dei migliori punti di riferimento è GNOME-Look.org, nella sezione dedicata a GRUB.
Personalmente, uno dei temi che mi è sempre piaciuto è TELA, sviluppato da vinceluis e disponibile su GitHub : TELA Theme di vinceluis (GitHub)

Il pacchetto contiene più varianti, e include anche uno script di installazione che permette di scegliere:

  • il tema (-t),
  • e la risoluzione (-s).

Esempio:

sudo ./install.sh -t tela -s 1920x1080

Dopo l’installazione, lo script modifica automaticamente alcune righe del file /etc/default/grub, impostando:

  • il nuovo percorso dello sfondo,
  • la risoluzione,
  • e soprattutto la direttiva GRUB_THEME, che punta alla cartella del tema scelto.

Da lì possiamo anche personalizzare ulteriormente: ad esempio, sostituire lo sfondo del tema con un nostro file background.jpg nella directory del tema.
Basta rinominarlo e sostituirlo.
Poi, come sempre:

sudo update-grub

⏱️ Gestire il timeout e la voce di default

GRUB ci permette di ottimizzare i tempi di avvio in base alle nostre esigenze.

Ecco alcune opzioni utili:

  • Avvio più rapido: GRUB_TIMEOUT=2
  • Avvio immediato (senza mostrare il menu): GRUB_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT=0
  • Impostare una voce specifica come predefinita: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0"

Per scoprire i nomi esatti delle voci nel menu, possiamo usare:

grep menuentry /boot/grub/grub.cfg

🧪 GRUB Customizer — Amore e odio

E arriviamo al punto “caldo”: GRUB Customizer.
Uno strumento grafico che per anni è stato nei repository di Ubuntu, poi rimosso a causa di bug e scelte di design controverse.
La community in generale sconsiglia il suo utilizzo… ma nella pratica, molti utenti lo trovano comodo e non hanno mai avuto problemi (me incluso 😉).

Installazione

Su Ubuntu o derivate basta aggiungere il repository PPA e installare:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt update
sudo apt install grub-customizer

Funzionalità principali

  • Elenco di configurazione: possiamo riordinare, rinominare o nascondere le voci del menu.
  • Impostazioni generali: scegliere la voce di default, il timeout, o decidere di saltare completamente il menu.
  • Aspetto grafico: modificare sfondo, font e colori.

⚠️ Importante: le immagini e i font devono trovarsi in /boot/grub/, perché al momento dell’avvio, il filesystem della home non è ancora montato.

Una volta applicate le modifiche, clicchiamo su Salva per rigenerare grub.cfg.

Personalmente trovo GRUB Customizer perfetto per esperimenti rapidi, ma preferisco sempre conoscere (e modificare) i file a mano. È più sicuro e ti fa capire davvero cosa succede “dietro le quinte”.


💡 Conclusioni

GRUB è uno di quei componenti che di solito “funzionano e basta”.
Ma saperlo capire e personalizzare ci dà un controllo totale sull’avvio del sistema, oltre a un tocco estetico tutto nostro.

Abbiamo visto:

  • come funziona GRUB e dove si trovano i file principali,
  • come modificare timeout, risoluzione e voce predefinita,
  • come impostare uno sfondo personalizzato o un tema completo,
  • e infine come usare (con attenzione) GRUB Customizer.

È un argomento che unisce curiosità tecnica e personalizzazione visiva — il mix perfetto per chi ama smanettare su Linux.
Perché sì, anche il bootloader può avere stile 😎.

Commento all'articolo