Strona główna arrow Zastosowania arrow Linux-EduCD jako system ratunkowy
Menu główne
Strona główna
Pierwsze kroki
KNOPPIX Linux
Zastosowania
Wyszukiwarka
Forum dyskusyjne
Linux EduCD
Odzyskiwanie danych

Wiadomości
Społeczeństwo
Odnośniki
Kontakt
Projekty
Propaganda
Serwery lustrzane
Ubuntu - Podręcznik


Linux-EduCD jako system ratunkowy
Linux-EduCD jako system ratunkowy Płyta z Linux-EduCD lub Knoppiksem to nie tylko wygodny sposób na zainstalowanie 1,8 Gb oprogramowania na dysku, czy bezinstalacyjny, autokonfigurujący urządzenia system.
 
Sprawdza się również doskonale jako płyta ratunkowa.
 
 
Za pomocą Linux-EduCD możemy m.in:

    * zmieniać/usuwać hasła
    * naprawiać uszkodzony MBR
    * wykonywać kopie zapasowe danych
    * naprawiać tablicę partycji
    * odzyskiwać skasowane dane
    * tworzyć i montować dodatkowe partycje (np. swap)
    * przeprowadzać diagnostykę napędów

Żeby po uruchomieniu płyty, dostać się do systemu, który wcześniej został zainstalowany na komputerze (np. w celu zmiany hasła dowolnego użytkownika, czy też naprawy systemu plików) możemy posłużyć się poleceniem 'chroot'.  Pozwala ono na uruchomienie powłoki systemowej, w której podany przez nas katalog, traktowany jest jak główny katalog systemowy:

# mount /dev/hda1 /mnt/hda1
# chroot /mnt/hda1

Przy założeniu że zamontowana partycja /dev/hda1 jest główną partycją ("/" - root) zainstalowanego na dysku systemu, chroot pozwala nam przenieść się w jego środowisko. Po takich przenosinach mamy uprawnienia roota i co za tym idzie, praktycznie nieograniczone możliwości pracy w w/w systemie.

Jeśli chcemy zmienić np. hasło użytkownika root,  wystarczy po za'chroot'owaniu się na partycję /dev/hda1 wykonać komendę:

# passwd

To w zasadzie o wiele prostsze niż przytrzymywanie klawisza shift w momencie uruchamiania lilo, wymuszanie wywołania powłoki systemowej jeszcze przed procesem 'init':

boot: linux init=/bin/sh

oraz wpisywanie serii poleceń:

# mount -n -o remount,rw /
# mount -at nonfs,noproc,nosmbfs
# vi /etc/passwd
# vi /etc/shadow

Powyższy sposób oczywiście również jest skuteczny, ale tylko w przypadku kiedy lilo nie jest uszkodzony.

Po wykonaniu chroot'a na główną partycję, oczywiście możemy w dowolny sposób modyfikować główny plik konfiguracyjny lilo -- /etc/lilo.conf. Możemy także wyczyścić zawartość MBR, poleceniem:

# lilo -U

W przypadku gdy w zainstalowanym systemie znajduje się bootloader grub, który uległ uszkodzeniu lub został nadpisany, możemy odzyskać go w następujący sposób:

Najpierw uruchamiamy interaktywną powłokę programu grub:

# grub

Następnie wpisujemy kolejno (przy założeniu, że partycja główna zawierająca /boot to /dev/hda1)

grub> root (hd0,0)
grub> setup (hd0)
grub> quit


KOPIOWANIE I ODZYSKIWANIE MBR

MBR - czyli 'Master Boot Record' jest pierwszym fizycznym sektorem  twardego dysku o rozmiarze 512 bajtów. Składa się z dwóch części: kodu wykonywalnego i tablicy partycji. Kod ładowany jest do pamięci RAM i uruchamiany podczas startu komputera. Zawiera on program odpowiedzialny za odnalezienie i odczytanie tablicy partycji oraz określenie, która partycja jest aktywna - czyli z której powinien być uruchamiany system operacyjny.

W środowisku chroot możemy za pomocą programu dd wykonywać kopię MBR:

# dd if=/dev/hda of=mbr.backup bs=512 count=1

Gdybyśmy chcieli odzyskać zbackupowany w ten sposób Rekord, wystarczy:

# dd of=/dev/hda if=mbr.backup bs=512 count=1

Of oznacza "output file", if oznacza "input file", bs to liczba bajtów składających się na jeden blok, count to
liczba bloków.

NAPRAWA USZKODZONEGO SYSTEMU PLIKÓW

W celu naprawy uszkodzonego systemu plików, najwygodniej posłużyć się programem fsck. Służy on do testowania i naprawy dowolnych systemów plików, których obsługa wkompilowana jest w jądro. Wywoływany podczas uruchamiania Linuksa, dba o integralność danych, sprawdzając okresowo wszystkie montowane partycje. Powiedzmy że uszkodzenia znajdują się na partycji /dev/hda2. Po uruchomieniu komputera z płytki i wykonaniu chroot'a na główną partycję systemową wpisujemy:
 
# fsck -r /dev/hda2

Jest to naprawa w tzw. trybie interaktywnym (czyli w takim, w którym odpowiadamy na pytania programu).

Jeśli nie chcemy odpowiadać na żadne pytania (lub też mamy zaufanie do systemu operacyjnego), możemy wywołać program e2fsck, z parametrami wymuszającymi automatyczną naprawę. Program e2fsck obsługuje również  system plików ext3:
 
# e2fsck -p -y /dev/hda2

Po zakończonej pracy fsck zwraca tzw. 'kod zakończenia'. Kod ten jest sumą następujących wartości:

 0    -   Bez błędów
 1    -   Poprawiono błędy systemu plików
 2    -   System powinien zostać przeładowany (reboot)
 4    -   Pozostawiono nie naprawione błędy systemu plików
 8    -   Błąd działania
16   -   Błąd użycia (składni)
128 -   Błąd biblioteki współdzielonej

TWORZENIE I MONTOWANIE DODATKOWEJ PARTYCJI

Jeśli chcielibyśmy założyć i zamontować dodatkową partycję, np. przeznaczoną na zawartość /home i przenieść na nią dane znajdujące się w dotychczasowym katalogu /home zainstalowanego systemu, możemy również posłużyć się programem dd. W celu zmiany rozmiaru istniejących partycji możemy wykorzystać programy: resize2fs, resize_reiserfs, czy też qtparted. Po zamontowaniu głównej partycji i za'chroot'owaniu się na nią, wykonujemy kopię katalogu /home:

# mkdir /opt/kopia_home
# cp -Rp /home/* /opt/kopia_home
# rm -fr /home/*

Następnie zakładamy partycję o zadanym rozmiarze w programie fdisk lub qtparted i montujemy ją w systemie.

Np.

# mount -o rw /dev/hda3 /home

Przenosimy na nią skopiowane dane:

# mv /opt/kopia_home/* /home

Robimy odpowiedni wpis w /etc/fstab, żeby system montował naszą partycję przy każdym uruchomieniu. W powyższym przypadku bedzie to więc:

/dev/hda3 /home ext3 auto,exec 0 0

Wpis 'ext3' mówi o systmie plików, jaki znajduje się na partycji, 'auto' oznacza, że partycja będzie montowana automatycznie, 'exec' oznacza że w /home będą mogły być uruchamiane pliki wykonywalne. Dwie ostatnie pozycje - to kolejno:

- pole, którym posługuje się program dump do wykrywania, który system  plików powinien być odłączony. Wartość '0' oznacza oczywiście że żaden

- pole używane przez program fsck, decydujące o kolejności sprawdzania systemów plików. Wartość '0' oznacza że /home nie będzie sprawdzany podczas uruchamiania systemu

DIAGNOSTYKA TWARDEGO DYSKU

Po uruchomieniu Linux-EduCD lub Knoppiksa z płyty, możemy sprawdzić stan twardego dysku lub dowolnie innego napędu za pomocą takich narzędzi jak fsck, hdparm, badblocks. Przykładowo polecenie:

# badblocks -s -v -w /dev/hda

... wyszukuje uszkodzone bloki na podanym napędzie (w przykładzie na /dev/hda) . Parametr 's' oznacza że program będzie pokazywał postęp wyszukiwania, wypisując numery bloków, natomiast parametr 'w', wymusi
równoczesny test  zapisywania.

Jeśli chcemy wykonać test szybkości dysku (najlepiej chyba poprzez pomiar czasu odczytu) wystarczy wykonać polecenie:

# hdparm -t /dev/hda

Gdybyśmy chcieli dodać do tego pomiar czasu odczytu z cache'u, należy zastosować także parametr '-T':

# hdparm -t -T /dev/hda

Należy pamiętać, że aby uzyskać miarodajne wyniki, taka operacja powinna być powtarzana kilka razy pod rząd na nieobciążonym systemie.

Szczegółowe dane na temat ustawień twardego dysku uzyskamy za pomocą:

# hdparm -I /dev/hda

Jeśli stosujemy system plików ext2, możemy również posłużyć się programem 'debugfs'. Służy on do wyszukiwania błędów na dysku i pozwala na wykonywanie niestandardowych operacji. Np.program wywołany z opcją '-b' stosuje podany 'ręcznie' rozmiar bloku dla systemu plików, zamiast wykrywać go automatycznie. Debugfs pozwala także na odzyskiwanie usuniętych danych.

ODZYSKIWANIE SKASOWANYCH DANYCH (system plików ext2)

Przykładowo, gdybyśmy chcieli zrobić wykaz skasowanych ostatnio z partycji ext2 (np. /dev/hda2) plików, wpisujemy:

# echo lsdel | /sbin/debugfs /dev/hda2 > wykaz

W uzyskanym w powyższy sposób raporcie 'wykaz', znajdzie się spis usuniętych plików. Pierwsza wartość w każdej linii 'wykazu' reprezentującej jeden plik, to tzw. i-węzeł, czyli zapis numeru bloków, jaki był przeznaczony na dany plik. Kolejne wartości to UID właściciela pliku, uprawnienia, data skasowania. Taka linia może więc wyglądać następująco:

158879 500 100600 26453 7/ 7 Wed Nov 17 20:30:11 2004

Powiedzmy że chcielibyśmy odzyskać plik o i-węźle 158879. Uruchamiamy program debugfs:

# debugfs /dev/hda2

Oraz w linii poleceń tego programu wywołujemy dump-a z parametrami:

dump <158879> /mnt/hda2/plik_odzyskany

W tym momencie nasz usunięty wcześniej plik zapisaliśmy pod nazwą 'plik_odzyskany' w katalogu /mnt/hda2, do którego zamontowana jest nasza partycja.

KOPIE ZAPASOWE

W środowisku chroot możemy wykonywać również kopie zapasowe danych. Co więcej -- o ile nie mamy fizycznych problemów np. z kartą sieciową możemy także skonfigurować połączenie z siecią i np. za pomocą programu 'scp' przesyłać te dane na inny komputer. Polecenie 'netcardconfig' wywołuje nam konfigurator sieci. Kiedy mamy już połączenie z inną maszyną (chociażby w sieci lokalnej), wykonujemy np.

# tar zcvf /home/* | ssh 192.168.0.5 "cat > /root/kopia.tgz"

Polecenie utworzy archiwum katalogów domowych i prześle do katalogu /root/ na komputer o numerze 192.168.0.5.

Możemy wykonać także dokładną kopię całego dysku lub partycji:

cat /dev/dysk | gzip -c > kopia.dysk

Oczywiście żeby odzyskać taką kopię, musimy ją rozpakować na dysk (lub partycję) o identycznym rozmiarze:

gunzip -c kopia.dysk >/dev/dysk

Do wykonania kopii zapasowej możemy posłużyć się również programem cpio.  Przykładowo po uruchomieniu płyty podmontowujemy sobie partycję, której kopię chcemy wykonać do katalogu /mnt/hda1, podmontowujemy także partycje na której ma się znaleźć archiwum (np. /mnt/hda2)  i wykonujemy:

# cd /mnt/hda1/
# find . -mount -print | cpio -o > /mnt/hda2/kopia.cpio

Żeby odtworzyć powyższą kopię, należy wykonać:

# cpio -i < /mnt/hda2/kopia.cpio
 
 


Copyright (C) 2003-2008 by Waldemar Roszczuk