Bajka zaczyna się tak...
Pewnego dnia wpadł mi do głowy durny pomysł - zainstalować aktualizacje dla mojego laptopa Lenovo. Pełen wiary w zdolności firmy zainstalowałem to i owo, docierając w końcu do 'System Backup and Recovery - system patch' o ile dobrze pamiętam. Instalacja bez problemów, rozpakowało się, zainstalowało, reboot...
... tutaj bajka się kończy i zaczyna się horror.
Niestety aktualizacja zmieniła zawartość MBR, nadpisując boot-sector zainstalowany przez GRUB, który przestał się ładować. Efekt banalny - brak możliwości odpalenia czegokolwiek - ani Windows ani Linux :-(
Dalej było już tylko gorzej - skleroza nie boli, tylko dokucza i postępuje. Jedna pomyłka, jeden klawisz za daleko i nieszczęście gotowe. Opiszę więc „dla potomnych" jak odzyskiwać dane po takiej wpadce. Najtrudniej za pierwszym razem - później już człowiek pamięta co i jak... zapraszam więc do lektury.
UWAGA: Stosując zaprezentowaną metodę i narzędzia działasz na własną odpowiedzialność. Ani ja ani żaden z autorów opisanego tu oprogramowania nie odpowiada za integralność bądź ewentualną utratę danych.
Jak wiadomo nadpisanie MBR przez programy nie stanowi problemu jeśli na dysku mamy Linuxa - wystarczy wziąść płytę instalacyjną i uruchomić w trybie rescue i single. W Ubuntu działa to doskonale... Dalej sprawdzoną techniką - podmontowujemy dysk twardy w katalogu, chroot, grub-install albo ręcznie z poziomu shell'a interaktywnego programu GRUB. Ponieważ preferuję drugą metodę, instalacja wygląda następująco (wszystko w jednej linii):
grub> install (hd0,5)/boot/grub/stage1 d (hd0) \
(hd0,5)/boot/grub/stage2 p (hd0,5)/boot/grub/menu.lst
Kolejne parametry oznaczają:
- stage 1
- miejsce instalacji boot loader'a (hd0)
- stage 2
- plik konfiguracyjny
Wszystko ok, jednak do czasu...
Układ i typ dysku
Lenovo x60s posiada dysk SATA widziany przez Linux'a jako /dev/sda. Podział na partycje dość prosty choć może nie do końca typowy:
root@x60s:~# fdisk -l /dev/sdaDisk /dev/sda: 80.0 GB, 80026361856 bytes
240 heads, 63 sectors/track, 10337 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2584 19535008+ 7 HPFS/NTFS
/dev/sda2 2585 7752 39070080 7 HPFS/NTFS
/dev/sda3 7753 9668 14484929 f W95 Ext'd (LBA)
/dev/sda4 9669 10337 5057640 c W95 FAT32 (LBA)
/dev/sda5 7753 7882 982768+ 82 Linux swap / Solaris
/dev/sda6 7883 9668 13502128+ 83 Linux
/dev/sda4 (znajdująca się na końcu dysku!) to partycja narzędziowa Lenovo. Jak widać Linux jest zainstalowany na /dev/sda6 - ta partycja też była oznaczona przed aktualizacją jako bootable. Po aktualizacji partycją aktywną stało się /dev/sda1 - to jeszcze nie jest źle...
Problem polega na tym, że zapomniałem o tym i wrzuciłem nowy boot-sector GRUB'a do /dev/sda czyli MBR dysku twardego. To też żadna tragedia... jednak mając doświadczenia ze starszymi płytami głównymi, które startowały tylko z MBR dysku lub pierwszego sektora pierwszej partycji, mam zwyczaj instalować zawsze boot-sector w pierwszym sektorze partycji Linux'a i MBR dysku... Niestety popełniłem błąd - zainstalowałem sektor w MBR oraz na początku partycji /dev/sda1 - czyli przeklęty NTFS głównej partycji C:.
Na efekty nie trzeba było długo czekać - GRUB działa doskonale... tzn wybierając z menu start Windows wracało do menu - hmmmm... No to wróćmy do Linuxa i pokombinujmy...
Hodowla siwych włosów
Tak tak... jeśli popełnisz mój błąd to siwe włosy już wystartowały do wyścigu... partycja NTFS zniszczona, nie można jej podmontować. Zniszczony boot sector i MFT.
Trzeba jednak zwrócic uwagę na pewną istotną rzecz. Użytkownicy FAT32 problemu nie mają - pierwszy sektor partycji (512 bajtów) to boot-sector. Zaraz za nim następuje własciwy FAT (ang. file allocation table). GRUB instaluje dokładnie 512 bajtów, więc nie doprowadzi to do zniszczenia FAT'u. W przypadku FAT32 wystarczy odpalić system z płyty, wejść do wiersza poleceń i wpisać fdisk /mbr. Użytkownicy NTFS nie mają już tak dobrze, ponieważ w NTFS boot-sector ma 446 bajtów, za którymi znajduje sie już MFT (master file table). Jak łatwo policzyć GRUB nadpisał 66 majtów MFT - kaplica!
Odbudowa systemu - krok 1
Na początek postanowiłem ruszyć boot-sector partycji. Mając linuxa na chodzie to banał... Robimy kopię pierwszego sektora a w zasadzie nawet nieco więcej niż jednego sektora. Idealny do tego jest stary dobry dd.
root@x60s:~# dd if=/dev/sda1 bs=512 of=uszkodzony_bootsect.bin count=16
Tym sposobem mam już kopię pierwszych 16 sektorów (8kB) uszkodzonej partycji. Kopia ta zawiera zniszczony boot-sector oraz część MFT.
Krok 2
Uruchamiamy program disktool, ustawiamy parametry geometrii dysku (TO BARDZO WAŻNE!), wybieramy opcję Advanced i uzyskujemy informacje o partycji... oraz, że boot-sector nie zgadza się z kopią (tak tak... jest kopia!). Jeśli teraz zechcemy przwrócić boot-sector to OK - po chwili dostaniemy komunikat, że MFT tez jest uszkodzona i że możemy ją przywrócić... szkoda czasu szczerze mówiąc :-)
Krok 3
Tutaj straciłem nieco czasu - przywrócenie boot-sector'a robiłem ręcznie - za pomocą dddd oczywiście zapisałem go gdzie trzeba. Tak czy inaczej po starcie dostałem śliczny BSDO (blue screen of death). raz jeszcze skopiowałem pierwszy sektor i za pomocą hexedit'a zbudowałem nowy MBR, po czym przy pomocy dd oczywiście zapisałem go gdzie trzeba. Tak czy inaczej po starcie dostałem śliczny BSOD (blue screen of death).
Krok 4
Dane można odzyskac za pomocą narzędzi Ontrack'a (np tych z niesławnego Hiren's Boot CD) ale będzie to bardzo powolne i samo narzędzie potrafi się czasami wywalić bez powodu - poza tym pozostają kwestie legalności...
Oczywiście wszystko jest też Open Source.
- Recovery Is Possible (RIP) - http://freshmeat.net/projects/recoveryispossible/
- Scrounge NTFS - http://memberwebs.com/stef/software/scrounge/
Pierwszy z nich robi niezłe wrażenie, jednak nie zadziałał z 2 powodów... partycja nie daje się czytać (zniszczony MFT) a do tego dysk jest SATA - nie każde narzędzie chciało go wykryć.
Krok 5 - Scrounge NTFS
Narzędzie jest bardzo ciekawe - jak podaje autor, potrafi odbudować dane z uszkodzonej partycji i umieścić je w innym katalogu. Brzmi doskonale - działa jeszcze lepiej!
Scrounge NTFS po pierwsze traktuje dysk źródłowy jako READ-ONLY, po drugie jest banalnie prosty a po trzecie bardzo szybki! Zanim zaczniemy jednak odzyskiwanie warto zaplanować co chcemy zrobić oraz musimy zebrać pewne dane startowe.
Krok 6 - miejsce na dysku
Ponieważ pracowałem pod Linux'em a jego partycja jest zapełniona moimi tworami, sięgnąłem po dysk USB 40GB. Oszacowałem, że potrzebuję około 14-16GB miejsca, obsługę długich nazw plików i system plików, ktory jest pewny i sprawdzony - padło więc szybko na ext3. Przeformatowałem dysk tworząc ext3 i podmontowałem w /mnt/rescue.
Krok 7 - co musimy wiedzieć przed rozpoczęciem pracy
Scrounge NTFS wymaga poprawnego MFT aby odzyskać pliki tak jak były rozlokowane wcześniej. Jeśli nie posiadamy MFT (pamietajmy, że mój jest uszkodzony), wszystkie odnalezione pliki trafią do jednego katalogu. Oczywiście NTFS również posiada kopię MFT, ale znajduje się ona w różnych miejscach dysku w zależności od wersji systemu. Lokalizacja ta określana jest jako offset od początku partycji. Scrounge NTFS potrafi oczywiście zlokalizować ten offset przy uzyciu opcji -l.
root@x60s:~# scrounge-ntfs -l /dev/sda
Start Sector End Sector Cluster Size MFT Offset
==================================================================
Drive: /dev/sda
63 39070017 8 6449840
39070080 78140160 8 6291456
117210303 119175839
119175903 146180097
146180160 10115280
Jak widac pierwsza partycja zaczyna sie od 63 sektora, co jest raczej normalne w systemach typu PC. Jak widac mamy tez offset kopii MFT, która powinna zawierać pełne informacje o naszym systemie plików - jak wyglądał przez awarią. Czas zabrać się za odtwarzanie danych i mieć nadzieję, że zadziała!
Krok 8 - wyciągamy dane!
Mając zebrane informacje o offsecie kopii MFT można zabrać się do pracy...
root@x60s:/mnt/rescue# scrounge-ntfs -m 6449840 -o /mnt/rescue /dev/sda 63 39070017
... po czym widzimy po kolei jak program kopiuje nasze pliki na drugi dysk - WOW! Po paru minutach miałem już 14GB danych - prawie wszystkie pliki - program pominął niektóre skompresowane ale całe szczęście były to pliki systemowe Windows - nic ważnego.
Krok 9 - przywracamy system
Przed przywróceniem systemu potrzebujemy jeszcze kilku zabiegów, ponieważ software nie da rady odtworzyć ani zainstalować windows na nowo. Testowałem kilka aplikacji - Lenovo Rescue and Recovery - przywracanie systemu do stanu fabrycznego za pomocą partycji narzędziowej na dysku (którą można było po takim numerze uruchomić tylko z GRUB'a), instalator Windows oraz Nero BackItUp z pakietu Nero 7 Premium.
Najpierw partycja recovery - podczas odtwrzania dysku C: do ustawien fabrycznych (goły system, sterowniki itd) program zawiesił się... Instalator windows (jak już się w końcu uruchomił - widać nie podobał mu się dysk twardy i strasznie go to zmuliło) pokazał klasyczny niebieski ekran... Na zakończenie dobiło mnie Nero, które jest tak na prawdę dystrybucją Linux'a i to w wersji Live CD (która służy do odtwarzania danych z backupów) - zobaczyłem ładny core dump i tyle widziałem mojego backupu... udało mi się w końcu zobaczyć, że powodem jest błąd parsowania informacji o partycjach.
Szybka decyzja... zmiana typu partycji na FAT32 za pomocą fdisk'a i format partycji spod Linuxa... W końcu chodzi tylko o to aby partycja dała się podmontować a system nie wywalił na starcie.
root@x60s:~# mkfs.vfat -F 32 /dev/sda1
Niestety nie miałem zrobionej kopii tego sytemu za pomocą Norton Gost'a - ciekawe czy poradziłby sobie z tym problemem. Co ważne, miałem kopię zrobioną Nero gdy system zawierał już większość mojego oprogramowania. Po formacie partycji Nero podchwyciło muzykę momentalnie i zaczęło tańczyć po dysku jak przykazano... Po około 35 minutach miałem spowrotem mojego Windowsa na chodzie... a kopię danych na zewnętrznym dysku.
Krok 10 - podsumowanie
Nie pierwszy raz okazuje się, że Open Source potrafi dostarczyć wspaniałych narzędzi, które potrafią niesamowicie pomóc... a było o co walczyć - bilety lotnicze i rezerwacje hoteli na podróż z okazji rocznicy ślubu, bilety lotnicze na wszystkie moje wyjazdy na najbliższe pół roku, dokumenty dotyczące płatności on-line (typu lokalne podatki, itp)... jedyne kopie w PDF'ach... Strach się bać co by było jakby to przepadło... Całe szczęście, wszystko zakończyło się pełnym sukcesem!
Porównania Norton Ghost'a i Nero BackItUp
Mając licencje na oba programy długo nie mogłem się zdecydować, ktorego używać. Mam wrażenie, że Ghost jest szybszy i lepiej kompresuje dane, jednak przyznam, że Nero działa z typową dla Niemców precyzją - najpierw sprawdza CRC dla plików, późnie wypada dopiero na CD/DVD i na zakończenie weryfikuje zapis (i nia da się tego wyłączyć)! Całość trwa o wiele dłużej niż w przypadku Ghost'a ale chyba warto. Podoba mi się przede wszystkim, że w momemcie startu z płyty zrobionej przez Nero BackItUp zobaczymy znany prompt 'boot: ', później start jądra linux'owego i splash screen, by po chwii zobaczyć ładne okienko aplikacji do obsługi tworzenia i odtwarzania kopii. Ponadto Nero bez problemu złapało dysk SATA oraz całą resztę mojego udziwnionego sprzętu - między innymi napęd DVD na USB. Może i jest powolne ale po prostu działa!
Do robienia kopii w locie, co jakiś czas, backup zestawu plików, backup przyrostowy - tu wygra Ghost, jednak kompleksowy backup systemu - Nero pobiło wszystkich!
Zakończenie
Jak widać nie ma rzeczy niemożliwych, choć czasem nie wszystko się opłaca. Dla mnie odzyskanie danych firmowych (oraz moich prywatnych jak powyżej) było warte tych 3 dni zabawy - przy okazji sporo się nauczyłem (np. że boot sector w NTFS ma 446 a nie 512 bajtów, gdzie są kopie MFT, itd) i poznałem nowy, wyśmienity, darmowy software!
Mam nadzieję, że unikniecie takich durnych błędów jak moje. Szczególnie zwracam uwagę na użycie programu dd - drobna pomyłka w parametrach i już nie będzie czego ratować :-/
Podziekowania dla Alex'a za pomysły i kaspsior'a za wylapanie literówek :)
UWAGI - czyli standardowy disclaimer...
Raz jeszcze przypominam, że używając jakichkolwiek rozwiązań wskazanych lub zasugerowanych przeze mnie w powyższym tekscie, działasz na własną odpowiedzialność oraz że nie ponoszę żadnej odpowiedzialności za to co może stać się z Twoimi danymi lub sprzętem w wyniku powyższych działań.
Jeśli coś zadziałało u mnie tonie oznacza, że musi zadziałać dokładnie tak samo u Ciebie.

Leave a comment