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

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

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

Linux下udev應(yīng)用

啟揚(yáng)ARM嵌入式開(kāi)發(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è)備文件方便得多。

接下來(lái)我們以啟揚(yáng)IAC-IMX8MP-Kit開(kāi)發(fā)板中的udev為例,對(duì)其進(jìn)行簡(jiǎ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í)越高。

這里我們打開(kāi)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)來(lái),就執(zhí)行/etc/udev/scripts/mount.sh這個(gè)腳本,塊兒設(shè)備的卸載包括變更也都是執(zhí)行這個(gè)腳本。

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

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

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

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

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

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

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

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

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

END

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

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208524
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    詳解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 ?275次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Linux 系統(tǒng)提供了各種系統(tǒng)服務(wù)(如 syslog、cron 等)和網(wǎng)絡(luò)服務(wù)(如 DNS、SSH 等)。
    的頭像 發(fā)表于 12-04 14:47 ?1858次閱讀
    如何查看<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 ?532次閱讀
    <b class='flag-5'>linux</b>的常用命令

    Linux如何使用CMake編譯程序

    拿到其它平臺(tái)上使用,無(wú)需修改,非常方便。 本文主要講述在Linux如何使用CMake來(lái)編譯我們的程序。 一 環(huán)境搭建 我使用的是ubuntu18.04,安裝cmake使用如下命令: sudo apt
    的頭像 發(fā)表于 11-08 16:15 ?5687次閱讀
    在<b class='flag-5'>Linux</b><b class='flag-5'>下</b>如何使用CMake編譯程序

    Linux系統(tǒng)I/O操作講解

    Linux系統(tǒng)I/O 一、I/O簡(jiǎn)介 I/O(輸入/輸出)是在主存和外部設(shè)備(磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)、終端)之間復(fù)制數(shù)據(jù)的過(guò)程。輸入是從外部設(shè)備復(fù)制到主存,輸出是從主存復(fù)制到外部設(shè)備。 在Linux系統(tǒng)
    的頭像 發(fā)表于 11-08 15:13 ?1035次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>下</b>I/O操作講解

    Linux動(dòng)態(tài)庫(kù)相關(guān)知識(shí)

    Linux 下有動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù),動(dòng)態(tài)庫(kù)以.so為擴(kuò)展名,靜態(tài)庫(kù)以.a為擴(kuò)展名。二者都使用廣泛。本文主要講動(dòng)態(tài)庫(kù)方面知識(shí)。
    的頭像 發(fā)表于 11-07 09:23 ?529次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b>動(dòng)態(tài)庫(kù)相關(guān)知識(shí)