Unter gewissen Umständen benötigt man neuere Versionen, die es nur einem anderen Debian-Zweig gibt. Braucht man z.B. eine aktuelle glibc1), so müsste man von Debian-Lenny
das Paket installieren. Da aber viele Nutzer Debian-Sarge
verwenden und aus bestimmten Gründen nicht wechseln wollen bzw. können, kommt ein Update nicht in Frage.
Mit einem einfachen Trick, kann man ein ganzes Debian-System unterhalb des Wurzelverzeichnisses einrichten. Zu diesem kann man mittels chroot /neues_debian /bin/hash
wechseln und ist dann dort im Verzeichnis eingesperrt.
Zuerst muss das Programm debootstrap
installiert werden:
apt-get update apt-get install debootstrap sudo
Jetzt erstellt man ein Vereichnis in der das neue Debian heruntergeladen werden soll:
mkdir /chroot_lenny debootstrap lenny /chroot_lenny http://ftp.debian.org/debian/
Damit die Umgebung richtig funktioniert, müssen die beiden Verzeichnisse /chroot_lenny/proc
und /chroot_lenny/dev
gemountet werden:
echo "proc /chroot_lenny/proc proc none 0 0" >> /etc/fstab mount /chroot_lenny/proc mount /dev/ /chroot_lenny/dev -o bind
Konfiguration und ggf. ein Userverzeichnis kopieren:
cd /etc cp hosts passwd group shadow /chroot_lenny/etc/ cp -R /home/userverzeichnis /chroot_lenny/home/
In die neue Umgebung mittels chroot
wechseln:
chroot /chroot_lenny /bin/bash
Jetzt die Struktur in /dev erstellen lassen:
cd /dev /sbin/MAKEDEV generic
Fehlende Programme in der neuen Umgebung installieren:
apt-get update apt-get install locales bzip2
Locales einrichten:
dpkg-reconfigure locales
Am besten de_DE.UTF-8 UTF-8
auswählen.
Damit ein normaler User chroot
ausführen kann, muss dieser mittels sudo dazu die Berechtigung erteilt bekommen. Die Datei /etc/sudoers
muss die folgende Zeile hinzugefügt werden:
username ALL=NOPASSWD: /usr/sbin/chroot
So darf der User mittels sudo
den Befehl chroot
ausführen.
Falls das hldsupdatetool
in der neuen Umgebung ausgeführt werden soll, muss zuerst der Symlink uncompress angelegt werden.
ln -s $(which gunzip) $(dirname $(which gunzip))/uncompress
Handelt es sich um ein 64-Bit-System müssen noch die 32-Bit-Bibliotheken eingerichtet werden:
apt-get install ia32-libs
Nachdem man alles eingerichtet hat, kann man später immer wieder mit dem Konfigurierten User in die neue Umgebung wechseln. Mittels screen bleibt die Umgebung aktiv, da ansonsten ohne screen nach dem Schließen von Putty die Umgebung wieder beendet würde.
screen -S l4d-server sudo chroot /chroot_lenny /bin/bash su USERNAME
Vergisst man mittels des Befehls su
sich in der neuen Umgebung als der richtige User anzumelden, ist man mit root eingeloggt. Auch wenn es die Chroot-Umgebung ist, ist es sicherer den Server nicht mit root
laufen zu lassen.
In diesem Beispiel starten wir einen Server für Left 4 Dead.
./srcds_run -game left4dead
Nachdem der Server gestartet wurde, kann der Screen mittels STRG+A D
in den Hintergrund verschoben werden.
Mittels screen -r SCREENNAME
kann der gewünschte Screen von der „Chroot-Umgebung“ zurückgeholt werden.