ptys no funciona en chroot bajo lxc

Estoy tratando de usar chroots bajo lxc para el desarrollo. He habilitado la opción "anidar" en la configuration del contenedor lxc y encuaderné el proc montado y lo devpto en mi chroot como lo haría si los chroots estuvieran en una caja Linux normal.

Lamentablemente, cuando bash usar cosas en el chroot que necesitan ptys (por ejemplo, el command "script") obtengo errores como

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

Información del sistema:

  • El kernel de host es 4.4.0-79-genérico
  • La distribución de host es Ubuntu xenial
  • La architecture de host es arm64
  • La distribución del contenedor es Debian stretch
  • La architecture de contenedor y chroot es armhf
  • La distribución Chroot es Raspbian (probado con jessie, stretch y buster)

La solución para esto (que se encuentra por conjeturas educadas) fue ejecutar los siguientes commands en el chroot.

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

No estoy 100% seguro, pero creo que la razón por la que esto es necesario es que lxc está usando el "modo de instancia múltiple" para / dev / pts. Según la documentation en https://github.com/torvalds/linux/blob/v4.4/Documentation/filesystems/devpts.txt

Si se especifica CONFIG_DEVPTS_MULTIPLE_INSTANCES = y se especifica la opción 'nueva instancia', se considera que el assembly está en el modo multiinstancia y se crea una nueva instancia de devpts fs. Cualquier ptys creado en esta instancia es independiente de ptys en otras instancias de devpts. Al igual que en el modo de instancia única, el nodo / dev / pts / ptmx está presente. Para utilizar de manera efectiva el modo de varias instancias, se debe networkingirigir la apertura de / dev / ptmx a '/ dev / pts / ptmx' utilizando un enlace simbólico o assembly de enlace.

Si observamos versiones más recientes de ese file, parece que esto puede no ser necesario con kernels más recientes.