Sysfsとは - わかりやすく解説 Weblio辞書 (original) (raw)
![]() |
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: "Sysfs" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2020年12月) |
---|
sysfsはLinuxカーネル2.6によって提供される仮想ファイルシステムである。sysfsはデバイスやドライバについての情報をカーネルモデルからユーザ空間へエクスポートし、設定のためにも使われる。BSDシステムにある sysctl(英語版)機構に似ているが、分離した機構の代わりにファイルシステムとして実装されている。
歴史
2.5開発サイクル中、バージョン2.4における以下のいくつかの欠点を修正するために、Linuxドライバモデルが導入された。
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はudevやHALのようなハードウェアとドライバ(カーネルモジュール)についての情報にアクセスするためのいくつかのユーティリティによって使われる。スクリプトは以前procfsを通して得られた情報にアクセスするために書かれてきており、一部のスクリプトは属性を通してデバイスドライバやデバイスを設定する。
関連項目
外部リンク
- LWN の 2.6 への移植シリーズより、ドライバモデル概観
- LWN の 2.6 への移植シリーズより、kobject と sysfs
- Ramfs
- The sysfs Filesystem, OLS'05
表話編歴ファイルシステム | |
---|---|
ディスク | Advanced Disc Filing System(英語版) AdvFS(英語版) APFS Be File System(英語版) Btrfs CrossDOS(英語版) Disc Filing System(英語版) Episode(英語版) EFS HPFS ext ext2 ext3 ext3cow ext4 FAT FAT12 FAT16 FAT32 exFAT Files-11 HAMMER HFS HFS Plus IBM General Parallel File System JFS Macintosh File System(英語版) MINIX NetWare File System(英語版) NILFS Novell Storage Service NTFS QFS QNX4FS ReFS ReiserFS Reiser4 SpadFS(英語版) UBIFS UFS VERITAS File System Write Anywhere File Layout(英語版) XFS Xsan ZFS 光ディスク / 磁気テープ HSF ISO 9660 ISO 13490 UDF LTFS Flashメモリ / SSD APFS FAT exFAT CHFS TFAT EROFS FFS2 F2FS JFFS JFFS2 LogFS NILFS NVFS YAFFS UBIFS 分散ファイルシステム Coda CXFS(英語版) GFS2 GlusterFS Google File System OCFS2 QFS Xsan |
ネットワーク型 | AFS OpenAFS AFP DFS GPFS GlusterFS Google File System Lustre NCP NFS POHMELFS Hadoop Plan 9 FS SMB (CIFS) SSHFS |
特殊用途 | cramfs Dokan EROFS FUSE SquashFS UMSDOS UnionFS aufs initrd 疑似・仮想 configfs devfs procfs specfs sysfs tmpfs WinFS 暗号化 EncFS EFS ZFS UFS2 |
その他 | ファイルシステムの比較(英語版) |
![]() |