====== CHROOT-Umgebung: schroot ====== Nachfolgend wird die Installation einer minimalen Linux-Umgebung mittels **''debootstrap'' **, sowie die Nutzung dieser mittels **''schroot'' ** (erweiterter CHROOT), beschrieben. ===== debootstrap ===== Der Befehl **''debootstrap'' ** (zu finden im gleichnamigen Paket) ermöglicht das Entpacken einer minimalen Linuxumgebung in ein vorgegebenes Verzeichnis. Das Programm kann aus dem Standard-Repository installiert werden. Der Befehl zum Erstellen der Linuxumgebung sieht wie folgt aus: ~# debootstrap --arch Am Beispiel: ~# debootstrap --arch amd64 trixie /mnt/debian http://ftp.de.debian.org/debian I: Retrieving Release I: Retrieving Release.gpg I: Checking Release signature ... I: Configuring ifupdown... I: Configuring libc-bin... I: Base system installed successfully. ~# ===== schroot ===== Das Programm **''schroot'' ** kann ebenfalls aus dem Standard-Repository installiert werden und ist eine Erweiterung des Programms **''chroot'' **. Das Konfigurationsverzeichnis ist unter "''/etc/schroot/''" zu finden und besitzt folgenden Aufbau: * "''buildd''", "''default''", "''desktop''", "''minimal''" und "''sbuild''": Hier liegen jeweils die Dateien, die an die CHROOT-Umgebung übergeben werden (Dateien und eingehängte Verzeichnisse) * die jeweiligen Verzeichnisse stehen für jeweilige Zwecke * "''fstab''": Die Datei sollte um die Verzeichnisse erweitert werden, die in der CHROOT-Umgebung aus dem Host zur Verfügung stehen sollen * "''chroot.d''": Hier können die Konfigurationsdateien für die jeweiligen CHROOT-Umgebungen abgelegt werden * normalerweise stehen diese Informationen in der Datei "''schroot.conf''" * "''setup.d''": Skripte, die Aufbau einer CHROOT-Umgebung abgearbeitet werden ==== Konfigurationsbeispiel ==== Die Konfiguration einer CHROOT-Umgebung soll an einem Beispiel gezeigt werden. Es wird eine Umgebung für DEBIAN Stretch 64 Bit erstellt. Im ersten Schritt wird ein bestehendes Konfigurationsprofil (zum Beispiel das Verzeichnis "''default''") mit allen Dateien kopiert zum Verzeichnis "''standard''": ~# cp -rv /etc/schroot/default /etc/schroot/standard '/etc/schroot/default' -> '/etc/schroot/standard' '/etc/schroot/default/copyfiles' -> '/etc/schroot/standard/copyfiles' '/etc/schroot/default/fstab' -> '/etc/schroot/standard/fstab' '/etc/schroot/default/nssdatabases' -> '/etc/schroot/standard/nssdatabases' Jetzt kann die Datei "''/etc/schroot/standard/fstab''" erweitert werden: /proc /proc none rw,bind 0 0 /sys /sys none rw,bind 0 0 /dev /dev none rw,bind 0 0 /dev/pts /dev/pts none rw,bind 0 0 /home /home none rw,bind 0 0 /tmp /tmp none rw,bind 0 0 /data /data none rw,bind 0 0 //**Hinweis**: Das Verzeichnis "''/data''" wurde hinzugefügt.// Es wird eine Konfigurationsdatei benötigt, in welcher alle Angaben zur CHROOT-Umgebung eingetragen werden. Nachfolgend wird dafür die Datei "''/etc/schroot/chroot.d/debian-trixie-amd64-directory.conf''" verwendet: [debian-trixie-amd64-directory] description=DEBIAN Trixie AMD64 Directory type=directory directory=/data/system/schroot/directories/debian-trixie-amd64-directory users=root,service profile=standard Zur Erklärung: * "''description''": Eine Beschreibung der CHROOT-Umgebung * "''type''": //(nachfolgend nur die wichtigen Typen)// * "''directory''": Die CHROOT-Umgebung liegt in dem angegebenen Verzeichnis unter "''directory''" (Veränderungen in der Umgebung bleiben erhalten) * "''directory''": Hier muss das Verzeichnis angegeben werden, in welches gewechselt werden soll * unter "''type''" muss "''directory''" stehen * "''users''": Liste mit Benutzern, die auf die CHROOT-Umgebung zugreifen dürfen * "''profile''": Angabe des Konfigurationsprofiles, welches verwendet werden soll Beispielkonfiguration mit Angabe eines Archives in der Datei "''/etc/schroot/chroot.d/debian-trixie-amd64-archive.conf''": [debian-trixie-amd64-archive] description=DEBIAN Trixie AMD64 Archive type=file file=/data/system/schroot/archives/debian-trixie-amd64-archive.tgz users=root,service profile=standard Zur Erklärung (nur die Ergänzung): * "''type''": //(nachfolgend nur die wichtigen Typen)// * "''file''": Die CHROOT-Umgebund wird aus dem angegebenen Archiv unter "''file''" ("''tar.gz''", "''tgz''" oder "''tar.bz2''") entpackt und nach Beenden wieder entfernt * "''file''": Hier muss das Archiv angegeben werden, in welches entpackt und genutzt werden soll * unter "''type''" muss "''directory''" stehen * "''users''": Liste mit Benutzern, die auf die CHROOT-Umgebung zugreifen dürfen * "''profile''": Angabe des Konfigurationsprofiles, welches verwendet werden soll ==== Syntax ==== Anzeige aller vorhandenen CHROOT-Umgebungen: ~# schroot -l chroot:debian-trixie-amd64-archive chroot:debian-trixie-amd64-directory source:debian-trixie-amd64-archive Zur Erklärung: * "''chroot:…-archive''": Das Archiv wird entpackt und nach dem Verlassen wieder entfernt * "''source:…-archive''": Das Archiv wird entpackt und nach dem Verlassen in ein neues Archiv mit gleichem Namen gepackt Soll das Archiv verwendet werden, hilft folgender Befehl: ~# schroot -c chroot:debian-trixie-amd64-directory CHROOT@root@client~:~# //**Hinweis**: Die CHROOT-Umgebung ist hier an der Kennung "''CHROOT@''" im Prompt zu erkennen.// Der Aufruf einer CHROOT-Umgebung die aus einem Archiv erstellt wird, läuft dabie nicht anders ab: schroot -c chroot:debian-trixie-amd64-archive CHROOT@root@client~:~# //**Hinweis**: Der Unterschied macht sich beim Abmelden bemerkbar, weil dieser Vorgang hier viel länger dauert.// ==== ==== ==== Anpassungen ==== Damit mit der "nackten" CHROOT-Umgebung ein besseres Arbeiten möglich ist, sollten noch ein paar Anpassungen durchgeführt werden. === Paketquellen === Die Datei "''/etc/apt/sources.list.d/debian.sources''" kann wie folgt angepasst (oder erstellt) werden: Types: deb deb-src URIs: http://ftp.gwdg.de/debian/ Suites: trixie Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb deb-src URIs: http://security.debian.org/debian-security/ Suites: trixie-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb deb-src URIs: http://ftp.gwdg.de/debian/ Suites: trixie-updates Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg === .bashrc === Die Datei "''/root/.bashrc''" kann den nachfolgenden Inhalt haben: alias ll='ls $LS_OPTIONS -al' PS1='[schroot]:\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;35m\]\w\[\033[00m\]\$ ' === .vimrc === Auch die Datei "''/root/.vimrc''" sollte angepasst werden: set mouse-=a syntax enable set tabstop=4 shiftwidth=4 === Pakete === Innerhalb der CHROOT-Umgebung sollten dann noch einige Pakete installiert werden, welche das Arbeiten angenehmer machen: ~# apt update && apt -y install vim mc gpg wget __**Wichtig**__ : An dieser Stelle sollte von der CHROOT-Umgebung eine Sicherheitskopie erstellt werden. ==== X-Programme ==== Die CHROOT-Umgebung bietet die Möglichkeit an, X-Programme zu starten. Bisher ist mir das aber nur mit einem kleinen Trick gelungen. Dafür wurde ein zusätzliches Skript "''/usr/local/bin/schrott''" erstellt, was folgenden Inhalt hat: #!/bin/bash if [ "${1}" = "-c" ]; then xhost + local: /usr/bin/schroot "${@}"; else /usr/bin/schroot "${@}"; fi; Zusätzlich muss in der CHROOT-Umgebung in der Datei "''/etc/profile''" folgende Zeile ergänzt werden: export DISPLAY=:0 Wird das Wrapper-Skript "''/usr/local/bin/schrott''" jetzt anstatt des Befehls "''/usr/bin/schroot''" verwendet, können innerhalb der CHROOT-Umgebung X-Programme ausgeführt werden. \\ \\ — //[[steffen.bornemann@gmx.de|Steffen Bornemann]] 07.11.2018// \\ {{tag>DEBIAN debootstrap schroot CHROOT X}}