在 chroot 环境中启动程序会立即返回
Posted
技术标签:
【中文标题】在 chroot 环境中启动程序会立即返回【英文标题】:Starting a program in a chroot environment returns immediately 【发布时间】:2015-03-20 09:46:26 【问题描述】:我在虚拟环境中工作,试图在 chroot 环境中启动打开的 vm 工具。
我用 bash 进行了测试,它似乎工作正常。
我使用./configure --options --prefix=/home/chroot_env
安装程序,然后在vmtoolsd上使用ldd,将对应的库复制到/lib
目录下。
现在当我启动chroot /home/chroot_env /bin/vmtoolsd
时,没有任何反应,chroot 直接返回。在正常环境中启动相同的二进制文件确实有效。
有人知道它为什么不工作吗,那里有正确的库,并且它可以与 bash 一起工作。
编辑:strace 显示 vmtoolsd 正在尝试访问 /dev/console
,我添加了 mount --bind /dev/ /home/chroot_env/dev/
但它仍然失败。
EDIT2:另一个 strace 显示它正在寻找另一个动态加载的插件,我添加了它并且它工作了,结论 strace
非常适合调试此类问题!
【问题讨论】:
你的/home/chroot_env
有足够的rootfs吗?我的意思是,它是否有必要的工具,例如/home/chroot_env/bin/bash
、/home/chroot_env/bin/vmtoolsd
等?它是否还有必要的共享库等?
我确实将 bash 和 vmtoolsd 添加到了正确的目录中,并复制了所需的库,可能缺少二进制文件,但我不知道如何找到它。
看看你能不能让ldd
在chroot里面工作...
你试过用 strace 看看会发生什么吗?
@Maxime strace 显示 vmtoolsd 正在尝试访问 /dev/console,我相应地编辑了我的帖子。
【参考方案1】:
当您运行一个程序但没有任何反应时,您始终可以使用strace
运行它,以查看进行了哪些系统调用。这是获取打开的文件(常规或非常规)列表的简单方法。在您的情况下,请检查您的程序是否不会尝试访问不在 chroot 中的文件。
【讨论】:
以上是关于在 chroot 环境中启动程序会立即返回的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 SharedPreferences 在应用程序启动后没有立即加载?