Chroot

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

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


Resources

Chroot (Change root) is a Unix system utility used to change the apparent root directory to create a new environment logically separate from the main system's root directory. This new environment is known as a "chroot jail." A user operating inside the jail cannot see or access files outside of the environment they have been locked into.

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.

Prerequisites

Setting up the environment

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

Usage

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

The system is now ready; feel free to install software, mess with settings, test experimental packages and configurations without having any effect on the main system. To leave the chroot simply type exit or press Ctrl+d. Doing so will return the console back to the normal environment. Do not forget to umount the directories that have been mounted.

Init scripts

If setting up chroots is a task that is needed to be performed often, it is possible to speed up the mounting of the directories by using an init script. The script could be added to the default runlevel and therefore set up automatically on system boot:

DATEI /etc/init.d/mychroot
#!/sbin/openrc-run
 
depend() {
   need localmount
   need bootmisc
}
 
start() {
     ebegin "Mounting chroot directories"
     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 $? "An error occurred while mounting chroot directories"
}
 
stop() {
     ebegin "Unmounting chroot directories"
     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 $? "An error occurred while unmounting chroot directories"
}

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