Buildrootとinitramfsを使用して構築された組み込みシステムのセットアップがあります。これは、/etc/
および/var
ディレクトリをマウントするための個別のext3パーティションと、データを格納するためのカスタムディレクトリを作成したコンパクトフラッシュデバイスで実行されます。これが良いアイデアかどうかは完全にはわかりませんが、システムログ出力にアクセスする必要があります。また、ここで静的IPアドレスを構成する必要があるため、/etc
内のファイルを変更できる必要があります。 /etc/network/interfaces
ファイルを編集してIPを設定すると、/etc
の内容を手動で編集する必要がなくなるため、デバイスがフィールドにないときにこのマウントを読み取り専用にするかどうか疑問に思いました。良い考えですか、それとも私のシステム上の他のアプリケーションが/etc
内のファイルに書き込む必要がある可能性があるかどうか?私はかなり最小限のシステムを実行していますが、実際にはdropbearとbusybox(およびデバイスを制御するカスタムコントローラーアプリケーション)だけが実行されています。私はさまざまなフォーラムやサイトを見回してきましたが、このアイデアはあまり議論の余地がないようですが、私の知識はかなり限られています。読み取り専用としてマウントしてみるだけでもいいのですが、静かに壊れてしまう可能性があるので、悪い考えですか?
読み取り専用の/etc
は、組み込みデバイスでますます一般的になっています。まれに変更される/etc
は、デスクトップおよびサーバーのインストールでもますます一般的になり、/etc/mtab
や/etc/resolv.conf
などのファイルは別のファイルシステムに配置され、/etc
にシンボリックリンクされます(ファイルが/etc
は、ソフトウェアをインストールするとき、またはコンピューターの構成を変更するときに変更する必要がありますが、USBドライブをマウントするとき、またはラップトップで別のネットワークに接続するときは変更しないでください。
新たな標準は、tmpfsファイルシステムを/run
にマウントし、シンボリックリンクを/etc
のようにすることです。
/etc/mtab -> /run/mtab
/etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
既存のシステムまたは組み込みシステムでは、tmpfsが/dev/shm
または/lib/init/rw
または/var/run
などの別の場所にマウントされている場合があります。
/etc
を読み取り専用にする場合の問題は、これにより、変更できるファイルのセットがロックされることです。
この問題を回避する別のアプローチは、ルートファイルシステムをinitramfsにすることです。これは、カーネルイメージの隣に保存され、ブートローダーによってロードされるアーカイブです。 RAMに解凍され、ファイルシステムのルートのルートになります。initramfsをそのままにしておく場合は、大きすぎないようにする必要があります(貴重なものを使い果たしているため) RAM)、ただし、BusyBoxバイナリといくつかの構成ファイルはRAMの許容可能な使用法である可能性があります。
別のアプローチは、読み取り専用のルートファイルシステムに加えて、読み取り/書き込みファイルシステムの ユニオンマウント を使用することです。
これはディストリビューション固有ですが、私が考えることができるいくつかのことがあります。
/etc/mtab
、/etc/adjtime
、および/etc/resolv.conf
は、変更が必要な可能性のある一般的なファイルです。 /etc/motd
と/etc/issue
も同様である可能性があります。 cups
は、その構成ファイルの一部もそれ自体で更新します。 /etc
にもnologin
ファイルを作成したい場合があります。
ほとんどの場合、ファイルを/var
の下のシンボリックリンクに置き換えることができます。
変更されているnothingがあることを確認してください。 (ls(1)によって報告された)最後の変更時間で十分です。現在の多くのLinuxディストリビューションは、すでに(またはほぼ)存在しているはずです。読み取り専用にして、ログで不満を探すことができます。
OTOH、/ etcはかなり小さいので、そのアカウントでR/Wスペースを無駄にすることはあまり意味がありません。