udev和rules使用規則
本文以通俗的方法闡述 udev 及相關術語的概念、udev 的配置文件和規則文件,然后以 Red Hat Enterprise Server 為平台演示一些管理設備文件和查詢設備信息的實例。本文會使那些需要高效地、方便地管理 Linux 設備的用戶受益匪淺,這些用戶包括 Linux 最終用戶、設備驅動開發人員、設備測試人員和系統管理員等等。
概述:
Linux 用戶常常會很難鑒別同一類型的設備名,比如 eth0, eth1, sda, sdb 等等。通過觀察這些設備的內核設備名稱,用戶通常能知道這些是什么類型的設備,但是不知道哪一個設備是他們想要的。例如,在一個充斥着本地磁盤和光纖磁盤的設備名清單 (/dev/sd*
) 中,用戶無法找到一個序列號為“35000c50000a7ef67”的磁盤。在這種情況下,udev 就能動態地在 /dev
目錄里產生自己想要的、標識性強的設備文件或者設備鏈接,以此幫助用戶方便快捷地找到所需的設備文件。
udev 簡介
什么是 udev?
udev 是 Linux2.6 內核里的一個功能,它替代了原來的 devfs,成為當前 Linux 默認的設備管理工具。udev 以守護進程的形式運行,通過偵聽內核發出來的 uevent 來管理 /dev
目錄下的設備文件。不像之前的設備管理工具,udev 在用戶空間 (user space) 運行,而不在內核空間 (kernel space) 運行。
使用 udev 的好處:
我們都知道,所有的設備在 Linux 里都是以設備文件的形式存在。在早期的 Linux 版本中,/dev
目錄包含了所有可能出現的設備的設備文件。很難想象 Linux 用戶如何在這些大量的設備文件中找到匹配條件的設備文件。現在 udev 只為那些連接到 Linux 操作系統的設備產生設備文件。並且 udev 能通過定義一個 udev 規則 (rule) 來產生匹配設備屬性的設備文件,這些設備屬性可以是內核設備名稱、總線路徑、廠商名稱、型號、序列號或者磁盤大小等等。
- 動態管理:當設備添加 / 刪除時,udev 的守護進程偵聽來自內核的 uevent,以此添加或者刪除
/dev
下的設備文件,所以 udev 只為已經連接的設備產生設備文件,而不會在/dev
下產生大量虛無的設備文件。 - 自定義命名規則:通過 Linux 默認的規則文件,udev 在 /dev/ 里為所有的設備定義了內核設備名稱,比如
/dev/sda、/dev/hda、/dev/fd
等等。由於 udev 是在用戶空間 (user space) 運行,Linux 用戶可以通過自定義的規則文件,靈活地產生標識性強的設備文件名,比如/dev/boot_disk、/dev/root_disk、/dev/color_printer
等等。 - 設定設備的權限和所有者 / 組:udev 可以按一定的條件來設置設備文件的權限和設備文件所有者 / 組。在不同的 udev 版本中,實現的方法不同,在“如何配置和使用 udev”中會詳解。
下面的流程圖顯示 udev 添加 / 刪除設備文件的過程。
圖 1. udev 工作流程圖:
相關術語:
- 設備文件:由於本文以較通俗的方式講解 udev,所以設備文件是泛指在
/dev/
下,可被應用程序用來和設備驅動交互的文件。而不會特別地區分設備文件、設備節點或者設備特殊文件。 - devfs:devfs是 Linux 早期的設備管理工具,已經被 udev 取代。
- sysfs:sysfs是 Linux 2.6 內核里的一個虛擬文件系統
(/sys)
。它把設備和驅動的信息從內核的設備模塊導出到用戶空間 (userspace)。從該文件系統中,Linux 用戶可以獲取很多設備的屬性。 - devpath:本文的 devpath是指一個設備在 sysfs文件系統
(/sys)
下的相對路徑,該路徑包含了該設備的屬性文件。udev 里的多數命令都是針對 devpath操作的。例如:sda的 devpath是/block/sda
,sda2 的 devpath是/block/sda/sda2
。 - 內核設備名稱:設備在 sysfs里的名稱,是 udev 默認使用的設備文件名
小結:
udev 是高效的設備管理工具,其最大的優勢是動態管理設備和自定義設備的命名規則,因此替代 devfs 成為 Linux 默認的設備管理工具。通過閱讀本文,Linux 用戶能夠了解到 udev 的工作原理和流程,靈活地運用 udev 規則文件,從而方便地管理 Linux 設備文件。
參考資料
- 有關 Udev 更多信息,請參考:http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html。
- 在 developerWorks Linux 專區 尋找為 Linux 開發人員(包括 Linux 新手入門)准備的更多參考資料,查閱我們 最受歡迎的文章和教程。
- 在 developerWorks 上查閱所有 Linux 技巧 和 Linux 教程