Um problema bem conhecido nas distros do systemd (Arch Linux, OpenSUSE, Fedora).
O Systemd substitui o sysvinit e oferece uma grande vantagem sobre isso. No sysvinit, quando você solicita a inicialização de um serviço, ele herda o contexto de execução da pessoa que está chamando o script, que inclui variáveis de ambiente, ulimits e assim por diante. O Systemd aprimora isso ao contrário, notificando um daemon, que iniciará o serviço em um ambiente bem definido, saudável e constante, onde é claro que os desempenhos dos serviços são muito mais fáceis de prever, pois o ambiente é sempre o mesmo.
Isso implica que, quando chamo systemctl de dentro do chroot, é irrelevante que eu esteja dentro do chroot, o ambiente que será herdado ainda é o do PID 1, não o atual. Mas fica pior do que isso: como os soquetes de comunicação são colocados dentro de / run / systemd, um processo em um chroot nem consegue falar com o sistema init!
Então, como você faz chroot em distribuições systemd?
Se tudo que você quer fazer é ter um contêiner Linux, esta página do Arch Wiki lhe dirá como configurar um contêiner Linux em menos de 30 segundos, graças a systemd-nspawn
.
Se você realmente deseja um ambiente chroot, esta página da Web bonita e cristalina fornecerá duas soluções funcionais (a segunda é uma versão modificada da oferecida no ponto 1).