Reinstallare GRUB su Ubuntu


Mettiamo caso che un giorno arriviate in ufficio e accendendo il PC vi compaia una schermata nera che non lascia presagire nulla di buono. Fortunatamente dopo la schermata di caricamento del BIOS non si sentono rumori inquietanti che lascino presupporre il malfunzionamento del disco di avvio ma allo stesso tempo non compare il menu del boot loader che vi permette di selezionare il sistema operativo che volete avviare a questo giro. Il primo tentativo da fare per vedere cosa si sia rotto è prendere il CD o la USB pen dove avete salvato la distribuzione Linux live da voi preferita e vedere se riuscite ad avviare il PC usando questo come disco di avvio. Se riuscite nell’impresa con molta probabilità vi si è corrotto qualche file del boot loader e pertanto è impossibile avviarlo e procedere al resto delle operazioni necessarie per permettervi di utilizzare il vostro computer come fate abitualmente.

grub

Prima di procedere oltre il consiglio del buon samaritano è ovviamente quello di fare un backup del vostro disco rigido.

Fatto ciò, se dovesse seguire le istruzioni che avevo precedentemente condiviso su come reinstallare GRUB da LiveCD potreste avere qualche problema perché con versioni particolarmente recenti di GRUB (incluse negli ultimi rilasci di Ubuntu), eseguendo i comandi indicati nel vecchio articolo potreste incappare nell’errore:

grub-probe: error: cannot find a device for / (is /dev mounted?

Poco male perché sul sito di Ubuntu le istruzioni per il ripristino di Grub sono aggiornate e perfettamente funzionanti.

Per completezza vi riporto i passaggi ed i comandi di seguito.

  1. Avviate da LiveCD o USB pen Ubuntu e da terminale eseguite il comando:
    sudo fdisk -l

    ed individuate il disco di avvio e le sue partizioni.

  2. Ipotizzando che il visto sistema sia sulla partizione /dev/sda1 montate il disco con il comando:
    sudo mount /dev/sda1 /mnt

    ed il resto dei dispositivi con:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
  3. Effettuate un chroot sul vostro sistema:
    sudo chroot /mnt

    e se avete la partizione di boot separata ricordatevi di montare anche quest’ultima con il medesimo comando usato al punto 2, ovvero (ipotizzando una partizione di boot su /dev/sda2/ ):

    mount /dev/sda2 /boot
  4. Installate, o meglio reinstallate, Grub 2 nel MBR digitando in sequenza i comandi:
    grub-install /dev/sda
    update-grub2

    se ricevete degli errori è possibile riprovare con il comando

    grub-install --recheck /dev/sda
  5. Uscite dal chroot e smontate tutti i dispositivi con i comandi:
    exit
    cd ~
    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    sudo umount /mnt/
  6. Riavviate ricordandovi di scegliere il vostro disco rigido come disco di avvio e, se come molto probabilmente era, il problema era la corruzione di qualche file di Grub tutto dovrebbe essere rientrato.

 

2 pensieri riguardo “Reinstallare GRUB su Ubuntu

  1. Gentile Davide,
    le scrivo perchè ho estremo bisogno di aiuto sulla tematica da lei affrontata in questa pagina. Andrò direttamente al punto e sarò felice se potrà aiutarmi. Sul mio computer sono ora installati due sistemi operativi: windows in una partizione logica, linux-solaris in una partizione estesa. Dopo un ripristino del sistema windows (che era andato in crash), ho riscontrato un problema al Grub non potendo più scegliere, all’accensione del pc, se selezionare windows oppure linux.
    Attraverso un cd di ripristino di windows, ho trovato accesso alla prompt dei comandi dos e ho impartito l’ordine di “refix” dell’ MBR : in questo modo, al suo riavvio il pc ha ripreso a funzionare ma solo con windows, mediante boot automatico. Di linux (dove si trovano la maggior parte dei miei dati) non ho ancora alcuna traccia.
    Così ho seguito le indicazioni sul ripristino del Grub presenti nella guida online da lei richiamata, ma non sono riuscito a risolvere il problema per il semplice motivo che la partizione di Linux, essendo estesa non può essere montata attraverso il comando indicato (sudo mount /dev/ “x” /mnt -con x =partizione estesa).
    Ho cercato allora di capire quale fosse la partizione logica interna a quella estesa al fine di montarla, ma senza riuscire nel mio intento: anche aiutandomi con Gparted, riesco a vedere solo e soltanto la partizione estesa “unallocated” (e una interna di swap-solaris, che come la prima non può essere montata)

    Cosa fare dunque? Vorrei per lo meno avere un accesso alla partizione linux (che sembra quasi inesistente, ma ciò è impossibile non avendo cancellato alcun dato attraverso formattazioni) così da poter recuperare i miei dati.

    La ringrazio per l’attenzione ricevuta. Se sarà disponibile ad un supporto online attraverso altri canali più diretti (facebook piuttosto che skype..) me lo faccia solo sapere. Mi scuso se non sono stato chiaro a sufficienza, ma sono un giurista in erba e non (ahimè) un informatico.
    Samuele

    1. Una partizione estesa è un contenitore di partizioni logiche, questo vuol dire che lei non può montare il “contenitore”, vorrebbe dire montare tutte le partizioni logiche contenute in quella estesa. Infatti se lei va a vedere (su linux) può trovare o sda1-2-3-4 insieme (tutte e quattro partizioni primarie:di sistema), o sda1-2-3-5-6-7…. In questo caso ci sono 3 partizioni primarie(sda1-2-3) e una estesa (sda4 che non viene letta come partizione “usabile”) in cui ci sono 3 partizioni logiche (sda5-6-7 “usabili”). Se c’è uno spazio non allocato è probabile che quello era lo stesso usato dal sistema stesso.

Rispondi