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


Respostas:


22

Verifique se você está usando o Live CD certo. 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 o código de 64 bits, portanto verifique sua arquitetura.

Supondo que você montou seu sistema como chroot em / media / sda1 , para determinar a arquitetura, você pode:

ls /media/sda1/*

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


É, mas ainda não pode fazer chroot
Starx

2

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

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin

1

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

Se você criou sua prisão usando algo parecido com isto:

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 para o seu problema, tente:

cp -r /bin /lib /mnt/temp

Isso deve permitir que você faça chroot com êxito, quando você pode fazer outras coisas.

No entanto, existem cerca de um milhão de coisas erradas ao fazer isso, e quase certamente você não deseja fazer isso. Use minbase ao criar sua prisão ou instale o ubuntu em um alvo em branco (por exemplo, uma máquina virtual) e crie um arquivo tar de todo o sistema no qual você descompactará /mnt/temp.


0

Na verdade, essa é uma incompatibilidade de 64 bits e 32 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á bom, todos os comandos ainda falham. Você teria que copiá-los por toda parte.


-1

No meu caso, eu estava tentando criar uma versão chroot do Linux de 64 bits, mas meu Linux atual era de 32 bits.

Eu havia montado uma imagem de disco (imagem principal, para replicação em várias máquinas).


Mesma resposta que a do GrandOxymore acima.
Karl Richter

@KarlRichter Semelhante, mas não o mesmo. Executar um programa de 32 bits em um sistema operacional de 64 bits não é o mesmo que executar um programa de 32 bits em um ambiente virtual (ou SO) de 64 bits. Eu poderia executar um sistema operacional convidado de 32 bits e teria funcionado bem.
precisa saber é o seguinte

-2

Eu acho que é um erro.

`/ bin / bash '

mas não

'bin / bash'

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.