コンテキスト:組み込みシステム、読み取り専用MMC with tmpfs
オーバーレイ。すべてがRAMに書き込まれ、再起動すると消えます。
systemd
は、多数のtmpfs
マウントを作成することを主張しています(少なくとも/run
/run/lock
/run/shm
と/tmp
を頭のてっぺんから、おそらく他の人から) )、これは読み取り専用ファイルシステム全体がすでにtmpfs
でオーバーレイされているため、まったく役に立ちません。
問題:これは非常に制約のある組み込みシステムであり、RAMがカウントされます。異なる場所で複数のtmpfs
を管理するオーバーヘッドを回避し、すべてを配置するだけです。メインのtmpfs
オーバーレイ。
残念ながら、これまでのところ、/tmp
(systemctl mask systemd-tmpfiles*
)を無効にできただけですが、/run
階層には何もしません。
それらの設定が隠されている場所はありますか?
頭のてっぺんから:
必須:
systemdの標準機能はcgroupに依存しているため、/sys/fs/cgroup
を無効にすることはできません。
/dev
は無効にできません。すべきではありません通常のtmpfsではないため無効にできます。これはdevtmpfsであり、カーネルがホットプラグされたデバイスのノードを自動的に作成します。 (これはudevがなくても機能します。)
難しい:
/run
を無効にすることはできません。 systemdのsrc/core/mount-setup.c
のテーブルからパッチを適用できますが、その場所が同じtmpfsのようなプロパティを提供している場合に限ります。
/run/shm
も無効にすることはできません。これは、glibcがPOSIX共有メモリを実装するために必要なためです。繰り返しになりますが、場所がon tmpfsのままである限り、src/core/mount-setup.c
からパッチを適用できます。このパスはカスタム配布パッチであることに注意してください。従来、このファイルシステムは/dev/shm
にあります。
オプション:
/dev/mqueue
、/dev/hugepages
は、削除可能な.mount
ユニットファイルに従ってマウントされます。
/run/lock
は、デフォルトでは実際にはtmpfsではありません。その場所に何かがマウントされているのを見つけた場合、それはディストリビューションのカスタム追加である必要があり、run-lock.mount
ユニットを削除することで無効にできる可能性があります。
/tmp
はオプションであり、tmp.mount
ユニットに従ってマウントされます。そのユニットファイルを削除できます。
Tmpfsのマウントにメモリページよりもコストがかかるとしたら、私は非常に驚きます。