linux udev概述

Udev: linux用戶空間設備管理


描述

Udev 是提供設備事件,管理設備節點的權限,在/dev中創建額外的符號鏈接,或重命名的網絡接口的系統軟件。根據發現的順序,內核通常只分配不可預知的設備名稱。根據其性能或當前配置,符號連接或網絡設備名提供一種方法來可靠地識別設備。

udev處理的所有設備信息存儲於udev數據庫和發送到可能的事件訂閱。通過libudev庫可以訪問所有的存儲數據和資源提供的事件 。

udev中的tools 和rules不是公開的API,並且他們可能隨時改變。任何外部應用程序不要調用/ lib / udev中的私有工具,它可能下一個版本中消失。僅udevadm和libudev可以訪問udev的信息。在/lib/udev中的tools和rules以及/dev/.udev中的整個內容是udev私有的,他們會在需要時改變。


要求

-kernel版本:可用的 sysfs, procfs, signalfd, inotify,unix domain sockets, networking and hotplug :
    CONFIG_HOTPLUG=y
    CONFIG_UEVENT_HELPER_PATH=""
    CONFIG_NET=y
    CONFIG_UNIX=y
    CONFIG_SYSFS=y
    CONFIG_SYSFS_DEPRECATED*=n
    CONFIG_PROC_FS=y
    CONFIG_TMPFS=y
    CONFIG_INOTIFY_USER=y
    CONFIG_SIGNALFD=y
    CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
    CONFIG_BLK_DEV_BSG=y (SCSI devices)

- 選擇CONFIG_SYSFS_DEPRECATED*的話udev將不會工作;
- Unix domain sockets (CONFIG_UNIX) 作爲可加載的kernel模塊,udev將會工作,但是這種方式不被支持;
- 如今已不需要在kernel配置中選擇已過時的hotplug工具/sbin/hotplug,它可能致使系統不可用,因爲kernel將在並行的情況下創建許多線程以致於耗盡系統的內存資源。

- proc文件系統必須掛載在/proc,sysfs文件系統必須掛載於/sys,一個標準的udev安裝不支持其它的路徑。

- 在udev啓動時,文件系統必須有如下可解析的組名:disk,cdrom,floppy,tape,audio,video,lp,tty,dialout,kmem。這些組名只伴隨着rootfs的加載,沒有可用網絡時。(these group names with only the rootfs mounted, and while no network is available.)

- 編譯'udev extras'需要 libacl, libglib2, libusb, usbutils, pciutils,gperf,這些依賴可以用配置選項--disable-extras  disable。


建立

- 啓動時,/dev目錄應該掛載devtmpfs文件系統。udev將管理kernel創建的設備節點的權限和所有權,並可能創建額外的符號鏈接。如果需要,udev也可以工作於一個空的tmpfs文件系統,但是一些例如/dev/null, /dev/console, /dev/kmsg的靜態設備節點是udev啓動所需要的;
- 啓動udev守護進程來處理kernel發送的設備事件和申請這些設備的配置,這些通常由以下方式完成:

    /sbin/udevadm trigger --type=subsystems,
    /sbin/udevadm trigger –type=devices
- 重啓udev daemon不會對已存在的設備使用任何rules。
- 新的或更改過的rules會自動生效,不需要重啓daemon或signal


操作
- 基於kernel發出創建/刪除設備events,udev在/dev中創建/刪除設備節點。

- 所有的kernel事件都和一套指定的規則匹配,它可能掛接到事件處理和加載所需的kernel模塊來設置設備,kernel導出所有設備的主/次設備號,如果需要,udev將會創建一個帶有kernel默認名稱的設備節點。如果 udev使用設備節點的權限/所有權,創建指向設備節點的額外符號鏈接,並執行程序來處理對應的設備。

- udev處理的事件,和合併到設備數據庫中的信息,可以通過libudev訪問到:

http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/
http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章