venerdì 12 giugno 2009

Come aggiornare a GRUB 2 in Jaunty

Aggiornamento: grazie alla segnalazione di giorgio130 nei commenti, mi sono accorto di aver omesso la soluzione di un piccolo bug. Quando io stesso ho seguito questa guida, di quel passo non ho avuto bisogno (o non me ne ricordo!). Così ho pensato, trattandosi di un bug di Jaunty e non di Karmic, che il pacchetto nel frattempo fosse stato aggiornato. Così non è: ho dovuto reistallare da poco Jaunty, ho riseguito questa mia guida e ho constatato che il bug c'è ancora. Lo ringrazio e correggo¹.


'grufolare', cioè 'razzolare grugnendo in cerca di cibo', in inglese si traduce con 'to root' o con 'to grub'. Cliccare l'immagine per tutti gli altri verb(/s)i.


All'Ubuntu Developer Summit per Karmic, tenutosi dal 25 al 29 Maggio a Barcellona, Colin Watson ha annunciato che il boot loader predefinito della prossima versione di Ubuntu sarà GRUB 2. E tuttavia non ci sarà un aggiornamento negli avanzamenti di versione, sarebbe 'intrinsecamente' rischioso: o si installa Karmic da tabula rasa, o si fa da soli, anche subito, con Jaunty. Appunto.

Non ho fatto altro che mettere in pratica e tradurre la guida dedicata che si trova nel wiki di Ubuntu: KernelTeam/Grub2Testing.
Nella pagina del progetto (GNU) GRUB 2 si possono trovare invece tutte le informazioni al riguardo: documentazione, migliorie rispetto al predecessore GRUB, storia, FAQ, etcetera...

Innanzitutto: bisogna controllare che GRUB2 funzioni col bios del pc. Il test più sicuro e quello di scaricare questa-versione-di-Ubuntu-Jaunty-su-grub2, estrarre dall'archivio il file .img, installarlo su una chiavetta USB e vedere se il boot va a buon fine.
Attenzione: la penna USB dev'essere di almeno 4GB e formattata in ext3. Per scrivere l'immagine sul supporto si può usare ImageWriter (sudo apt-get install usb-imagewriter), ed è la scelta raccomandata. Oppure, se il file .img è nella vostra home e se siete sicuri che sdb1 sia proprio quella penna USB, con:

sudo dd if=bootable-grub2-2.5GB.img of=/dev/sdb1


Se Ubuntu si avvia, GRUB2 funzionerà: altrimenti fermatevi qui, ma solo perché andare avanti sarebbe inutile. In realtà, infatti, il team di sviluppo ha previsto un'ulteriore test per GRUB2, che è anche una ottima misura di sicurezza. Spiego: il comando per installare grub2 (se il primo test è ok, o se si vuole comunque provare, datelo pure)

sudo apt-get install grub2


rimuove sì il pacchetto grub, ma NON cancella il vecchio grub dal MBR. Un attimo. Durante l'installazione di grub2, appariranno dei prompt nel terminale: al primo selezionare OK, poi Yes per "Chainload from menu.lst", e infine, a "Linux command line:", dare semplicemente Invio. Con la seconda opzione ('chain'='catena'!) si fa in modo che GRUB2 vada ad aggiungersi come voce al vecchio grub, che è ancora nel MBR. Quindi, riavviando, al boot si avrà ancora GRUB, con in cima la voce 'Chainload into GRUB 2' seguita da una nota, e sotto tutte le vecchie voci, avviabili e funzionanti.
Non resta che provare se 'Chainload into GRUB 2' fa il boot e se trova tutte le vecchie voci del vecchio grub: altrimenti basterà avviare Ubuntu come sempre, reinstallare grub e rimuovere così grub2; tutto tornerà esattamente come prima, poiché i vari file /boot/grub/menu.lst* sono stati conservati.

----------------------------------

¹ A causa di un bug nell'installer di grub2 in Jaunty, è possibile che le impostazioni del vecchio grub vengano importate in modo non corretto. Ad esempio potreste trovare le voci che prima erano 'Ubuntu...' cambiate in 'Debian...', come è successo a giorgio130. Ma soprattutto la voce 'Chainload into GRUB 2' potrebbe di fatto non avviare il menu di GRUB 2, ma presentare un errore. Un tasto qualsiasi vi riporterà alla schermata precedente; ora si prema 'e' per editare la stessa voce 'Chainload into GRUB 2'. Compariranno due stringhe di testo, di cui la prima, in alto, con questa forma:

root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Al posto delle x, ci saranno numeri e lettere: non è altro che l'UUID che definisce univocamente ciascuna partizione. Bene: cliccando 'e' una seconda volta si potrà modificare questa stringa, e sostituire così root con uuid. Enter per salvare la modifica e 'b' per fare il boot a catena che porterà al menù di GRUB2.
----------------------------------

Se invece GRUB2 è riuscito ad avviare Ubuntu e riporta tutte le vecchie voci correttamente (in realtà io ne ho una in più, una variante di memtest86+ che non ho provato e non so a cosa serva..), si può finalmente installarlo nel MBR al posto del vecchio, così:


sudo upgrade-from-grub-legacy


Chi scrive non ha rimosso i vari file menu.lst, ma è stato tentato: al diavolo l'ordine, i pochissimi bit da liberare, e pure il comando che mostra quanto ancora il terminale sia potente elegante veloce. Mi piace lasciare tracce.

Ultima cosa: se siete registrati sul sito internazionale di Ubuntu o su Launchpad, potete loggarvi e modificare la pagina della guida di cui sopra aggiungendo la scheda madre o il portatile e i vari dati 'nel corretto ordine alfabetico'.

Powered by ScribeFire.

4 commenti:

Giorg ha detto...

guarda che le vecchie entry di grub non sono proprio identiche all'originale... infatti avevo come nomi tutte le entry di ubuntu cambiate in Debian, e tentando di bootarle avevo un bel "error 11: urecognized device string". ho risolto sostituendo all'uuid il vecchio (hd0,x)...

Proarci ha detto...

mmm, stai dicendo che le voci che in grub erano 'Ubuntu..', aggiornando a grub2 sono diventate 'Debian...'?

Se è così..è strano. Ma usi i kernel standard di Ubuntu o qualcosa compilato o cmq installato da te?

In ogni caso, io ho solo riportato quello che IO ho fatto, cioè la procedura della guida linkata così come IO l'ho messa in pratica (e verificata) su una Ubuntu Jaunty _originale_, per così dire. Le voci, nel mio caso, erano proprio le stesse, non ho dovuto toccare nulla, e bootavano.

Mi dispiace comunque se ti ho creato problemi.

Proarci ha detto...

faccio mae culpa.

giorgio130 ha ragione ed ho aggiunto i passaggi per aggirare il bug.

grezie.

Proarci ha detto...

Proarci: Configurare GRUB 2