在arm平台下,/etc/mdev.conf
mmcblk[0-9]p[0-9] 0:0 666 @ /gm/bin/sd_card_inserting.sh
mmcblk[0-9] 0:0 666 $ /gm/bin/sd_card_removing.sh
==
[sd_card_inserting.sh]
#!/bin/sh
echo "mount..."
mount -t vfat /dev/mmcblk0p1 /mnt/sd_card
mount -t exfat /dev/mmcblk0p1 /mnt/sd_card =>加入這行
[ -d /var/log ] || mkdir /var/log
echo "" > /var/log/has_sd_card
[sd_card_removing.sh]
#!/bin/sh
echo "umount......"
[ -d /var/log ] && [ -f /var/log/has_sd_card ] && rm -f /var/log/has_sd_card
sync
umount -lf /mnt/sd_card
[test]
1.FAT32/exFAT 不同 filesystem 交換測試SD card 插拔是否能自動 auto mount : OK
2.record
==
reference:
http://breakice1016.blogspot.tw/2011/08/usb-hotplug-procsyskernel-mdev-udev.html
(auto mount)
http://clc168.blogspot.tw/2008/04/arm-embedded-linuxautomount.html
==
source:
http://breakice1016.blogspot.tw/2011/08/usb-hotplug-procsyskernel-mdev-udev.html
busybox的mdev是一個精簡了的udev管理程序,它可以間接的以hotplug方式被內核調用,進而在arm平台上/dev目錄下動態創建設備 節點,因為hotplug會被內核發送uevent之前調用,所以如果動態可插拔設備很多,很頻繁,那麼每次內核都會調用elf格式的用戶空間的 hotplug,生成一個獨立的hotplug程序來處理,所以hotplug是一個非常笨重的實現方法,但是在我們的arm開發板上,可插拔設備並沒有 想像中的頻繁
目前還沒有必要移植完全版的udev,所以完全可以在不複雜的嵌入式設備上使用mdev來管理動態節點,
方法也很簡單,就是在rcS腳本中加入下面一句,將用戶空間的應用程序路徑傳遞給內核,
echo /sbin/mdev > /proc/sys/kernel/hotplug
之後kernel會在每次設備出現變動時調用上面一句傳遞進去的用戶空間應用程序/sbin/mdev來處理對應的信息,進而mdev應用程序操作/dev目錄下的設備,進行添加或刪除,可以參考添加hotplug函數到內核,監控uevent信息
mdev的另外一個很有用的地方是,他可以通過proc和sys文件系統來動態整理出註冊的設備,進而到/dev/下生成他們對應的節點,
使用該功能之前必須mount上proc和sys文件系統,然後簡單的執行下面的一句就彎成了:
mdev -s
1, busybox 添加mdev支持
2, 在/etc/rc.d/rcS中添加
#mount filesystem
/bin/mount -a
#start mdev
#設置系統的hotplug 程序為mdev
echo /sbin/mdev > /proc/sys/kernel/hotplug
#掃瞄並創建節點,這一步可不能少
mdev –s
/etc/fstab的內容如下:
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
執行mdev -s :以『-s'為參數調用位於 /sbin目錄寫的mdev(其實是個鏈接,作用是傳遞參數給/bin目錄下的busybox 程序並調用它),mdev掃瞄 /sys/class 和 /sys/block 中所有的類設備目錄,如果在目錄中含有名為「dev」的文件,且文件中包含的是設備號,則mdev就利用這些信息為這個設備在/dev 下創建設備節點文件。一般只在啟動時才執行一次 「mdev -s」。
熱插拔事件:由於啟動時運行了命令:echo /sbin/mdev > /proc/sys/kernel/ hotplug ,那麼當有熱插拔事件產生時,內核就會調用位於 /sbin目錄的mdev。這時mdev通過環境變量中的 ACTION 和 DEVPATH,來確定此次熱插拔事件的動作以及影響了/sys中的那個目錄。接著會看看這個目錄中是否有「dev」的屬性文件,如果有就利用這些信息為 這個設備在/dev 下創建設備節點文件。
解決使用mdev時「cannot create /proc/sys/kernel/hotplug :nonexistent directory」錯誤
確保編譯內核時編譯如下選項:
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_HOTPLUG=y
CONFIG_NET=y
如果CONFIG_HOTPLUG和CONFIG_NET不選或沒全選上的話,/proc/sys/kernel下將不會創建hotplug文件.(參見kernel/sysctl.c)
沒有留言:
張貼留言