Quando executo o chroot
comando, é apresentado um erro:
failed to run command ‘/bin/bash’: No such file or directory
Quando executo o chroot
comando, é apresentado um erro:
failed to run command ‘/bin/bash’: No such file or directory
Respostas:
Este erro significa que não há /bin/bash
diretório dentro do chroot . Certifique-se de apontá-lo para onde bash
(ou outro shell) executável está no chroot
diretório
Se você tiver /mnt/somedir/usr/bin/bash
executadochroot /mnt/somedir /usr/bin/bash
/root/.bashrc
ou /root/.bash_profile
no seu chroot
. Você pode renomear temporariamente esses arquivos? Além disso, você pode ter certeza de que bash
é executável ( chmod +x /chroot/bin/bash
)?
Eu tinha /bin/bash
dentro do diretório chroot, mas não tinha / lib e / lib64 dentro dele. A mensagem do chroot pode ser mais descritiva. "nenhum arquivo ou diretório" realmente significa "Não consigo executar isso ...".
/bin/bash
Dependendo, é claro, da libc, ld-linux, libdl etc., você pode usar ldd /bin/bash
para ver quais bibliotecas são necessárias.
1) Você pode mount -o bind
esses diretórios no chroot 2) Ou pode copiar essas bibliotecas para o chroot, se você não confiar no env chrootado para não corrompê-los, assim:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
tenta iniciar o shell que está definido na sua $SHELL
variável de ambiente por padrão, mas procura no seu novo diretório raiz, que parece não conter /bin/bash
, portanto não pode ser iniciado.
Você pode dizer ao chroot para iniciar outro programa dentro da nova raiz, simplesmente adicionando-o como parâmetro:
chroot /your/new/root /bin/foo --options...
Observe que o caminho do comando é interpretado dentro de sua nova raiz; portanto, neste exemplo, o programa chamado está de fato em/your/new/root/bin/foo
Eu estava recebendo o mesmo erro ao tentar ssh para uma conta chroot em um servidor remoto. No meu caso, estava faltando o seguinte arquivo no diretório lib64 remoto. O servidor é Centos6.9
ld-linux-x86-64.so.2
Foi corrigido executando o seguinte:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
lo, eu precisava de algo da lib e da lib64 e não me incomodei em descobrir exatamente o que. (provavelmente porque eu tinha multiarch ativado)
Caso esteja fazendo uma compilação cruzada, você precisará usar o simulador qemu, que pode executar / mnt / somedir / bin / bash depois de copiar o qemu-arm-static (estou fazendo isso para armhf) no / mnt / somedir / usr / bin você poderá fazer chroot.
Verifique isso para obter mais detalhes: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html