chroot
コマンドを実行すると、エラーが表示されます。
failed to run command ‘/bin/bash’: No such file or directory
chroot
コマンドを実行すると、エラーが表示されます。
failed to run command ‘/bin/bash’: No such file or directory
回答:
このエラーは、chroot内に/bin/bash
ディレクトリがないことを意味します。ディレクトリ内の実行可能ファイル(または他のシェルの実行可能ファイル)を指すようにしてください。bash
chroot
/mnt/somedir/usr/bin/bash
その後実行した場合chroot /mnt/somedir /usr/bin/bash
/root/.bashrc
か、/root/.bash_profile
あなたの中にchroot
。これらのファイルの名前を一時的に変更できますか?また、それbash
が実行可能であることを確認できますchmod +x /chroot/bin/bash
か()?
私がいた/bin/bash
内部のディレクトリをchrootし、私はそれの内側/ libと/ lib64にありませんでした。chrootからのメッセージは、より説明的です。「そのようなファイルやディレクトリがない」とは、「これを実行できない...」という意味です。
/bin/bash
もちろんlibc、ld-linux、libdlなどに依存するldd /bin/bash
ため、必要なライブラリを確認するために使用できます。
1)mount -o bind
chrootの下でこれらのディレクトリを使用できます2)または、chrootされたenvが破損しないことを信頼していない場合、次のようにこれらのライブラリをchrootにコピーできます。
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
$SHELL
デフォルトで環境変数に設定されているシェルを起動しようとしますが、新しいルートディレクトリでシェルを探しますが/bin/bash
、これにはが含まれていないようであるため、起動できません。
chrootにパラメーターとして追加するだけで、新しいルート内で別のプログラムを開始するように指示できます。
chroot /your/new/root /bin/foo --options...
コマンドのパスは新しいルート内で解釈されるため、この例では、呼び出されるプログラムは実際には/your/new/root/bin/foo
リモートサーバーでchrootされたアカウントにsshしようとすると、同じエラーが発生していました。私の場合、リモートlib64ディレクトリに次のファイルがありませんでした。サーバーはCentos6.9
ld-linux-x86-64.so.2
以下を実行することで修正されました。
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
修正して、libとlib64の両方から何かが必要でした、そして私は正確に何を理解するのを気にしませんでした。(おそらく
クロスコンパイルを行う場合は、qemu-arm-static(私はarmhfでこれを行っています)を/ mnt / somedir / usrにコピーしたら、/ mnt / somedir / bin / bashを実行できるqemuシミュレーターを使用する必要があります/ binを使用すると、chrootを実行できます。
詳細はこちらをご覧ください:https : //blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html