Lorsque j'exécute la chrootcommande, une erreur est générée:
failed to run command ‘/bin/bash’: No such file or directory
Lorsque j'exécute la chrootcommande, une erreur est générée:
failed to run command ‘/bin/bash’: No such file or directory
Réponses:
Cette erreur signifie qu'il n'y a pas de /bin/bashrépertoire dans chroot . Assurez-vous de bien indiquer où bashl'exécutable (ou un autre shell) se trouve dans le chrootrépertoire.
Si vous avez /mnt/somedir/usr/bin/bashalors exécuterchroot /mnt/somedir /usr/bin/bash
/root/.bashrcou /root/.bash_profiledans votre chroot. Pouvez-vous renommer temporairement ces fichiers? Aussi, pouvez-vous vous assurer que bashc'est exécutable ( chmod +x /chroot/bin/bash)?
J'avais /bin/bashun répertoire chrooté, mais je n'avais pas / lib et / lib64 à l'intérieur. Le message de chroot pourrait être plus descriptif. "Aucun fichier ou répertoire de ce type" signifie vraiment "Je ne peux pas exécuter ceci ...".
/bin/bashdépend bien sûr de libc, ld-linux, libdl, etc., vous pouvez utiliser ldd /bin/bashpour voir les bibliothèques dont il a besoin.
1) Vous pouvez mount -o bindces répertoires sous chroot 2) Ou vous pouvez copier ces librairies dans chroot, si vous ne faites pas confiance aux envs chrootés pour ne pas les corrompre, comme ceci:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroottente de démarrer le shell défini $SHELLpar défaut dans votre variable d'environnement, mais il le recherche dans votre nouveau répertoire racine, qui ne semble pas contenir /bin/bash, il ne peut donc pas démarrer.
Vous pouvez dire à chroot de démarrer un autre programme dans la nouvelle racine en l'ajoutant simplement en tant que paramètre:
chroot /your/new/root /bin/foo --options...
Notez que le chemin de la commande est interprété dans votre nouvelle racine. Dans cet exemple, le programme appelé est en fait/your/new/root/bin/foo
La même erreur se produisait lorsque j'essayais de créer un compte chrooté sur un serveur distant. Dans mon cas, il me manquait le fichier suivant dans le répertoire lib64 distant. Le serveur est Centos6.9
ld-linux-x86-64.so.2
Il a été corrigé en exécutant ce qui suit:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jailJe n'ai pas résolu le problème pour moi, mais cela a été corrigé: j'avais besoin de quelque chose à la fois dans lib et lib64, et je ne me suis pas donné la peine de trouver exactement quoi. (probablement parce que j'avais multiarch activé)
Si vous faites une compilation croisée, vous devez utiliser le simulateur qemu qui peut exécuter / mnt / somedir / bin / bash une fois que vous copiez le qemu-arm-static (je le fais pour armhf) dans le répertoire / mnt / somedir / usr. / bin tu pourras faire chroot.
Regardez ceci pour plus de détails: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html