国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux Udev

macg0406 / 908人閱讀

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

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

Udev 是什么

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

Udev Rules

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

這里推薦一些有用的link

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

Writing udev rules 經典文章,看完這個基本就能掌握udev rules

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

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

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

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

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

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

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

這是兩條分別針對SCSI硬盤設備的添加和刪除的rules,設備事件分別會觸發相應的腳本:

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"

注意:

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

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

相關 Link

hashtag and shebang

shebang

Udevadm

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

推薦 Link

udevadm 中文手冊 很全,很基礎 ~~

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

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

udevadm info

可以從udev數據庫中提取設備信息,此外,還可以從sysfs中提取設備的屬性, 以幫助創建與此設備匹配的udev規則

獲取/dev/sdbpath信息

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

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

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

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

udevadm trigger

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

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

注意:

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

后面是sda而不是/dev/sda因為它是根據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,對之后觸發的新設備有效,對之前已經觸發的無效

udevadm control --relaod-rules

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

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

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

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

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

寫個程序檢測我們的設備插拔 模仿內核源碼簡單地實現一個設備插拔的檢測

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

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

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

linux內核空間和用戶空間的是怎樣區別的,如何交互,如何從用戶空間進入內核空間 內核空間和用戶空間的一些剖析

Netlink實現熱拔插監控 消息傳輸用的是什么?Netlink是如何做到的

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40806.html

相關文章

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

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

    Godtoy 評論0 收藏0

發表評論

0條評論

macg0406

|高級講師

TA的文章

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