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卡的自動掛載了!!!!!!