0702Udev 介紹現代Linux系統的裝置管理

2021-06-07 12:03:38 字數 1691 閱讀 4274

linux發行版裡面的熱插拔(這個詞用於描述將裝置插入已經執行的系統的過程)功能是三個元件的融合:udev, hal, and dbus.

udev為已經連線在系統上面的裝置節點提供乙個動態裝置目錄。當裝置插入或移出系統的時候,udev就在 /dev目錄下面建立或者刪除裝置節點檔案。dbus類似於系統匯流排,主要用於程序間通訊。hal從udev的服務中獲取資訊,當乙個裝置連線到系統時它 就建立關於這個裝置的xml描述。然後它會通過dbus通知相應的桌面應用程式,比如說nautilus,nautius則會開啟這個新掛載裝置上面的文 件。

本文只關注udev, 是它完成了基本的裝置識別。

什麼是udev?

udev是linux 2.6核心的裝置管理器,它在/dev目錄下動態地建立/移除裝置節點。它是devfs和hotplug的繼承者,執行在使用者空間,並且使用者可以用udev規則來改變裝置的命名。

udev依賴2.5核心引入的sysfs檔案系統。sysfs是的裝置在使用者空間可見。每當乙個裝置被加入或移除,就會產生核心事件通知使用者空間的udev。

在早期的發行中常使用乙個外部二進位制檔案/sbin/hotplug來將裝置狀態的改變通知udev。現在這個工具已經被替換掉,udev可以通過netlink直接監聽這些事件了。

為什麼我們需要它 ?

在早期的核心中/dev目錄包括一些靜態的裝置檔案。而使用動態裝置建立後,只有那些真正存在於系統中的裝置節點才會被建立。讓我們來看看靜態/dev目錄的缺點,正是這些缺點導致了udev的開發。

在/dev的裝置節點中精確辨別乙個硬體裝置的問題

在系統啟動過程中,核心會為乙個識別到的硬體裝置分配乙個主/次裝置號對。讓我們考慮兩個硬碟,連線/校準的的方式是乙個連線到主介面,另乙個連線 到從介面。linux系統會稱它們為/dev/hda和/dev/hdb。現在,如果我們交換兩個磁碟,那麼它們的裝置名也會改變。這使得將乙個可用的動 態裝置節點定位到正確的裝置發生困難。當有一堆的硬碟連線在系統時,情況會變得更加糟糕。

udev通過/dev目錄提供了乙個永久性裝置命名系統,使得定位裝置變得容易。

udev的目標

•執行在使用者空間.

•建立永久性裝置名, 將裝置命名從核心空間剝離,並且基於裝置命名實現一些規則.

•在/dev中為存在於系統的裝置動態建立裝置節點,並且為之動態分配主/次裝置號.

•提供使用者空間的api,用於訪問系統中的裝置資訊。

udev的工作

udev守護程序監聽乙個netlink套接字,這個套接字是核心用來與使用者空間的應用程式進行通訊的。當乙個裝置被加入或移出系統時,核心可能會 通過這個netlink套接字傳送一大堆的資料。udev守護程序擷取所有這些資料並完成剩下的工作,也就是建立裝置節點,載入模組,等等。

核心裝置事件管理

•啟動初始化時, /dev目錄使用tmpfs掛載.

•然後, udev拷貝/lib/udev/devices 的靜態裝置節點到 /dev 目錄.

•udev守護程序開始執行,為所有連線到系統的裝置收集來自核心的uevents.

•udev守護程序解析uevent資料,並且對/etc/udev/rules.d中指定的規則進行匹配.

•根據指定的規則為裝置建立裝置節點和符號鏈結.

•udev守護程序讀取/etc/udev/rules.d/*.rules 中的規則並且儲存到記憶體裡面.

•udev接收接收inotify事件,如果某個規則發生了改變,讀取這些改變並更新記憶體副本

Linux系統的介紹

一 linux的特點 linux 是乙個開源 源 公開 免費的作業系統,其穩定性,安全性 也會有病毒,但因為 linux 是開源的,所以一旦有病毒就會有人去搞定它 處理多併發 多執行緒,多使用者 已經得到業界的認可,目前很多中型,大型甚至是巨型專案都在使用 linux 對記憶體和檔案管理優越 最小配...

linux系統的日誌介紹

成功地管理任何系統的關鍵之一,是要知道系統中正在發生什麼事。linux 中提供了異常日誌,並且日誌的細節是可配置的。linux 日誌都以明文形式儲存,所以使用者不需要特殊的工具就可以搜尋和閱讀它們。還可以編寫指令碼,來掃瞄這些日誌,並基於它們的內容去自動執行某些功能。linux 日誌儲存在 var ...

Linux系統日誌的介紹

系統 的那些訊息以及應該記錄在那些檔案,或如何顯示,是由 etc syslog.conf 來控制的.以下是 redhat 的 var log 目錄中一些重要的記錄檔案的說明.1.var log lastlog 記錄每個使用者最近簽入 系統的時間,因此當使用者籤入時,就會顯示其上次簽入的時間,您應該注...