SystemRescueCD over SSH¶
Czym ratować system?¶
SystemRescueCd - to mini dystrybucja LiveCD bazująca na Gentoo Linux(jądro Linux 2.6.29, serwer X.org w wersji 1.5.3 i odchudzone Xfce), przeznaczona głównie do odzyskiwania danych z uszkodzonych systemów typu Linux, oraz ich „naprawy”.
Oprogramowanie wydawane jest w dwóch wersjach: dla komputerów PC (x86) oraz PowerPC (PPC), cała dystrybucja obsługuje kodowanie znaków UTF-8 (wszystkie programy zostały skompilowane z USE=”unicode”), pozwala na zdalne użytkowanie przy pomocy VNC-server, obsługuje rozszerzone opcje bootowania pozwalające na zaawansowaną konfigurację sieci.
Dystrybucja standardowo obsługuje wiele systemów plików: ext2, ext3, ReiserFS, XFS, JFS, NTFS (ntfs3g), VFAT, btrfs, ISO9660
SystemRescueCD zawiera oprogramowanie niezbędne do naprawy systemu, nadpisania mbr, lub przywrócenia danych najczęściej wykorzystywane pewnie będą narzędzia:
GParted
- program z GUI do edycji partycji
GNU-Parted
- konsolowy program do edycji partycji
Sfdisk
- odmiana fdiska, pozwala zapisać i odczytać obraz tablicy partycji do pliku
TestDisk
- odszukuje zaginione (usunięte itp.) partycje. Obsługuje ReiserFS, NTFS, FAT32, ext2, ext3
Partimage
- pozwala na zapisanie i wczytanie obrazu całej partycji
FSArchiver
- pozwala duplikować partycje (NTFS także)
Midnight Commander
- menedżer plików
Clam AntiVirus
- program antywirusowy
NTFS-3G
- sterownik do obsługi systemu plików NTFS (odczyt i zapis)
rsync
- narzędzie pozwalające przesyłać pliki przez sieć
MemTest+
- program do testowania pamięci
Niedawno została wydana nowa wersja oznaczona numerkiem 1.20, całość jest uruchamiana z dysku CD (obraz ISO zajmuje ~230MB) lub można przygotować PenDrive bootowalny.
Opcje bootowania¶
SystemRescueCD podczas uruchamiania pozwala na dodanie dodatkowych opcji:
docache - Załaduje cały system do pamięci RAM - dzięki temu, można wyjąć płytę z napędu (znacznie przyspiesza działanie)
rootpass - Opcja ta pozwala zdefiniować hasło administratora systemu - użyteczne w połączeniu z ssh (czyli coś co nas interesuje - demon SSH jest uruchamiany na starcie systemu)
dodhcp - Opcja wymusza próbę pobrania adresu dla karty sieciowej z serwera DHCP
ethx=x.x.x.x - Pozwala ustawić adres IP statycznie
gateway=x.x.x.x - Pozwala ustawić adres IP serwera DNS
Więcej opcji rozruchowych można podejrzeć naciskając przycisk «F2». Użycie parametrów bootowania wygląda następująco:
rescuecd rootpass=password docache
Personalizowanie SystemRescueCD¶
Jeżeli mamy serwer w zdalnej lokacji, a nie mamy do niego dostępu poprzez KVM, a o dostępie fizycznym możemy tylko pomarzyć (ale mamy tam kogoś kto potrafi włożyć i wyjąć płytkę z napędu CD, ew. zmienić kolejność bootowania) możemy spróbować utworzyć spersonalizowaną wersję SystemRescueCD pozwalającą nam na uruchomienie systemu w taki sposób, żeby można było na niego się zalogować po SSH.
Na zrobienie własnego obrazu płyty SystemRescueCD są tak naprawdę dwa sposoby, jeden prosty i jeden trudny:
prosty - Wykorzystać samo LiveCD SystemRescue jakąś maszynę wirtualną (Sun xVM VirtualBox) i narzędzia na dostępne na płycie
skomplikowany - Wykorzystać obecny system operacyjny i rozpakować obraz ze squashfs - w moim przypadku się to nie udało, bo w Debianie jest po prostu stara paczka (gałąź stabilna) squashfs-tools i nie mogłem rozpakować obrazu z systemem plików
Ale wracając do samego sedna postu, by uczynić SystemRescueCD bootowalne bez dodatkowej interwencji i od razu ze startującym serwerem ssh i znanym hasłem, mamy znów dwie opcje.
Korzystamy z kluczy SSH
Wpisujemy hasło roota na stałe i je pamiętamy (rozwiązanie prostsze, lecz mniej bezpieczne)
Jeśli masz mało czasu¶
Zobacz na końcu artykułu jak to zrobić w wersji «quick and dirty»
Personalizacja¶
Ja do całego procesu użyłem VirtualBoxa i zestawi skryptów dostępnych na livecd. Ustawienia maszyny wirtualnej to:
Dysk twardy: 3GB
Pamięć: 1GB
Po uruchomieniu systemu należy wykonać:
Partycjonowanie dysku:
fdisk /dev/sda
i nacisnąć:n
- utwórz nową partycjęp
- typu primary1
- nr partycji[enter] [enter]
- ustawienia początku partycji i końca (domyślne)
Utworzenie systemu plików na dysku:
mkfs.xfs -f /dev/sda1
A później:
% mount /dev/sda1 /mnt/custom
% sysresccd-custom extract
Skoro mamy już rozpakowany system root, można zająć się częścią właściwą:
Montowanie, chrootowanie i proc¶
# mount -o bind /proc /mnt/custom/customcd/files/proc
# chroot /mnt/custom/ /bin/bash
Generowanie kluczy serwera i wyłączenie ich generowania na starcie¶
Uwaga: Tak naprawdę ten krok jest opcjonalny, służy tylko przyspieszeniu startu systemu.
$ ssh-keygen -t rsa1 -b 1024 -f /mnt/custom/customcd/files/etc/ssh/ssh_host_key
$ ssh-keygen -d -f /mnt/custom/customcd/files/etc/ssh/ssh_host_dsa_key
$ ssh-keygen -t rsa -f /mnt/custom/customcd/files/etc/ssh/ssh_host_rsa_key
Dodanie kluczy ssh¶
Ostrzeżenie
Tutaj znajduje się dokłaadniejszy opis generacji kluczy ssh - polecam przeczytać.
mkdir /root/.ssh
ssh-keygen -t dsa
cp /root/.ssh/id_dsa.pub /root/.ssh/authorized_keys
Jeśli klucze są umieszczone w katalogu /root/.ssh
to wszystko ;).
Podpowiedź
Znacznie lepiej by było stworzyć dedykowanego użytkownika do logowania się po ssh, a rootowi zabronić tego - no ale to niech każdy sobie sam zrobi.
Spakowanie obrazu squashfs i iso¶
Należy wyjść się z chroota i odmontować niepotrzebne systemy plików:
umount /mnt/custom/customcd/files/proc
oraz rozpocząć tworzenie
pliku z głównym systemem plików (squashfs) - to potrwa chwilkę
/usr/sbin/sysresccd-custom squashfs
Po zakończeniu zostanie utworzony plik /mnt/custom/customcd/isoroot/sysrcd.dat
.
Dodawanie dodatkowych narzędzi, skryptów, itp.¶
W tej chwili można dodać do płyty dodatkowe narzędzia i skrypty, wystarczy je skopiować do katalogu /mnt/custom/customcd/isoroot/
.
Tylko nie należy przesadzić (płyta ma tylko 700MB pojemności - du -sh /mnt/custom/customcd/
).
Dodatkowe informacje jak np automatyczne uruchamianie narzędzi użytkownika są dostępne na stronie projektu.
Ja ze swojej strony polecam skopiowanie kluczy ssh do głównego katalogu nośnika:
cp -a /mnt/custom/customcd/files/root/.ssh /mnt/custom/customcd/isoroot/ssh-keys
Wybór klawiatury¶
By system starował bez interwencji użytkownika trzeba wybrać domyślną klawiaturę poleceniem:
sysresccd-custom setkmap pl
Generowanie obrazu iso¶
/usr/sbin/sysresccd-custom isogen mojeRescue
Wersja «quick and dirty»¶
Edycja opcji bootowania¶
Obraz squashfs rozpakowujemy tak samo tylko nie wykonujemy chrootowania i generacji kluczy. Zamiast generowania całego obrazu kopiujemy go z obecnej płyty:
cp /mnt/cdrom/sysrescd.* /mnt/custom/customcd/isoroot/
A następnie edytujemy plik /mnt/custom/customcd/isoroot/isolinux/isolinux.cfg
Umieszczając w nim taką dodatkową treść (zmieniając pierwszy wpis):
default rescuecd
append inintrd=initram.igz rootpass=password setkeymap=pl
Następnie należy wygenerować obraz iso: /usr/sbin/sysresccd-custom isogen my_srcd
.
Inne sposoby stworzenia SystemRescueCd z dostępem ssh¶
Wykorzystanie właściwości autorun płyty SystemRescuCD - czyli napisanie skryptu podmieniającego klucze ssh (nie powinno być trudne)
Zmiana hasła roota w chrootowanym systemie oraz wyłączenie możliwości jego generowania na starcie - robienie rzeczy na około
Inne narzędzia pomagające odtworzyć system¶
Jeśli okazało się, że awaria dotyczy dysku twardego, polecam skorzystanie z narzędzia Recovery Is Possible dostępnego tutaj - narzędzie to zawiera chyba większość programów umożliwiających odtworzenie zawartości dysku po jego uszkodzeniu.