PTTYs de bloqueio de chro Debian no host

8

Eu criei um ambiente chroot baseado em Debian usando debootstrap no Arch Linux, e preencha-o com vida assim:

#!/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 (parar sshd , desmontar proc e dev / pts) não traz novos terminais no host.

O que estou perdendo aqui?

    
por lynix 11.09.2013 / 20:35

1 resposta

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 tornar os devpts disponíveis no chroot é usar uma montagem de ligação, que torna a mesma instância do sistema de arquivos disponível em um novo local. Montagens de ligação são como fazer 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ô que faz com que não funcione. Um bind mount garante que tudo que precisa ser sincronizado seja sincronizado, já que é o mesmo sistema de arquivos e não meramente idêntico.

    
por 13.09.2013 / 17:01