0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下udev應(yīng)用

啟揚(yáng)ARM嵌入式開發(fā) ? 2022-08-28 15:47 ? 次閱讀

udev

udev是一個(gè)設(shè)備管理工具,并以守護(hù)進(jìn)程的方式運(yùn)行,它能夠根據(jù)內(nèi)核的uevent管理/dev/下面的設(shè)備文件。因?yàn)楣ぷ髟谟脩魧拥木壒剩阅軌蚝芎玫亟邮諆?nèi)核層的消息動(dòng)態(tài)和管理設(shè)備文件,比單一的在內(nèi)核層靜態(tài)注冊(cè)設(shè)備文件方便得多。

接下來我們以啟揚(yáng)IAC-IMX8MP-Kit開發(fā)板中的udev為例,對(duì)其進(jìn)行簡單的了解。

udev一般會(huì)有一個(gè)配置文件—— udev.conf,如下圖所示:

032e5354-2559-11ed-9ade-dac502259ad0.png

其中,udev_log表示日志等級(jí),顯示可能為err(3),info(6),debug(7);

children_max表示允許同時(shí)執(zhí)行的最大設(shè)備數(shù)量;

exec_delay表示延遲多少秒之后再執(zhí)行RUN指令;

event_timeout表示等待設(shè)備事件完成的超時(shí)秒數(shù),超時(shí)后,設(shè)備事件將會(huì)被終止,默認(rèn)為180s;

timeout_signal表示超時(shí)發(fā)出的信號(hào);

resolve_names設(shè)置systemd-udevd 在何時(shí)解析用戶與組的名稱。此時(shí)顯示默認(rèn)值 early 表示在規(guī)則的解析階段;顯示late時(shí)表示在每個(gè)設(shè)備事件發(fā)生的時(shí)候;顯示never時(shí)表示不解析(所有設(shè)備都?xì)w root 用戶擁有)。

udev主要根據(jù)/etc/udev/rules.d/下面的匹配規(guī)則進(jìn)行指定動(dòng)作,如下圖所示:

034d1f6e-2559-11ed-9ade-dac502259ad0.png

前面的數(shù)字代表著優(yōu)先級(jí),數(shù)字越低表示優(yōu)先級(jí)越高。

這里我們打開automount規(guī)則文件,顯示如下圖

03684b7c-2559-11ed-9ade-dac502259ad0.png

其中,SUBSYSTEM如字面意思,是子系統(tǒng)的名稱,這里是塊兒設(shè)備所以是block;

ACTION表示事件的行為,add是添加,remove是移除,change是改變;

ENV{key}是環(huán)境變量,在一條規(guī)則中,最多設(shè)置五條環(huán)境變量的匹配鍵;

RUN就是所執(zhí)行的內(nèi)容,一般以腳本為主;

而這里整體的意思就是,當(dāng)有一個(gè)塊兒設(shè)備添加進(jìn)來,就執(zhí)行/etc/udev/scripts/mount.sh這個(gè)腳本,塊兒設(shè)備的卸載包括變更也都是執(zhí)行這個(gè)腳本。

接下來我們?cè)倏催@個(gè)腳本的內(nèi)容,如下圖

038ff0dc-2559-11ed-9ade-dac502259ad0.png

腳本的內(nèi)容有點(diǎn)兒長,大致的內(nèi)容就是通過判斷插入塊兒設(shè)備的文件系統(tǒng)類型進(jìn)行不同的操作,一般都是將其掛載到某一個(gè)指定的目錄下。

這里我們將U盤插入,看看udev規(guī)則下它會(huì)掛載到哪里。

插入U(xiǎn)盤顯示如下圖:

03bb0fc4-2559-11ed-9ade-dac502259ad0.png

識(shí)別到U盤,并且根據(jù)上面腳本的規(guī)則,將其掛載到/run/media/sda1下面,如圖所示,表明規(guī)則執(zhí)行成功。

03e09172-2559-11ed-9ade-dac502259ad0.png

通過上面的操作,可以看出我們能夠根據(jù)udev規(guī)則做一些設(shè)備的固定匹配工作,這會(huì)為一些需要根據(jù)硬件動(dòng)作做出相應(yīng)腳本執(zhí)行的工作帶來的極大的方便。

END

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11212

    瀏覽量

    208723
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境開發(fā)和運(yùn)行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?162次閱讀

    詳解linux內(nèi)核的uevent機(jī)制

    linux內(nèi)核中,uevent機(jī)制是一種內(nèi)核和用戶空間通信的機(jī)制,用于通知用戶空間應(yīng)用程序各種硬件更改或其他事件,比如插入或移除硬件設(shè)備(如USB驅(qū)動(dòng)器或網(wǎng)絡(luò)接口)。uevent表示“用戶空間
    的頭像 發(fā)表于 09-29 17:01 ?379次閱讀

    linux系統(tǒng)已安裝esp-idf,無法安裝vscode插件要怎么處理?

    deepin/linux系統(tǒng),使用第三種方式安裝 無法add openocd dev rules EISDIR: illegal operation on a directory
    發(fā)表于 06-20 07:39

    使用esp32-s3的USB Serial/JTAG口連接linux時(shí),找不到設(shè)備是怎么回事?

    一直以來我使用uart口進(jìn)行燒寫,在linux和windows上都正常,這兩天嘗試了用USB Serial/JTAG口,我用的是官方開發(fā)板進(jìn)行連接。 其中,不需要任何改動(dòng)就可以在windows上進(jìn)
    發(fā)表于 06-12 07:22

    虹科干貨 |?多設(shè)備協(xié)同無憂:Linux環(huán)境PCAN固定設(shè)備ID/通道分配指南

    在車輛網(wǎng)絡(luò)系統(tǒng)和工業(yè)自動(dòng)化等多設(shè)備環(huán)境中,確保設(shè)備識(shí)別的一致性對(duì)于維護(hù)系統(tǒng)穩(wěn)定性至關(guān)重要。虹科PCAN適配器提供了一種解決方案,允許用戶在Linux環(huán)境固定設(shè)備ID和通道分配,從而不受USB端口
    的頭像 發(fā)表于 06-11 15:03 ?400次閱讀
    虹科干貨 |?多設(shè)備協(xié)同無憂:<b class='flag-5'>Linux</b>環(huán)境<b class='flag-5'>下</b>PCAN固定設(shè)備ID/通道分配指南

    請(qǐng)問ESP Wroom 32板如何在LInux使用?

    ESP Wroom 32板如何在LInux使用。 我用的系統(tǒng)是統(tǒng)信UOS,如何使用ESP32板,開發(fā)Micropython啊 簡單來說就是在ESP32上刷上micropython固件,然后編寫micropython代碼。 在Linu
    發(fā)表于 06-05 06:22

    linux查詢進(jìn)程占用的內(nèi)存方法有哪些?

    linux查詢進(jìn)程占用的內(nèi)存方法
    發(fā)表于 04-08 06:03

    Linux環(huán)境能使用PSoC Creator 4.3嗎?

    最近碰到一個(gè)在Linux系統(tǒng)編譯的要求,PSoC Creator能夠在Linux環(huán)境使用嗎?
    發(fā)表于 02-18 07:22

    如何使用linuxgdb來調(diào)試python程序

    如何使用linuxgdb來調(diào)試python程序? 在Linux,可以使用GDB(GNU調(diào)試器)來調(diào)試Python程序。GDB是一個(gè)強(qiáng)大的調(diào)試工具,可以幫助開發(fā)者診斷和修復(fù)程序中的錯(cuò)
    的頭像 發(fā)表于 01-31 10:41 ?2385次閱讀

    求助,請(qǐng)問Linux如何監(jiān)控USB數(shù)據(jù)呢?

    Linux之前是通過lsusb查看一些信息,但有時(shí)候也需要監(jiān)控到USB數(shù)據(jù),故請(qǐng)教一各位有沒有Linux的USB監(jiān)控軟件,或者一些監(jiān)
    發(fā)表于 01-24 06:52

    Linux常見的十幾款CPU監(jiān)控工具

    今天浩道跟大家分享運(yùn)維工作中,Linux常見的十幾款CPU監(jiān)控工具,你可能只會(huì)用到其中某些,但是個(gè)人覺得作為一個(gè)資深運(yùn)維,你要知道有這些工具可以監(jiān)控CPU。
    的頭像 發(fā)表于 01-22 09:19 ?2399次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b>常見的十幾款CPU監(jiān)控工具

    Linux操作系統(tǒng)中如何按PCIe的復(fù)位鍵

    Linux操作系統(tǒng)中,看如何按PCIe的復(fù)位鍵
    的頭像 發(fā)表于 01-20 09:31 ?1403次閱讀
    <b class='flag-5'>Linux</b>操作系統(tǒng)中如何按<b class='flag-5'>下</b>PCIe的復(fù)位鍵

    請(qǐng)問如何在Linux取得NUC980 CPU頻率?

    如何在Linux取得NUC980 CPU頻率?
    發(fā)表于 01-17 07:01

    如何查看Linux systemd正在運(yùn)行的服務(wù)

    Linux 系統(tǒng)提供了各種系統(tǒng)服務(wù)(如 syslog、cron 等)和網(wǎng)絡(luò)服務(wù)(如 DNS、SSH 等)。
    的頭像 發(fā)表于 12-04 14:47 ?1936次閱讀
    如何查看<b class='flag-5'>Linux</b> systemd<b class='flag-5'>下</b>正在運(yùn)行的服務(wù)

    linux的常用命令

    ,最上層根目錄是“/”,在這個(gè)根目錄/創(chuàng)建其他目錄。Linux一切皆文件 2.2 Linux目錄介紹 第一行 (1)/bin:存放經(jīng)常使用的命令 (2)/boot:啟動(dòng)Linux使用
    的頭像 發(fā)表于 11-24 16:04 ?548次閱讀
    <b class='flag-5'>linux</b>的常用命令