曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7424|回复: 0
打印 上一主题 下一主题

chroot: cannot run command `/bin/bash': No such file or directory

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-4-29 13:12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果只是单独 chroot 到一个空目录下会看到这样的出错信息:

# chroot chroot/
chroot: cannot run command `/bin/bash': No such file or directory



根据出错的提示知道是没有 bash ,因为 chroot 到一个新的根目录,那么这个新的根目录没有命令解析器肯定是不行的。解决的办法是将 bash 拷贝到你要 chroot 目录的 bin 目录下。但是在拷贝完后,再 chroot 一次,仍然发现还是同样的出错提示,这是因为 bash 的运行需要一些依赖库,通过 ldd 命令可以看到这些依赖库是什么:
# ldd /bin/bash
        linux-gate.so.1 =>  (0x001cf000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x07dbc000)
        libdl.so.2 => /lib/libdl.so.2 (0x009a4000)
        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0081b000)
        /lib/ld-linux.so.2 (0x007fc000)

所以我们需要将这些相关的库拷贝到要 chroot 目录下的相应位置中,比如也要在该目录中建立一个 lib 目录,然后将 libtermcap.so.2 等库拷贝到其中。这里需要注意的是,我们即使搜索全盘,都不会找到 linux-gate.so.1 这个文件,它只是个虚拟的DSO(virtual DSOdynamically shared object)---一个在每个进程的存储空间(process’ memory)指定的地址点被内核暴露出来的共享对象。也就是说它由内核提供,这里就无需关注太多。


当拷贝完其它的相关库文件到相应的目录后,再 chroot 一下就会看到:
[root@centos beyes]# chroot chroot/
bash-3.2#
bash-3.2# pwd
/

可见已经 chroot 成功,但这只是最基本的,很多命令你也无法运行,这同样是因为它们没有被拷贝进来。此时按 Ctrl + D 可以退出该 shell 环境。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 14:10 , Processed in 0.063712 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表