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ローダーが読み取っているファイルまたは読み取ろうとしているファイルを追跡できます。

関連情報