/ var / runが/ runに移行されたのはなぜですか?


66

Ubuntu 11.10 Oneiricの技術概要から:

Ubuntuの11.10から離れて移動した/var/run/var/lockそして/dev/shm、現在使用し/run/run/lock及び/run/shm代わりに(それぞれ)。

  • アプリケーションでこれらのパスをハードコーディングしていますが、なぜこの変更がOneiricに加えられたのですか?
  • アプリケーションに後方互換性と前方互換性を持たせるにはどうすればよいですか?の存在を最初にチェックして/runから、次にチェックする以外のより良い方法はあり/var/runますか?

回答:


58

その目的は、tmpfsファイルシステムの数を減らすことです。11.04では、およびに個別のtmpfsファイルシステムがあります。これらのディレクトリがすべて単一の親ディレクトリの下にある場合、単一のディレクトリのみが必要になります。また、再起動後も保持されるべきではない、さらなるランタイム状態データの明確な場所を提供します。/var/lock/var/run/dev/shmtmpfs

アプリケーションがファイルの正規のパスに依存しない限り、古い場所は新しい場所にシンボリックリンクされるため、アプリケーションは修正なしで実行する必要があります。AppArmorポリシーは、実際のパス名に依存するケースの1つであり、具体的に言及された理由です。

次のリンクは、理論的根拠の説明に役立つはずです。


36
  1. /run 一時的な状態ファイル、つまり、ブートプロセスの初期段階で書き込む必要がある場合とそうでない場合があり、再起動後も保持する必要がないランタイム情報を含むファイルのストレージ用の新しいクロスディストリビューションtmpfsの場所です。

    作る/runディレクトリが利用可能にすることは歩近づいのような任意の不格好な回避策を必要とせずに、ルートファイルシステムマウント読み取り専用で、通常、システムを使用することが可能である点に私たちをもたらしaufs/unionfsオーバーレイ。

    /run Filesystem Hierarchy Standardで説明されているいくつかの既存の場所を置き換えます。

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[現在、Debianのみがこれを行う予定です]
    • /tmp/run/tmp[オプション; 現在、Debianのみがこれを提供する予定です]
    • /run また、一時ファイルに使用されている他のいくつかの場所を置き換えます。

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • 書き込み可能なファイル/etc/run/*

    (したがって、これらも同様に移動することが期待できます)。

    ソース:debianリリースの目標

  2. これらのディレクトリを変数に設定し、これらの変数を使用するようにコードを変更し、それが使用されているシステムに基づいて変数を変更するソフトウェアでパーツを作成することをお勧めします(しかし、すでに知っています)。


1
の下にある書き込み可能なファイルとはどういう意味ですか/etc。それらはすべて、再起動後も持続する必要がありますか?これは単なる一般的なconfファイルです。
エヴァンキャロル

6
ああなるほど。三つのファイルの下に/etc/etc/lvm/cache/ /etc/mtab /etc/network/run/ifstateそしてすぐに/etc/adjtime/etcそもそも彼らがいるのは悪いことだったと思います。
エヴァンキャロル


3

注:/ runの導入以来、小さな構成では問題が発生する可能性があります。私のUbuntuサーバーは256Mo RAMで、/ runはデフォルトで49Moに設定されています。
起動時に、ファイルシステムがいっぱいになるまでいっぱいになります。
fstabで変更を加えても、tempfs / runサイズが大きくなることはありません。ggで見つけた他の手順も同様です。
initスクリプトを追加する解決策を見つけました 。起動時に拡張/etc/rc.localする行 mount -t tmpfs tmpfs /run -o remount,size=85Mです。(85Mは私のconf用です。)


2

これらの/runパスをハードコーディングしないでください!

  • を使用します/var/run/run該当する場合、シンボリックリンクが配置されるためです。
  • /var/lock 上記と同じです
  • ハードコーディングしない/dev/shmで、常にshm_openetcなどを使用してください(posix API)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.