Debian GNU/Linux logo
chroot - HowTo


Dzisiejszy artykuł dotyczy czegoś takiego o nazwie chroot (change root). Do czego służy chroot? Otóż, zalóżmy, że mamy system 64-bitowy i chcemy używać flasha. Oczywiście, możemy zainstalować jakąś przeglądarkę w wersji 32-bitowej na systemie 64-b, ale przez takie coś, możemy sobie narobić bałaganu w systemie. Z pomocą przychodzi nam chroot, dzięki któremu możemy zainstalować jeszcze jeden system Linuksowy na partycji gdzie już jeden z takich systemów się znajduje. Rzec by można, że podobe jest to do maszyny wirtualnej. Otóż nie. chroot to nie maszyna wirtualna, ani żadne podobieństo. Ogólnie mówiąc, chroot służy nam do zmiany głównego ktalogu (/).

Zastosowanie chroot'a? Jak wyżej napisałem, możemy na aktualnym Debianie zainstalować jeszcze jednego. Możemy uruchomić system z innej partycji (przykład: odpalam Debiana amd64 i w chroot'cie odpalam Debiana i386). chroot może również służyć do "naprawy" systemu, ponieważ możemy go wykonać nie znając nawet hasła administratora (przykład: padnie nam system i mamy do dyspozycji tylko LiveCD; odpalamy je, chroot'ujemy się na "zepsuty" system i naprawiamy co trzeba). Zastosowań chroot jest naprawdę wiele, nie sposób wszystkich tutaj wymienić.

Ale aby nie zanudzać przejdźmy do praktyki.


Polecenie chroot jest zawsze dostępne w systemie, więc w każdej chwili możemy go użyć.

Używanie chroot to sprawa prosta. Dla przykładu, jeśli mamy na dysku jeszcze jeden system Linuksowy to wystarczy zamontować partycję i użyć polecenia chroot aby móc zarządzać systemem w konsoli. Na przykład:

Listing #1: Tworzymy katalog i montujemy tam partycję
# mkdir /mnt/chroot && mount -t ext3 /dev/sda5 /mnt/chroot

Po tym dajemy tylko:

Listing #2: Zalogowanie się do systemu za pomocą chroot
# chroot /mnt/chroot


I to wszystko. Zostaniemy zalogowani jako root w systemie znajdującym się na tej partycji. Możemy teraz zarządzać systemem, pracować na nim, aktualizować go - no po prostu możemy normalnie pracować. Aby wyjść z chroot'a wpisz `exit`. Co prawda mamy do dyspozycji tylko konsolę, ale można to zminić. Możemy odpalić jeszcze jedne x'y na np: ósmej konsoli. Jak to zrobić dowiesz się czytając ten artykuł.

Mógłbym teraz zakończyć już ten poradnik, ale nie... Mimo, że napisałem wystarczająco dużo, żeby móc posługiwać się chroot'em, napiszę jeszcze jak zainstalować na aktualnym Debianie jeszcze jednego Debiana, oraz jak uruchamiać aplikacje graficzne w chroot'cie. A więc do dzieła :)



Pierwsze co robimy, to tworzymy sobie jeden pusty katalog gdzie zainstalujemy drugiego Debiana. Może być to np. w głównym katalogu (/), czy na innej partycji.

Listing #3: Tworzymy katalog na potrzeby chroot'a
# cd / && mkdir sid-i386

Teraz musimy zainstalować pakiet o nazwie debootstrap:

Listing #4: Instalacja pakietu debootstrap
# aptitude install debootstrap

Teraz możemy już instalować Debiana.

Listing #5: Instalacja systemu bazowego Debiana Sid w katalogu /sid-i386
# debootstrap --arch i386 sid /sid-i386 http://ftp.debian.org/debian/


Teoretycznie nowy system jest już zainstalowany i możemy z niego korzystać. Jednakże żeby ułatwić sobie życie, zrobimy jeszcze parę dodatkowych kroków. W naszym "głównym" systemie, do /etc/ld.so.conf bądź do /etc/ld.so.conf.d/*.conf dodajemy poniższe linijki:

# chroot sid i386
/sid-i386/lib
/sid-i386/usr/lib
/sid-i386/usr/X11R6/lib
/sid-i386/usr/local/lib

Teraz jako root wpisz jeszcze `ldconfig`.

Kolejne ułatwienie: wspóldzielenie katalogów. Współdzielimy pewne katalogi między chroot'em a naszym głównym systemem. W tym celu do /etc/fstab dodaj:

# chroot
# Uwaga! Jeżeli nie chcesz współdzielić /home - czyli daj znak # przed /home
/home /sid-i386/home none bind 0
/tmp /sid-i386/tmp none bind 0
/dev /sid-i386/dev none bind 0
/proc /sid-i386/proc proc defaults 0


Po tym wydajemy:

Listing #6: Montowanie partycji
# mount -a


I to już wszystko. Teraz po każdym reboot'cie możemy szybko dostać się do zainstalowanego Debiana wpisując `chroot /sid-i386`


Podam tutaj jeszcze jedną rzecz. Mianowicie, jak odpalić w wygodny sposób jakąś aplikację graficzną np: Operę. Dużo osób instaluje Debiana dla amd64, z czego się cieszę bo sam go używam, ale żyć bez flasha po prostu się nie da. Oczywiście są wolne odpowiedniki flasha (gnash na przykład) ale moim zdaniem, w obecnym stadium rozwoju, nie warto tego używać.

Więc, zakładając, że zalogowałeś się już do nowego systemu, zainstaluj tam operę i flasha (najlepiej z repozytorium). Po tym, wyjdź z chroot'a (`exit`) i w tym głównym systemie zainstaluj pakiet o nazwie dchroot. Jak już go zainstalujesz, otwórz plik /etc/dchroot.conf i dodaj do niego poniższą linijkę:

i386 /sid-i386

Teraz aby odpalić jakiś program, który mamy zainstalowany w chroot'cie wystarczy wpisać w głównym systemie:

Listing #7: Szybkie uruchomienie danego programu w chroot'cie za pomocą dchroot
$ dchroot -c i386 -d nazwa_programu

Ja właśnie w taki sposób odpalam Operę.

Pamiętaj, że możesz także odpalać programy graficzne kiedy chroot'ujesz się na system będący na innej partycji. Do tego także polecam dchroot. Rób wszystko co wcześniej opisałem, oczywiście bez instalacji Debina za pomocą debootstrap. Pamiętaj żeby do fstab dodać poprawne informacje na temat punktu montowania. Dla przykładu podam może zawartości moich plików:

kaka@debian:~$ cat /etc/ld.so.conf.d/*.conf
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

# chroot x86_64 system libs
/sid-i386/lib
/sid-i386/usr/lib
/sid-i386/usr/X11R6/lib
/sid-i386/usr/local/lib
kaka@debian:~$ cat /etc/fstab
# chroot
/dev/sda5 /sid-i386 ext3 defaults 0
/home /sid-i386/home none bind 0
/tmp /sid-i386/tmp none bind 0
/dev /sid-i386/dev none bind 0
/proc /sid-i386/proc proc defaults 0
kaka@debian:~$

Valid XHTML 1.1 Valid CSS! Reklama
Ten poradnik dostępny jest na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 2.5 Polska.