Debian chroot bloquant les PTTY sur l'hôte

8

J'ai créé un environnement chroot basé sur Debian en utilisant debootstrapsous Arch Linux, et je l'ai rempli de vie comme ceci:

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

Le problème est qu'après avoir exécuté le script ci-dessus, je ne peux plus ouvrir de nouveaux terminaux sur le système hôte:

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

L' chrootarrêt de (arrêt sshd, démontage proc et dev / pts) ne ramène pas de nouveaux terminaux sur l'hôte.

Qu'est-ce que j'oublie ici?

lynix
la source
1
Veuillez publier la sortie ls -l /dev/ptsavant et après. Poignarder dans le noir: est- mount --bind /dev/pts $CHROOT/dev/ptsce mieux? Vous économiserez probablement beaucoup d'efforts en utilisant schroot au lieu de construire le vôtre.
Gilles 'SO- arrête d'être méchant'
mount --binda fait l'affaire, merci! ;) Les sorties de ls -l /dev/ptsne diffèrent pas.
lynix

Réponses:

4

Lorsque vous exécutez mount -t devpts devpts $CHROOT/dev/pts, cela monte une instance distincte du système de fichiers devpts dans le chroot. Une autre façon de rendre les devpts disponibles dans le chroot est d'utiliser un montage de liaison, qui rend la même instance du système de fichiers disponible à un nouvel emplacement. Les montages de liaison sont comme faire un lien dur, uniquement pour les points de montage au lieu des fichiers.

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

Des instances distinctes de devpts partagent les mêmes fichiers (si vous créez ou supprimez un terminal ou modifiez ses métadonnées, cela se reflète dans toutes les instances). Cependant, il y a évidemment une différence sous le capot qui fait que cela ne fonctionne pas. Un montage de liaison garantit que tout ce qui doit être synchronisé est synchronisé car il s'agit du même système de fichiers et non simplement d'un système identique.

Gilles 'SO- arrête d'être méchant'
la source
1
Je viens d'avoir le problème inverse avec un chroot Debian fonctionnant sur le système d'exploitation QTS Linux de QNAP. J'avais utilisé un montage de liaison qui provoquait l'échec de l'écran et le passage à un montage de devpts l'a plutôt corrigé.
markshep