Durante un tentativo di chroot, ho ricevuto questo errore: "chroot: impossibile eseguire il comando '/ bin / bash': errore di formato Exec"

18

Stavo seguendo le istruzioni di questo tutorial HOWTO: Elimina e reinstalla Grub 2 dal Live CD , quando Ho riscontrato un errore nel passaggio 1, in quanto ho lanciato il comando

sudo chroot /mnt/temp

L'errore era il seguente:

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

Da dove viene? Come faccio a passare?

    
posta Grand Oxymore 21.11.2010 - 12:29

6 risposte

20

Verifica di utilizzare il Live CD corretto. Ad esempio, verificare che non si stia utilizzando un CD a 32 bit anziché un CD a 64 bit. Hai bisogno di un kernel a 64 bit per eseguire codice a 64 bit, quindi controlla la tua architettura.

Supponendo che tu abbia installato il tuo sistema per eseguire il chroot in / media / sda1 , per determinare l'architettura puoi:

ls /media/sda1/*

se vedi lib64 nell'output, probabilmente è un sistema a 64 bit

    
risposta data Grand Oxymore 21.11.2010 - 12:30
1

L'errore indica che il tuo jail ( /mnt/temp ) non contiene una shell bash, o non contiene le librerie richieste per eseguire la shell bash.

Se hai creato la tua prigione usando qualcosa del genere:

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

Probabilmente intendevi farlo invece:

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

Tuttavia, come risposta tecnica al tuo problema, prova:

cp -r /bin /lib /mnt/temp

Questo dovrebbe consentire di eseguire il chroot con successo, a quel punto puoi fare altre cose.

Tuttavia ci sono circa un milione di cose sbagliate, e quasi certamente non vuoi farlo. Usa minbase quando crei la tua jail, o installa ubuntu su una destinazione vuota (ad esempio una macchina virtuale) e crea un archivio tar dell'intero sistema che poi decomprimi in /mnt/temp .

    
risposta data Doug 19.04.2011 - 06:26
1

Ho avuto lo stesso problema quando creavo un'immagine per armhf arch. Ho dovuto installare qemu-user-static e quindi copiarlo nella cartella bin chroot.

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

In effetti questa è un'incompatibilità a 32 bit a 32 bit.

Anche se con

cp /bin/bash /mount/temp/tmp

(copia exec a 32 bit nella nuova radice nella directory tmp

chroot /mount/temp /tmp/bash

chroot va bene, tutti i comandi continuano a fallire. Dovresti copiarli dappertutto.

    
risposta data cosine 10.11.2014 - 22:13
-1

Nel mio caso, stavo cercando di eseguire il chroot in una versione a 64 bit di Linux, ma il mio attuale Linux era a 32 bit.

Ho montato un'immagine del disco (immagine master, per la replica su più macchine).

    
risposta data azuer88 02.03.2016 - 07:41
-2

Penso che sia un BUG.

'/ bin / bash'

ma non

'bin / bash'

    
risposta data weakdancer 18.01.2011 - 08:37

Leggi altre domande sui tag