亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Linux Udev

macg0406 / 978人閱讀

摘要:比如盤插入,電腦是如何即時的做出響應(yīng)耳機插入又是如何做到自動關(guān)閉外部音量這些都跟有關(guān)。雖然很強大,功能很多,本來就針對硬盤設(shè)備的插拔做一些經(jīng)驗的分享。

在我入門udev的時候,看著各種各樣的資料覺得這個東西很高深的時候,突然瞄到一篇文章里面說道: 要樹立一個信念:udev很簡單,當時不以為然,現(xiàn)在能夠理解,其實稍作研究就能理解了,看起來很高端很遙遠的Title,比如Linux Kernel,比如軟硬件交互,比如熱插拔等等,其實掌握幾個rules,然后再動手實踐實踐,對比著講解,就能知道七七八八了,想要再深入,就多看看文檔實現(xiàn)和內(nèi)核源碼,其實很多東西都是這樣,了解了就很簡單,沒事了解一點就比別人多知道一些,共勉

Udev 是什么

udevlinux kernel的設(shè)備管理器,處理硬件的添加和刪除,但它的功能遠遠不僅于此。比如U盤插入,電腦是如何即時的做出響應(yīng)?耳機插入又是如何做到自動關(guān)閉外部音量?這些都跟udev有關(guān)。雖然udev很強大,功能很多,本來就針對SCSI硬盤設(shè)備的插拔做一些經(jīng)驗的分享。至于為什么我會研究到這個東西,是因為最近在做ceph相關(guān)的項目,需要實現(xiàn)一個類似熱插拔的feature,懂的人應(yīng)該很清楚,就是拔插硬盤后,osd自動恢復,主要應(yīng)用于硬盤壽命即將到期,替換新盤的場景,不明白的同學也不要緊,因為本文主要討論的是udev

Udev Rules

udev管理各種各樣的設(shè)備,比如USB,DISK,CD等等,為了區(qū)別設(shè)備類型,精確匹配,udev制定了一套特色的rules,為什么說特色呢?因為我覺得它用最簡潔的語法滿足了方方面面的需求

這里推薦一些有用的link

UDEV Primer udev入門必讀,可以快速將udev了解一番

Writing udev rules 經(jīng)典文章,看完這個基本就能掌握udev rules

Writing udev rules 修訂版 國內(nèi)論壇對格式樣式做了一些修改,有潔癖的可以看看

Writing udev rules 譯 翻譯版本,英文不好的可以中英文對比著看

udev 中文手冊 這位金步國先生為開源事業(yè)做出了杰出的貢獻,早前就看過他翻譯的Apache的手冊

Writing udev rules and kernel examples 看夠了上面各種規(guī)則,來看看具體的例子吧

Udev 詳解 文章如名,真的很詳細

Udev 使用方法 一些特殊的技巧

大家看完上面的文章應(yīng)該知道rules文件的位置和規(guī)則,下面我貼一些我實踐中的代碼和例子

這是兩條分別針對SCSI硬盤設(shè)備的添加和刪除的rules,設(shè)備事件分別會觸發(fā)相應(yīng)的腳本:

KERNEL=="sd[a-z]", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k add"
KERNEL=="sd[a-z]", ACTION=="remove", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k remove"

注意:

執(zhí)行外部命令必須加上環(huán)境變量路徑, 上面的這個也可以不加/usr/bin/python,但是必須在py腳本頭部加上shebang#! /usr/bin/python

RUN可以運行程序外的程序,而PROGRAM不是做這個事情的,而是為了生成之后需要的變量

相關(guān) Link

hashtag and shebang

shebang

Udevadm

udevadm是一個udev的管理工具,可以用來獲取設(shè)備信息(info),監(jiān)視和控制udev運行時的行為(control),請求內(nèi)核事件(trigger),管理事件隊列(settle),以及提供簡單的調(diào)試機制(test)。很實用,很好用!??!

推薦 Link

udevadm 中文手冊 很全,很基礎(chǔ) ~~

udevadm command examples 很多udevadm的命令可以借鑒,說不定以后可以用到呢?

介紹幾個我具體使用過的例子:

udevadm info

可以從udev數(shù)據(jù)庫中提取設(shè)備信息,此外,還可以從sysfs中提取設(shè)備的屬性, 以幫助創(chuàng)建與此設(shè)備匹配的udev規(guī)則

獲取/dev/sdbpath信息

udevadm info -q path -n /dev/sdb
udevadm test

模擬向udev發(fā)送設(shè)備信息,并不會真的觸發(fā),而是將觸發(fā)后的過程信息打印出來,對調(diào)試很有幫助, 我用這個查看腳本是否會被執(zhí)行

udevadm test --action="add" `udevadm info -q path -n /dev/sdb`

注意: test不會真正觸發(fā)事件,而trigger可以

udevadm trigger

可以真正觸發(fā)udev事件,但是不會真正改變硬件,只是觸發(fā)kerneludev的事件,會觸發(fā)udev rules,我用這個觸發(fā)事件,校驗rules匹配

udevadm trigger -v --action=add --sysname-match=sda

注意:

不加sysname-match那么會觸發(fā)所有設(shè)備,如果是action=remove,那么則會移除很多設(shè)備,甚至導致sshd服務(wù)停掉

后面是sda而不是/dev/sda因為它是根據(jù)pci路徑來定位name的,比如sda的路徑是:

/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda
udevadm control

重載udev rules,對之后觸發(fā)的新設(shè)備有效,對之前已經(jīng)觸發(fā)的無效

udevadm control --relaod-rules

更改udev日志等級為info,udev默認等級為err,可以在/etc/udev/udev.conf中查看,日志具體信息可以在syslog中查看

udevadm control --log-priority=info
More about udev

udev還有很多有意思的地方,如果想要更加深入的學習,那么除了熟練地掌握rules等技巧,還要對其實現(xiàn)原理有了解,這就得多看文檔,多看源碼了,建議大家有條件的情況下多看源碼,多看原始的東西,因為經(jīng)過別人的總結(jié)就可能會變味,相互對比,不要一味依賴別人總結(jié)的產(chǎn)物

Linux 自動掛載usb設(shè)備 小例子 如何在usb設(shè)備插入后自動掛載?

udev使用筆記 這篇文章里面那張圖片不錯

寫個程序檢測我們的設(shè)備插拔 模仿內(nèi)核源碼簡單地實現(xiàn)一個設(shè)備插拔的檢測

linux下熱插拔事件的產(chǎn)生是怎樣通知到用戶空間 事件傳遞過程,udev源碼解析

熱插拔的工作原理 hotplug機制和udev udev原理講解

Uevent 上報event事件給上層的詳細講解 uevent源碼講解

linux內(nèi)核空間和用戶空間的是怎樣區(qū)別的,如何交互,如何從用戶空間進入內(nèi)核空間 內(nèi)核空間和用戶空間的一些剖析

Netlink實現(xiàn)熱拔插監(jiān)控 消息傳輸用的是什么?Netlink是如何做到的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/40806.html

相關(guān)文章

  • Linux驅(qū)動實踐:你知道【字符設(shè)備驅(qū)動程序】的兩種寫法嗎?

    摘要:我們就繼續(xù)以此為基礎(chǔ),用保姆級的粒度一步一步操作,來討論一下字符設(shè)備驅(qū)動程序的編寫方法。如何使用新的函數(shù)來編寫字符設(shè)備驅(qū)動程序,下一篇文章再詳細討論。 作 者:道哥,10+年嵌入式開發(fā)老兵,專注于:C/C++、嵌入式、Linux。 關(guān)注下方公眾號,回復【書籍】,獲取 Linux、嵌入式領(lǐng)域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章( PDF 格式)。 目錄 ...

    Godtoy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<