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

20

Estaba siguiendo las instrucciones de este tutorial CÓMO: Purgar y reinstalar Grub 2 del Live CD , cuando encontré un error en el paso 1, cuando inicié 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?

Grand Oxymore
fuente

Respuestas:

22

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

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

ls /media/sda1/*

si ve lib64 en la salida, probablemente sea un sistema de 64 bits

Grand Oxymore
fuente
Es pero todavía no puede chroot
Starx
2

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

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
Ismail Moukafih
fuente
1

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 hacer un chroot con éxito, en ese momento puede hacer otras cosas.

Sin embargo, hay alrededor de un millón de cosas mal en hacer eso, y casi con certeza no quieres hacer eso. Use minbase cuando cree su cárcel, o instale ubuntu en un objetivo en blanco (por ejemplo, una máquina virtual) y cree un archivo tar de todo el sistema en el que luego lo descomprima /mnt/temp.

Doug
fuente
0

De hecho, esta es una incompatibilidad de 64 bits y 32 bits.

Aunque con

cp /bin/bash /mount/temp/tmp

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

chroot /mount/temp /tmp/bash

chrootestá bien, todos los comandos aún fallan. Tendrías que copiarlos por todas partes.

coseno
fuente
-1

En mi caso, estaba tratando de convertirme en una versión de Linux de 64 bits, pero mi Linux actual era de 32 bits.

Había montado una imagen de disco (imagen maestra, para replicar en varias máquinas).

azuer88
fuente
La misma respuesta que @ GrandOxymore de arriba.
Karl Richter
@KarlRichter Similar pero no igual. Ejecutar un programa de 32 bits en un SO de 64 bits no es lo mismo que ejecutar un programa de 32 bits en un entorno virtual (o SO) de 64 bits. Podría ejecutar un sistema operativo invitado de 32 bits y hubiera funcionado bien.
azuer88
-2

Creo que es un ERROR.

`/ bin / bash '

pero no

'bin / bash'


fuente