Selama upaya chroot, saya mendapatkan kesalahan ini: "chroot: gagal menjalankan perintah '/ bin / bash': Kesalahan format Exec"

20

Saya mengikuti instruksi tutorial HOWTO ini: Membersihkan dan menginstal ulang Grub 2 dari Live CD , ketika saya menemukan kesalahan pada langkah 1, ketika saya meluncurkan perintah

sudo chroot /mnt/temp

Kesalahannya adalah sebagai berikut:

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

Dari mana datangnya? Bagaimana cara saya melewati?

Grand Oxymore
sumber

Jawaban:

22

Pastikan Anda menggunakan Live CD yang tepat. Misalnya, verifikasi Anda tidak menggunakan CD 32bit, bukan CD 64bit. Anda membutuhkan kernel 64bit untuk menjalankan kode 64bit, jadi periksalah arsitektur Anda.

Dengan asumsi Anda memasang sistem Anda untuk chroot di / media / sda1 , untuk menentukan arsitektur Anda dapat:

ls /media/sda1/*

jika Anda melihat lib64 di output, itu mungkin sistem 64bit

Grand Oxymore
sumber
Ini tetapi masih belum bisa chroot
Starx
2

Saya memiliki masalah yang sama ketika membuat gambar untuk armhf arch. Saya harus menginstal qemu-user-staticdan kemudian menyalinnya ke folder chroot bin.

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
Ismail Moukafih
sumber
1

Kesalahan ini berarti bahwa jail Anda ( /mnt/temp) tidak mengandung bash shell, atau tidak mengandung pustaka yang diperlukan untuk menjalankan bash shell.

Jika Anda membuat penjara menggunakan sesuatu seperti ini:

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

Anda mungkin bermaksud melakukan ini sebagai gantinya:

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

Namun, sebagai jawaban teknis untuk masalah Anda, cobalah:

cp -r /bin /lib /mnt/temp

Ini akan memungkinkan Anda melakukan chroot dengan sukses, pada titik mana Anda dapat melakukan hal-hal lain.

Ada sekitar sejuta hal yang salah dengan melakukan itu, dan hampir pasti Anda tidak ingin melakukan itu. Gunakan minbase ketika Anda membuat jail, atau instal ubuntu pada target kosong (mis. Mesin virtual) dan buat arsip tar dari seluruh sistem yang kemudian Anda dekompres ke dalamnya /mnt/temp.

Doug
sumber
0

Memang ini adalah ketidakcocokan 64-bit 64-bit.

Meskipun dengan

cp /bin/bash /mount/temp/tmp

(salinan 32-bit exec ke root baru di tmpdirektori

chroot /mount/temp /tmp/bash

chrootbaik-baik saja, semua perintah masih gagal. Anda harus menyalin semuanya.

kosinus
sumber
-1

Dalam kasus saya, saya mencoba chroot ke versi 64-bit Linux tetapi Linux saya saat ini 32-bit.

Saya telah memasang image disk (master image, untuk replikasi pada banyak mesin).

azuer88
sumber
Jawaban yang sama dengan @ GrandOxymore di atas.
Karl Richter
@KarlRichter Mirip tapi tidak sama. Menjalankan program 32bit dalam OS 64bit tidak sama dengan menjalankan program 32bit di lingkungan virtual 64bit (atau OS). Saya bisa menjalankan os guest 32bit dan itu akan berjalan dengan baik.
azuer88
-2

Saya pikir dalam adalah BUG.

`/ bin / bash '

tapi tidak

'bin / bash'


sumber