2015-03-20 3 views
0

Я работаю в виртуальной среде, пытаясь запустить открытые инструменты vm в среде chroot. Я тестировал с bash и, похоже, работал нормально. Я использовал ./configure --options --prefix=/home/chroot_env для установки программы, затем с помощью ldd на vmtoolsd, я скопировал соответствующие библиотеки в каталог /lib.Запуск программы в среде chroot немедленно возвращается

Теперь, когда я начинаю chroot /home/chroot_env /bin/vmtoolsd, ничего не происходит, chroot возвращается напрямую. Запуск одного и того же двоичного файла в нормальной среде действительно работает.

У кого-то есть идея, почему он не работает, правильные библиотеки есть, и он работает с bash.

EDIT: strace показал, что vmtoolsd пытается получить доступ к /dev/console, я добавил mount --bind /dev/ /home/chroot_env/dev/, но он по-прежнему не работает.

EDIT2: еще один strace показал, что он ищет динамический динамический плагин, я добавил его, и это сработало, вывод strace отлично подходит для отладки такой проблемы!

+0

Имеет ли ваш '/ home/chroot_env' достаточный rootfs? Я имею в виду, есть ли у него необходимые инструменты, такие как '/ home/chroot_env/bin/bash','/home/chroot_env/bin/vmtoolsd' и т. Д.? Имеет ли он также необходимые общие библиотеки и т. Д.? – anishsane

+0

На самом деле я добавил bash и vmtoolsd в правильные каталоги и скопировал необходимые библиотеки, может быть отсутствующий двоичный файл, но я не знаю способа найти его. – user3779430

+0

Посмотрите, можете ли вы ['ldd'] (http://man.he.net/?section=all&topic=ldd) работать внутри chroot ... – anishsane

ответ

1

Когда вы запускаете программу и ничего не происходит, вы всегда можете запустить ее с помощью strace, чтобы увидеть, какие системные вызовы сделаны. Это простой способ получить список открываемых файлов (обычный или нет). В вашем случае убедитесь, что ваша программа не пытается получить доступ к файлу, который не находится в chroot.

Смежные вопросы