web-dev-qa-db-ja.com

systemd:役に立たないtmpfsを無効にする

コンテキスト:組み込みシステム、読み取り専用MMC with tmpfsオーバーレイ。すべてがRAMに書き込まれ、再起動すると消えます。

systemdは、多数のtmpfsマウントを作成することを主張しています(少なくとも/run/run/lock/run/shm/tmpを頭のてっぺんから、おそらく他の人から) )、これは読み取り専用ファイルシステム全体がすでにtmpfsでオーバーレイされているため、まったく役に立ちません。

問題:これは非常に制約のある組み込みシステムであり、RAMがカウントされます。異なる場所で複数のtmpfsを管理するオーバーヘッドを回避し、すべてを配置するだけです。メインのtmpfsオーバーレイ。

残念ながら、これまでのところ、/tmpsystemctl mask systemd-tmpfiles*)を無効にできただけですが、/run階層には何もしません。

それらの設定が隠されている場所はありますか?

1
syam

頭のてっぺんから:

必須:

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のマウントにメモリページよりもコストがかかるとしたら、私は非常に驚きます。

2
user1686