FlossDoc: 請協力 GPLv3 的中文翻譯工作。

devfs

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

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]

參考資料

  1. Streck, Philip (2002-09-24) devfs for Management and Administration. Linux Journal.
  2. Edge, Jake (2009-05-05) The return of devfs. LWN.

請參看

  • udev - Linux 現時取替 devfs 的裝置檔案管理方案
  • devtmpfs

外部連結

Personal tools