ARM-Linux支援並自動掛載隨身碟

來源:互聯網
上載者:User

標籤:linux   usb   核心配置   arm   mdev   

筆記性質的文章。

其實,我是想在ARM開發板上實現我的FW150US-USB無線網卡功能,所以測試下USB介面。

1、配置核心

Device Drivers --->        SCSI device support --->                <*> SCSI device support                [*] legacy /proc/scsi/ support                <*> SCSI disk support                <*> SCSI tap support                <*> SCSI CDROM support        [*] USB support --->                <*> Support for Host-side USB                [*] USB device filesystem                <*> OHCI HCD support                <*> USB Mass Storage supportFile Systems --->        DOS/FAT/NT  Filesystems --->                <*>VFAT (Windows-95) fs support                (936) Default codepage for FAT                (iso8859-1)Default iocharater for FAT

2、燒寫核心並載入

[[email protected] /]# ls /dev/
插入隨身碟後會發現該目錄下多了sda1(對於有的隨身碟,並不是這個名字,所以在自動載入指令碼裡要注意區別對待)節點,這個就是我們系統識別到隨身碟後分配的。


3、手動掛載隨身碟到指定目錄/udisk

[[email protected] /]# mount /dev/sda1 /udisk/[[email protected] /]# [[email protected] /]# ls /udisk/images      images____完了之後,卸載之:[[email protected] /]# umount /udisk/

4、自動掛在隨身碟實現及指令碼分析

在/etc/mdev.conf 檔案中添加如下語句:
sda1            0:0     0600    =udisk */bin/hotplug_usb.sh
如果無法確認是否是[sda1(預設是這個)],讓系統自動判斷:
sd[a-z]*[0-9]   0:0     0600    =udisk */bin/hotplug_usb.sh
至於為何這麼寫,參見結尾處關於設定檔mdev.comn
hotplug_usb.sh指令碼內容及解釋:
#!/bin/sh# 為了方便,shell 的環境變數 $MDEV 會被設定成裝置名稱。 例如 the device 'hdc' was matched, MDEV would be set to "hdc"case $MDEV in    udisk | sda1)            DEVNAME=udisk            MOUNTPOINT=/udisk            ;;    sdcard | mmcblk0p1)            DEVNAME=sdcard            MOUNTPOINT=/sdcard            ;;    *)            exit 0            ;;esac# 若不存在/dev/null節點,建立之test ! -c /dev/null && mknod -m 0666 /dev/null c 1 3# 熱插拔實現原理及過程:#  在/etc/init.d/rcS檔案中有句:echo /sbin/mdev > /proc/sys/kernel/hotplug#  那麼當有熱插拔事件產生時,核心就會調用位於/sbin目錄的mdev#  這時mdev通過環境變數中的 ACTION 和DEVPATH(這兩個變數是系統內建的)來確定此次熱插拔事件的動作以及影響了/sys中的那個目錄#  接著會看看這個目錄中是否有“dev”的屬性檔案,如果有就利用這些資訊為這個裝置在/dev 下建立裝置節點檔案。case $ACTION in    remove)            /bin/umount $MOUNTPOINT || true            rmdir $MOUNTPOINT >/dev/null 2>&1 || true            ;;    *)            /bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true            /bin/mount -t vfat -o codepage=936 -o iocharset=utf8 -o sync -o noatime -o nodiratime /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true            ;;esacexit 0


PS:關於mdev.conf檔案/etc/mdev.conf是mdev的設定檔,用來控制裝置節點的ownership/permissions。如果不使用該檔案,系統預設root/root 660許可權。該檔案的格式為:[-]<device regex> <uid>:<gid> <permissions>或者@<maj[,min1[-min2]]> <uid>:<gid> <permissions>或者
$envvar=<regex> <uid>:<gid> <permissions>比如:hd[a-z][0-9]*     0:3     660
如果我們想把節點移動到另一個目錄或者重新命名該節點,則配置格式:<device regex> <uid>:<gid> <permissions> [=path/new_name]
比如:hda 0:3 660 =drives/這樣“ hda ”就被移動到drives/子目錄裡面而:hdb 0:3 660 =cdrom
就把“ hdb ”重新命名成“ cdrom”
如果你想 mdev 在找到匹配行時可以執行自訂的命令,那麼檔案格式如下:    <device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
特殊字元的意義如下:    @ 在建立裝置節點後運行命令。    $ 在刪除裝置節點前運行命令。    * 在建立裝置節點後和刪除裝置節點前都運行命令。比如:
sd[a-z]*[0-9] 0:0 0660 @(mount /dev/$MDEV /udisk)sd[a-z]*[0-9] 0:0 0660 *(umount /udisk)

PPS: Device or resource busy表示裝置忙,可能裝置已經被用了,比如已經完成了掛載。

ARM-Linux支援並自動掛載隨身碟

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.