Ripristinare GRUB2 su Ubuntu con un Live CD dopo l'installazione di Windows

Un mese fa ho cambiato l’harddisk del mio portatile (SATA 250GB 7200rpm). Ritrovandomi senza dvd di ripristino di Windows Vista e senza partizione di ripristino, facendo l’installazione sul disco nuovo ho messo direttamente Ubuntu e basta. Per lavoro ora ho bisogno di Windows in quando il software che uso gira solo sul sistema operativo Microsoft, quindi ho partizionato il disco e ho installato Windows 7 per provarlo. Devo dire – oggettivamente – che è una scheggia, davvero veloce anche con millemila applicazioni aperte, ma questo discorso non c’entra con quello che voglio trattare in questo post.
Dopo l’installazione di Windows mi sono ritrovato senza GRUB2, il bootloader di default di Ubuntu “Karmic Koala” 9.10 e quindi non riuscivo più ad accedere al mio sistema preferito. Sulla Rete ci sono molte guide riguardo GRUB, ma pochissime trattano GRUB2. Come ripristinarlo?
ATTENZIONE! Nei passi seguenti si lavorerà come root sul nostro sistema, quindi prudenza.
Recupera un Live CD. Io ho usato quello di Ubuntu “Jaunty Jackalope” 9.04 64bit.
Una volta avviato apri un terminale. Per comodità diventa superuser, e d’ora in poi attenzione.
Devi identificare su quale partizione hai la directory /boot di Linux. Nel mio caso è /dev/sda3. Per vedere le partizioni usa

sudo fdisk -l /dev/sda

Ora monta la partizione, monta la directory /dev in modo da farla vedere al tuo sistema e accedi:

mount /dev/sda3 /mnt
mount -o bind /dev /mnt/dev
chroot /mnt

Ora aggiorna ricreo il file grub.cfg di GRUB2 e lo installo di nuovo nel MBR:

update-grub
grub-install /dev/sda

Teoricamente a questo punto avrà installato nuovamente GRUB2 dopo aver trovato i kernel installati e anche la partizione con Windows. Smonta la partizione e chiudi il terminale:

exit
umount /mnt/dev
umount /mnt
exit
exit

Ora riavvia. Potrebbe presentarsi il caso in cui la partizione con Windows non venga rilevata e che sia quindi impossibile avviarla. Per aggirare questo fastidio entriamo nel nostro sistema Ubuntu abituale, installiamo il pacchetto os-prober, usiamolo e ripetiamo le operazioni di prima. Via di terminale:

sudo apt-get install os-prober
sudo os-prober
sudo update-grub

Ora dovresti aver visto che anche la partizione con Windows è stata individuata. Riavvia il sistema e prova.
Se riscontri imprecisioni nella guida o vuoi confermare che tutto funziona lascia pure un commento.
EDIT 26.10.2009: Trovi altri metodi qui (guida trovato attraverso un poco educato commento di un utente a questo articolo).
EDIT 09.11.2009: Grazie a ste che nei commenti ha trovato l’imprecisione su grub-install, ora corretta.

42 pensieri riguardo “Ripristinare GRUB2 su Ubuntu con un Live CD dopo l'installazione di Windows”

  1. Per "aggiornare Grub2" intendo proprio ricreare il file menu.lst, grazie per la puntigliosa osservazione. Per quanto riguarda la questione "modifiche alla partizione" le ho fatte in quanto ho installato Windows7 riducendo la partizione che uso per /home.

  2. Ciao Oskar, grazie per la guida, ora vedrò di provarla, il mio problema è simile ma non proprio così; io ho usato finora il boot.ini di windows per la scelta del sistema operativo da lanciare nettendo i primi 512 bytes della partizione in cui era installato il bootloader di Ubuntu in un file e facentdo poi leggere il file al boot.ini di XP. Ora col Koala se uso questa procedura, non parte! i primi 512 bytes sembrano vuoti! tu hai idea di come si possa fare a usare sempre il boot.ini di XP? tu mi chiederai che mi frega di usarlo e usare invece Grub2, però conoscendo Microsoft vorrei evitare che un bel giorno, con qualche aggiornamento, zio Bill vede che il boot loader non è il suo e mi cambia tutto (cosa da non stupirsi con Microsoft)
    Grazie.
    Geppo

  3. Grande Oskar, guida perfetta! Un solo problemino, ogni volta che win si aggiorna (vista 64) al riavvio successivo il grub sballa e devo reinstallarlo come da guida… esiste un modo per fixare il problema definitivamente?
    Complimenti
    Pier

    1. Grazie Pier, molto gentile 🙂 Non mi è mai successo quello che descrivi, ora come ora non saprei aiutarti. Anche perché quando avevo Vista in dualboot si era fatto 33 aggiornamenti che non andavano a buon fine, quindi non li applicava, e non ho mai capito il perché.

  4. grazie per l'utile guida!
    volevo solo precisare che al posto del cd live ho usato Super Grub Disk 1.21 (basato su grub2 beta 1.96). Al boot del pc mi riconosceva la partizione di Ubuntu e così sono potuto entrare normalmente nel os di linux. A quel punto mi è bastato digitare con i privilegi di amministratore: update-grub e poi grub-install /dev/sda
    Al riavvio grub2 si caricava perfettamente.

    1. Grande Cecco,dopo tante peripezie e incazzature con il tuo suggerimento da supergrub sono riuscito a far partire XP-Win7-Ubuntu 10.4 tutto su dev/sda,grazie di cuore.Pierluigi

  5. Ciao Oscar
    La mia [ una situazione un po- pi fuori standard che non ne vuole sapere di funzionare. Ho 3 HDD sulpc ma quelli incriminati sono i primi 2. Sul primo ho duoe partizioni WIndows (S.o. + Dati) e sul secondo ho creato partizione per root e per /home. Installo e sembra tutto ok. Al riavvio ubuntu 9.10 non risulta e si avvia Windows senza traccia di Grub. Ora la domanda nasce spontanea> come faccio dalla live dove sono adesso a dirgli che ho MBR su /dev/sda ma la root e' /dev/sdb1 ??
    grazie per quello che qualcuno sara' in grado di partorire
    Alessandro

  6. Allora, vado a congetture perché non l'ho mai fatto, quindi non mi ritengo responsabile per eventuali casini eh… Seguendo la mia guida:
    mount /dev/sdb1 /mnt (se la tua partizione / è la prima del secondo disco)
    mount -o bind /dev /mnt/dev
    chroot /mnt
    update-grub
    grub-install /dev/sda
    In questo modo DOVRESTI lavorare sul secondo disco ma installare l'MBR sul primo. Come detto non ne sono sicuro. Se provi questi passi o trovi un'alternativa lo puoi scrivere? Grazie 🙂

  7. Grazie per questa ottima guida!
    Cito solo la mia esperienza: ho reinstallato Windows e, una volta giunto al comando chroot /mnt, ho ricevuto sempre lo stesso errore (tra l'altro diffuso):
    cannot execute /bin/bash: Exec format error
    In un forum hanno dovuto riformattare (logica non linux giusto?) mentre basta usare la live di Karmic (Ubuntu 9.10) e il problema sparirà; con la 9.04 mi succedeva, ho provato con 7.04 (devo averlo letto da qualche parte) ma niente…
    Ad ogni modo ho risolto!

  8. Ciao a tutti,
    scusate….ma non riesco a trovare una spiegazione per l’opzione bind dell’istruzione mount (sono stra niubbo).
    Non c’ho capito niente usando il manuale (man)….qualcuno me la spiega in due parole?
    Grazie

  9. Sono riuscitoa far partire ubuntu 9.10 ma non compare il menu di grub ovvero quale sistema far partire prima o dopo e non so come fare per far comparire anche windows vista

  10. io ho ripristinato grub 2 (per fortuna perchè senza ubuntu non saprei come fare) ma win 7 non ne vuole sapere di avviarsi, parte in modalità provvisoria e poi ad un certo punto mentra stà caricando il sitema, si riavvia "senza motivo" così non riesco ad accedere al desktop…da che può dipendere??

  11. Grazie della guida 🙂 Funziona alla grande. Avevo un quadri-boot (Mac-OSX, Windows Xp, Windows 7 e Ubuntu 9.10) e sono riuscito a far ri-funzionare il tutto! Grazie ancora della guida, è da mettere tra i preferiti 🙂

  12. scusa……..ho fatto tutto quello che dice la guida….ma non riesco a montare le partizioni e non so perchè….e poi mi da errore a qualunque altro comando…..ho ubuntu lucid su chiavatta usb, sull’hard disk ho win 7 e ubuntu 10′.4 ..e davvero non so che fare perchè all’avvio mi dice bootmgr is missed..e devo per forza andare sulla chiavetta, !!!!!!!!!!!!!!!

  13. Ciao senti ti devo fare delle domande visto ke sono veramente a zero come ”cultura” ubuntu.
    Allora mi puoi dire come si fa a diventare super user?
    Come riconosco a ldirectory dove ho il boot di linux quando dgt il comando sudio fdisk-| dev/sda cosa mi dovrebbe venire scritto?
    Cosa vuoi dire con ‘ ora monta la paritizione ‘ ??cosa devo fare??
    Devo dgt il comando mount?
    Grazie ciao scusa queste domande del piffero ma visto che nn son pratico son costretto a chiedere.
    Ho visto ke hai scritto di fare molta attenzione.Che rischi si corrono a fare questo procedimento?
    Spero di ricevere presto risposta perkè ho delle foto molto preziose dentro la cartella home di ubuntu.

  14. Ciao,
    grazie per la guida….
    io ho fatto i vari pasaggi, ma mi vede solo ubuntu e non windows 7…
    ho anche usato prober e poi reimmesso i passaggi precedenti come da te indicato…il prober vede windows 7 nel terminale, ma quando riavvio…grub vede solo ubuntu.
    Come posso fare…?

  15. Alcune volte i sistemi derivati da debian vengono installati su più partizioni, tra cui /usr /var /tmp. Se vi trovate in questa situazione montatele in mnt nelle rispettive posizioni.
    mount /dev/sdax /mnt/usr
    mount /dev/sday /mnt/var
    mount /dev/sdaz /mnt/tmp
    Ci tenevo a dirlo perchè mi sono trovato anche io in questa situazione

    1. Ottimo suggerimento, in effetti nella guida non avevo previsto la possibile frammentazione di /usr, /var e /tmp, in quanto sono abituato a fare una partizione / e una /home. Grazie! 🙂

  16. Ciao, ho installato ubuntu (come unico SO) però non riesco a farlo partire . Ho provato facendo tutti questi passi però non va comunque. Mi da sempre un errore del tipo ‘you need to load kernel first’. Ho utilizzato anche un programma (iso) per il restore di grub ma anche quando fa il detect del sistema comunque non riesce a lanciarlo dandomi lo stesso errore. Potete aiutarmi?

Rispondi