【问题标题】:Starting a program in a chroot environment returns immediately在 chroot 环境中启动程序会立即返回
【发布时间】: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,我相应地编辑了我的帖子。

标签: linux bash chroot


【解决方案1】:

当您运行一个程序但没有任何反应时,您始终可以使用strace 运行它,以查看进行了哪些系统调用。这是获取打开的文件(常规或非常规)列表的简单方法。在您的情况下,请检查您的程序是否不会尝试访问不在 chroot 中的文件。

【讨论】:

    猜你喜欢
    • 2023-02-24
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2017-12-11
    • 2011-01-09
    • 2018-02-09
    相关资源
    最近更新 更多