Como eu sei: chroot significa mudar a raiz.
O chroot em sistemas operacionais do tipo Unix é uma operação que altera o aparente diretório-raiz para o processo em execução atual e seus filhos. [daqui]
Você está alterando a raiz do seu sistema em execução; Portanto, seu sistema (A) ainda está executando tudo o que você vê como parte de seu sistema em execução e você não pode simplesmente desmontar seus recursos ocupados (dispositivos de bloco).
Além disso, o sistema para o qual você está mudando sua raiz (B) não é capaz de fazer nada sem a ajuda de A. Como exemplo, acho que você usou um comando como mount --bind /xxx /mnt/xxx
para vincular caminhos como /proc
ou /dev
como parte de chroot
process; Esses caminhos estão sendo gerenciados pelo sistema em execução (A) e são necessários para o ambiente chrooted (B).
Você simplesmente não pode fazer o que você está tentando fazer.
Como Wikipedia diz, os usos de chroot
são:
- Teste e desenvolvimento
- Controle de dependência
- Compatibilidade
- Recuperação
- Separação de privilégios
Para executar um programa gráfico a partir do seu ambiente chrooted (B dentro de A); Você deve permitir o acesso ao X em execução.
Fora do lado da execução do ambiente chroot (abra outro terminal):
xhost +local:
echo $DISPLAY
Em seguida, exporte o que você obtém como saída em seu ambiente chrooted:
export DISPLAY=[output of above command]
Agora você deve conseguir executar aplicativos gráficos.
Não consigo entender por que você está fazendo isso, basta inicializar em um disco ao vivo, aplicar suas alterações, fazer chroot em suas diferentes máquinas para corrigir qualquer problema, se necessário. depois reinicie e use seus sistemas.