sysfs

sysfsはLinuxカーネルが提供する疑似ファイルシステムであり、カーネルのデバイスモデルから仮想ファイルを介してユーザー空間にさまざまなカーネルサブシステム、ハードウェアデバイス、および関連するデバイスドライバーに関する情報をエクスポートします。[ 1 ] エクスポートされた仮想ファイルは、さまざまなデバイスとカーネルサブシステムに関する情報の提供に加えて、それらの設定にも使用されます。

sysfsはBSDオペレーティングシステムsysctlメカニズムに似た機能を提供しますが、sysfsは専用のカーネルメカニズムではなく仮想ファイルシステムとして実装されており、Linuxではsysctl構成パラメータが/ sys/にマウントされているsysfsではなくprocfsの一部として/proc/sys/で利用可能になるという違いがあります。[ 2 ]

歴史

2.5 の開発サイクル中に、バージョン 2.4 の次の欠点を修正するために Linux ドライバー モデルが導入されました。

  • ドライバーとデバイスの関係を表す統一された方法は存在しませんでした。
  • 汎用ホットプラグメカニズムはありませんでした。
  • procfs はプロセス以外の情報で乱雑になっていました。

Sysfsは、デバイスツリーに存在する情報をエクスポートし、procfsのメモリ消費を抑えるために設計されました。これはPatrick Mochelによって開発されました。[ 3 ] [ 4 ] Maneesh Soniは後に、大規模システムのメモリ使用量を削減するためのsysfsバッキングストアパッチを開発しました。

2.5の開発の翌年、ドライバモデルとdriverfsの基盤機能が他のサブシステムにも役立つことが証明され始めました。[ 5 ] [ 6 ] kobjectsは中心的なオブジェクト管理メカニズムを提供するために開発され、driverfsはサブシステムに依存しないことを表すためにsysfsに名前が変更されました。

Sysfsは/sysmountマウントポイントにマウントされます。初期化時に自動的にマウントされない場合は、次のコマンドを使用して手動でマウントできますmount -t sysfs sysfs /sys[ 1 ]

サポートされているバス

ACPI
ACPIデバイスに関する情報をエクスポートします。
PCI
PCIおよびPCI Expressデバイスに関する情報をエクスポートします。
PCIエクスプレス
PCI Expressデバイスに関する情報をエクスポートします。
USB
USBデバイスに関する情報をエクスポートします。
SCSI
USBSATANVMeインターフェースを含む大容量記憶装置に関する情報をエクスポートします。[ 7 ]
S/390バス
S/390アーキテクチャには他のどこにも見られないデバイスが含まれている ため、特別なバスが作成されています。
  • css : サブチャネルが含まれます (現在提供されている唯一のドライバーは I/O サブチャネル用です)。
  • ccw : チャネル接続デバイス ( CCWによって駆動) が含まれます。
  • ccwgroup : ユーザーが作成し、ccwデバイスで構成される擬似デバイス。2.4 chandevの機能の一部を置き換えます。
  • iucv : VM のIUCVインターフェイスを使用する netiucv デバイスのような人工デバイス。

Sysfsとユーザー空間

Sysfs は、 udevHALなどの様々なユーティリティによって、ハードウェアとそのドライバ(カーネルモジュール)に関する情報にアクセスするために使用されています。 procfs経由で取得した情報にアクセスするためのスクリプトも作成されており、デバイスドライバやデバイスの属性を設定するスクリプトもあります。

参照

参考文献

  1. ^ a b Patrick Mochel と Mike Murphy. 「sysfs - カーネルオブジェクトをエクスポートするためのファイルシステム」 . kernel.org .
  2. ^ SUSE。「sysctl マニュアルページ」。FreeBSD。sysctlは実行時にカーネルパラメータを変更するために使用されます。使用可能なパラメータは /proc/sys/ 以下にリストされているものです。Linux で sysctl をサポートするには Procfs が必要です。sysctl は sysctl データの読み取りと書き込みの両方に使用できます。
  3. ^ Torvalds, Linus (2002年10月18日). 「Linux v2.5.44 - そして1週間オフライン」 .
  4. ^ Torvalds, Linus (2002年11月4日). 「Linux v2.5.46」 .
  5. ^ Mochel, Patrick (2001年10月17日). 「[RFC] 2.5向けの新しいドライバーモデル」 .
  6. ^ Jansen, Tim (2001年11月1日). 「Re: [PATCH] 2.5 PROPOSAL: 現在の/procの代替品」 .
  7. ^ 「SCSIインターフェースガイド — Linuxカーネルドキュメント」www.kernel.org . 2020年11月13日閲覧