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

17

Eu estava seguindo as instruções deste tutorial COMO: Limpar e reinstalar o Grub 2 do Live CD , quando Eu encontrei um erro no passo 1, quando lancei o comando

sudo chroot /mnt/temp

O erro foi o seguinte:

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

De onde isso vem? Como faço para passar?

    
por Grand Oxymore 21.11.2010 / 12:29

6 respostas

19

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 o código de 64 bits, então verifique sua arquitetura.

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

ls /media/sda1/*

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

    
por Grand Oxymore 21.11.2010 / 12:30
1

O erro significa que sua jaula ( /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 quis fazer isso:

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

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

cp -r /bin /lib /mnt/temp

Isso deve permitir que você execute chroot com sucesso, quando você poderá fazer outras coisas.

Existem cerca de um milhão de coisas erradas nisso, e quase certamente você não quer fazer isso. Use minbase quando você criar sua jaula, ou instale o ubuntu em um alvo em branco (por exemplo, uma máquina virtual) e crie um arquivo tar de todo o sistema que você então descomprime em /mnt/temp .

    
por Doug 19.04.2011 / 06:26
1

Eu tive o mesmo problema ao criar uma imagem para o armhf arch. Eu tive que instalar o qemu-user-static e copiá-lo para a pasta do chroot.

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
    
por Ismail Moukafih 30.11.2016 / 11:31
0

De fato, essa é 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 diretório tmp

chroot /mount/temp /tmp/bash

chroot está bom, todos os comandos ainda falham. Você teria que copiá-los todo.

    
por cosine 10.11.2014 / 22:13
-1

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

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

    
por azuer88 02.03.2016 / 07:41
-2

Eu acho que é um BUG.

'/ bin / bash'

mas não

'bin / bash'

    
por weakdancer 18.01.2011 / 08:37

Tags