Kubuntu 4.11: GRUB2 e installazioni Windows multiple
Quando ho installato Kubuntu 4.11 sul mio Toshiba Qosmio uno dei pochi problemi riscontrati è stato il boot. Ho impiegato molto tempo (da “antiguru” quale sono) per perfezionare il meccanismo per avere due installazioni Windows completamente indipendenti, una per il lavoro ed una per il tempo libero. Non volendo nemmeno che la partizione di avvio di un sistema fosse visibile all’altro, l’unica soluzione che potevo adottare era un boot loader che attivasse una partizione e nascondesse l’altra. Per fare questo ho usato un vecchio boot manager opensource chiamato Smart Boot Manager; si tratta di un progetto datato ed esteticamente non entusiasmante, ma estremamente efficace. Infatti è così piccolo che si installa nel solo master boot record del disco fisso e fa le operazioni che mi erano necessarie. Quando però ho installato Kubuntu mi sono detto: non è possibile che un boot loader come GRUB non sia in grado di nascondere una partizione! Quindi ho lasciato che GRUB si installasse nell’MBR del disco, dato che aveva anche correttamente riconosciuto le due installazioni di Windows. Come previsto però, entrambe non si avviavano con un bellissimo “schermo blu della morte”. Niente panico e un po’ di ricerca. Trovato questo articolo pensavo di aver fatto tombola, ma purtroppo mi sono presto reso conto che la versione 4.11 utilizza GRUB2, la cui sintassi dei comandi è completamente diversa dalle versioni precedenti. Altra google-ata: manuale di GRUB. Questa volta tombola davvero. C’è addirittura un paragrafetto che sembra fatto apposta per il mio caso specifico. La chiave del gioco è questa piccola sequenza di istruzioni.
parttool (hd0,1) hidden- parttool (hd0,2) hidden+ set root=(hd0,1) chainloader +1 parttool ${root} boot+ boot
Dopo averla testata da linea di comando e verificato che funziona, provvedo all’operazione. Ecco i (pochi) dettagli.
ATTENZIONE: se decidete di fare la stessa operazione effettuate prima un backup dei file originali. Se sbagliate qualcosa il vostro PC potrebbe risultare *NON AVVIABILE* né in Windows né in Linux!
Come al solito anche per questa operazione ho cercato di trovare una strada complicatissima, mentre la soluzione era semplicissima. Non è necessario fare manovre da console o altro, è sufficiente editare un file di testo facendo però (questo sì) a mantenerne inalterata la sintassi.
- Cercate il file
/boot/grub/grub.conf
e fatene una copia. Io l’ho chiamata
grub.conf.ORIGINAL
- Lanciate il vostro editor preferito, io ho usato Kate. Per evitare sorprese ho aperto una Konsole e usato il comando
sudo kate
(per essere sicuro di poter poi poi salvare il file) ed aprite il file:
/boot/grub/grub.conf
- Cercate la prima sezione che avvia Windows, che da me aveva questo aspetto:
menuentry "Windows XP Media Center Edition (on /dev/sda1)" --class windows --class os { insmod part_msdos insmod ntfs set root='(/dev/sda,msdos1)' search --no-floppy --fs-uuid --set=root 6638F37738F34519 drivemap -s (hd0) ${root} chainloader +1 }
- Sostituitela con queste istruzioni, chiaramente “ispirate” a quelle contenute nel manuale di GRUB2:
menuentry "Win@Home - Windows XP Media Center Edition (on /dev/sda1)" --class windows --class os { parttool (hd0,1) hidden- parttool (hd0,2) hidden+ set root=(hd0,1) chainloader +1 parttool ${root} boot+ }
Fate attenzione a non confondervi la sezione si apre con una graffa alla fine della riga menuentry e si chiuse con una graffa “solitaria”.
- Ripetete l’operazione per l’altra sezione, ricordandovi che questa volta le partizioni hd0,1 e hd0,2 vanno scambiate: la 1 si nasconde (hidden+) e la 2 si scopre (hidden-) e si attiva (set root).
Salvate il tutto e riavviate.
Il gioco è fatto.
Già che c’ero ho fatto due piccole modifiche utili nel mio caso: non è detto che servano anche a voi, ma ormai che sono arrivato fino a qui, tanto vale spendere due righe in più, no? 🙂
Per cambiare la chiamata di default di GRUB (io ho messo Windows Home, in modo che se qualcun altro in famiglia ha bisogno del PC si trovi in un ambiente a lui più… familiare) ho cambiato la riga
set default="0"
in
set default="4"
Questo fa sì che venga avviata automaticamente la quinta scelta (la numerazione parte da 0, quindi la quinta scelta corrisponde al numero 4!)
Infine ho aggiunto il comando:
parttool (hd0,1) hidden- parttool (hd0,2) hidden-
all’avvio normale di Linux in modo che le due partizioni dei sistemi Windows fossero “scoperte” e quindi visibile dall’interno di Linux.
Adesso penso che sia proprio tutto. Alla prossima soluzione!
grub.cfg.ORIGINAL | grub.cfg | Partitions
EDIT 27-10-2011: purtroppo ho scoperto che il procedimento è da ripetere dopo ogni upgrade che coinvolge il kernel o dist-upgrade (evidentemente grub rigenera automaticamente il file grub.cfg). Se qualcuno ha suggerimenti su come rendere permanente la modifica delle sezioni Windows, non ha che da postare un commento! 😉