linux udev支持tf卡自動掛載與卸載

當udev提示如下報錯時案狠,內核配置中選中INOTIFY_USER即可。

udevd[992]: inotify_init failed: Function not implemented


udev規(guī)則文件示例(tf卡插拔自動掛載與卸載):

/etc/udev/rules.d/10-tf.rules

#KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/udev/hotplug-tf.sh %k $env{ACTION}"

ACTION=="add", KERNEL=="mmc0:*", RUN+="/etc/udev/hotplug-tf.sh %k $env{ACTION}"

ACTION=="remove", KERNEL=="mmc0:*", RUN+="/etc/udev/hotplug-tf.sh %k $env{ACTION}"

/etc/udev/udev.conf

udev_root="/dev/"

udev_rules="/etc/udev/rules.d/"

udev_log="err"?


要執(zhí)行的shell腳本中記得開頭要加入一行 #!/bin/sh急前,否則udev會報format err.

/etc/udev/hotplug-tf.sh

#!/bin/sh

echo "==============hotplug tf $(date)=============" #>> /run/udev.log

echo "[$#] $0, $1 ,$2" #>> /run/udev.log

if [ "$#" != "2" ];then

? echo " !! param err."? #>> /run/udev.log

? exit 1

fi

if [ "$2" == "remove" ];then

? echo " <==umount"? #>> /run/udev.log

? umount /mnt/extsd

fi

if [ "$2" == "add" ];then

? echo " ==>mount"? #>> /run/udev.log

? mkdir /mnt/extsd

? mount -t vfat /dev/mmcblk0p1 /mnt/extsd

fi

exit 0


udev規(guī)則匹配表:

鍵? ? ? ? ? ? ? ? 含義

----------------------------------------

ACTION? ? ? ? ? ? ? 事件 (uevent) 的行為,例如:add( 添加設備 )鹃祖、remove( 刪除設備 ).

KERNEL? ? ? ? ? ? ? 在內核里看到的設備名字,比如sd*表示任意SCSI磁盤設備

DEVPATH? ? ? ? ? ? ? 內核設備錄進,比如/devices/*

SUBSYSTEM? ? ? ? ? ? 子系統(tǒng)名字,例如:sda 的子系統(tǒng)為 block.

BUS? ? ? ? ? ? ? ? ? 總線的名字,比如IDE,USB

DRIVER? ? ? ? ? ? ? 設備驅動的名字,比如ide-cdrom

ID? ? ? ? ? ? ? ? ? 獨立于內核名字的設備名字

SYSFS{ value}? ? ? ? sysfs屬性值,他可以表示任意

ENV{ key}? ? ? ? ? ? 環(huán)境變量,可以表示任意

PROGRAM? ? ? ? ? ? ? 可執(zhí)行的外部程序,如果程序返回0值,該鍵則認為為真(true)

RESULT? ? ? ? ? ? ? 上一個PROGRAM調用返回的標準輸出.

NAME? ? ? ? ? ? ? ? 根據(jù)這個規(guī)則創(chuàng)建的設備文件的文件名.

(注意:僅僅第一行的NAME描述是有效的,后面的均忽略.如果你想使用使用兩個以上的名字來訪問一個設備的話,可以考慮SYMLINK鍵.)

SYMLINK? ? ? ? ? ? ? 為 /dev/下的設備文件產生符號鏈接.由于 udev 只能為某個設備產生一個設備文件,

(所以為了不覆蓋系統(tǒng)默認的 udev 規(guī)則所產生的文件,推薦使用符號鏈接.)

OWNER? ? ? ? ? ? ? ? 設備文件的屬組

GROUP? ? ? ? ? ? ? ? 設備文件所在的組.

MODE? ? ? ? ? ? ? ? 設備文件的權限,采用8進制

RUN? ? ? ? ? ? ? ? ? 為設備而執(zhí)行的程序列表

LABEL? ? ? ? ? ? ? ? 在配置文件里為內部控制而采用的名字標簽(下下面的GOTO服務)

GOTO? ? ? ? ? ? ? ? 跳到匹配的規(guī)則(通過LABEL來標識),有點類似程序語言中的GOTO

IMPORT{ type}? ? ? ? 導入一個文件或者一個程序執(zhí)行后而生成的規(guī)則集到當前文件

WAIT_FOR_SYSFS? ? ? 等待一個特定的設備文件的創(chuàng)建.主要是用作時序和依賴問題.

PTIONS? ? ? ? ? ? ? 特定的選項:

last_rule? ? ? ? ? ? 對這類設備終端規(guī)則執(zhí)行躏吊;

ignore_device? ? ? ? 忽略當前規(guī)則钓猬;

ignore_remove? ? ? ? 忽略接下來的并移走請求.

all_partitions? ? ? 為所有的磁盤分區(qū)創(chuàng)建設備文件.


udev一些特殊的值和替換值:

在鍵值對中的鍵和操作符都介紹完了,最后是值 (value).Linux 用戶可以隨意地定制 udev 規(guī)則文件的值.

例如:my_root_disk, my_printer.同時也可以引用下面的替換操作符:

----------------------------------------

$kernel,? ? ? %k:? ? ? 設備的內核設備名稱,例如:sda稍刀、cdrom.

$number,? ? ? %n:? ? ? 設備的內核號碼,例如:sda3 的內核號碼是 3.

$devpath,? ? ? %p:? ? ? 設備的 devpath路徑.

$id,? ? ? ? ? %b:? ? ? 設備在 devpath里的 ID 號.

$sysfs{file},? %s{file}: 設備的 sysfs里 file 的內容.其實就是設備的屬性值.

$env{key},? ? %E{key}:? 一個環(huán)境變量的值.

$major,? ? ? ? %M:? ? ? ? 設備的 major 號.

$minor,? ? ? %m:? ? ? ? 設備的 minor 號.

$result,? ? ? %c:? ? ? ? PROGRAM 返回的結果

$parent,? ? ? %P:? ? ? ? 父設備的設備文件名.

$root,? ? ? ? %r:? ? ? ? udev_root的值,默認是 /dev/.

$tempnode,? ? %N:? ? ? ? 臨時設備名.

%%:? ? ? ? ? 符號 % 本身.

$$:? ? ? ? ? 符號 $ 本身.

————————————————

原文鏈接:https://blog.csdn.net/xiaoliu5396/article/details/46531893

以下源碼用來讀取net link消息

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <sys/types.h>

#include <asm/types.h>

//該頭文件需要放在netlink.h前面防止編譯出現(xiàn)__kernel_sa_family未定義

#include <sys/socket.h>?

#include <linux/netlink.h>

void MonitorNetlinkUevent()

{

? ? int sockfd;

? ? struct sockaddr_nl sa;

? ? int len;

? ? char buf[4096];

? ? struct iovec iov;

? ? struct msghdr msg;

? ? int i;

? ? memset(&sa,0,sizeof(sa));

? ? sa.nl_family=AF_NETLINK;

? ? sa.nl_groups=NETLINK_KOBJECT_UEVENT;

? ? sa.nl_pid = 0;//getpid(); both is ok

? ? memset(&msg,0,sizeof(msg));

? ? iov.iov_base=(void *)buf;

? ? iov.iov_len=sizeof(buf);

? ? msg.msg_name=(void *)&sa;

? ? msg.msg_namelen=sizeof(sa);

? ? msg.msg_iov=&iov;

? ? msg.msg_iovlen=1;

? ? sockfd=socket(AF_NETLINK,SOCK_RAW,NETLINK_KOBJECT_UEVENT);

? ? if(sockfd==-1)

? ? ? ? printf("socket creating failed:%s\n",strerror(errno));

? ? if(bind(sockfd,(struct sockaddr *)&sa,sizeof(sa))==-1)

? ? ? ? printf("bind error:%s\n",strerror(errno));

? ? while(1){

? ? len=recvmsg(sockfd,&msg,0);

? ? if(len<0)

? ? ? ? printf("receive error\n");

? ? else if(len<32||len>sizeof(buf))

? ? ? ? printf("invalid message");

? ? for(i=0;i<len;i++)

? ? ? ? if(*(buf+i)=='\0')

? ? ? ? ? ? buf[i]='\n';

? ? printf("received %d bytes\n%s\n",len,buf);

? ? }

}

int main(int argc,char **argv)

{

? ? MonitorNetlinkUevent();

? ? return 0;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末敞曹,一起剝皮案震驚了整個濱河市账月,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澳迫,老刑警劉巖局齿,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異橄登,居然都是意外死亡抓歼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門拢锹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锭部,“玉大人,你說我怎么就攤上這事面褐。” “怎么了取胎?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵展哭,是天一觀的道長。 經常有香客問我闻蛀,道長匪傍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任觉痛,我火速辦了婚禮役衡,結果婚禮上,老公的妹妹穿的比我還像新娘薪棒。我一直安慰自己手蝎,他們只是感情好榕莺,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棵介,像睡著了一般钉鸯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邮辽,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天唠雕,我揣著相機與錄音,去河邊找鬼吨述。 笑死岩睁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的揣云。 我是一名探鬼主播捕儒,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灵再!你這毒婦竟也來了肋层?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翎迁,失蹤者是張志新(化名)和其女友劉穎栋猖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汪榔,經...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蒲拉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了痴腌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雌团。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖士聪,靈堂內的尸體忽然破棺而出锦援,到底是詐尸還是另有隱情,我是刑警寧澤剥悟,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布灵寺,位于F島的核電站,受9級特大地震影響区岗,放射性物質發(fā)生泄漏略板。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一慈缔、第九天 我趴在偏房一處隱蔽的房頂上張望叮称。 院中可真熱鬧,春花似錦、人聲如沸瓤檐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽距帅。三九已至右锨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碌秸,已是汗流浹背绍移。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讥电,地道東北人蹂窖。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像恩敌,于是被迫代替她去往敵國和親瞬测。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內容