Openwrt, extroot and USB drive


 

http://wp.me/ph3BR-1h6

wl-500gd_openwrt
wl-500gd_openwrt

俺知道有 Openwrt  很久了, 沒有時間親自使用, 所以, 沒有經驗

最近要再做一個 FAX 接收的備份機器, 也有一個舊的 ASUS WL-500g Deluex 的 Router, 還有一個 CX93010 的 USB MODEM, 所以來試試看. 如果用 PC 作, 比較簡單, Asterisk 或是 Elastix (有人介紹和教學). 相對來說, 比 EMBEDDED 得來的容易, 但是相對比較耗電.

所以選擇玩玩看, 到底這個 Openwrt 有甚麼能耐.  基本上是按照人家的經驗, 照抄, 不過, 過程裡面也碰到釘子, 原因不明, 反正用了 Openwrt 後, 安裝需要用到 USB 的套件後, 很快就說沒有空間, mount USB thumb drive 也顯示不成功, 無法繼續, 後來找到一些網頁資料, 表示必須用 fdisk 和 mkfs.ext4 才能讓 USB thumb drive 格式化成 ext4, openwrt (12.09版本), 才可mount 成功.

為求簡單化, 最好也是最簡單, 用 PC LINUX 把 USB drive 割成兩個磁碟, 第一個 ext4, 第二個 swap, 那麼 Openwrt 就不需要安裝部分套件 (fdisk 等等), 節省 FLASH 的空間, 也容易達成目標.

 

第一步, WL-500g Deluxe, 如何有原廠的 Firmware, 改成 Openwrt 的 Firmware ?

下載 Openwrt 的 Firmware

http://downloads.openwrt.org/attitude_adjustment/12.09-rc2/brcm47xx/generic/openwrt-brcm47xx-squashfs.trx

下載 ASUS 的軟體, 並安裝, 設定 XP 執行模式 (win7 / win8), 會出現 Firmware Restoration

http://www.asus.com/tw/supportonly/wl-500g%20deluxe/HelpDesk_Download

wl-500gd_openwrt
wl-500gd_openwrt

ASUS WL-500g Deluxe wireless router utility program in Traditional Chinese. Version 1.3.8.2

文件和工具都準備好, 按住 ROUTER 背後的 RESET 按鈕不放

上電, 等5秒, 應該看到 POWER LED 固定約每秒閃一次, 放開 RESET 按鈕, ROUTER 已經在救援模式. PC 暫設定 IP 192.168.1.10, MASK 255.255.255.0

連接 ROUTER 的 LAN 到 PC, LAN 插口對應的 LED 會亮, 表示 LAN 連接正常

啟動 Firmware Restoration (win7/win8 底下一定要選 XP 兼容模式), 選 Openwrt 的 openwrt-brcm47xx-squashfs.trx, 上傳, 會看到 “連接" “救援" 等字樣, 等5-10分鐘, 話說這個 BCM 的 ROUTER 啟動就是很慢. POWER LED 會亮了又滅, 滅了又亮. 不要動任何東西, 最終應該就會完成 Openwrt 的刷機, POWER LED 會恆亮. 俺的機器用其他方法都不行 只能用這個方式, 反覆刷機或使用ASUS原廠的 FIRMWARE 都可. 如果有用 UART 連機, 應該會看到 輸出一堆文字.

wl-500gd_openwrt
wl-500gd_openwrt

 

這時以用瀏覽器連接 192.168.1.1, 應該會看到 Luci 一個黑底的畫面, 然後跳出Openwrt 登入的畫面. 這時候表是 刷機成功了. 修改一下設定, 然後把它存起來, 方便如果下次再刷機還原設定.

wl-500gd_openwrt
wl-500gd_openwrt

 

.

以下這些都不是必要的, 除非需要 看 UART 的輸出結果, 俺是接用 ARDUINO 板上的 FT232 作為 UART -USB 轉接訊號的目的

PC 端, COM PORT 設定 115200, N81

硬件連接,

ARDUINO TX  — 470 ohm 電阻 — wl-500gd UART_TXD

ARDUINO RX  — 470 ohm 電阻 — wl-500gd UART_RXD

ARDUINO GND — wl-500gd GND

 

wl-500gd_openwrt
wl-500gd_openwrt

 

wl-500gd_openwrt
wl-500gd_openwrt
wl-500gd_openwrt
wl-500gd_openwrt
wl-500gd_openwrt
wl-500gd_openwrt

 

 

.

.

 

第二步, 把 Openwrt 的 File system “搬到" USB DRIVE 上, 有更大的存儲空間按裝套件 (ROUTER 上本身的 4M FLASH, 應該是不夠用的)

 

 

 

參考來源
http://store.jpgottech.com/support/tp-link-mr3020-openwrt-flashing-guide/

求助的訊息
https://forum.openwrt.org/viewtopic.php?pid=240192#p240192

.
.

開始作自己的步驟,
##下載伺服器的套件列表, 如此才能得到最新的套件及執行安裝
opkg update

## 安裝基本的 USB 服務, 及強制啟動服務
opkg install kmod-usb-uhci
insmod uhci
opkg install kmod-usb-ohci
insmod usb-ohci

##下載伺服器的套件列表, 如此才能得到最新的套件及執行安裝
opkg update

## 安裝套件,包括
## 驅動 USB DRIVE
## kmod-fs-ext4, ext4 檔案系統,
## USB 磁碟服務
## block-mount, openwrt 必要的 USB 啟動套件
## 安裝套件
opkg install kmod-usb-storage block-mount
opkg install kmod-fs-ext4 kmod-scsi-core

##########################
## 用 PC LINUX 把 USB drive 割成兩個磁碟,
## 第一個 ext4, 第二個 swap,
## 那麼 Openwrt 就不需要安裝以下套件, 包括fdisk 等等
kmod-fs-vfat
kmod-nls-cp437
kmod-nls-cp850
kmod-nls-iso8859-1
kmod-nls-iso8859-15
e2fsprogs  ## mkfs.ext4 命令來源, WL-500gd 空間不夠
fdisk
##########################

## 插入 USB DRIVE 後, 看看到底USB有沒有成功
## 如果成功就會看到 sda, sda1, sdb, sdb1 之類的字眼
ls /dev/sd*

## 看看 USB drive 的分割到底是甚麼格式
blkid /dev/sda1
blkid /dev/sda2

## 建立連接, 掛載 USB 磁碟
mkdir -p /mnt/usb
mount /dev/sda1 /mnt/usb

## 複製在 FLASH 裡面的檔案系統到 USB 磁碟
tar -C /overlay -cvf - . | tar -C /mnt/usb -xvf -

## 看看文件系統有沒有 sda1
## 複製了一些檔案, 應該看到用掉了一些空間
df

## 用 vi 文字編輯器, 修改檔案系統 fstab, 存檔
## 下次啟動就會從 USB 磁碟執行
vi /etc/config/fstab

## 修改文件 fstab, mount/swap 的段落
## 在 vi 裡面, 先按 i, 進入編輯模式
## 然後按 ESC 鍵退出編輯模式
## 再按 :wq, 存檔完成及離開 vi
## 需要設定如下
config global automount
        option from_fstab 1
        option anon_mount 1

config global autoswap
        option from_fstab 1
        option anon_swap 0

config mount
        option target   /overlay
        option device   /dev/sda1
        option fstype   ext4
        option options  rw,sync
        option enabled  1
        option enabled_fsck 0

config swap
        option device   /dev/sda2
        option enabled  1

## 因為用到 vi 的命令, i, :wq
## 參考以下
## http://linux.vbird.org/linux_basic/0310vi.php

## 斷電, 重新啟動, 然後登入 SSH, 用 mount 命令查看, 或用 df -kh
mount
df -kh

## 應該看到 /dev/sda1, overlayfs:/overlay....
## 表示已經有 USB 啟動功能, 文件系統已經放在USB DRIVE, 空間夠大可以安裝更多套件
-----------------------------------------------------
root@OpenWrt_wl-500gd:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                  528436     25064    476868   5% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    14636        88     14548   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/sda1               528436     25064    476868   5% /overlay
overlayfs:/overlay      528436     25064    476868   5% /

wl-500gd_openwrt
wl-500gd_openwrt
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s