Kernel

udev/uevent 是如何工作的?

  • July 6, 2020

所以我只是想知道我對 udev 及其工作原理的解釋是否正確,我的理解是否正確,請告訴我。

所以我對udev的理解是,它是Linux 上作為守護程序執行****的動態設備管理器

  • 設備發生更改時,例如設備插入核心時,會向 udev 發送 uevent然後 udev 可以轉到 sysfs 查找設備的詳細資訊,例如供應商、設備名稱和型號等。
  • 一旦有了設備的詳細資訊, Udev 就會將這些屬性與為特定類型的設備設置的規則相匹配,在這種情況下,它可能是 USB 設備。如果存在“為所有 USB 設備創建符號連結”之類的規則,則 udev 將執行此操作。udev 檢查規則並匹配屬性以驗證設備,然後可以開始向設備添加更改以及執行規則對設備的任何操作。

這基本上是我目前的理解,如果我錯了,請糾正我並告訴我額外的資訊。

UDEV

Udev 代表“使用者空間 /dev”,它是 Linux 核心的設備管理器。它是systemd(一個用於引導使用者空間和管理使用者程序的初始化系統)的一部分。

udev最初是獨立於 systemd 的,它在 2012 年與 systemd合併,這導致在沒有 systemd 的情況下執行的發行版有些複雜,就像這裡解釋的 gentoo發行版一樣。

此應用程序(udev)旨在取代devfsdhotplug, udev 主要管理目錄中的設備節點/dev。同時,udev 還處理當硬體設備添加到系統中或從系統中刪除時引發的所有使用者空間事件,包括某些設備需要的韌體載入通過核心模組)。具體來說,udev 作為 systemd 服務(systemd-udevd.service)執行以完成其任務,它監聽核心uevents。對於每個事件,systemd-udevd 都會執行udev 規則(/etc/udev/rules.d/)中指定的匹配指令,有關規則編寫的詳細資訊可在此獲得文章

在 Linux 核心級別,所需的設備資訊由 sysfs 文件系統導出。對於核心檢測到並初始化的每個設備,都會創建一個帶有設備名稱的目錄。它包含具有設備特定屬性的屬性文件。每次添加或刪除設備時,核心都會發送一個 uevent 通知 udev 更改。

udev 守護程序(服務)的行為可以使用udev.conf (5) (/etc/udev/udev.conf)、其命令行選項、環境變數和核心命令行進行配置,或者使用udevadm動態更改控制。

udev,作為一個整體,分為三個部分:

  • 允許訪問設備資訊的庫 libudev。
  • 管理虛擬 /dev 的使用者空間守護程序 (sytemd) udevd。
  • 用於診斷的管理命令行實用程序 udevadm。

udev本身就分為這三個部分,但它完全依賴於核心設備管理和它的uevents呼叫,系統通過netlink socket從核心獲取呼叫。早期版本使用 hotplug,為此目的在 /etc/hotplug.d/default 中添加指向自身的連結。

請注意,其他應用程序/守護程序可能會通過libudevgudev或使用 GUdevClient 直接從核心監聽 uevents 呼叫

有關 udev 的更多資訊,請訪問 Debian WikiArch Linux WikiOpensource.com、 The Geek DiaryFreedesktop.orgWikipediaPks.mpg.de和其他連結站點。

關於 udev 的操作層的詳細資訊在這裡解釋並用這張圖說明:

在此處輸入圖像描述

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