Debian chroot que bloquea los PTTY en el host

8

He creado un entorno chroot basado en Debian usando debootstrapArch Linux, y lo lleno de vida así:

#!/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"

El problema es que después de ejecutar el script anterior, ya no puedo abrir nuevas terminales en el sistema host:

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

Apagar chroot(detener sshd, desmontar proc y dev / pts) no devuelve nuevos terminales en el host.

¿Que me estoy perdiendo aqui?

lynix
fuente
1
Por favor, publique la salida de ls -l /dev/ptsantes y después. Puñalada en la oscuridad: ¿hay mount --bind /dev/pts $CHROOT/dev/ptsalgo mejor? Probablemente ahorrará mucho esfuerzo al usar schroot en lugar de construir el suyo propio.
Gilles 'SO- deja de ser malvado'
mount --bindhizo el truco, gracias! ;) Los resultados de ls -l /dev/ptsno fueron diferentes.
lynix

Respuestas:

4

Cuando ejecuta mount -t devpts devpts $CHROOT/dev/pts, esto monta una instancia separada del sistema de archivos devpts en el chroot. Una forma alternativa de hacer que los devpts estén disponibles en el chroot es usar un montaje de enlace, que hace que la misma instancia del sistema de archivos esté disponible en una nueva ubicación. Los montajes de enlace son como hacer un enlace duro, solo para puntos de montaje en lugar de archivos.

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

Las instancias separadas de devpts comparten los mismos archivos (si crea o elimina un terminal o cambia sus metadatos, se refleja en todas las instancias). Sin embargo, hay evidentemente alguna diferencia debajo del capó que hace que no funcione. Un montaje de enlace asegura que todo lo que necesita ser sincronizado esté sincronizado ya que es el mismo sistema de archivos y no simplemente uno idéntico.

Gilles 'SO- deja de ser malvado'
fuente
1
Acabo de tener el problema opuesto con un chroot de Debian que se ejecuta en el sistema operativo QTS de QNAP basado en Linux. Utilicé un montaje de enlace que causó el fallo de la pantalla y en cambio lo cambié a un montaje de dispositivos.
markshep