Cuando ejecuto el chroot
comando aparece un error:
failed to run command ‘/bin/bash’: No such file or directory
Cuando ejecuto el chroot
comando aparece un error:
failed to run command ‘/bin/bash’: No such file or directory
Respuestas:
Este error significa que no hay /bin/bash
directorio dentro de chroot . Asegúrate de señalar dónde bash
está el ejecutable (u otro shell) en el chroot
directorio.
Si tienes /mnt/somedir/usr/bin/bash
entonces ejecutarchroot /mnt/somedir /usr/bin/bash
/root/.bashrc
o /root/.bash_profile
en su chroot
. ¿Puedes cambiar temporalmente el nombre de estos archivos? ¿También puede asegurarse de que bash
es ejecutable ( chmod +x /chroot/bin/bash
)?
Tenía /bin/bash
dentro del directorio chrooteado, pero no tenía / lib y / lib64 dentro. El mensaje de chroot podría ser más descriptivo. "no existe tal archivo o directorio" realmente significa "No puedo ejecutar esto ...".
/bin/bash
depende, por supuesto, de libc, ld-linux, libdl, etc., puede usar ldd /bin/bash
para ver qué bibliotecas necesita.
1) Puede mount -o bind
estos directorios en chroot 2) O puede copiar estas bibliotecas en chroot, si no confía en el entorno chroot para no corromperlos, así:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
intenta iniciar el shell que está configurado en su $SHELL
variable de entorno de forma predeterminada, pero lo busca en su nuevo directorio raíz, que parece no contener /bin/bash
, por lo que no puede iniciarse.
Puede indicarle a chroot que inicie otro programa dentro de la nueva raíz simplemente agregándolo como parámetro:
chroot /your/new/root /bin/foo --options...
Tenga en cuenta que la ruta del comando se interpreta dentro de su nueva raíz, por lo que, en este ejemplo, el programa llamado está de hecho en/your/new/root/bin/foo
Recibía el mismo error al intentar ssh a una cuenta chrooteada en un servidor remoto. En mi caso, me faltaba el siguiente archivo en el directorio remoto lib64. El servidor es Centos6.9
ld-linux-x86-64.so.2
Se solucionó ejecutando lo siguiente:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
solucionarlo, necesitaba algo de lib y lib64, y no me molesté en averiguar exactamente qué. (probablemente porque tenía habilitado multiarch)
En caso de que esté haciendo una compilación cruzada, debe usar el simulador qemu que puede ejecutar / mnt / somedir / bin / bash una vez que copie qemu-arm-static (estoy haciendo esto para armhf) en / mnt / somedir / usr / bin podrás hacer chroot.
Mira esto para más detalles: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html