%20%D0%BF%D0%BE%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%D0%BC%3F.png)
Я столкнулся с проблемой, пытаясь переместить файл ld.so.cache в другое место. Я попытался создать для него символическую ссылку в его предыдущем месте -- /etc/
-- но, похоже, загрузчик не может перейти по этой символической ссылке. Кроме того, жесткая ссылка нежизнеспособна, поскольку новое место находится на другом разделе.
Моя конечная цель — иметь корневую файловую систему, доступную только для чтения, и это, возможно, последнее, что меня останавливает.
Заранее спасибо!
решение1
Я могу подтвердить, что по крайней мере в Glibc, ld.so
следует символическим ссылкам при открытии /etc/ld.so.cache
. Код вelf/dl-cache.c
в функции _dl_load_cache_lookup
, ссылаясь на функцию _dl_sysdep_read_whole_file
изelf/dl-misc.c
. Эта функция открывает файл и отображает его в памяти; она ничего не делает с символическими ссылками.
Избежание символических ссылок потребовало бы дополнительных усилий, и я не могу придумать ни одной причины, по которой загрузчик мог бы это сделать.
Чтобы устранить проблему, вы можете использовать ее strace
для отслеживания того, какие файлы загрузчик считывает или пытается считывать.