Sysfs

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

SysfsLinuxカーネル 2.6 によって提供される仮想ファイルシステムである。Sysfs はデバイスやドライバについての情報をカーネルモデルからユーザ空間へエクスポートし、設定のためにも使われる。BSD システムにある sysctl 機構に似ているが、分離した機構の代わりにファイルシステムとして実装されている。

歴史[編集]

2.5開発サイクル中、バージョン2.4における以下のいくつかの欠点を修正するために、Linux ドライバモデルが導入された。

  • ドライバとデバイスの関係を表す統一された方法が無かった。
  • 一般的なホットプラグ機構が無かった
  • procfs はたくさんの非プロセス情報で散らかっていた。

Sysfs はデバイスツリーにある情報をエクスポートするように設計されており、それはもはや procfs を散らかさないと考えられる。Sysfs は Patrick Mochel によって実装された。Maneesh Soni は後に大きなシステム上におけるメモリ使用量を減らすために sysfs の外部記憶装置パッチを書いた。

sysfs は元々 ramfs に基づくインメモリのファイルシステムである。ramfs は Linux 2.4.0 が安定化されていた頃に実装された。ramfs は当時新しかった VFS レイヤーを使って単純なファイルシステムを実装することがどれほど易しいのかだけを示したので、簡潔さの見本だった。単純さと VFS の使用のために、良いベースを提供し、他のインメモリベースのファイルシステムがそこから派生した。

sysfs は元々 ddfs (Device Driver Filesystem) と呼ばれており、始め、実装されているとき新しいドライバモデルをデバッグするために作成された。以前はデバイスツリーをエクスポートするために procfs を使うことでデバッグが行われていたが、リーナス・トーバルズからの強い要請の下で、ramfs に基づく新しいファイルシステムに変えられた。新しいドライバモデルが2.5.1あたりでカーネルにマージされるときまで、少しだけより説明的になるよう driverfs に名前が変えられた。

2.5 開発の次の年の間、デバイスモデルと driverfs の下部構造機能は他のサブシステムに有用であると分かり始めた。kobject が中心的なオブジェクト管理機構を提供するために開発され、サブシステムにとらわれないということを表すために driverfs は sysfs に名前が変更された。

技術的概観[編集]

ドライバモデルツリーに追加された個々のオブジェクト(ドライバ、クラスドライバを含むデバイス)に対して、sysfs 内にディレクトリが作られる。親と子の関係は(物理的な配置を反映して)/sys/devices/ の下のサブディレクトリに反映される。サブディレクトリ /sys/bus/シンボリックリンクが置かれており、どのようにデバイスが異なるバスに所属しているのかを反映している。/sys/block/ がブロックデバイスを含む一方で、/sys/class/ はネットワークのようなクラスによって分類されたデバイスを表している。

デバイスドライバやデバイスに対して、属性を作ることができる。これらは単純なファイルである。(重いパース処理が必要な procfs 内の一部のファイルとは異なり)それらは単一の値のみを含んだり単一の値を設定したりできるようにすべきであるということになっている。これらのファイルはデバイス個別のデバイスドライバのサブディレクトリに表れる。属性グループを使うことで、属性で満たされたサブディレクトリも作成できる。

いくつかのバス[編集]

PCI[編集]

PCI デバイスについての情報をエクスポートする

USB[編集]

USB デバイスと USB ホストの両方を含む

S/390 バス[編集]

S/390 アーキテクチャが他に見つからないデバイスを含んでいるとき、特別なバスが作成される。

  • css: サブチャンネルを含む(現在、提供される唯一のドライバは I/O サブチャンネル向けである)。
  • ccw: チャンネル接続デバイスを含む(CCW によって駆動される)。
  • ccwgroup: ユーザによって作られ ccw デバイスを含む、人工的なデバイス。2.4 chandev 機能の一部を置き換える。
  • iucv: VM の IUCV インターフェイスを使う netiucv デバイスのような人工的なデバイス。

Sysfs とユーザ空間[編集]

Sysfs は udevHAL のようなハードウェアとドライバ(カーネルモジュール)についての情報にアクセスするためのいくつかのユーティリティによって使われる。スクリプトは以前 procfs を通して得られた情報にアクセスするために書かれてきており、一部のスクリプトは属性を通してデバイスドライバやデバイスを設定する。

関連項目[編集]

  • configfs
  • sysctl、BSD システムで使われる代わりとなる設定のエクスポート方法

外部リンク[編集]