Debian chroot blockiert PTTYs auf dem Host

8

Ich habe eine Debian-basierte Chroot-Umgebung debootstrapunter Arch Linux erstellt und sie mit folgendem Leben gefüllt:

#!/bin/sh

mount -t proc proc $CHROOT/proc
mount -t devpts devpts $CHROOT/dev/pts

chroot $CHROOT /bin/bash --login -c "/etc/init.d/ssh start"

Das Problem ist, dass ich nach dem Ausführen des obigen Skripts keine neuen Terminals mehr auf dem Hostsystem öffnen kann:

urxvt: can't initialize pseudo-tty, aborting.

Durch das Herunterfahren von chroot(Anhalten sshd, Aufheben der Bereitstellung von proc und dev / pts) werden keine neuen Terminals auf dem Host wiederhergestellt.

Was fehlt mir hier?

Lynix
quelle
1
Bitte posten Sie die Ausgabe von ls -l /dev/ptsvorher und nachher. Im Dunkeln stechen: ist es mount --bind /dev/pts $CHROOT/dev/ptsbesser? Sie werden wahrscheinlich viel Aufwand sparen, indem Sie schroot verwenden, anstatt Ihre eigenen zu erstellen .
Gilles 'SO - hör auf böse zu sein'
mount --bindhabe den Trick gemacht, danke! ;) Die Ergebnisse von unterschieden ls -l /dev/ptssich nicht.
Lynix

Antworten:

4

Wenn Sie ausführen mount -t devpts devpts $CHROOT/dev/pts, wird eine separate Instanz des devpts-Dateisystems in der Chroot bereitgestellt. Eine alternative Möglichkeit, Devpts in der Chroot verfügbar zu machen, besteht darin, einen Bind-Mount zu verwenden, der dieselbe Instanz des Dateisystems an einem neuen Speicherort verfügbar macht. Bind-Mounts sind wie das Erstellen einer festen Verknüpfung, nur für Mount-Punkte anstelle von Dateien.

mount --bind /dev/pts "$CHROOT"/dev/pts

Separate Instanzen von devpts verwenden dieselben Dateien (wenn Sie ein Terminal erstellen oder entfernen oder seine Metadaten ändern, wird dies in allen Instanzen wiedergegeben). Es gibt jedoch offensichtlich einen Unterschied unter der Haube, der dazu führt, dass sie nicht funktioniert. Ein Bind-Mount stellt sicher, dass alles, was synchronisiert werden muss, synchronisiert wird, da es sich um dasselbe Dateisystem handelt und nicht nur um ein identisches.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Ich hatte gerade das gegenteilige Problem mit einer Debian-Chroot, die auf QNAPs QTS Linux-basiertem Betriebssystem ausgeführt wird. Ich hatte einen Bind-Mount verwendet, der zum Ausfall des Bildschirms führte, und stattdessen zu einem Devpts-Mount gewechselt.
Markshep