udev
udev是一個設備管理工具,并以守護進程的方式運行,它能夠根據內核的uevent管理/dev/下面的設備文件。因為工作在用戶層的緣故,所以能夠很好地接收內核層的消息動態和管理設備文件,比單一的在內核層靜態注冊設備文件方便得多。
接下來我們以啟揚IAC-IMX8MP-Kit開發板中的udev為例,對其進行簡單的了解。
udev一般會有一個配置文件—— udev.conf,如下圖所示:
其中,udev_log表示日志等級,顯示可能為err(3),info(6),debug(7);
children_max表示允許同時執行的最大設備數量;
exec_delay表示延遲多少秒之后再執行RUN指令;
event_timeout表示等待設備事件完成的超時秒數,超時后,設備事件將會被終止,默認為180s;
timeout_signal表示超時發出的信號;
resolve_names設置systemd-udevd 在何時解析用戶與組的名稱。此時顯示默認值 early 表示在規則的解析階段;顯示late時表示在每個設備事件發生的時候;顯示never時表示不解析(所有設備都歸 root 用戶擁有)。
udev主要根據/etc/udev/rules.d/下面的匹配規則進行指定動作,如下圖所示:
前面的數字代表著優先級,數字越低表示優先級越高。
這里我們打開automount規則文件,顯示如下圖
其中,SUBSYSTEM如字面意思,是子系統的名稱,這里是塊兒設備所以是block;
ACTION表示事件的行為,add是添加,remove是移除,change是改變;
ENV{key}是環境變量,在一條規則中,最多設置五條環境變量的匹配鍵;
RUN就是所執行的內容,一般以腳本為主;
而這里整體的意思就是,當有一個塊兒設備添加進來,就執行/etc/udev/scripts/mount.sh這個腳本,塊兒設備的卸載包括變更也都是執行這個腳本。
接下來我們再看這個腳本的內容,如下圖
腳本的內容有點兒長,大致的內容就是通過判斷插入塊兒設備的文件系統類型進行不同的操作,一般都是將其掛載到某一個指定的目錄下。
這里我們將U盤插入,看看udev規則下它會掛載到哪里。
插入U盤顯示如下圖:
識別到U盤,并且根據上面腳本的規則,將其掛載到/run/media/sda1下面,如圖所示,表明規則執行成功。
通過上面的操作,可以看出我們能夠根據udev規則做一些設備的固定匹配工作,這會為一些需要根據硬件動作做出相應腳本執行的工作帶來的極大的方便。
END
-
Linux
+關注
關注
87文章
11230瀏覽量
208932
發布評論請先 登錄
相關推薦
評論