亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1756 | 回復(fù): 0
打印 上一主題 下一主題

自動(dòng)掛載U盤及識(shí)別物理接口 [復(fù)制鏈接]

論壇徽章:
2
卯兔
日期:2013-09-22 20:08:052015亞冠之廣州富力
日期:2015-05-18 17:31:30
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-22 08:51 |只看該作者 |倒序?yàn)g覽
前一段時(shí)間在做一個(gè)嵌入式linux系統(tǒng)的U盤自動(dòng)掛載,以及有兩個(gè)USB接口,需要識(shí)別從那個(gè)接口插入U(xiǎn)盤的功能.所以想整理所做的過程,以下的絕大數(shù)內(nèi)容都來自internet,發(fā)揮下人人為我,我為人人的精神.
 
熱插拔:從用戶角度來看,熱插拔是內(nèi)核和用戶空間之間,通過調(diào)用用戶空間程序(如:hotplug,mdev)的交互,當(dāng)需要通知用戶,內(nèi)核發(fā)生了某種熱插拔事件時(shí),內(nèi)核才調(diào)用這個(gè)用戶空間程序.
 
mdev:一個(gè)簡化版的udev,是busybox所帶的程序,十分適合嵌入式系統(tǒng),執(zhí)行mdev -s ;以 -s 為參數(shù)調(diào)用位于/sbin目錄下的mdev去掃描/sys/class和/sys/block中所有的類設(shè)備目錄,如果在目錄中含有名為“dev“的文件,且文件中包含是設(shè)備號(hào),則mdev就利用這些信息為這個(gè)設(shè)備在/dev下創(chuàng)建設(shè)備節(jié)點(diǎn)文件,一般只在啟動(dòng)時(shí)執(zhí)行一次“mdev -s"
 
執(zhí)插拔事件:由于啟動(dòng)時(shí)運(yùn)行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug,那么當(dāng)有熱插拔事件產(chǎn)生時(shí),內(nèi)核就會(huì)調(diào)用位于/sbin目錄的mdev,這時(shí)mdev通過環(huán)境變量中的ACTION和DEVPAHT,來確定此次熱插拔事件的動(dòng)作以及影響了/sys中的那個(gè)目錄。接著會(huì)看看這個(gè)目錄中是否有“dev“的屬性文件,如果有就利用這些信息在/dev下創(chuàng)建設(shè)備節(jié)點(diǎn)文件。
 
下面介紹下mdev的使用:
1、配置內(nèi)核:make menuconfig
General setup ----->
  configure standard kernel features(for small systems)---->
  [*]support for hot-pluggable devices
2、配置busybox: make menuconfig
Linux system utilities ---->
  [*]mdev
  [*]support /etc/mdev.conf
  [*]support command execution at device addition/removal
3、在啟動(dòng)時(shí)加上使用mdev的命令
在創(chuàng)建的根文件系統(tǒng)/etc/init.d/rcs中,
#掛載/sys為sysfs文件系統(tǒng)
echo " mount /sys as sysfs"
/bin/mount -t tmpfs mdev /dev
/bin/mount -t sysfs sysfs /sys
echo "----starting mdev -----"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
4、添加對(duì)熱插拔事件的相應(yīng)動(dòng)作,支持U盤自動(dòng)掛載
修改根文件系統(tǒng)中的/etc/mdev.conf文件
sd[a-z][0-9] 0:0 666 @(sh /etc/mdev/usb_inert)
sd[a-z] 0:0 666 $(sh /etc/mdev/usb_remove)
@ :表示是在插入(創(chuàng)建設(shè)備結(jié)點(diǎn))后執(zhí)行后面的腳本
$ :表示在拔出(刪除設(shè)備節(jié)點(diǎn))前執(zhí)行后面的腳本
整個(gè)格式:<device regex><uid>:<gid><octal permissions>[<@ $ *><commands>]
5、添加對(duì)應(yīng)的腳本文件:
根文件系統(tǒng)中的/etc/mdev/usb_insert文件內(nèi)容
  1. #! /bin/sh
  2. if [ -d /sys/block/*/$MDEV ];then
  3.  mkdir -p /mnt/$MDEV
  4.  mount /dev/$MDEV /mnt/$MDEV -t vfat
  5. fi
拔出后執(zhí)行的腳本/etc/mdev/usb_remove文件內(nèi)容
  1. #! /bin/sh
  2. umount -l /mnt/$MDEV
  3. rm -rf /mnt/$MDEV
關(guān)于變量$MDEV是怎么傳遞到這里,我至今也沒有弄懂,還有當(dāng)插入U(xiǎn)盤時(shí),$MDEV的值可能是sda1,但當(dāng)拔掉時(shí)值變成sda,這樣的話就造成/mnt/$MDEV沒有umount且目錄沒刪除,目前我只是用一個(gè)很笨的方法直接在后面加‘1’,我猜應(yīng)該是熱插拔事件先發(fā)生,腳本之后才執(zhí)行,$MDEV的值當(dāng)然很可能發(fā)生了變化。
 
區(qū)別物理接口的兩個(gè)USB端口(即知道由那個(gè)端口插入U(xiǎn)盤):
 
原理應(yīng)該是:在usb總線在掃描usb端口相連的hub時(shí),分配一個(gè)地址,這個(gè)地址至少在系統(tǒng)重啟之前是恒值,(不知道是不是每個(gè)重啟之后是不是相同,但這不影響后面判斷兩個(gè)USB端口),這樣兩個(gè)端口的hub就有不同的地址。
 
首先操作系統(tǒng)要支持USBFS文件系統(tǒng),并把它掛載到/proc/bus/usb目錄下面,這樣當(dāng)插入U(xiǎn)盤時(shí)就會(huì)把相關(guān)設(shè)備和端口對(duì)應(yīng)的hub信息寫devices這個(gè)文件中(/proc/bus/usb/devices).兩個(gè)U盤插入時(shí),文件里面的port的值是不一樣的,這樣我們就可以對(duì)信息cat 出來進(jìn)行分析,判斷那個(gè)端口插入U(xiǎn)盤。當(dāng)拔掉時(shí)devices又會(huì)自動(dòng)把相關(guān)的信息刪除。
 
另一個(gè)方法查看插入U(xiǎn)SB端口后相關(guān)的信息,可以用dmesg
 
 
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP