當我運行chroot
命令時出現錯誤:
failed to run command ‘/bin/bash’: No such file or directory
答案1
這個錯誤的意思是沒有/bin/bash
目錄內部chroot。確保將其指向bash
可執行檔(或其他 shell 的)所在chroot
目錄。
如果有/mnt/somedir/usr/bin/bash
則執行chroot /mnt/somedir /usr/bin/bash
.
除了上述之外,您還需要新增libc
目錄依賴項,如答案所述這裡。
答案2
我有內部 chrooted 目錄,但裡面/bin/bash
沒有/lib
and 。/lib64
來自的訊息chroot
可能更具描述性。 「沒有這樣的檔案或目錄」實際上意味著「我無法運行這個...」。
/bin/bash
當然取決於libc
、ld-linux
等libdl
,您可以使用它ldd /bin/bash
來查看它需要哪些庫。
- 您可以
mount -o bind
在這些目錄下chroot
chroot
或者,如果您不信任 chrooted env 不會損壞它們, 則可以將這些庫複製到,如下所示:cp -a /usr rootfs/ cp -a /lib rootfs/ cp -a /lib64 rootfs/
答案3
chroot
嘗試啟動預設情況下在環境變數中設定的 shell $SHELL
,但它會在新的根目錄中尋找它,該目錄似乎不包含/bin/bash
,因此無法啟動。
您可以透過簡單地將 chroot 新增為參數來告訴 chroot 在新根目錄中啟動另一個程式:
chroot /your/new/root /bin/foo --options...
請注意,命令的路徑被解釋為裡面你的新根,所以在這個例子中被呼叫的程式實際上是在/your/new/root/bin/foo
答案4
當嘗試 ssh 到遠端伺服器上的 chroot 帳戶時,我遇到了同樣的錯誤。就我而言,我在遠端 lib64 目錄中缺少以下檔案。伺服器是Centos6.9
ld-linux-x86-64.so.2
透過執行以下命令修復了該問題:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/