GRUB 2
Basic summary of GRUB 2:
- A file called grub.cfg controls the Grub Screen.
- grub.cfg is automatically generated by the scripts in /etc/grub.d.
- Partitions are numbered from 1 instead of 0 and drives are numbered from 0:
Linux grub2 /dev/sda1 (hd0,1) /dev/sda2 (hd0,2) /dev/sda3 (hd0,3) /dev/sdb1 (hd1,1) /dev/sdb2 (hd1,2) /dev/sdb3 (hd1,3)
- As the grub.cfg file is the 'result' file the grub.cfg file should never be altered manually.
Il file di configurazione di default di Grub 2
Il file /etc/default/grub contiene le impostazioni variabili di grub2. Per esempio, timeout del menu, voci di default del menu da attivare, parametri del kernel, l'uso della grafica di grub e così via.
I file script di Grub 2
I file in /etc/grub.d controllano il file generato che si chiama grub.cfg, che si trova in /boot/grub/.
Il file grub.cfg non dovrebbe essere mai modificato manualmente. Tutte le modifiche devono essere fatte con uno o tutti i seguenti script che si trovano in /etc/grub.d . os-prober dovrebbe gestire il 90% dei casi:
00_header:
05_debian_theme: configura sfondo, colori del testo, temi
10_hurd: trova i kernel Hurd
10_linux: trova i kernel Linux basandosi sul risultato del comando lsb_release.
20_memtest86+: se esiste il file /boot/memtest86+.bin, viene incluso nel menu di avvio.
30_os-prober: cerca s.o. Linux o altri in tutte le partizioni; li include nel menu di avvio.
40_custom: un esempio per aggiungere voci nel menu di avvio personalizzate per altri sistemi operativi.
60_fll-fromiso: un esempio per aggiungere voci nel menu di avvio personalizzate per chiavette USB/schede SSD.
60_fll-fromiso non deve essere modificato, usare /etc/default/grub2-fll-fromiso
Leggere Avviare "fromiso" con Grub 2
Dopo che viene fatta una modifica, grub.cfg deve sapere quali cambiamenti sono avvenuti. Nel caso di aggiornamenti del kernel aptosid il comando update viene avviato in automatico. Nel caso che la modifica sia fatta manualmente da te in qualità di amministratore di sistema devi avviare:
update-grub
Il pacchetto Debian di Grub2 è concepito in modo tale che una modifica tua raramente sarà necessaria.
Modificare le opzioni d'avvio di Grub2 attraverso la schermata di modifica
Se, per qualche ragione, c'è bisogno di una modifica temporanea delle opzioni d'avvio di un kernel evidenziato in Grub2, premere la lettera e per modificare le opzioni del kernel e utilizzando i tasti freccia, scegliere la linea che si vuole modificare, quindi mentre si è ancora nella schermata di modifica usare Ctrl+x per avviare il computer con le opzioni modificate.
Per esempio, per avviare direttamente il sistema in level 3, aggiungere 3 alla fine della linea linux /boot/vmlinuz .
Le modifiche che vengono fatte attraverso la schermata di modifica non sono definitive. Per renderle permanenti si devono modificare i file appropriati. Vedere I file di Grub 2.
Avvio doppio o multiplo con Grub 2
Dal momento che Grub2 ha una configurazione modulare, permette un comando semplice per cercare nuovi sistemi operativi e se ne viene trovato uno prova ad applicare il cambiamento aggiornando menu.cfg. Il comando semplice è:
update-grub
Se si dovesse avere la necessità di aggiungere una voce di menu personalizzata in menu.cfg oppure se 30_os-prober non riesce a scrivere su grub.cfg con i menu chainloader utilizzare l'editor di testo preferito per fare gli aggiustamenti a /etc/grub.d/40_custom.
Esempi di personalizzazione del file 40_custom:
menuentry "second mbr"{ set root=(hd1) chainloader +1 }
menuentry "second partition"{ set root=(hd0,2) chainloader +1 }
A seguire si devono applicare i cambiamenti:
update-grub
Se si dovesse lamentare che non conosce la periferica grub di un disco significa che si deve rigenerare devicemap.
Assicurarsi di scegliere la partizione non l'MBR quando si installa un altro sistema operativo:
grub-mkdevicemap --no-floppy update-grub
Gli avvertimenti possono essere semplicemente ignorati.
Se si dovesse fare un errore, l'aggiornamento probabilmente sovrascriverà l'MBR e si dovrà correggerlo con Grub2 - MBR sovrascritto.
Per riscrivere soltanto grub2 nell'MBR dall'hard disk:
/usr/sbin/grub-install --recheck --no-floppy /dev/sda
Questa riga potrebbe essere necessario lanciarla più volte, finché si convince che si vuole davvero fare quello.
Settore d'avvio MBR sovrascritto da Windows, corrotto o per ripristinare Grub2
NOTA: per ripristinare un gestore d'avvio Grub2 si deve avere una iso aptosid 2009-04 (moros) o succesiva. Alternativamente si può utilizzare chroot con qualsiasi live.iso.
Per riscrivere grub2 nell'MBR e/o per ripristinare grub 2 in generale, si deve avviare una aptosid.iso:
- Per identificare e confermare le partizioni (ad es. [h,s]d[a..]X) tutte le azioni seguenti richiedono privilegi di root, quindi diventare root (#):
$ su
- Una volta che si è root scrivere:
fdisk -l cat /etc/fstab
Questo per ottenere i nomi corretti. - Quando si è individuato la partizione corretta, creare il punto di mount:
mkdir -p /media/[hdxx,sdxx,diskx]
- Montarla:
mount /dev/xdxx /media/xdxx
- Adesso riscrivere Grub nell'MBR del primo hard disk (generico):
/usr/sbin/grub-install --recheck --no-floppy --root-directory=/media/xdxx /dev/sda
Utilizzare chroot per ripristinare un Grub2 corrotto o cancellato nell'MBR
Per ripristinare Grub 2, se è stato sovrascritto o se si è corrotto nell'MBR, configurare un ambiente chroot. Qualsiasi iso live sarà sufficiente dal momento che attraverso chroot si riesce ad arrivare al sistema installato nell'hard disk e si può quindi ripristinare la versione di grub appropriata, grub1 (grub-legacy) oppure grub2.
Avviare una live aptosid.iso appropriata per il sistema (32 o 64 bit CD, DVD, chiavetta USB oppure una scheda SSD) ed aprire la console. Scrivere su e premere Invio per ottenere i permessi di root.
Utilizzando fdisk -l o blkid, verificare quale partizione è quella di avvio e prendere il nome corretto. Se si preferisce una interfaccia grafica utilizzare Gparted:
blkid
e controllare che in fstab corrisponda il risultato del comando blkid:
cat /etc/fstab
Facciamo conto che il filesystem di root è su /dev/sda2
mkdir /mnt/aptosid-chroot mount /dev/sda2 /mnt/aptosid-chroot
Quindi si deve fare il mount per /proc, /run,/dec e /dsys come segue:
mount --bind /proc /mnt/aptosid-chroot/proc mount --bind /run /mnt/aptosid-chroot/run mount --bind /sys /mnt/aptosid-chroot/sys mount --bind /dev /mnt/aptosid-chroot/dev mount --bind /dev/pts /mnt/aptosid-chroot/dev/pts
If you boot using an EFI system partition you will also need to mount it. Assuming this is /dev/sda1:
mount /dev/sda1 /mnt/aptosid-chroot/boot/efi
Adesso l'ambiente chroot è configurato, si può accedere ad esso con:
chroot /mnt/aptosid-chroot /bin/bash
Ora si è in grado di utilizzare la cache locale di apt oppure modificare i file di cui si ha bisogno come se si fosse veramente avviati un s.o., in questo caso per correggere l'MBR per farci tornare Grub.
To restore Grub 2
apt-get install --reinstall grub-pc
To ensure that grub was installed to the correct disk or partition, run:
dpkg-reconfigure grub-pc
To restore Grub 2 EFI
apt-get install --reinstall grub-efi-amd64
To restore Grub 1 (grub-legacy)
apt-get install --reinstall grub-legacy
Seguire quindi le istruzioni del programma di installazione.
Per uscire dall'ambiente chroot:
Ctrl+d
Riavviare il PC.