Переходит ли загрузчик Linux (ld.so) по символическим ссылкам?

Переходит ли загрузчик Linux (ld.so) по символическим ссылкам?

Я столкнулся с проблемой, пытаясь переместить файл 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для отслеживания того, какие файлы загрузчик считывает или пытается считывать.

Связанный контент