解讀udev的幾個作用

2021-09-22 19:51:53 字數 2026 閱讀 7193

udev是一種工具,它能夠根據系統中的硬體裝置的狀況動態更新裝置檔案,包括裝置檔案的建立,刪除等。裝置檔案通常放在/dev目錄下,使用udev後,在/dev下面只包含系統中真實存在的裝置。它於硬體平台無關的,位於使用者空間,需要核心sysfs和tmpfs的支援,sysfs為udev提供裝置入口和uevent通道,tmpfs為udev裝置檔案提供存放空間。

在 sysfs 下的很多 kobject 下都有 uevent 屬性,它主要用於核心與 udev 之間的乙個通訊介面;從 udev 本身與核心的通訊介面 netlink 協議套接字來說,它並不需要知道裝置的 uevent 屬性檔案,但多了 uevent 這樣乙個介面,可用於 udevmonitor 通過核心向 udevd傳送訊息,也可用於檢查裝置本身所支援的 netlink 訊息上的環境變數,這個特性一般用於開發人員除錯 udev 規則檔案, udevtrigger 這個除錯工具本身就是以寫各裝置的 uevent 屬性檔案實現的。

udev具有如下幾個作用:

1. 核心裝置事件管理

* 啟動初始化時, /dev目錄使用tmpfs掛載,然後, udev拷貝/lib/udev/devices 的靜態裝置節點到 /dev 目錄.

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

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

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

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

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

2. 管理裝置節點的許可權

在規則檔案(*.rules)中利用關鍵子owner, group, mode為裝置設定許可權。例如「

kernel=="sda", name="my_root_disk", mode="0660"

kernel 是匹配鍵,name 和 mode 是賦值鍵。

這條規則的意思是:如果有乙個裝置的核心裝置名稱為 sda,則該條件生效,執行後面的賦值:

在 /dev下產生乙個名為 my_root_disk的裝置檔案,並把裝置檔案的許可權設為 0660。

例如:/etc/udev/rules.d/10-local.rules

kernel=="event*", name="input/%k", mode:="0660", group:="input"

kernel=="mouse*", name="input/%k", mode:="0660", group:="input"

kernel=="mice*", name="input/%k", mode:="0660", group:="input"

這時插拔一下usb滑鼠就會發現/dev/input/mou***以及和它相關的/dev/input/eventx的所屬組變成了「input」,而不是預設的「root」。

3. 在/dev中建立額外的符號鏈結

# ls /dev/sda1

4. 重新命名的網路介面的系統軟體

建立乙個rules檔案/etc/udev/rules/10-local.rules,如下所示:

driver=「rt3070sta」,name=「wlan0」

其中「driver」為無線網路驅動的名稱,「name」為重命名後的無線網路名稱

還可以利用nameif重新命名網路介面

nameif ra0 74:f0:6d:4e:89:3a

其中,「ra0」 為重命名後的無線網路名稱,「74:f0:6d:4e:89:3a」 無線網路的mac位址

5. 動態分配主/次裝置號

傳統的devfs不能動態分配major和minor的值,而major和minor非常有限,很快就會用完了。udev能夠像dhcp動態分配ip位址一樣去動態分配major和minor。

6.提供裝置命名持久化的機制

傳統裝置命名方式不具直觀性,像/dev/hda1這樣的名字肯定沒有boot_disk這樣的名字直觀。udev能夠像dns解析網域名稱一樣去給裝置指定乙個有意義的名稱。

udev的實現原理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!udev實現原理 作者 李先靜 相對於linux 來說,udev 還是乙個新事物。然而,儘管它03 年才出現,儘管它很低調 j 但它無疑已經成為linux 下不可或缺的元件了。udev 是什麼?它是如何實現的?最近研究linux 裝置管理時,花了一...

Hadoop幾個常見類的作用

1 自定義bean中的copmareto public class keypair implements writablecomparable return integer.compare hot,o.gethot override public void write dataoutput data...

解讀 Python在人工智慧中的作用

人工智慧是一種未來性的技術,目前正在致力於研究自己的一套工具。一系列的進展在過去的幾年中發生了 無事故駕駛超過300000英里並在三個州合法行駛迎來了自動駕駛的乙個里程碑 ibm waston擊敗了jeopardy兩屆冠軍 統計學習技術從對消費者興趣到以萬億記的影象的複雜資料集進行模式識別。這些發展...