測試環境為 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 請參考 https://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 thought on “Linux command – udevadm control & trigger”