[+] przywrócenie GRUB-a - oddzielna partycja /boot

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Awatar użytkownika
Makemake
Posty: 13
Rejestracja: 02 grudnia 2009, 10:54

[+] przywrócenie GRUB-a - oddzielna partycja /boot

Post autor: Makemake »

Jak zwykle po reinstalacji Windowsa straciłem GRUB-a. Zawsze bez problemu przywracałem go według instrukcji jaką znalazłem na tym forum. Jednak ostatnio gdy instalowałem Debiana utworzyłem osobną partycję /boot, i teraz nie potrafię przywrócić GRUB-a. Nie wiem co robię źle. Tak wygląda mój dysk:

Kod: Zaznacz cały

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        5222    41945683+   7  HPFS/NTFS
/dev/sda2            5223       24803   157284382+   f  W95 Ext'd (LBA)
/dev/sda3           24804       51314   212949607+   7  HPFS/NTFS
/dev/sda4           51315       77825   212949607+   7  HPFS/NTFS
/dev/sda5            5223        5234       96358+  83  Linux // partycja /boot
/dev/sda6            5235       12529    58597056   83  Linux // partycja /home
/dev/sda7           12530       14961    19535008+  83  Linux // partycja /
/dev/sda8           24742       24803      497983+  82  Linux swap / Solaris 
Uruchamiam system z LiveCD (próbowałem z Ubuntu 8.10 i Knoppixa 5.3) i z konta root wpisuję po kolei polecenia:

Kod: Zaznacz cały

mkdir /mnt/root
mount -t ext3 /dev/sda7 /mnt/root
mount -t ext3 /dev/sda5 /mnt/root/boot
mount -t proc none /mnt/root/proc
mount -o bind /dev /mnt/root/dev
chroot /mnt/root /bin/bash
grub
Pojawia się znak zachęty

Kod: Zaznacz cały

grub>
Wpisuję:

Kod: Zaznacz cały

find /boot/grub/stage1
Wyświetla się komunikat:

Kod: Zaznacz cały

Error 15: File not found
Gdy wpisuję polecenie:

Kod: Zaznacz cały

find /boot/grub/stage1
poza ,,grub>'', plik stage1 jest odnajdowany bez problemu.
Linuksa używam dopiero od kilku miesięcy, dlatego jestem słabo zorientowany w tym temacie. Co robię źle?
Awatar użytkownika
Katiusha
Beginner
Posty: 368
Rejestracja: 23 lipca 2008, 23:47
Lokalizacja: Z repo :P

Post autor: Katiusha »

Wygląda że wszystko robisz dobrze.
Ja jeszcze montuje do tego partycje /home i /usr które mam osobno i tak samo przywracam gruba.

Pokaż co masz w katalogu z grubem.

Kod: Zaznacz cały

ls -al /boot/grub
Po instalacji Windowsa jak mi sie nie chce bawić w przywracanie gruba z poziomu Linuksa korzystam z Super Grub Disk'a i przywracam gruba z poziomu Windowsa klikając na wersje SGD .exe.

Spróbuj, to proste (Auto for Windows):

http://www.supergrubdisk.org/index.php

Niżej masz instrukcje w PDF do SGD.
Obrazki trochę mało wyraźne, bo musiałam to mocno skompresować aby zmieścić się w niecałych 100 KB. :/
Załączniki
Super Grub Disk1.&#.zip
(92.88 KiB) Pobrany 926 razy
Awatar użytkownika
Makemake
Posty: 13
Rejestracja: 02 grudnia 2009, 10:54

Post autor: Makemake »

Na pewnej angielskiej stronie znalazłem coś takiego:
If you are using a separate /boot partition, as the official documentation says:
"... if you have the partition /boot and you install GRUB images into the directory /boot/grub, GRUB recognizes that the images lies under the directory /grub but not /boot/grub"
Then if 'find /boot/grub/stage1' does not find the file, try 'find /grub/stage1'
Zgodnie z tym, wpisałem:

Kod: Zaznacz cały

grub> find /grub/stage1
 (hd0,4)

grub> root (hd0,4)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  17 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd0) (hd0)1+17 p (hd0,4)/grub/stage2 /grub/menu
.lst"... succeeded
Done.

grub> quit
Do tego momentu wydaje się, że wszystko jest w porządku. Resetuję komputer i rzeczywiście GRUB jest przywrócony. Jednak niestety Debian nie chce się załadować. Ładuje się do pewnego momentu i przestaje. Tak wygląda mój plik menu.lst:

Kod: Zaznacz cały

default        0

timeout        5

color cyan/blue white/blue

title        Debian GNU/Linux, kernel 2.6.26-2-686
root        (hd0,4)
kernel        /vmlinuz-2.6.26-2-686 root=/dev/sda8 ro quiet
initrd        /initrd.img-2.6.26-2-686

title        Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
root        (hd0,4)
kernel        /vmlinuz-2.6.26-2-686 root=/dev/sda8 ro single
initrd        /initrd.img-2.6.26-2-686

title        Other operating systems:
root

title        Microsoft Windows XP Professional
root        (hd0,0)
savedefault
makeactive
chainloader    +1
Czy jest możliwe żeby samoistnie pozmieniały się w nim jakieś wpisy? Windows startuje bez problemu. Co oznacza wpis:

Kod: Zaznacz cały

kernel        /vmlinuz-2.6.26-2-686 root=/dev/sda8 ro quiet
Wiem że jest to ścieżka do pliku z jądrem systemu operacyjnego, ale sda8 to przecież partycja SWAP. Co jest nie tak?
Awatar użytkownika
Katiusha
Beginner
Posty: 368
Rejestracja: 23 lipca 2008, 23:47
Lokalizacja: Z repo :P

Post autor: Katiusha »

A nie powinno to wyglądać tak:

Kod: Zaznacz cały

kernel        /vmlinuz-2.6.26-2-686 root=/dev/sda7 ro quiet
bo teraz tam masz /root?

ewentualnie tak jeśli chodzi mu w root=/.... o partycje z grubem i stage

Kod: Zaznacz cały

kernel        /vmlinuz-2.6.26-2-686 root=/dev/sda5 ro quiet
A na sda8 masz przecież partycje wymiany.

Spróbuj tak wpisać zamiast sda8 najpierw sda7, a jak nie zadziała to sda5 i powinno być dobrze. ;)
Awatar użytkownika
Makemake
Posty: 13
Rejestracja: 02 grudnia 2009, 10:54

Post autor: Makemake »

Dziwna sprawa. Zmieniałem już wcześniej na sda5 i sda7 i Debian nie startował. Po Twoim wpisie spróbowałem jeszcze raz. Zmiana na sda5 nic nie dała. Natomiast po zmianie na sda7, przy ładowaniu systemu rozpoczął się jakiś proces naprawczy (nie wiem jaki), po czym komputer się przeładował i system wystartował poprawnie. Teraz jest już wszystko poprawnie. Jak to możliwe że w ,,menu.lst'' sda7 zmieniło się samo na sda8. Nie wiem o co w tym wszystkim chodzi?

Dziękuję za pomoc Katiusha.

Dodane:
Próbowałem zrozumieć o co w tym wszystkim może chodzić i stwierdzam, że wpisy w ,,menu.lst'' nie zmieniły się, tylko były takie od początku. Świadczy o tym zawartość pliku ,,fstab'':

Kod: Zaznacz cały

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda8       /               ext3    errors=remount-ro 0       1
/dev/sda5       /boot           ext3    defaults        0       2
/dev/sda6       /home           ext3    defaults        0       2
/dev/sda7       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
To nazwy partycji w jakiś dziwny sposób zamieniły się miejscami.

Kod: Zaznacz cały

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        5222    41945683+   7  HPFS/NTFS
/dev/sda2            5223       24803   157284382+   f  W95 Ext'd (LBA)
/dev/sda3           24804       51314   212949607+   7  HPFS/NTFS
/dev/sda4           51315       77825   212949607+   7  HPFS/NTFS
/dev/sda5            5223        5234       96358+  83  Linux // partycja /boot
/dev/sda6            5235       12529    58597056   83  Linux // partycja /home
/dev/sda7           12530       14961    19535008+  83  Linux // partycja /
/dev/sda8           24742       24803      497983+  82  Linux swap / Solaris
Przed tym jak Windows skasował mi GRUB-a, partycja z plikiem wymiany SWAP musiała być oznaczona jako sda7, a partycja z katalogiem głównym Linuksa - sda8. Nie wiem tylko jak to możliwe, że system startuje z błędnymi wpisami w fstab.
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Jak usuwasz i tworzysz nowe partycje to zawsze przepisz tablicę partycji i wykonaj korektę w plikach konfiguracyjnych. Unikniesz takich niespodzianek.
Windows przepisał tablicę partycji i uporządkował partycje w kolejności jakiej występują na dysku.
Awatar użytkownika
ryba84
Beginner
Posty: 340
Rejestracja: 08 lipca 2007, 14:55
Lokalizacja: LDZ

Post autor: ryba84 »

Makemake pisze:... Nie wiem tylko jak to możliwe, że system startuje z błędnymi wpisami w fstab.

Bo podajesz w grubie właściwy parametr root, a tam znajdują się skrypty startowe.
ODPOWIEDZ