1. 程式人生 > >OpenWrt自動掛載sd卡

OpenWrt自動掛載sd卡

我們在編譯的時候經常會遇到flash不夠用的問題,怎麼解決呢?可以通過掛載usb或者sd卡解決問題。在此介紹一下openwrt掛載sd卡。

1. 安裝sd卡的驅動以及相關支援

 make kernel_menuconfig

Device Drivers —> MMC/SD/SDIO card support —>

找到該目錄

這裡寫圖片描述

如圖在相關選項前打上”*”號

儲存並退出

接下來make menuconfig

Kernel modules —>Native Language Support —>

找到該目錄如圖選擇相關選項

這裡寫圖片描述

Kernel modules –> Other modules —>

找到該目錄選擇相關選項(如圖)

這裡寫圖片描述

kmod-mmc 、kmod-mmc-over-gpio、kmod-sdhci、kmod-sdhci-7620這四個

OK,現在可以儲存並退出了

接下來make V=s,等待編譯。

2.編譯完成後將.bin檔案燒寫至路由器內,通過ssh連線至路由器

(1)dmesg,檢視當前是否有識別sd卡

這裡寫圖片描述

(2)fdisk -l ,檢視當前硬碟個數和裝置名稱

這裡寫圖片描述

如圖可以看到我的sd卡名稱是mmcblk0

(3)接下來進行sd卡的掛載

mkdir -p /mnt/mmcblk0
mount /dev/mmcblk0 /mnt/mmcblk0

在掛載的過程中可能會遇到這樣的問題

 failed: Invalid argument

如果遇到這樣的問題,就把你的sd卡格式化成你所識別的格式

openwrt 格盤

opkg update

opkg install e2fsprogs    #安裝格盤軟體

mkfs.ext4 /dev/sda1       #格etx4

mkfs.ext3 /dev/sda1       #格etx3

mkfs.ext2 /dev/sda1       #格etx2

格式化好之後再進行掛載

這裡寫圖片描述

OK!掛載成功!!!

3.說到這裡,就不得不說熱插拔事件的自動掛載問題

對於openwrt來說,開機自啟的命令一般放在rc.local這個檔案中,OK,那麼現在我們就來寫一個指令碼來實現sd卡的開機自動掛載。

(1)

vim insert_sd.sh

這是該指令碼的內容

#!/bin/sh

PATH="/mnt/mmcblk0"
PATH_DEV="/dev/mmcblk0"

if [ -b "$PATH_DEV" ] ;then
    if [ ! -d "$PATH" ]; then
        /bin/mkdir -p $PATH
    fi
    /bin/mount -t vfat $PATH_DEV $PATH
fi

這個指令碼很簡單,相信大家都能看懂,在openwrt中一些指令碼都會放在/sbin/這個目錄下,所以,將我們寫的這個指令碼放進去。

package/base-files/files/sbin

這個是放指令碼的目錄,放進去就可以了。

(2)在rc.loacl檔案中新增開機執行命令(這個檔案在package/base-files/files/etc下)

/sbin/insert_sd.sh &

將該命令寫進去,儲存並編譯

至此,就可以實現openwrt上sd卡的自動掛載了!!!!!!