FlossDoc: 請協力 GPLv3 的中文翻譯工作。
Sysfs
FlossDoc,自由中文開源知識庫
sysfs 是 Linux 2.6 開始引入的虛擬檔案系統用作讓 Linux 核心以虛擬檔案的形式公告系統資訊給一般程式,使用者程式亦可以透過 sysfs 配置系統。其運作和功用和 procfs 相似。sysfs 一般會被掛載目錄 /sys。
歷史
Linux 核心開發團隊在開發 Linux 2.5 的過程中,引入了『Linux 驅動程式模型』(Linux driver model),以解決 2.4 核心所遭遇的以下問題:
- 沒有統一的機制表達驅動程式和裝置的關係。
- 不存在一般的熱插拔(hotplug)機制。
- procfs 檔案系統過度混亂,包含了許多不是進行程(process)的資訊。
sysfs 的目的是把一些原本在 procfs 中的,關於裝置的部份,獨立出來,以『裝置階層架構』(device tree)的形式呈現。這個檔案系統由 Patrick Mochel 所寫,稍後 Maneesh Soni 撰寫 "sysfs backing store path",以降低在大型系統中對記憶體的需求量。
sysfs 一開始以 ramfs 為基礎,也是一個只存在於記憶體中的檔案系統。ramfs 是在 2.4 核心處於穩定階段時加入的。ramfs 是一個優雅的實做,證明了要在當時仍很新的虛擬檔案系統(VFS)下寫一個簡單的檔案系統是多麼容易的一件事。由於 ramfs 的簡潔以及使用了 VFS,稍後的一些記憶體形式的檔案系統都以它作為開發基礎。
sysfs 剛開始被命名為 ddfs (Device Driver Filesystem),當初只是為了要對新的驅動程式模型除錯而開發出來的。它在除錯時,會把裝置架構(device tree)的資訊輸出到 procfs 檔案系統中。但在 Linus Torvalds 的急切督促下,ddfs 被轉型成一個以 ramfs 為基礎的檔案系統。在新的驅動程式模型被整合進 2.5.1 核心時,ddfs 被改名成 driverfs,以更確切描述它的用途。
在 2.5 核心開發的次年,新的『驅動程式模型』和『driverfs』證明了對核心中的其他子系統也有用處。kobjects 被開發出來,作為核心物件的中央管理機制,而此時 driverfs 也被改名成 sysfs。
請參看
- 使用 sysfs 的程式 - udev 和 HAL
- 其他虛擬檔案系統 - 包括 sysfs、procfs、configfs、securityfs 和 devpts 等。
- 其他 GNU/Linux 支援的檔案系 - 包括 Ext2、Ext3、Ext4、JFS、ReiserFS、XFS、FAT、NTFS 和 tmpfs。
外部連結
- 維基百科: sysfs[Eng][中文] - 維基百科對 sysfs 的說明。
- Linux Kernel Documentation: sysfs - The filesystem for exporting kernel objects. (Patrick Mochel & Mike Murphy 2009-02-22) - Linux 核心的 sysfs 說明文件
- OLS 2005: The sysfs Filesystem (Patrick Mochel 2005) - Patrick Mochel 在 Ottawa Linux Symposium 的 sysfs 論文。
- LWN: Porting device drivers to the 2.6 kernel (corbet 2003-02-11)
- Driver porting: Device model overview (corbet 2003-05-07)
- kobjects and sysfs (corbet 2003-10-22)

