Strona 1 z 1

[+] Odzyskanie Linuksa po instalacji Windows7

: 20 lutego 2010, 02:39
autor: Waldemar
Przed instalacją Windowsa7 przeczytałem forum min. http://debian.linux.pl/viewtopic.php?p=9304#9304
jak i obejrzałem informacje z Google dotyczące odzyskiwania Gruba. Ponieważ już parę lat używam Linuksa (Sarge, Etch, Squeeze, Siduksa) i instalowałem na kilku komputerach, i sprawa wydawała się w miarę prosta. Kiedyś po instalacji Windows XP taką operację z sukcesem przeprowadziłem.
Niestety tym razem potrzebuję pomocy, bowiem po próbach odzyskania gruba system się totalnie wysypał i poza Windowsem niczego więcej uruchomić się nie da. Najgorszym jest jednak fakt, że jedna z partycji znikła. tzn. pod Siduksem live (Gparted) widzę jako:

Kod: Zaznacz cały

Unallocated


Kilka konkretów.
Dysk przed instalacją Windowsa podzielony był na szereg partycji (podaję z pamięci, mogę się mylić co do numeracji):
  • sda1 ntfs (Windows),
    sda2 swap)
    sda3 ext3 Squeeze 62 bit (Grub2)
    sda4 extended
    sda 5 swap
    ext 6 ext3 Lenny (32 bit)
    ext 7 fat 32
    sda8 fat 32
Po instalacji Windowsa7 próbowałem, korzystając z Siduksa livecd (w Ubuntu nie zdołałem uporać się z trybem administratora -po "su " żądał hasła) według opisu:
http://debian.linux.pl/viewtopic.php?p=9304#9304

Wykonałem opisane czynności, pewnie popełniłem jakiś błąd. Po ostatnim z poleceń:

Kod: Zaznacz cały

chroot /mnt/root /bin/bash
wyskoczył błąd. że polecenie chrot nie może zostać wykonane.
Próbowałem skorzystać z trybu awaryjnego instalatora Squeeze, ale bez pożądanego skutku.
Wprawdzie grub się "odezwał " w wersji sprzed instalacji 64 bitowego Debiana, ale poza Windowsem niczego więcej nie mogę uruchomić.
Próba uruchomienia Linuksa (pierwsza pozycja w menu) kończy się:

Kod: Zaznacz cały

root (hd0,2)
Filesystem type unknown, partition type0xf
kermel /boot/vmlinuz-2.6.26-2-685
root=dev/sda3  ro quiet
Error 17: Cannot mount selectet partition.
Polecenie fdisk -l daje wynik następujący (w skrócie):

Kod: Zaznacz cały

/dev/sda1 * ,,,,7    HPFS/NTFS
/dev/sda2    ....83  Linux
/dev/sda3    ...f      W95 Ext'd (LBA)
/dev/sda5    ....c      W95 FAT32 (LBA)
/dev/sda6    ....b      W95 FAT32
GParted spod Siduksa, we właściwościach partycji sda1 (ntfs) podaje błąd partycjonowania i błąd ntfs:

Kod: Zaznacz cały

Error 22
(w oryginale dość długi tekst angielski z opisem).
Tekst przedstawiam korzystając z drugiego komputera, na szczęście sprawnego, jednak nie mogę wklejać komunikatów i przepisuję je ręcznie.
W pierwszej kolejności chciałbym odzyskać utraconą partycję. Zamierzam dalej walczyć, jednak gdyby ktoś życzliwy coś doradził byłbym wdzięczny. Podejrzewam jakiś błąd w MBR.

Dzisiaj rano.
Udało się uruchomić Debiana 32 bitowego z sda2, czyli uwaga na sda3, a obecnie sda2, był Lenny, a nie jak mi się zdawało Sgueeze 64bit. Squeeze było (jest) na wyższej partycji, aktualnie tzw. ,,unallocated'' - 20 GB.
W załączeniu zrzut GParted.
Skorzystałem z opcji edycji (klawisz "e") po wyświetleniu menu, przy czym dokonałem zmiany jak poniżej:

Kod: Zaznacz cały

title		Debian GNU/Linux, kernel 2.6.26-2-686
root		(hd0,2)
kernel		/boot/vmlinuz-2.6.26-2-686 root=/dev/sda3 ro quiet 
initrd		/boot/initrd.img-2.6.26-2-686
na:

Kod: Zaznacz cały

root		(hd0,1)
kernel		/boot/vmlinuz-2.6.26-2-686 root=/dev/sda[b]2[/b] ro quiet 
Zmiana numeracji partycji wynikły z faktu "zniknięcia" partycji swap. Od biedy tą partycję da się przywrócić do użytku, bowiem bez trudu można edytować "menu.list" w Grubie (legacy) na sda2/boot/grub. Natomiast Grub2 zaginął wraz z partycją 64 bitowa.
Niestety nadal nie zdołałem uruchomić moją zgubioną partycję.
Zastanawiam się nad użyciem posiadanego obrazu partycji sda1, utworzonego za pomocą programu partitionimage.
Niestety obraz jest jeszcze sprzed instalacji Debiana 64 bit, na tej partycji testowałem akurat Fedorę.
Nie wiem tylko czy tym jeszcze bardziej nie zaszkodzę. Oczywiście zainstalowany nowy Windows7 zostanie zastąpiony starą wersją, ale to akurat jest w tym momencie bez znaczenia.
Wydaje mi się, że przynajmniej naprawi to MBR? Czy też może tego nie ruszać?

PS. Myślę, ze nadpisywanie sda1 jest nie najlepszym pomysłem. Znalazłem natomiast post:
http://debian.linux.pl/viewtopic.php?t= ... e+partycji
traktujący o wykorzystaniu programu Testdisk, nie korzystałem jeszcze z tego wynalazku, ale spróbuję.

: 20 lutego 2010, 14:48
autor: fnmirk
Ile razy już zostało to napisane na tym forum.

Przed ingerencją w układ partycji na dysku, czy instalacją kolejnego systemu operacyjnego sprawdź wcześniej dysk czy nie zawiera błędów. Sprawdź czy partycje są oznaczone w odpowiedniej kolejności. Jeżeli nie - przepisz tablicę partycji i wykonaj zmiany w plikach startowych już istniejących systemów operacyjnych.

Waldemar, nie wykonuj gwałtownych ruchów w postaci nieobliczalnych w skutki instalacji kolejnych programów, które prowadzą do katastrofy. Pomyśl wcześniej co zrobiłeś.

Uruchom jakieś livecd z dowolnym Linuksem i przedstaw wynik polecenia:

Kod: Zaznacz cały

fdisk -l
Nie używaj do tego Ubuntu to nie jest system odpowiedni do naprawy uszkodzonego systemu. Zbyt długo się uruchamia i posiada zbyt dużo ,,utrudnień'' w postaci ograniczeń wersji livecd aby z niego wygodnie korzystać.

Wynik poleceń z konsoli możesz przekazać do pliku a plik z pomocą jakiegoś nośnika wkleić na forum.

Sidux w wersji livecd do wyświetlenia wyniku polecenia:

Kod: Zaznacz cały

fdisk -l >wynik.txt
potrzebuje uprawnień administratora. Uprawnienia uzyskasz poleceniem:

Kod: Zaznacz cały

sudo su

: 20 lutego 2010, 15:45
autor: Waldemar
Dziękuję fnmirk za życzliwe zainteresowanie.
Mój główny błąd to zabieranie się za instalację będąc przemęczony o drugiej w nocy. Do opisanej operacji starałem się przygotować drukując zawczasu opisy, między innymi korzystając z tego forum. Mimo to po zainstalowaniu Windowsa coś się ,,wykrzaczyło'' niezgodnie z opisem. Konkretnie po instalacji Windowsa ,,znikły'' 3 partycje, stąd moja konsternacja.
Jak napisałem rano, w uzupełnieniu mojego posta zdołałem uruchomić Debiana z widocznej partycji. Mały krok do przodu, za pomocą programu Testdisk udało się odzyskać utracone partycje, włącznie z partycjami swap.
Program wraz ze zrzutami ekranu jest dobrze opisany pod:
http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step
aktualnie efekt fdiska:

Kod: Zaznacz cały

debian:/home/waldemar# fdisk -l

Disk /dev/sda: 500.1 GB, 500106780160 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x33b533b4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        6374    51199123+   7  HPFS/NTFS
/dev/sda2            6375       10035    29406982+  83  Linux
/dev/sda3           10036       60800   407769831    f  W95 Ext'd (LBA)
/dev/sda5           10036       10198     1309234+  82  Linux swap / Solaris
/dev/sda6           10199       12636    19583203+  83  Linux
/dev/sda7           12637       12748      899608+  82  Linux swap / Solaris
/dev/sda8           12749       57367   358402086    c  W95 FAT32 (LBA)
/dev/sda9           57368       60800    27575541    c  W95 FAT32 (LBA)
Faktem jest, że kolejność numeracji trochę inna, ale po małej korekcie w menu.lst 32 bitowy Lenny uruchamia się już automatycznie. Traktuję to jako rozwiązanie doraźne. Dla odmiany Windows nie chce ruszyć.

Nie uruchomiłem jeszcze Squeeze 64 AMD (na sda6), spróbuję w trybie awaryjnym instalatora aktywować GRUBA2.
Jak na razie fsck nie zameldował żadnych anomalii, więc pozostaje mieć nadzieję, że niczego nie zepsuję.
Mam, jak napisałem, wydrukowany opis przywracania gruba2 za pomocą chroota ze strony http://www.dug.net.
Jakaś rada? Czy może coś jeszcze sprawdzić?

Dodane: 20/02/2010 godzina 20:00 problem rozwiązany.

Dołączę krótki opis, może komuś się ta informacja przyda.
Sposoby odzyskania gruba podane w internecie prawdopodobnie działają dla konkretnej wersji, gdy mamy starą wersję gruba (legacy) i nową gruba 2 to mogą pojawić się problemy. Wygląda, też na to, że instalator z wersją gruba (legacy) nie potrafi odzyskać "nowego" gruba. Korzystałem ze starej płyty instalacyjnej Lenny i wersja AMD 64 była aktualizowana do Squeeze. Opisana metoda na http://www.dug net, również na forum wysypywała się na etapie polecenia chrot.
Ostatecznie zainstalowałem nową wersję gruba2 (wersja 1.96) oraz:

Kod: Zaznacz cały

apt-get install grub2
apt-get install os-prober
Jeszcze przeniesienie ustawień ze starego gruba:

Kod: Zaznacz cały

upgrade-from-grub-legacy
oraz:

Kod: Zaznacz cały

update-grub
Wszystkie polecenia w konsoli na prawach roota.
Pozwoliło to na ujednolicenie programów ładujących i dzięki OS-probe wykrycie obu aktywnych dystrybucji linuksowych, przy okazji wykryło historyczne jądra jeszcze wersji 26.22.
Windows jednak nadal pozostawał niewidoczny.
Po naprawie systemu Windows za pomocą dysku instalacyjnego, po informacji o automatycznej naprawie sektora rozruchowego spodziewałem się, że znowu Windows ,,wygryzie'' Linuksa. Na szczęście tym razem nie. Jednak aby wpis w menu startowym pojawił się, koniecznym było w Linuksie jako root ponowne wydanie polecenia:

Kod: Zaznacz cały

update-grub
Windows7 Premium zostało wykryte jako:

Kod: Zaznacz cały

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista/Longhorn (loader) (on /dev/sda1)" {
	set root=(hd0,1)
	chainloader +1
}
Powyżej fragment pliku:
  • /boot/grub/grub.cfg
Co do przyczyny zgubienia trzech partycji to nie potrafię nic powiedzieć. Zauważyć wypada, że konsolowy Testdisk zawarty w repozytorium Debiana okazał się niezawodny i pozwolił na skuteczne odzyskanie zguby.