ptys não funciona em chroot sob lxc

1

Estou tentando usar chroots sob lxc para desenvolvimento. Eu habilitei a opção "nesting" na configuração do contêiner lxc e proc e vinculado montou devpts em meu chroot como faria se os chroots estivessem em uma caixa normal do Linux.

Infelizmente quando tento usar coisas no chroot que precisam de ptys (por exemplo, o comando "script") recebo erros como

root@manualdev:~# chroot /chroots/jessie-staging/
root@manualdev:/# script
script: openpty failed: No such file or directory
Terminated
root@manualdev:/#

Informação do sistema:

  • O kernel do host é 4.4.0-79-genérico
  • A distro do host é Ubuntu xenial
  • A arquitetura do host é arm64
  • Container distro é o trecho do Debian
  • Container e arquitetura chroot é armhf
  • Chroot distro é Raspbian (testado com jessie, stretch e buster)
por plugwash 07.09.2017 / 19:35

1 resposta

1

A correção para isso (encontrada por suposições educadas) era executar os seguintes comandos no chroot.

rm /dev/ptmx
ln -s /dev/pts/ptmx /dev/ptmx

Não tenho 100% de certeza, mas acredito que a razão pela qual isso é necessário é que o lxc está usando o "modo de várias instâncias" para / dev / pts. Conforme a documentação no link

If CONFIG_DEVPTS_MULTIPLE_INSTANCES=y and 'newinstance' option is specified, the mount is considered to be in the multi-instance mode and a new instance of the devpts fs is created. Any ptys created in this instance are independent of ptys in other instances of devpts. Like in the single-instance mode, the /dev/pts/ptmx node is present. To effectively use the multi-instance mode, open of /dev/ptmx must be a redirected to '/dev/pts/ptmx' using a symlink or bind-mount.

Olhando versões mais recentes desse arquivo, parece que isso pode não ser necessário com kernels mais recentes.

    
por 07.09.2017 / 19:35

Tags