Nachfolgend wird die Installation einer minimalen Linux-Umgebung mittels debootstrap
, sowie die Nutzung dieser mittels schroot
(erweiterter CHROOT), beschrieben.
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 <Architektur> <Version> <Zielverzeichnis> <Quellrepository>
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. ~#
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)fstab
“: Die Datei sollte um die Verzeichnisse erweitert werden, die in der CHROOT-Umgebung aus dem Host zur Verfügung stehen sollenchroot.d
“: Hier können die Konfigurationsdateien für die jeweiligen CHROOT-Umgebungen abgelegt werdenschroot.conf
“setup.d
“: Skripte, die Aufbau einer CHROOT-Umgebung abgearbeitet werdenDie 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-Umgebungtype
“: (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 solltype
“ muss „directory
“ stehenusers
“: Liste mit Benutzern, die auf die CHROOT-Umgebung zugreifen dürfenprofile
“: 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 entferntfile
“: Hier muss das Archiv angegeben werden, in welches entpackt und genutzt werden solltype
“ muss „directory
“ stehenusers
“: Liste mit Benutzern, die auf die CHROOT-Umgebung zugreifen dürfenprofile
“: Angabe des Konfigurationsprofiles, welches verwendet werden sollAnzeige 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 entferntsource:…-archive
“: Das Archiv wird entpackt und nach dem Verlassen in ein neues Archiv mit gleichem Namen gepacktSoll 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.
Damit mit der „nackten“ CHROOT-Umgebung ein besseres Arbeiten möglich ist, sollten noch ein paar Anpassungen durchgeführt werden.
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
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\]\$ '
Auch die Datei „/root/.vimrc
“ sollte angepasst werden:
set mouse-=a syntax enable set tabstop=4 shiftwidth=4
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.
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 07.11.2018