このチュートリアルの指示に従っていました HOWTO:Live CDからGrub 2をパージして再インストールする 、ステップ1でコマンドを起動したときにエラーが発生したとき
Sudo chroot /mnt/temp
エラーは次のとおりです。
chroot: failed to run command `/bin/bash': Exec format error
それはどこから来たのですか?どうすれば通過できますか?
適切なLive CDを使用していることを確認します。たとえば、64ビットCDではなく32ビットCDを使用していないことを確認します。 64ビットコードを実行するには64ビットカーネルが必要なので、アーキテクチャを確認してください。
システムを/ media/sda1にchrootするようにマウントしたと仮定すると、次のことができるアーキテクチャを決定できます。
ls /media/sda1/*
出力にlib64が表示されている場合は、おそらく64ビットシステムです
Armhf Archのイメージを作成するときにも同じ問題がありました。 qemu-user-static
をインストールしてから、chroot binフォルダーにコピーする必要がありました。
Sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
このエラーは、jail(/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
に解凍します。
実際、これは64ビット、32ビットの非互換性です。
とはいえ
cp /bin/bash /mount/temp/tmp
(32ビットexecをtmp
ディレクトリの新しいルートにコピーします
chroot /mount/temp /tmp/bash
chroot
は問題ありませんが、すべてのコマンドは引き続き失敗します。それらをすべてコピーする必要があります。