chrootの試行中に、次のエラーが表示されました。「chroot:コマンド '/ bin / bash'の実行に失敗しました:Execフォーマットエラー」


20

このチュートリアルHOWTOの指示に従っていたコマンドを起動したときに、ステップ1でエラーが発生したときに、Live CDからGrub 2をパージして再インストールする

sudo chroot /mnt/temp

エラーは次のとおりです。

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

それはどこから来たのですか?どうすれば通過できますか?

回答:


22

適切なLive CDを使用していることを確認します。たとえば、64ビットCDではなく32ビットCDを使用していないことを確認します。64ビットコードを実行するには64ビットカーネルが必要なので、アーキテクチャを確認してください。

システムを/ media / sda1に chrootするようにマウントしたと仮定して、アーキテクチャを決定します:

ls /media/sda1/*

出力にlib64が表示されている場合、おそらく64ビットシステムです


しかし、まだchrootできません
Starx

2

armhfアーチのイメージを作成するときにも同じ問題がありました。私はインストールしなければならなかったqemu-user-staticしてから、chroot binフォルダーにコピーする必要がありました。

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

1

エラーは、あなたの刑務所(/mnt/temp)にbashシェルが含まれていないか、bashシェルの実行に必要なライブラリが含まれていない。

このようなものを使用して刑務所を作成した場合:

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

おそらく代わりにこれを行うつもりでした:

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

ただし、問題に対する技術的な回答として、次を試してください。

cp -r /bin /lib /mnt/temp

これにより、正常にchrootできるようになり、その時点で他のことができるようになります。

しかし、それを行うことには約100万の問題があり、ほぼ間違いなくあなたはそれをしたくありません。jailを作成するときはminbaseを使用するか、空のターゲット(仮想マシンなど)にubuntuをインストールし、システム全体のtarアーカイブを作成してからに解凍し/mnt/tempます。


0

実際、これは64ビット、32ビットの非互換性です。

とはいえ

cp /bin/bash /mount/temp/tmp

(32ビットexecをtmpディレクトリの新しいルートにコピーします

chroot /mount/temp /tmp/bash

chroot問題ありませんが、すべてのコマンドは引き続き失敗します。それらをすべてコピーする必要があります。


-1

私の場合、64ビットバージョンのLinuxにchrootしようとしていましたが、現在のLinuxは32ビットでした。

ディスクイメージ(複数のマシンで複製するためのマスターイメージ)をマウントしました。


上記の@GrandOxymoreと同じ答え。
カールリヒター

@KarlRichter似ていますが、同じではありません。64ビットOSで32ビットプログラムを実行することは、64ビット仮想環境(またはOS)で32ビットプログラムを実行することとは異なります。32ビットのゲストOSを実行できれば、問題なく実行できたでしょう。
azuer88

-2

私はバグだと思います。

`/ bin / bash '

だがしかし

'bin / bash'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.