読み取り専用のファイルシステム(Raspbian)を作成しようとしています。一般的な方法の1つは、tmpfsにディレクトリ(書き込み可能)を配置することです。
例として、私は以下を示唆するいくつかのチュートリアルを見つけました:
rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock
ln -s /tmp /var/lib/dhcp
ln -s /tmp /var/run
ln -s /tmp /var/spool
ln -s /tmp /var/lock
および/etc/fstab
:
tmpfs /tmp tmpfs nosuid,nodev 0 0
tmpfs /var/log tmpfs nosuid,nodev 0 0
tmpfs /var/tmp tmpfs nosuid,nodev 0 0
私が理解する限りでは:
/var/lib/dhcp/
、/var/run
、/var/spool
、および/var/lock
は、tmpfsとしてマウントされる/tmp
にシンボリックリンクされます/var/log
と/var/tmp
は別々のtmpfsにマウントされます/tmp
だけをtmpfsとしてマウントし、他のすべてのディレクトリにシンボリックリンクできないのはなぜですか?
真の正しいアプローチは1つではありませんが、より良いアプローチの1つは次のとおりです xenoidが提案 :/tmp
をtmpfs
としてマウントし、適切な権限でサブディレクトリを作成します。次に、/var
の適切なサブディレクトリをそれらにリンクします。
一般に、手動でサイズを指定しない限り、複数の一時ファイルシステムをマウントすることはおそらく良い考えではありません。デフォルトでは(man tmpfs
によると)、それぞれが使用可能なRAM)の半分の量を取得します。この例では、マウント時の空きメモリの合計87.5%を使用し、それぞれが連続するインスタンスは前のインスタンスの半分のサイズです。これは非常に奇妙なことです。
別の方法として、本当に一時ファイルシステムのみが必要な場合は、単一の大きなtmpfs
を作成し、 nionFS などを使用して、/
の書き込み可能な一時オーバーレイを作成できます。基本的に書き込み可能な/
(とにかく通常のセキュリティを提供する権限を持つ)を使用することで失われる可能性のある安全性は、再起動時にすべてがクリアされることによって相殺されます。