Un problema bien conocido en las distribuciones systemd (Arch Linux, OpenSUSE, Fedora).
Systemd reemplaza sysvinit y proporciona una gran ventaja sobre esto. En sysvinit, cuando solicita que se inicie un servicio, hereda el contexto de ejecución de la persona que invoca el script, que incluye variables de entorno, ulimits, etc. Por el contrario, Systemd mejora esto al notificar a un demonio, que comenzará el servicio en un entorno bien definido, saludable y constante, donde, por supuesto, el rendimiento de los servicios es mucho más fácil de predecir, ya que el entorno es siempre el mismo.
Esto implica que, cuando llamo systemctl desde dentro del chroot, es irrelevante que esté dentro de chroot, el entorno que se heredará sigue siendo el del PID 1, no el actual. Pero se pone peor que esto: dado que los enchufes de comunicación se colocan dentro / ejecutar / systemd, ¡un proceso en un chroot ni siquiera podrá hablar con el sistema init!
Entonces, ¿cómo se hace chroot'ing en las distribuciones systemd?
Si todo lo que quiere hacer es tener un contenedor de Linux, esta página de Arch Wiki le dirá cómo configurar un contenedor de Linux en menos de 30 segundos, gracias a systemd-nspawn
.
Si, en cambio, realmente desea un entorno chroot, esta hermosa y clara página web le proporcionará dos soluciones de trabajo (la segunda es una versión modificada de la que se ofrece en el punto n. ° 1).