Chroot Debian bloqueando PTTYs no host

8

Eu criei um ambiente chroot baseado no Debian usando o debootstrapArch Linux e preenchi-o com uma vida como esta:

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

O problema é que, depois de executar o script acima, não consigo mais abrir novos terminais no sistema host:

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

Desligar o chroot(parando sshd, desmontando proc e dev / pts) não traz de volta novos terminais no host.

O que estou perdendo aqui?

lynix
fonte
1
Por favor, publique a saída do ls -l /dev/ptsantes e depois. Facada no escuro: é mount --bind /dev/pts $CHROOT/dev/ptsmelhor? Você provavelmente economizará muito esforço usando o schroot em vez de criar o seu próprio.
Gilles 'SO- stop be evil'
mount --bindfez o truque, obrigado! ;) As saídas de ls -l /dev/ptsnão diferiram.
Lynix 13/09/2013

Respostas:

4

Quando você executa mount -t devpts devpts $CHROOT/dev/pts, isso monta uma instância separada do sistema de arquivos devpts no chroot. Uma maneira alternativa de disponibilizar os devpts no chroot é usar uma montagem de ligação, que disponibiliza a mesma instância do sistema de arquivos em um novo local. Montagens de ligação são como criar um link físico, apenas para pontos de montagem em vez de arquivos.

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

Instâncias separadas de devpts compartilham os mesmos arquivos (se você criar ou remover um terminal ou alterar seus metadados, isso será refletido em todas as instâncias). No entanto, há evidentemente alguma diferença sob o capô, o que o faz não funcionar. Uma montagem de ligação garante que tudo o que precisa ser sincronizado seja sincronizado, pois é o mesmo sistema de arquivos e não apenas o mesmo.

Gilles 'SO- parar de ser mau'
fonte
1
Eu apenas tive o problema oposto com um chroot do Debian em execução no sistema operacional QTS Linux da QNAP. Eu usei uma montagem de ligação que causou falha na tela e alternar para uma montagem de devpts, em vez disso, foi corrigida.
markshep