Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida illustra i contenuti basilari dei file di configurazione del bootloader Grub2.
File e cartelle
I file necessari al funzionamento di Grub continuano a risiedere nella directory /boot/grub, ma il file menu.lst è stato sostituito con grub.cfg, il nuovo file con le istruzioni per Grub 2.
Questo file è generato da diversi script attraverso l'uso dei comandi update-grub o update-grub2. I file responsabili del contenuto di grub.cfg sono /etc/default/grub e gli script individuali allocati nella directory /etc/grub.d/.
Molti dei file presenti in /boot/grub non saranno familiari agli utenti di Grub Legacy, in particolar modo i file con estensione .mod.
Grub 2 è modulare e tali file sono necessari al caricamento del programma stesso.
Nonostante l'aggiunta di questi file, la grandezza totale del contenuto di /boot/grub è abbastanza vicina a quella della vecchia versione del programma e non dovrebbe essere necessaria una partizione /boot più grande.
Il file grub.cfg (/boot/grub/grub.cfg)
grub.cfg è il file principale di Grub 2 che sostituisce il file menu.lst di Grub Legacy.
Questo file, al contrario del file menu.lst, NON va assolutamente modificato.
Per generare e aggiornare automaticamente il file grub.cfg, digitare nel terminale e coi privilegi di amministrazione il comando update-grub o update-grub2.
Gli script usati per generare grub.cfg includono i file contenuti nella directory /etc/grub.d e le informazioni contenute nel file /etc/default/grub.
Il file è diviso in diverse sezioni, ognuna deliminata dalla riga di intestazione:
### BEGIN /etc/grub.d/nomefile ###
E dalla riga di fine sezione:
### END /etc/grub.d/nomefile ###
Il percorso /etc/grub.d/nomefile specifica a quale file presente nella directory /etc/grub.d si riferisce la sezione.
Da predefinito, a ogni esecuzione del comando update-grub o update-grub2, questo file è impostato a sola lettura.
Questo viene fatto affinché il file non sia modificabile manualmente dall'utente.
Se è proprio necessario modificare questo file, istruzioni su come procedere possono essere trovate nelle sezioni successive di questa pagina.
Quello che segue è un semplice esempio di grub.cfg che comprende:
due kernel di Ubuntu
memtest86+
- Windows
una voce personalizzata («41_srcd») importata da uno script in /etc/grub.d
# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/update-grub using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set default=0 set timeout=5 set root=(hd0,5) search --fs-uuid --set b02e1934-12dd-418a if font /usr/share/grub/ascii.pff ; then set gfxmode=640x480 insmod gfxterm insmod vbe terminal gfxterm fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_hurd ### ### END /etc/grub.d/10_hurd ### ### BEGIN /etc/grub.d/10_linux ### set root=(hd0,5) search --fs-uuid --set b02e1934-12dd-418a-be3a-9ff7d3e7e7ea menuentry "Ubuntu, linux 2.6.28-13-generic" { linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800 initrd /boot/initrd.img-2.6.28-13-generic } menuentry "Ubuntu, linux 2.6.28-13-generic (single-user mode)" { linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro single initrd /boot/initrd.img-2.6.28-13-generic } menuentry "Ubuntu, linux 2.6.28-11-generic" { linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800 initrd /boot/initrd.img-2.6.28-11-generic } menuentry "Ubuntu, linux 2.6.28-11-generic (single-user mode)" { linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro single initrd /boot/initrd.img-2.6.28-11-generic } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_memtest86+ ### menuentry "Memory test (memtest86+)" { linux /boot/memtest86+.bin } menuentry "Memory test (memtest86+, serial console 115200)" { linux /boot/memtest86+.bin console=ttyS0,115200n8 } ### END /etc/grub.d/20_memtest86+ ### ### BEGIN /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" { set root=(hd0,1) chainloader +1 } ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file is an example on how to add custom entries ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_srcd ### menuentry "SystemRescue CD on hard drive" { set root=(hd0,10) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz } ### END /etc/grub.d/41_srcd ###
Il file grub (/etc/default/grub)
Questo file contiene informazioni simili a quelle che si trovavano nella sezione più alta del vecchio file menu.lst. Contiene impostazioni che incidono sull'aspetto del menù del programma.
Questo file può essere modificato con i privilegi di amministrazione per modificare le impostazioni; modifiche che verranno importate nel file grub.cfg quando viene eseguito il comando update-grub o update-grub2.
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=3 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX="" GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_BACKGROUND=/home/topogigio/Immagini/Grub/gruviera.png # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_LINUX_RECOVERY="true"
Opzioni
Segue una tabella esplicativa delle principali opzioni del file.
Opzione |
Significato |
GRUB_DEFAULT=0 |
Imposta la voce del menù selezionata in modo predefinito. L'assegnamento è numerico in base alla posizione della voce nel menù stesso. La prima voce ha sempre numero uguale a 0. |
GRUB_TIMEOUT=10 |
Imposta il numero di secondi del conto alla rovescia dopo il quale sarà caricata la voce predefinita del menù. |
GRUB_HIDDEN_TIMEOUT=3 |
Se commentata (presenza del simbolo # all'inizio riga), viene mostrato il menù, altrimenti il menù viene nascosto e viene lanciata la voce predefinita allo scadere dei secondi impostati (in questo esempio 3). Se viene impostato un numero di secondi pari a 0, l'utente può forzare la visualizzazione del menù all'avvio del computer tenendo premuto il tasto Maiusc. Durante l'avvio, il sistema controlla lo stato del tasto Maiusc . Se non è possibile determinarne lo stato, un breve lasso di tempo permetterà all'utente di visualizzare il menù premendo il tasto ESC. |
GRUB_HIDDEN_MENU_QUIET=true |
Se impostata a true, non viene mostrato alcun conto alla rovescia, lo schermo sarà vuoto. Se imposta a false, viene mostrato un conto alla rovescia per la durata del valore GRUB_HIDDEN_TIMEOUT |
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` |
Determina il nome descrittivo della voce del menù, in caso di mancata identificazione predefinisce a Debian. |
GRUB_CMDLINE_LINUX="" |
Se esiste, questa impostazione inserisce delle opzioni alla fine della riga linux (in Grub Legacy era la riga kernel) sia per il boot normale che per il recovery mode. Questa impostazione è simile ad altoptions del vecchio file menu.lst |
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" |
Il valore di questa impostazione viene inserito alla fine della riga linux (in Grub Legacy era la riga kernel) solo con il boot normale. Questa impostazione è simile a defoptions del vecchio file menu.lst. |
GRUB_BACKGROUND=/percorso/file/immagine |
In questa impostazione inserire il percorso all'immagine da mostrare nel caso nella precedente impostazione sia stata configurata lo splash. |
#GRUB_TERMINAL=console |
Togliere il commento per disabilitare il terminale grafico (solo grub-pc) |
#GRUB_DISABLE_LINUX_UUID=true |
Togliere il commento per disabilitare la gestione degli UUID nei parametri del kernel |
GRUB_DISABLE_LINUX_RECOVERY=true |
Non mostra le voci recovery mode nel menù |
GRUB_DISABLE_OS_PROBER=true |
Abilita e disabilita un test sulle altre partizioni alla ricerca di altri sistemi operativi, inclusi Windows, Linux, OSX e Hurd |
Sottomenù
In figura viene riportata la schemrmata di avvio di Grub, nella quale in cima appare il kernel del sistema principale e di seguito (Previous Linux versions) il sottomenù contenente un kernel precedente:
Nell'immagine sono stati aggiunti dei numeri in verde per facilitare la lettura di come vengono numerate le versioni.
Per rendere predefinito uno dei kernel contenuti nel sottomenù:
Aprire con i privilegi di amministrazione e con un editor di testo il file /etc/default/grub.
Ad esempio per rendere predefinito il Kernel 3.2.0-18-generic-pae è possibile modificare il parametro GRUB_DEFAULT a scelta con una delle seguenti sinossi:
GRUB_DEFAULT="Previous Linux versions>Ubuntu, with Linux 3.2.0-18-generic-pae"
GRUB_DEFAULT="Previous Linux versions>0"
GRUB_DEFAULT="2>0"
GRUB_DEFAULT="2>Ubuntu, with Linux 3.2.0-18-generic-pae"
- Salvare e chiudere il file.
Aggiornare il file /boot/grub/grub.cfg digitando nel terminale il comando:
sudo update-grub
La directory /etc/grub.d/
I file presenti in questa directory sono letti durante l'esecuzione del comando update-grub o update-grub2. Gli script presenti in questi file esportano le informazioni che raccolgono nel file /boot/grub/grub.cfg.
I file vengono eseguiti in ordine sequenziale: prima i file il cui nome inizia con una cifra, poi quelli il cui nome inizia con una lettera. L'ordine con cui sono eseguiti i file determina la posizione degli elementi all'interno del menù di Grub.
Voci personalizzate possono essere aggiunte al file 40_custom o inserite in un nuovo file.
Assegnare i permessi d'esecuzione al file creato per garantirne l'aggiunta nel file grub.cfg durante l'esecuzione del comando update-grub o update-grub2.
Segue una tabella esplicativa dei principali file di /etc/grub.d/.
file |
Significato |
00_header |
Carica le impostazioni da /etc/default/grub, compresa la presentazione visiva, il conto alla rovescia e le opzioni del terminale |
05_debian_theme |
Imposta lo sfondo, il colore del testo e i temi |
10_hurd |
Localizza eventuali kernel Hurd |
10_linux |
Localizza i kernel basati sull'ID del distributore determinato dal risultato del comando lsb_release -is |
20_memtest86+ |
Se il file /boot/memtest86+.bin esiste, viene inclusa una voce per memtest86+ |
30_os-prober |
Va alla ricerca di altri sistemi operativi e li include nel menù |
40_custom |
Rappresenta un modello per aggiungere voci personalizzate al menù |