1 用busybox製作根檔案系統的時候,要選擇支援mdev機制
linux system utilities --->
[*] mdev
[*] support /etc/mdev.conf
[*] support command execution at device addition/removal
2 核心配置時要支援hotplug
3 在/etc/init.d/rcs中加入以下語句
mount -t usbfs none /proc/bus/usb/
mount -t tmpfs mdev /dev
mount -t sysfs sysfs /sys
mkdir /dev/pts
mount -t devpts devpts /dev/pts
#mdev for /dev
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
這些語句的新增在busybox的/doc/mdev.txt中可以找到
執行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 下建立裝置節點檔案。
4 在/etc/mdev.conf檔案中加入以下內容:
sd[a-z][0-9] 0:0 666 @/etc/mdev/insert_usb.sh
sd[a-z] 0:0 666 $/etc/mdev/remove_usb.sh
mmcblk[0-9] 0:0 666 @/etc/mdev/insert_sd.sh
mmcblk[0-9] 0:0 666 $/etc/mdev/remove_sd.sh
@表示是在插入(建立裝置結點)後執行後面的指令碼,$表示在拔出(刪除裝置結點)前執行後面的指令碼。
5 在/etc下建立/medv/insert_usb.sh 和/mdev/remove_usb.sh檔案
insert_usb.sh:
if [ -d /sys/block/*/$mdev ] ; then
mkdir -p /mnt/usb/
mount -t vfat /dev/$mdev /mnt/usb/
firemove_usb.sh:
umount -l /mnt/usb/
rm -rf /mnt/usb
echo "remove your usbdisk safely!"
並修改檔案可執行許可權
chmod +x insert_usb.sh
chmod +x remove_usb.sh
6 在/etc下建立/medv/insert_sd.sh 和/mdev/remove_sd.sh檔案
insert_sd.sh:
mkdir -p /mnt/sd/
mount -t vfat /dev/mmcblk0 /mnt/sd/
remove_sd.sh:
sync
umount -l /mnt/sd/
rm -rf /mnt/sd
echo "remove your sd safely!"
並修改檔案可執行許可權
chmod +x insert_sd.sh
chmod +x remove_sd.sh
7 插入u盤 在目錄/mnt/usb下即可看見u盤內容
插入sd卡 在目錄/mnt/sd下即可看見sd卡內容
8 試驗測試在解除安裝sd卡時會發生錯誤,其他情況均正常使用
解除安裝sd卡後目錄/mnt/sd仍存在 說明remove_sd.sh沒有被執行
說明,解除安裝時沒有觸發條件
這個問題還沒解決,希望看到的童鞋給個指點,謝謝了先
mdev實現U盤或SD卡的自動掛載
mdev是busybox中的乙個udev管理程式的乙個精簡版,他也可以實現裝置節點的自動建立和裝置的自動掛載,只 是在實現的過程中有點差異,在發生熱插拔時間的時候,mdev是被hotplug直接呼叫,這時mdev通過環境變數中的 action 和 devpath,來確定此次熱插拔事件的動作以及影響了...
mdev實現U盤或SD卡的自動掛載
曹忠明,華清遠見嵌入式學院 講師。前面我們說了udev實現u盤或sd卡的自動掛載,在這裡我們再說一下怎樣用mdev實現這個功能。mdev是busybox中的乙個udev管理程式的乙個精簡版,他也可以實現裝置節點的自動建立和裝置的自動掛載,只是在實現的過程中有點差異,在發生熱插拔時間的時候,mdev是...
mdev實現U盤或SD卡的自動掛載
日月 發表於 2009 10 23 5 32 00 0 推薦 mdev是busybox中的乙個udev管理程式的乙個精簡版,他也可以實現裝置節點的自動建立和裝置的自動掛載,只是在實現的過程中有點差異,在發生熱插拔時間的時候,mdev是被hotplug直接呼叫,這時mdev通過環境變數中的 actio...