Durante un intento de chroot, recibí este error: "chroot: no se pudo ejecutar el comando '/bin/bash': error de formato de ejecución"

Durante un intento de chroot, recibí este error: "chroot: no se pudo ejecutar el comando '/bin/bash': error de formato de ejecución"

Estaba siguiendo las instrucciones de este tutorial.CÓMO: Purgar y reinstalar Grub 2 desde el Live CD, cuando encontré un error en el paso 1, cuando lancé el comando

sudo chroot /mnt/temp

El error fue el siguiente:

chroot: failed to run command `/bin/bash': Exec format error

De donde viene eso? ¿Cómo paso?

Respuesta1

Verifique que esté utilizando el Live CD correcto. Por ejemplo, verifique que no esté utilizando un CD de 32 bits en lugar de uno de 64 bits. Necesita un kernel de 64 bits para ejecutar código de 64 bits, así que verifique su arquitectura.

Suponiendo que montó su sistema para ser chroot en/media/sda1, para determinar la arquitectura puedes:

ls /media/sda1/*

Si ve lib64 en el resultado, probablemente sea un sistema de 64 bits.

Respuesta2

Tuve el mismo problema al hacer una imagen para el arco armhf. Tuve que instalarlo qemu-user-staticy luego copiarlo a la carpeta chroot bin.

sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin

Puede que tengas que correr

systemctl restart systemd-binfmt.service

entonces deberías poder hacer chroot en el entorno

Respuesta3

El error significa que su jail ( /mnt/temp) no contiene un shell bash o no contiene las bibliotecas necesarias para ejecutar el shell bash.

Si creaste tu cárcel usando algo como esto:

debootstrap --variant=buildd --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Probablemente quisiste hacer esto en su lugar:

debootstrap --variant=minbase --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Sin embargo, como respuesta técnica a su problema, intente:

cp -r /bin /lib /mnt/temp

Esto debería permitirle realizar chroot exitosamente, momento en el cual podrá hacer otras cosas.

Sin embargo, hay alrededor de un millón de cosas malas al hacer eso y es casi seguro que no quieras hacerlo. Utilice minbase cuando cree su cárcel, o instale ubuntu en un destino en blanco (por ejemplo, una máquina virtual) y cree un archivo tar de todo el sistema que luego descomprimirá en /mnt/temp.

Respuesta4

De hecho, se trata de una incompatibilidad de 64 bits y 32 bits.

aunque con

cp /bin/bash /mount/temp/tmp

(copia el ejecutivo de 32 bits a la nueva raíz en el tmpdirectorio

chroot /mount/temp /tmp/bash

chrootEstá bien, todos los comandos siguen fallando. Tendrías que copiarlos por todos lados.

información relacionada