/etc/ld.so.conf
только влияет на динамического компоновщика, т.е. где библиотеки разыскиваются во время выполнения. То, когда Вы создаете исполняемый файл, что имеет значение, является путями где ld
ищет библиотеку. Обычный способ указать их состоит в том, чтобы передать -L
опция; большинство configure
сценарии имеют способ передать дополнительный -L
опции. Обычно нет способа изменить путь поиска по умолчанию для ld
. Вы могли бы изучить изменение gcc файла спецификации, но это включит изменение файла под /usr
, не под /etc
.
Учитывая Вашу немного неловкую установку, можно хотеть изучить объединение, монтируются /mnt
выше /usr
. Я не знаю, какое объединение монтируют возможности предложения CentOS если любой (конечно, существуют сторонние опции, собственный компонент или на основе FUSE).
chroot /path/to/fs /bin/ash
Посмотрите chroot
страница справочника для деталей.
Вам нужно 'ldd busybox' и скопировать общие библиотеки, на которые он ссылается, в chroot. Используйте 'cp -L src dst' на libs, потому что они обычно упрощены.
Busybox не включает скрипт ldd. Вместо этого вы можете запустить его так.
LD_TRACE_LOADED_OBJECTS=1 /bin/busybox
libresolv.so.2 => /lib/libresolv.so.2 (0xb6ece000)
libc.so.6 => /lib/libc.so.6 (0xb6d8c000)
/lib/ld-linux-armhf.so.3 (0xb6ef2000)
Как видите, в этом случае busybox зависит от нескольких библиотек. Поэтому я создал структуру каталогов, как показано ниже, и смог запустить команду ls.
# pwd
/home/<jail>
# ls -R
.:
bin lib sbin
./bin:
busybox login ls sh
./lib:
ld-linux-armhf.so.3 libc.so.6 libresolv.so.2
...
# chroot /home/<jail>/ ls
bin lib sbin
ash -> busybox
. Так или иначе, просто выполненныйchroot /path/to/fs /bin/busybox ash
затем. – Stéphane Chazelas 13.12.2012, 17:17