A riguardo, avendo un poco di pazienza, si trovano centinaia di guide con Google. Perchè allora la necessità si scriverne ancora? Perchè con tutte le guide di questo mondo, ci ho messo un paio di giorni per riuscire a lanciare windows sulla mia macchina. Questo perchè la stragrande maggioranza di guide fornisce soluzioni parziali e incomplete, che non si adattano ad ogni soluzione, ma solo a quelle più ovvie, senza ovviamente indicare nulla. Il solito problema di Ubuntu: da un lato c’è una documentazione vastissima di blog, community, forum, dall’altro questa documentazione è spesso scadente. CI tengo a specificate, lungi da me scrivere qualcosa di esauriente sull’argomento (non ne avrei le competenze), quanto portarvi la mia personale esperienza, chissà mai possa tornarvi utile. In sostanza, ecco altra documentazione scadente 😀

Cominciamo con le basi. Per poter configurare il boot di Grub dobbiamo editare il file menu.lst, presente nella cartella /boot/grub/menu.lst

Per i niubboni, aprite la console e infilateci:

$ gksu gedit /boot/grub/menu.lst

O qualunque altro editor vogliate usare.

Scorrete tutte le opzioni di grub fino ad arrivare in fondo al documento. Se volete smanettare con le altre opzioni ci sono ottime guide online, ma la maggior parte dei parametri sono molto intuitivi. Giunti in fondo avrete davanti la lista degli OS generata automaticamente durante l’installazione. Ad esempio la prima opzione dell’elenco in Grub è la mia Ubuntu con Kernel 2.6.17-11, segnata così:

title Ubuntu, kernel 2.6.17-11-generic
root (hd0,2)
kernel /boot/vmlinuz-2.6.17-11-generic root=/dev/sda3 ro quiet splash
initrd /boot/initrd.img-2.6.17-11-generic
quiet
savedefault
boot

Ripeto, non è mia intenzione sviscerare il funzionamento di Grub, quanto specificare in maniera semplice e veloce come bootare Windows tramite grub. Nello specifico, analizziamo due casi.

Il primo e forse il più comune, consiste nell’avere un singolo HD ripartizionato tra windows e linux. Il codice da aggiungere a menu.lst sarà di questo tipo:

title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

L’unico parametro che dovrete modificare è quel root (hd0,0). Nel mio caso infatti windows si trova su hda1, hd0,0 tradotto in grub. Se fosse stato in hda2 avrei messo invece root (hd0,1), per hda3 invece root (hd0,2), e così via. Fatto questo, riavviate e tutto dovrebbe andare.

Vediamo ora un secondo caso (quello che in particolare quello che mi ha fatto impazzire), ovvero se abbiamo Windows su un HD dedicato, e nello specifico un HD non impostato come primario nel BIOS. In queste condizioni il nostro Grande Sistema Operativo, stizzito per essere stato messo su uno slave, decide essere più decorsoso non partire proprio. Dovremo dunque addentrarci ulteriormente nella configurazione di grub e risolvere la cosa con un piccolo trucco. Aggiungiamo dunque queste righe al nostro menu.lst:

title Microsoft Windows XP Professional
root (hd1,0)
savedefault
makeactive
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

In questa maniera, tramite l’aggiunta di map, facciamo credere a Windows di trovarsi sull’HD primario, switchando virtualmente i due dischi. Restano validi i discorsi fatti prima per root (hd1,0), io ho win su hdb1, che si traduce in grub con hd1,0, se avessi avuto win su hdb2 avrei messo root (hd1,1), per hdc1 invece root (hd2,0), etc. etc.

Un ultimo consiglio. Nel caso non riusciste a capire su quale partizione avete Linux, su quale Win, lanciate da riga di comando

$ sudo fdisk -l

per avere l’elenco dei dischi e delle partizioni con realtive informazioni riguardo ai fs e ai punti di mount.