立即在 chroot 环境 returns 中启动程序
Starting a program in a chroot environment returns immediately
我在虚拟环境中工作,试图在 chroot 环境中启动 open vm 工具。
我用 bash 测试过,它似乎工作正常。
我使用./configure --options --prefix=/home/chroot_env
安装程序,然后在vmtoolsd上使用ldd,将相应的库复制到/lib
目录。
现在当我启动 chroot /home/chroot_env /bin/vmtoolsd
时,没有任何反应,直接 chroot returns。在正常环境中启动相同的二进制文件确实有效。
有人知道为什么它不起作用吗?那里有正确的库,并且它可以与 bash 一起使用。
编辑:strace 显示 vmtoolsd 正在尝试访问 /dev/console
,我添加了 mount --bind /dev/ /home/chroot_env/dev/
但它仍然失败。
EDIT2:另一个 strace 显示它正在寻找另一个动态加载的插件,我添加了它并且它起作用了,结论 strace
非常适合调试此类问题!
当您 运行 一个程序并且没有任何反应时,您总是可以 运行 它与 strace
以查看进行了哪些系统调用。这是获取打开的文件(常规或非常规)列表的简单方法。对于您的情况,请检查您的程序是否尝试访问不在 chroot 中的文件。
我在虚拟环境中工作,试图在 chroot 环境中启动 open vm 工具。
我用 bash 测试过,它似乎工作正常。
我使用./configure --options --prefix=/home/chroot_env
安装程序,然后在vmtoolsd上使用ldd,将相应的库复制到/lib
目录。
现在当我启动 chroot /home/chroot_env /bin/vmtoolsd
时,没有任何反应,直接 chroot returns。在正常环境中启动相同的二进制文件确实有效。
有人知道为什么它不起作用吗?那里有正确的库,并且它可以与 bash 一起使用。
编辑:strace 显示 vmtoolsd 正在尝试访问 /dev/console
,我添加了 mount --bind /dev/ /home/chroot_env/dev/
但它仍然失败。
EDIT2:另一个 strace 显示它正在寻找另一个动态加载的插件,我添加了它并且它起作用了,结论 strace
非常适合调试此类问题!
当您 运行 一个程序并且没有任何反应时,您总是可以 运行 它与 strace
以查看进行了哪些系统调用。这是获取打开的文件(常规或非常规)列表的简单方法。对于您的情况,请检查您的程序是否尝试访问不在 chroot 中的文件。