Udev

當有人說 UNIX 設備文件是靜態的時,這是什麼意思?

  • February 19, 2018

我一直在閱讀udev。在“概述”部分,維基百科指出“與傳統的 Unix 系統不同,其中 /dev 目錄中的設備節點是一組靜態文件,Linux udev 設備管理器動態地只為實際存在的設備提供節點系統”。

當它說“靜態文件集”時是什麼意思?這是否意味著總是有/dev文件但它們並不總是指向真實設備?

我假設您指的是這一段:

與 /dev 目錄中的設備節點是一組靜態文件的傳統 Unix 系統不同,Linux udev 設備管理器僅動態地為系統上實際存在的設備提供節點。儘管 devfs 曾經提供類似的功能,但 Greg Kroah-Hartman 列舉了一些原因3來表示更喜歡它的實現而不是 devfs:

從第一句話開始,他們指的是其他 Unix 系統,其中的設備/dev是靜態創建的,並且從重新啟動到重新啟動持續存在。以前版本的 Linux(想想 2.4 版本的核心)也曾經以這種方式工作,新版本不再以這種方式執行。其他 Unix 在安裝時通常包含一組通用的設備文件,並且很少需要手動創建額外的設備文件。

在 2.4 中,您可以使用該mknod命令手動創建任何必要的設備文件。例如:

$ mknod ./dev/random b 12 5

**注意:**這是將/dev/random文件描述符創建為塊設備,主設備號為 12,次設備號為 5。

/dev 下的設備文件

OP 就目錄的整體功能提出了以下後續問題/dev。這是他的問題:

您能否添加有關用於在重新啟動後保留設備文件的技術方法的詳細資訊?它們是如何物理儲存在磁碟上的?他們需要特殊的文件系統支持嗎?

在研究這一點時,我想我將從Linux From Scratch 項目開始,以了解如何/dev在較新版本的 Linux 核心中進行管理。我知道在過去(想想核心版本 2.4 及之前的版本)該/dev目錄是一組靜態文件,實際上佔用了 HDD 上的空間,但隨著它的出現udev不再sysfs是這種情況。

傳統上,這些特殊文件是由發行版在安裝時使用mknod命令創建的。近年來,Linux 系統開始使用在執行時udev管理這些/dev文件。例如,udev將在檢測到設備時創建節點,並在刪除設備時刪除它們(包括執行時的熱插拔設備)。這樣,該/dev目錄(大部分)僅包含目前系統上實際存在的設備的條目,而不是可能存在的設備。

不必擔心您的設備文件的日子已經一去不復返了/dev。此目錄現在完全由重新啟動管理udevsysfs從重新啟動到重新啟動。

附加udevsysfs資源

參考

引用自:https://unix.stackexchange.com/questions/97642