Durante uma tentativa de chroot, recebi este erro: "chroot: falha ao executar o comando '/bin/bash': erro de formato Exec"

Durante uma tentativa de chroot, recebi este erro: "chroot: falha ao executar o comando '/bin/bash': erro de formato Exec"

Eu estava seguindo as instruções deste tutorialCOMO FAZER: Limpar e reinstalar o Grub 2 do Live CD, quando encontrei um erro na etapa 1, ao iniciar o comando

sudo chroot /mnt/temp

O erro foi o seguinte:

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

Onde é que isso veio? Como faço para passar?

Responder1

Verifique se você está usando o Live CD correto. Por exemplo, verifique se você não está usando um CD de 32 bits em vez de um CD de 64 bits. Você precisa de um kernel de 64 bits para executar código de 64 bits, então verifique sua arquitetura.

Supondo que você montou seu sistema para ser chrootado em/mídia/sda1, para determinar a arquitetura você pode:

ls /media/sda1/*

se você vir lib64 na saída, provavelmente é um sistema de 64 bits

Responder2

Eu tive o mesmo problema ao fazer uma imagem para o arco armhf. Tive que instalar qemu-user-statice copiá-lo para a pasta chroot bin.

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

Você pode ter que correr

systemctl restart systemd-binfmt.service

então você deve ser capaz de fazer chroot no ambiente

Responder3

O erro significa que seu jail ( /mnt/temp) não contém um shell bash ou não contém as bibliotecas necessárias para executar o shell bash.

Se você criou sua prisão usando algo assim:

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

Você provavelmente pretendia fazer isso:

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

No entanto, como resposta técnica ao seu problema, tente:

cp -r /bin /lib /mnt/temp

Isso deve permitir que você faça chroot com sucesso, e nesse ponto você poderá fazer outras coisas.

Porém, há cerca de um milhão de coisas erradas em fazer isso, e é quase certo que você não deseja fazer isso. Use o minbase ao criar sua prisão ou instale o Ubuntu em um destino em branco (por exemplo, uma máquina virtual) e crie um arquivo tar de todo o sistema, no qual você descompacta em /mnt/temp.

Responder4

Na verdade, esta é uma incompatibilidade de 32 bits de 64 bits.

Embora com

cp /bin/bash /mount/temp/tmp

(copia o exec de 32 bits para a nova raiz no tmpdiretório

chroot /mount/temp /tmp/bash

chrootestá bem, todos os comandos ainda falham. Você teria que copiá-los todos.

informação relacionada