FlossDoc: 請協力 GPLv3 的中文翻譯工作。
devfs
FlossDoc,自由中文開源知識庫
devfs 是 GNU/Linux 曾一段時期管理 /dev 目錄裝置檔案 (device node) 的方案,自 Linux 2.6.15 開始已逐步被 udev 完全取替。
目录 |
歷史
在早期的 Linux,/dev 目錄下的裝置檔案全部是靜態檔案,是在安裝 GNU/Linux 時建立的。當要支援新硬體裝置,就需要使用 mknod 命令手動在 /dev 建立新的裝置檔案。隨著硬體的增多,/dev 目錄變得越來越大,加上早其 Linux 的檔案系統並沒有支援目錄索引,令在大目錄存取特定裝置檔案越來慢。事實上 /dev 目錄中數以百計的檔案中大部份都未必有直正連接對應的裝置,它們的存在只因方便對應硬體被插入時可以使用,非常浪費。這些檔案亦未能反映相關硬體是否真的存在。[1]
Linux 由 2.3.46pre5 開始引入由 Richard Gooch 開發的 devfs 企圖解決以上問題。Linux 上的 devfs 主要由 devfs 虛擬檔案系統、核心 API 和 devfsd 三個部份構成。devfs 將 /dev 目錄變成一個類似 /proc 的虛擬檔案系統,透過 Linux 核入載入不同硬體驅動模組時叫用 devfs 登記 API 自動建立相關裝置檔案。當有關模組被移除時,相關裝置檔案亦會自動消失。而裝置檔案路徑亦變成依硬體插口排列。例如 /dev/ide/host0/bus0/target0/lun0/disc 表示 primary master IDE 硬碟 (/dev/hda),/dev/ide/host0/bus1/target0/lun0/cd 表示 secondary master IDE 光碟機 (/dev/hdc)。為方便傳統軟件亦可以用傳統裝置檔案名稱使用裝置,系統會啟動 devfsd 服務聆聽 /dev/.devfsd 自動為 devfs 建立對應傳統裝置檔案名稱的連結。
devfs 被在 Linux 2.4 系列被廣泛採用。然而 Linux 在 2.6 開始引入替代方案 udev,devfs 最終在 Linux 2.6.13 閞始完全消失。
有趣的是在 2009 年初,devtmpfs 被提出來在 Linux 啟動初期未啟動 udev 時建立簡單 /dev 來縮短 Linux 開機時間,有人形用 devtmpfs 為 devfs 2.0。[2]
參考資料
- ↑ Streck, Philip (2002-09-24) devfs for Management and Administration. Linux Journal.
- ↑ Edge, Jake (2009-05-05) The return of devfs. LWN.
請參看
外部連結
- 維基百科: Device File - devfs - 維基百科對 devfs 的說明
- Linux Journal: devfs for Management and Administration (Philip Streck 2002-09-24)
- IBM developerWorks - Advanced filesystem implementor's guide (Daniel Robbins 2001):
- Part 4: Introduction to devfs (Daniel Robbins 2001-09-01)
- Part 5: Setting up devfs (Daniel Robbins 2001-10-01)
- Part 6: Implementing devfs (using the init wrapper) (Daniel Robbins 2001-10-01)
- The Linux Documentation Project: Linux 2.4 SCSI HOWTO - Device Names in devfs (Douglas Gilbert 2003-08-24)

