1,773 瀏覽數

Linux command – udevadm control & trigger

測試環境為 Ubuntu16.04 x86_64

在使用 udevadm (以前會透過 #udevinfo) 之前先來了解一下什麼是 sysfs 與 udev?

核心 2.6 後的新檔案系統 sysfs,裝置名稱還是存放在 /dev/ 目錄下但是多了一個 /sys/ 的目錄 (該目錄是可瀏覽的),裡面存放當前硬體相對應的基本資訊.udev 則是透過 /sys/ 目錄的資訊創建出相對應的硬體設備節點 /dev/.

udev 則是管理目錄 /dev 的新方法,傳統的方式需要在 /dev/ 預先產生可能用不到的裝置名稱,udev 主要是依賴於 sysfs 提供的資訊與用戶提供的規則(Rule) 來創建相對應於系統中存在的 /dev 設備節點名稱.

更多關於 sysfs 與 udev 請參考 http://benjr.tw/10632

但直接看這些檔案很累人,這些詳細的資訊都可以透過指令 #udevadm 來查詢.

直接來看看 #udevadm 的參數說明.

udevadm - udev management tool

SYNOPSIS
udevadm [--debug] [--version] [--help]
udevadm info options
udevadm trigger [options]
udevadm settle [options]
udevadm control command
udevadm monitor [options]
udevadm test [options] devpath
udevadm test-builtin [options] command devpath

control

常用參數
-R, –reload
重新加載規則 (rules) 和資料庫不對現有設備進行任何更改,新的配置將僅適用於新的事件(events).所以還需要配合 trigger 參數來使用.

trigger

新增好的 rule 要怎麼讓它生效呢!!

root@ubuntu:~# vi /etc/udev/rules.d/sdb.rules
KERNEL=="sdb",SYMLINK+="sdb-ben"

新增了一項關於 sdb udev rules ,還沒執行前.

root@ubuntu:~# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jun 21 01:26 /dev/sdb

要讓這個 rule 生效,需要連續執行下面兩個指令.

root@ubuntu:~# udevadm control --reload
root@ubuntu:~# udevadm trigger

檢查一下裝置,根據 udev rules 已經產生了 sdb-ben 的連結 (symbolic links).

root@ubuntu:~# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jun 21 02:24 /dev/sdb
lrwxrwxrwx 1 root root     3 Jun 21 02:24 /dev/sdb-ben -> sdb

One Reply to “Linux command – udevadm control & trigger”

  1. 自動參照通知: Linux – udev | Benjr.tw

發表迴響