Ein bekanntes Problem in Systemdistributionen (Arch Linux, OpenSUSE, Fedora).
Systemd ersetzt sysvinit und bietet einen großen Vorteil gegenüber diesem. Wenn Sie in sysvinit einen Dienst zum Starten auffordern, erbt er den Ausführungskontext der Person, die das Skript aufruft, einschließlich Umgebungsvariablen, ulimits usw. Systemd verbessert dies im Gegenteil, indem es einen Daemon benachrichtigt, der den Dienst in einer genau definierten, fehlerfreien und konstanten Umgebung startet, in der die Leistungen der Dienste natürlich viel einfacher vorherzusagen sind, da die Umgebung immer dieselbe ist.
Dies impliziert, dass, wenn ich systemctl aus der Chroot heraus aufrufe, es irrelevant ist, dass ich mich in der Chroot befinde, die Umgebung, die vererbt wird, immer noch die von PID 1 ist, nicht meine aktuelle. Aber es wird noch schlimmer: Da Kommunikationssockets in / run / systemd platziert sind, kann ein Prozess in einer Chroot nicht einmal mit dem Init-System sprechen!
Wie gehst du also vor, wenn du in Systemdistros chrootest?
Wenn Sie nur einen Linux-Container haben möchten, erfahren Sie auf dieser Arch-Wiki-Seite , wie Sie dank in weniger als 30 Sekunden einen Linux-Container einrichten systemd-nspawn
.
Wenn Sie stattdessen wirklich eine Chroot-Umgebung wünschen, bietet Ihnen diese schöne und kristallklare Webseite zwei funktionierende Lösungen (die zweite ist eine modifizierte Version der unter Punkt 1 angebotenen).