Przywracanie bootloadera GRUB-2 w Ubuntu po (re)instalacji Windows

Wielu użytkowników Linuksa posiada dodatkowo na dysku, obok swojej ulubionej dystrybucji, system z rodziny Windows. Powody są różne, czasem jest on potrzebny do pracy, a czasem do rozrywki (ach te gry). Współistnienie obu systemów jest jak najbardziej możliwe i nie stwarza żadnych problemów aż do czasu, gdy zaistnieje konieczność ponownej instalacji „tego drugiego”.

Systemy firmy z Redmond charakteryzują się pewną drobną niedogodnością ;) . Mianowicie podczas instalacji użytkownik nie ma możliwości wpływu na to czy i gdzie zostanie zainstalowany bootloader tego systemu. Automatycznie jest on wpisywany do MBR, a dodatkowo nie są do niego dopisywane inne systemy znajdujące się na dyskach komputera. No tak, ale my chcemy mimo wszystko jednak ich używać. Aby przywrócić bootloadera Ubuntu będzie nam potrzebna płyta LiveCD z naszym systemem. Jeśli jej nie mamy z łatwością można zdobyć jej obraz pobierając z internetu. Po wypaleniu na płycie CD startujemy system Live, a następnie otwieramy terminal i wpisujemy:

$sudo fdisk -l

Polecenie to pokaże nam naszą tablicę partycji. U mnie wygląda ona tak:

Urządzenie Rozruch   Początek      Koniec   Bloków   ID  System
/dev/sda1   *           1        7295    58597056    7  HPFS/NTFS
/dev/sda3            7296       30401   185598914+   5  Rozszerzona
/dev/sda5            7296       28137   167413333+   7  HPFS/NTFS
/dev/sda6           28138       30134    16040871   83  Linux
/dev/sda7           30135       30401     2144646   82  Linux swap
 / Solaris

Teraz musimy zamontować partycję z naszym Linuksem:

$sudo mount /dev/sda6 /mnt
$sudo mount --bind /dev /mnt/dev
$sudo mount --bind /proc /mnt/proc

a następnie „przeskoczyć” z systemu Live do systemu na dysku:

$sudo chroot /mnt

Po tej operacji jesteśmy zalogowani do naszego systemu jako root więc nie będzie już potrzeby korzystania z sudo. Możemy edytować ustawienia naszego bootloadera dostosowując go do naszych wymagań (wybór systemu, czas oczekiwania itp.)

#nano /boot/grub/grub.cfg

Nie polecam tego jednak użytkownikom nie posiadającym wystarczającej wiedzy w tym zakresie.
Reinstalacji naszego bootloadera GRUB 2 dokonujemy komendą:
 

#grub-install /dev/sda

 
Jeśli otrzymamy wynik:

Installation finished. No error reported.

Oznacza to, że cała operacja zakończyła się powodzeniem. Możemy opuścić nasz system, odmontować go i zrestartować komputer.
 

#exit
$sudo umount /mnt/dev
$sudo umount /mnt/proc
$sudo umount /mnt
$sudo reboot

Komentarze (RSS)
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

14 komentarzy

  1. luke 17 lipca 2010 o godz. 16:57 #

    fajnie że coś takiego powstaje, jednak dla części społeczności terminal to coś strasznego (mi tam nie przeszkadza, i tak kopiuję za pomocą myszki "zaklęcia"). Dlatego byłoby fajniej, gdyby ktoś, kto potrafi zrobił to tak, aby z płyty live po naciśnięciu odpowiedniej ikonki "samo" się wszystko zrobiło.

    Wiem, marudzę… sam odzyskiwałem nie raz gruba, dlatego wiem, że większość użytkowników będzie się po prostu bała.

  2. bizon 17 lipca 2010 o godz. 18:35 #

    Witam!

    Ja ten problem rozwiązuję w następujący sposób:

    1. Mój dysk mam podzielony na:

    /sda1 ntfs Windows 7

    /sda2 ext2 Ubuntu (ustawiona tutaj flaga rozruchowa)

    /sda3 ntfs dane

    /sda4 efi (bootbooster dla EEE PC)

    2. Kolejność instalacji wiadomo windows, potem linux. Przy instalacji linuksa instaluję bootloadera na /dev/sda2 (i ustawiam tu flagę rozruchową)

    3. Reinstalacja windowsa powoduje ponowne ustawienie flagi rozruchowej na pierwszej partycji i zapisanie windowsowego bootloadera w mbr, ale grub na /dev/sda2 pozostał nietknięty, więc nie ma potrzeby jego przywracania.

    4. Odpalamy jakąś płytę live cd i w ulubionym managerze partycji ustawiamy flagę rozruchową na drugiej partycji (tak jak było na początku)

    5. To tyle. Można też po zalogowaniu się do zainstalowanej dystrybucji linuksa wywołać update-grub jak root, żeby zaktualizować etykietki (np jeśli w miejsce winxp instalowaliśmy vistę lub 7)

    • greg84pl 7 sierpnia 2010 o godz. 12:12 #

      Witam zrobiłem podobnie ale po restarcie komputera jest :"Booting from local disk…

      error: unknown filesystem

      Dlaczego nie chce się uruchomić?

      Dysk podzielony jest na 2 partycje sda1 fat32 i

      sda2 ext4, flaga boot na sda2.

    • Rumble Fish 29 października 2013 o godz. 9:33 #

      bizon, świetny pomysł, dzięki!
      Ja tam wymieniać muszę windę najrzadziej co pół roku, na pewno się przyda.

  3. adam_993 17 lipca 2010 o godz. 20:28 #

    Niektóre dysytrybucje mają takie programy naprawcze – PCLinuxOS (Redo MBR), Mandriva, openSUSE (yast2) nawet Mepis.

    Szkoda że Ubuntu nie dostarcza żadnych narzędzi naprawczych w Live – odzyskiwanie GRUBa, usuwanie błędów,

  4. wini 18 lipca 2010 o godz. 0:39 #

    Zakładam że taka dłubanina z tym grubem to dotyczy tylko ubunta, a takie UBUwynalazki jak Kubuntu czy Xubuntu to pewnie same potrafią sobie gruba naprawić no bo autor w swoich wypocinach nie raczył o nich wspomnieć.

    • Mishek 20 lipca 2010 o godz. 22:32 #

      Ubuntu, xubuntu, kubuntu, mint, fedora itepe itede … o ile posiadają grub/grub2 robi się to dokładnie identycznie – w sposób bezbłędnie opisany w tym artykule.

      gr8 job

      • marcinsud 24 lipca 2010 o godz. 11:27 #

        W Fedorze nie ma grub2 w fedorze 14 też raczej nie będzie.

        Ja to załatwiam inaczej mam fizycznie 2 dyski, i mam zainstalowane oba bootloadery z tym, że każdy na innym dysku. Jak coś padnie zawsze mogę zmienić kolejność bootowania w biosie i jeden z systemów się na pewno uruchomi. W normalnej sytuacji komputer startuje z dysku na którym jest grub

  5. s4ncho 4 sierpnia 2010 o godz. 22:40 #

    w grub1 było łatwiej:( ktoś może próbował przywrócić gruba2 na partycje? a nie do mbr-u? ja poległem.

    • roobal 10 września 2010 o godz. 22:46 #

      Wydaje Ci się, że Grub2 jest trudniejszy, teraz wszystko odbywa się w /etc/default/grub, który jest wg mnie bardziej czytelny niż menu.lst z Grub1.

      Co do przywracania Gruba na partycję to spróbuj go po prostu tam zainstalować na nowo albo przenieś przy pomocy dd.

      Pozdrawiam!

  6. roobal 10 września 2010 o godz. 22:44 #

    Możemy edytować ustawienia naszego bootloadera dostosowując go do naszych wymagań (wybór systemu, czas oczekiwania itp.)

    #nano /boot/grub/grub.cfg

    Nie polecam tego jednak użytkownikom nie posiadającym wystarczającej wiedzy w tym zakresie.

    Ja też nie polecam tego sposobu, z bardzo prostego względu – po pierwszej lepszej aktualizacji jądra grub.cfg zostanie nadpisany domyślnymi ustawieniami, więc odradza się jego edycji, za to konfigurację użytkownika powinno się dokonywać w /etc/default/grub, który jest chociażby czytelniejszy, między innymi dlatego grub.cfg ma odebrane prawo do zapisu przez właściciela.

    Pozdrawiam!

  7. Marcin 22 września 2010 o godz. 9:04 #

    Spierniczyłem komendą DD, potem był test disk, który odbudował partycje i musiałem coś tam przestawić z 8 na 255 przy ustawieniach twardego dysku. Kombinowałem w różny sposów /w tym Wasz/ zaistalować gruba a zadziałało wg. manuala angielskiego

    https://help.ubuntu.com/community/RecoveringUbunt

    0. jak kto chce to moze sprawdzić wersję gruba grub-install -v

    teraz w live CD /10.04/ automatycznie podmontowuje partycje wiec nie trzeba montowac

    1. żeby szybko dowiedzieć się nazwę partycji z linem

    mount | tail -1

    wyjdzie: /dev/sda2 on /media/0d104aff-ec8c-44c8-b811-92b993823444 type ext4 (rw,nosuid,nodev,uhelper=devkit)

    zapisać/ctrl+c/ sobie nazwe partycji tutaj: 0d104aff-ec8c-44c8-b811-92b993823444

    żeby się upewnić że to partycja startowa Ubuntu bls /media/0d104aff-ec8c-44c8-b811-92b993823444/boot,

    jeżeli nie to wziąć gparted albo poszukać sobie w katalogach

    2.

    sudo grub-install –root-directory=/media/0d104aff-ec8c-44c8-b811-92b993823444 /dev/sda

    If you get BIOS warnings try:

    sudo grub-install –root-directory=/media/0d104aff-ec8c-44c8-b811-92b993823444 /dev/sda –recheck

    I wsio. to dla tych co maja wszystko na jednej partycji (ja mam wina/ubu/ i mandrive) – poszło z automatu.

  8. sj65 9 lutego 2011 o godz. 17:07 #

    http://czytelnia.ubuntu.pl/index.php/2010/10/19/r

    Całkiem sprawnie działa.

    Pozdrawiam

    sj65

  9. ediedu 11 lipca 2012 o godz. 20:46 #

    Tutorial-Dziękówka działa perfect. Uzyłem Grub boot cd , sam znalazł wszystkie systemy na kompie wybieramy ten co chcemy zbootować a potem jak wyzej- "grub-install" i "grub-install ".

(wymagane)
URI
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać mailem: sirmacik@jakilinux.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <del>tekst przekreślony</del>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.