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


20

Stavo seguendo le istruzioni di questo tutorial HOWTO: Elimina e reinstalla Grub 2 dal Live CD , quando ho riscontrato un errore al passaggio 1, mentre avviavo 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 posso superare?

Risposte:


22

Verifica di utilizzare il Live CD giusto. Ad esempio, verificare di non utilizzare un CD a 32 bit anziché un CD a 64 bit. È necessario un kernel a 64 bit per eseguire il codice a 64 bit, quindi controlla la tua architettura.

Supponendo che tu abbia montato il tuo sistema per il chrooting in / media / sda1 , per determinare l'architettura che puoi:

ls /media/sda1/*

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


È ma non può ancora chroot
Starx

2

Ho avuto lo stesso problema durante la creazione di un'immagine per armhf arch. Ho dovuto installare qemu-user-statice quindi copiarlo nella cartella bin chroot.

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

1

L'errore indica che jail ( /mnt/temp) non contiene una shell bash o non contiene le librerie necessarie 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 fare questo 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 permetterti di chroot con successo, a quel punto puoi fare altre cose.

Ci sono circa un milione di cose sbagliate nel farlo, e quasi certamente non lo vuoi fare. Usa minbase quando crei il tuo jail, o installa ubuntu su una destinazione vuota (es. Una macchina virtuale) e crea un archivio tar dell'intero sistema in cui poi decomprimerai /mnt/temp.


0

In effetti, si tratta di un'incompatibilità a 64 bit a 32 bit.

Anche se con

cp /bin/bash /mount/temp/tmp

(copia exec a 32 bit nella nuova radice nella tmpdirectory

chroot /mount/temp /tmp/bash

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


-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.

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


Stessa risposta di @ GrandOxymore sopra.
Karl Richter,

@KarlRichter Simile ma non uguale. L'esecuzione di un programma a 32 bit in un sistema operativo a 64 bit non equivale all'esecuzione di un programma a 32 bit in un ambiente virtuale (o sistema operativo) a 64 bit. Potrei eseguire un sistema operativo guest a 32 bit e avrebbe funzionato bene.
Azuer88,

-2

Penso che sia un BUG.

`/ Bin / bash'

ma no

'Bin / bash'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.