mdev自動載入u盤和sd卡

2021-06-23 09:44:34 字數 2292 閱讀 1657

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...