GRUB 2
Sommario di base delle maggiori differenze fra GRUB 1 (adesso conosciuto come grub-legacy) e GRUB 2:
- non esiste più il file menu.lst
- Un file di nome grub.cfg adesso è per il controllo dello schermo Grub.
- grub.cfg viene generato automaticamente dagli script in /etc/grub.d.
- La numerazione delle partizioni è differente. Le partizioni sono numerate partendo da 1 invece che da 0 (i drive vengono ancora numerati da zero):
Linux grub1 grub2 /dev/sda1 (hd0,0) (hd0,1) /dev/sda2 (hd0,1) (hd0,2) /dev/sda3 (hd0,2) (hd0,3) /dev/sdb1 (hd1,0) (hd1,1) /dev/sdb2 (hd1,1) (hd1,2) /dev/sdb3 (hd1,2) (hd1,3)
- Le sezioni in grub.cfg sono leggermente differenti se confrontate con quelle di menu.lst e non possono essere copiate direttamente dal file di Grub 1 menu.lst al file di Grub 2 grub.cfg dal momento che il file grub.cfg viene generato. Il file grub.cfg non dovrebbe essere mai modificato manualmente.
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.
Aggiornare da Grub Legacy a Grub 2
Raccomandiamo di aggiornare a Grub 2 in maniera pulita e di rimuovere completamente Grub 1. Si deve essere coscienti che si può sciupare tutto quindi si deve stare attenti.
Passo 1:
Assicurarsi che il sistema sia interamente aggiornato con dist-upgrade in init 3.
apt-get update Ctrl+alt+F1 init 3 apt-get dist-upgrade init 5 && exit
Passo 2:
Eliminare completamente Grub 1:
rm -rf /boot/grub apt-get purge grub-gfxboot
Il risultato sarà che fll-iso2usb* grub-gfxboot* install-usb-gui* verranno rimossi. Premere Y per confermare.
Step 3:
apt-get install grub2 os-prober

Utilizzare il tasto tab per selezionare OK

Utilizzare il tasto tab per selezionare OK

Utilizzare le frecce della tastiera e la barra spaziatrice per mettere un * (asterisco) per selezionare l'hard disk sul quale Grub2 dovrà scrivere l'MBR. (Questo esempio se si installa su di un hard disk USB).
Passo 4:
update-grub
Passo 5:
apt-get install install-usb-gui fll-iso2usb
Passo 6:
Riavviare il PC e menu.cfg mostrerà il kernel e la lista dei sistemi operativi in questo modo:

Se ci dovesse essere un errore oppure se qualcosa andasse storto fare riferimento a Grub2 sovrascritto o corrotto nell'MBR
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 (#):
$ sux
- 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 sux 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.