
私はこのチュートリアルの指示に従っていましたHOWTO: Live CD から Grub 2 を削除して再インストールする、ステップ1でエラーが発生したとき、コマンドを実行した際に
sudo chroot /mnt/temp
エラーは次の通りです:
chroot: failed to run command `/bin/bash': Exec format error
それはどこから来たのですか? どうすれば通り抜けられるのですか?
答え1
適切な Live CD を使用していることを確認します。たとえば、64 ビット CD ではなく 32 ビット CD を使用していないことを確認します。64 ビット コードを実行するには 64 ビット カーネルが必要なので、アーキテクチャを確認してください。
システムをchrootでマウントしたと仮定します/メディア/sda1アーキテクチャを決定するには、次の操作を実行します。
ls /media/sda1/*
出力にlib64が表示されている場合は、おそらく64ビットシステムです。
答え2
armhf arch のイメージを作成するときにも同じ問題が発生しました。インストールしてqemu-user-static
から、chroot bin フォルダーにコピーする必要がありました。
sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin
走らなければならないかもしれない
systemctl restart systemd-binfmt.service
そうすれば、環境にchrootできるはずです
答え3
このエラーは、jail ( /mnt/temp
) に bash シェルが含まれていないか、bash シェルを実行するために必要なライブラリが含まれていないことを意味します。
次のような方法で jail を作成した場合:
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
。
答え4
確かにこれは 64 ビットと 32 ビットの非互換性です。
ただし、
cp /bin/bash /mount/temp/tmp
(32ビットexecをtmp
ディレクトリの新しいルートにコピーします
chroot /mount/temp /tmp/bash
chroot
問題ありませんが、すべてのコマンドは失敗します。すべてをコピーする必要があります。