Chroot

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Chroot and the translation is 86% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎português do Brasil • ‎русский • ‎Türkçe • ‎中文(中国大陆)‎
Resources

Chroot (Change root) (zu deutsch etwa: ändere Wurzel) ist ein Unix System-Werkzeug das zum Ändern des offenkundigen Root-Verzeichnis verwendet wird, um eine neue Umgebung logisch getrennt vom Root-Verzeichnis des Haupt-Systems zu schaffen. Diese neue Umgebung ist bekannt als "chroot jail" (zu deutsch etwa: chroot-Gefängnis). Ein Benutzer der in diesem Gefängnis arbeitet, kann Dateien außerhalb der Umgebung nicht sehen oder auf diese zugreifen. Er ist eingesperrt.

Einer der Einsatzschwerpunkte von chroot ist ein separates Linux-System auf dem aktuellen zum Zwecke des Testens oder der Software-Kompatibilität zu erstellen. Chroot wird oft als eine leichtgewichtige Alternative zur Virtualisierung gesehen, weil es ohne den Ballast eines Hypervisor auskommt.

Voraussetzungen

Die Umgebung aufsetzen

Bei der Erstellung einer neuen Chroot-Konfiguration ist das erste das benötigt wird ein Verzeichnis für chroot. Beispielsweise könnte chroot in /mnt/mychroot erstellt werden.

user $mkdir /mnt/mychroot
user $cd /mnt/mychroot

Um eine existierende Installation von einer Partition zu mounten, kann der folgende Befehl ausgeführt werden. Stellen Sie sicher die <DEVICE> Zeichenkette im Beispiel unterhalb durch das Laufwerk und die Partition der existierenden Installation zu ersetzten:

user $mkdir /mnt/mychroot
user $mount /dev/<DEVICE> /mnt/mychroot

Wenn zuvor bereits eine Installation in einem Unterverzeichnis des aktuellen Root-Dateisystems erzeugt wurde, können Sie die Schritte oberhalb überspringen.

Installieren der Systemdateien und des Portage-Baumes (Neuisntallation)

Bei einer Neuinstallation besteht der nächste Schritt darin, den stage3- und Portage-Tarball herunterzuladen und in der chroot-Umgebung zu entpacken. Weiterführende Informationen sind unter herunterladen und entpacken im Gentoo Handbuch zu finden.

root #tar xvjpf stage3-*.tar.bz2 -C /mnt/mychroot
root #tar xvjf portage-*.tar.bz2 -C /mnt/mychroot/usr

Konfiguration

Vor dem Eintreten in chroot müssen einige Verzeichnisse gemountet werden:

root #mount --rbind /dev /mnt/mychroot/dev
root #mount --make-rslave /mnt/mychroot/dev
root #mount -t proc /proc /mnt/mychroot/proc
root #mount --rbind /sys /mnt/mychroot/sys
root #mount --make-rslave /mnt/mychroot/sys
root #mount --rbind /tmp /mnt/mychroot/tmp

Einige grundlegende Konfigurationsdateien müssen vom Host kopiert werden. Kopieren Sie make.conf nicht, wenn Sie eine bestehende Installation verwenden:

user $cp /etc/portage/make.conf /mnt/mychroot/etc/portage # Wenn Sie eine bestehende Installation verwenden, überspringen Sie diesen Befehl.
user $cp /etc/resolv.conf /mnt/mychroot/etc

copypasta option (optional)

It's possible to invoke this command to save time if you're able to copy+paste.

Warnung
Do not forgett to change /mnt/mychrooto AND /dev/sda4 for your variables if neccesary!!
root # mkdir /mnt/mychroot && cd /mnt/mychroot && mount /dev/sda4 /mnt/mychroot && mount --rbind /dev /mnt/mychroot/dev && mount --make-rslave /mnt/mychroot/dev && mount -t proc /proc /mnt/mychroot/proc && mount --rbind /sys /mnt/mychroot/sys && mount --make-rslave /mnt/mychroot/sys && mount --rbind /tmp /mnt/mychroot/tmp && chroot /mnt/mychroot /bin/bash

In Chroot environment do not forgett on:

root #source /etc/profile
root #env-update
root #export PS1="(chroot) $PS1"

Bedienung

Wenn Sie dies getan haben, betreten Sie die Chroot-Umgebung durch die Ausführung der folgenden Befehle:

root #chroot /mnt/mychroot /bin/bash
root #env-update
root #source /etc/profile
root #export PS1="(chroot) $PS1"

Falls Sie eine neue Installation erstellen, sollte Portage synchronisiert werden um sicherzustellen, dass alles aktuell ist.

root #emerge --sync

Das System ist jetzt bereit. Fühlen Sie sich frei Software zu installieren, mit Einstellungen herumzuspielen, Experimentelle Pakete und Konfigurationen zu testen, ohne negative Effekte auf das Haupt-System fürchten zu müssen. Um das chroot zu verlassen geben Sie einfach exit ein, oder drücken Sie Ctrl+d. Dieses Vorgehen wird die Konsole zurück zur normalen Umgebung bringen. Vergessen Sie nicht die Verzeichnisse auszuhängen (unmount), die Sie gemountet haben.

Init-Skripte

Wenn das Aufsetzen von chroots eine Aufgabe ist die oft durchgeführt werden muss, ist es möglich das mounten der Verzeichnisse durch das Verwenden eines Init-Skripts zu beschleunigen. Das Skript kann zum Standard-Runleven hinzugefügt und somit automatisch beim Systemstart eingerichtet werden:

DATEI /etc/init.d/mychroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Mounte chroot-Verzeichnisse"
     mount -o rbind /dev /mnt/mychroot/dev > /dev/null &
     mount -t proc none /mnt/mychroot/proc > /dev/null &
     mount -o bind /sys /mnt/mychroot/sys > /dev/null &
     mount -o bind /tmp /mnt/mychroot/tmp > /dev/null &
     eend $? "Beim Mounten der chroot-Verzeichnisse ist ein Fehler aufgetreten"
}
 
stop() {
     ebegin "Unmounte chroot-Verzeichnisse"
     umount -f /mnt/mychroot/dev > /dev/null &
     umount -f /mnt/mychroot/proc > /dev/null &
     umount -f /mnt/mychroot/sys > /dev/null &
     umount -f /mnt/mychroot/tmp > /dev/null &
     eend $? "Beim Unmounten der chroot-Verzeichnisse ist ein Fehler aufgetreten"
}

Falls Sie ein ein anderes Verzeichnis oder eine andere Partition verwenden, fügen Sie die notwendigen Mount-Befehle in die Funktion start() hinzu und ändern Sie /mnt/chroot auf den passenden Namen.

Siehe auch