====== chroot ====== Wiele osób boi się //chroot//-a, szczególnie ci, którzy go nie znają, lub nie do końca rozumieją o co w nim chodzi. Informacja jaką serwuje o //chroot// podręcznik //man// również, na pierwszy rzut oka, nie wygląda zachęcająco: chroot − uruchom polecenie lub powłokę interaktywną ze specjalnym katalogiem głównym ====== Właściwie, co to takiego jest ten ... ====== Aby zrozumieć czym jest //chroot//, należy na początku odpowiedzieć na pytanie: czym jest katalog główny? Ów katalog, zwany również korzeniem (z ang. //root//), to początek wszystkiego co w Linuksie jest plikiem, bądź z poziomu systemu wygląda jak plik. Oznaczany jest symbolem "/" (ang. //slash//), podobno w środowisku polskich purystów informatycznych zwany jest "ciach". Jeśli dobrze się przyjrzeć, jest on "początkiem wszystkiego": od katalogów ///root, /usr// poczynając, na katalogu użytkownika kończąc. Co ciekawsze, korzeń jest początkiem dla urządzeń ///dev//. Tam znajdują się chociażby nazwy naszych dysków, partycji np. ///dev/sda1//, a nawet urządzeń wirtualnych: ///dev/random, /dev/null//. Krótko mówiąc, katalog główny to ważne miejsce w systemie, a polecenie //chroot// pozwala nam go zmienić. ====== Kiedy warto z niego korzystać ====== * Podczas instalacji nowego systemu. Szczegółowy opis, jak to się robi w PLD, znajdziesz w przewodniku [[pl:przewodniki:instalacja-pld-2.0-ac| Instalacja PLD 2.0 (chroot)]]. Można nawet obejrzeć film z [[http://dlugosz.eu/2009/03/05/pld-th-i686-base-video-install/|instalacji Th z chroota]]. * W przypadkach awaryjnych, gdy coś naprawdę złego stało się z systemem. Instalacja systemu z poziomu //chroot//-a, ma tę ważną zaletę, że możemy **"teleportować się" do właśnie tworzonego systemu i sprawdzić czy działa on poprawnie. ** Tak to nie żart. Będziemy mogli pracować jak na normalnym systemie, wykonywać polecenia, wszystkie ścieżki do plików będą normalne. Jeśli komuś nie podoba się analogia do teleportowania, może myśleć o //chroot// jak o logowaniu się na zdalną maszynę. Dokładnie tę samą "teleportację" możemy wykonać do systemu, który nie chce się z jakichś powodów uruchomić. Czy to nie wspaniałe? Warto jeszcze dodać, że po zmianie korzenia, nadal korzystamy z jądra systemu Live CD. Czyli na przykład: jeśli w naszym systemie mieliśmy zainstalowaną paczkę obsługującą naszą kartę dźwiękową, może się okazać, iż w Live CD domyślnie jej nie ma. Oczywiście można zainstalować odpowiednie sterowniki. Pół biedy, kiedy chodzi o paczkę od dźwięku, gorzej gdy brakuje nam chociażby modułów obsługujących kartę sieciową. Jednak tego typu problemy to margines. O ile nie korzystamy z niepopularnego sprzętu problemów raczej nie będzie. Co najwyżej nie posłuchamy muzyki podczas naprawiania systemu ;) ====== Pora na magiczną teleportację ====== Do "magicznej teleportacji" potrzebujesz jedynie płyty PLD Rescue CD, bądź innej naszej płyty Live. Po załadowaniu się systemu wystarczy wpisać (szczegółowy opis poniżej): mkdir /pldroot mount /dev/sda1 /pldroot mount /dev /pldroot/dev -o bind mount /proc /pldroot/proc -o bind mount /sys /pldroot/sys -o bind chroot /pldroot Zaczynamy od stworzenia katalogu, który będzie naszym nowym korzeniem, miejscem w które pragniemy się "teleportować" mkdir /pldroot Następnie do utworzonego właśnie katalogu montujemy partycję z naszym systemem (jeśli nie wiesz jakie masz partycje, poczytaj o poleceniu //fdisk//): mount /dev/sda1 /pldroot Później, do naszego "nowego" systemu, montujemy katalog z urządzeniami oraz //proc// i //sys//, zawierające informacje o bieżących procesach i jądrze: mount /dev /pldroot/dev -o bind mount /proc /pldroot/proc -o bind mount /sys /pldroot/sys -o bind Ostatnie polecenie to "teleportacja": chroot /pldroot Od teraz, do wykonania polecenia //exit//, pracujemy na nowym systemie. W tym miejscu wykonujemy czynności, które wykonalibyśmy normalnie w naszym systemie. Nic nas nie ogranicza, możemy modyfikować pliki, poprawiać konfigurację, uruchamiać programy. Przykład ratujących działań znajdziesz w kolejnym punkcie. Pracę z //chroot// kończymy, tak jak już wcześniej wspomniałem, wykonując: exit Przed restartem Live CD pamiętajmy, że musimy odmontować wszystkie zamontowane wcześniej katalogi (oczywiście w odwrotnej kolejności do ich montowania): umount /pldroot/sys umount /pldroot/proc umount /pldroot/dev umount /pldroot Voila! To wszystko. ====== chroot śpieszy na ratunek ====== Historia z życia wzięta. Na naszym komputerze korzystamy z dwóch systemów: pewnego bardzo popularnego oraz oczywiście PLD. Pewnego mało pięknego dnia, pewien bardzo popularny system z pewnych powodów postanowił, że tylko on będzie działał na naszym komputerze. W tym celu nadpisał on MBR i wykasował naszego ukochanego LILO. My, w ramach rewanżu, "teleportujemy" się do PLD i wykonujemy polecenie: lilo Tak, to wszystko. Nie potrzebujemy przetrzymywania kopi MBR na USB, CD, bądź innym nośniku.