Chroot Debian che blocca i PTTY sull'host


8

Ho creato un ambiente chroot basato su Debian usando debootstrapArch Linux e lo riempio di vita in questo modo:

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

Il problema è che dopo aver eseguito lo script sopra, non sono più in grado di aprire nuovi terminali sul sistema host:

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

La chiusura di chroot(arresto sshd, smontaggio proc e dev / pts) non riporta nuovi terminali sull'host.

Cosa mi sto perdendo qui?


1
Si prega di pubblicare l'output di ls -l /dev/ptsprima e dopo. Stab in the dark: è mount --bind /dev/pts $CHROOT/dev/ptsmeglio? Probabilmente risparmierai molto sforzo usando schroot invece di costruirne uno tuo.
Gilles 'SO- smetti di essere malvagio' l'

mount --bindfatto il trucco, grazie! ;) Le uscite di ls -l /dev/ptsnon differivano.
Lynix,

Risposte:


4

Durante l'esecuzione mount -t devpts devpts $CHROOT/dev/pts, viene montata un'istanza separata del filesystem devpts nel chroot. Un modo alternativo di rendere disponibili gli dev Dev nel chroot è usare un mount bind, che rende disponibile la stessa istanza del filesystem in una nuova posizione. I montaggi di bind sono come creare un collegamento reale, solo per i punti di montaggio anziché i file.

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

Le istanze separate di devpt condividono gli stessi file (se si crea o si rimuove un terminale o si modificano i suoi metadati, si riflette in tutte le istanze). Tuttavia c'è evidentemente qualche differenza sotto il cofano che non lo fa funzionare. Un bind mount assicura che tutto ciò che deve essere sincronizzato sia sincronizzato poiché è lo stesso filesystem e non solo uno identico.


1
Ho appena avuto il problema opposto con un chroot Debian in esecuzione sul sistema operativo basato su Linux QTS di QNAP. Avevo usato un mount bind che causava il fallimento dello schermo e il passaggio a un mount devpt invece lo risolveva.
markhep,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.