#1 2008-11-16 00:51:42
[DD-WRT] 華碩Router改機
手癢想改機, 卻不知從何著手嗎? 改機之前, 請先參考拙作, 改機前的思考, 改機前的準備工作. 先想清楚自己的技術能力, 再決定是否動手.
事前準備的工具程式:
1. NotePad++: 紀錄改機過程.
2. PuTTY + RS-232 console線: 輸入命令並監看刷機過程.
3. FileZilla: 下載Router的CFE, nvram.
4. WinMD5Free: MD5比對, 檢查韌體的正確性.
刷機過程請盡量使用NotePad++多紀錄. 刷機成功則成了自己的筆記; 刷機失敗也才有跡可循.
以下是用WL-500gx(f/w: v1.9.5.0), 在Windows XP下操作, 提供網友參考.
1. 華碩Router內部照片, 請參考wl500g.info. 接上內部RS-232與console線, 開啟PuTTY, 監看Router輸出訊息並紀錄.
2. 恢復原廠預設值
3. 備份CFE
請先參考DD-WRT的CFE backup. CFE可在更新韌體後備份, 但nvram則因刷機而變更.
若您的機器是WL-500gP, 亦可經由Telnet操作. 請參考拙作啟用utelnetd, 再設定啟動vsftpd, 將CFE, nvram備份出來.
若無RS-232 console線, 以下可省略.
WL-500gx韌體內找不到telnet程式, 所以下面命令都是在PuTTY內輸入. #是提示符號, 不必鍵入.
3-1. 複製cfe, nvram.
# dd if=/dev/mtd/0 of=/tmp/cfe.bin
# dd if=/dev/mtd/3 of=/tmp/nvram.bin
3-2. 新建stupid-ftpd.conf.
# cat > /tmp/stupid-ftpd.conf
mode=daemon
serverroot=/
changeroottype=real
port=21
maxusers=2
user=anonymous * /tmp 2 DM
3-3. 執行ftpd
# stupid-ftpd
3-4. 由FileZilla下載cfe, nvram, 存放在PC.
4. 了解機器
查閱DD-WRT支援的硬體清單, 先確認機器可支援刷機. 紀錄CPU型號與flash memory容量. 亦可參考本站ASUS WL全系列硬體規格表.
5. 下載韌體
暫選用穩定版v24-sp1
下載MD5SUMS後, 再到WL500g-Deluxe目錄, 下載dd-wrt.v24_mini_asus.trx
請注意, Mini版在2MB的機器(WL-520GC等)不適用. 請使用Micro版.
6. MD5檢查
NotePad++開啟MD5SUMS, 複製MD5碼
貼到WinMD5Free
按Verify比對, 顯示相符.
7. 刷機
終於到最重要階段. 刷機前先參閱使用手冊, 作硬體Reset.
由網頁方式替換華碩韌體, 適用多種操作系統. 亦可由TFTP方式操作.
2MB的機器(WL-520GC等)請經由TFTP方式替換韌體.
刷機過程當中, 切勿隨意斷電或Reset等動作.
Router自動重開機後, 開啟DOS shell(附屬應用程式--> 命令提示字元), 輸入: ping 192.168.1.1
(省略)
Reply from 192.168.1.1: bytes=32 time<1ms TTL=64
(省略)
OK, 開啟瀏覽器, http://192.168.1.1/ 應可看到DD-WRT畫面, 恭喜您.
8. 進入DD-WRT
第一次進入, 自訂帳號密碼.
網頁下拉到語言選項, 切換中文顯示.
按Save--> Apply Settings後
以上, 先告一段落. 找時間再補後續步驟. 希望您在刷機過程中學到更多東西.
如果喜歡非官方韌體, 也請贊助她, 幫助她成長.
離線
#2 2008-11-20 12:42:56
Re: [DD-WRT] 華碩Router改機
ok, 已經有了DD-WRT, 再來要更換不同功能的版本就簡單了.
1. 規劃欲擴充改機的環境
1-1. 儲存媒體
通常使用USB flash, HD, SD card等, 但也可以透過CIFS連結內部區網PC所分享的資料夾, 當作儲存的空間.
1-2. 媒體格式
USB HD建議使用ext3; USB flash, SD card使用ext2.
1-3. Swap
swap可使用磁區或檔案型式, 不建議在USB flash或SD card內.
2. 選擇更換韌體的版本
使用DD-WRT自由度很高, 相同的機器可選用不同的韌體版本, 來達到自己的需求. 新手也往往面對眾多版本而不知所措. 首先了解自己機器的能耐, 參閱本站ASUS WL全系列硬體規格表. 再參閱DD-WRT版本說明, 選用合適的版本.
舉例來說, 8MB的WL-500gP可安裝Mega以下版本; 4MB的WL-500gx可安裝Standard以下版本; 2MB的WL-520GC僅能安裝Micro版本.
在V24_TNG(The Next Generation)內, 以晶片區分: VINT, NEWD; 以flash memory容量區分: micro, mini, std, mega; 以功能區分: hotspot, usb, openvpn, voip等.
8MB的WL-500gP等, 建議安裝mega; 4MB含USB的WL-500gx等, 可選用mini_usb, nokaid_usb; 2MB的WL-700gE安裝micro版.(再載入USB 2.0 module?)
待您熟悉DD-WRT後, 可依需求選擇占用最低系統資源的版本, 來獲取最大剩餘資源, 作其他運用.
3. 更換韌體
3-1. MD5檢查
3-2. 出廠預設值
3-3. 設定Username, Password
3-4. Firmware Upgrade
4. 使用JFFS2與擴充
參閱DD-WRT之Journalling Flash File System
4-1. 使用JFFS2
系統管理--> 基本管理--> JFFS2 儲存區域
JFFS2: 啟用
--> 儲存設定--> 儲存重啟
清除JFFS2: 啟用
--> 儲存重啟
PuTTY console訊息
(省略)
Erasing ddwrt ...
(省略)
清除JFFS2: 關閉
--> 儲存設定--> 重新啟動路由器
若啟用JFFS2, 預設mount的/jffs的剩餘空間大小, 依據選用的韌體版本而不同. 例如: WL-500gx使用mini_usb版, 剩餘大小380KB.
# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 2.1M 2.1M 0 100% /
/dev/root 2.1M 2.1M 0 100% /
/dev/mtdblock/4 704.0k 324.0k 380.0k 46% /jffs
4-2. 擴充JFFS2
/jffs主要存放OpenWrt套件, 核心模組, 開機script等. 空間大小的規劃, 依照需求而定. 如有不足, 利用外接式儲存媒體擴充容量. 亦可使用開機script, mount CIFS.
5. 建立套件列表
# mkdir -p /jffs/tmp/ipkg
# ipkg update
6. 硬碟分割與格式化
參閱DD-WRT的USB storage
若使用CIFS當作儲存媒體, 此步驟可省略.
6-1. 啟用USB
伺服器--> 伺服器--> USB 驅動
可依需求點選必要項目.
--> 儲存設定--> 重新啟動路由器
外接式USB硬碟, 請外接電源.
6-2. 檢查
# dmesg | grep -i scsi
6-3. 安裝OpenWrt相關套件
若已在其他PC事先分割格式化者, 此步驟可省略.
不同版本所含的內建命令與模組都不相同. 若您要使用的命令不存在, 得先安裝OpenWrt的相關套件後, 才能執行.
fdisk - Partition table manipulation utility
e2fsprogs - Ext2/3 filesystem utilities
swap-utils - Swap space management utilities
因使用OpenWrt, 需要相關的library
uclibc - Standard C library for embedded Linux systems
libgcc - GCC support library
所以, 依內建命令的缺少, 安裝對應的套件, 更改library來源路徑後, 就可依照WL-500g 系列改機基本步驟, 分割格式化硬碟.
例如: WL-500gx使用mini_usb版
先安裝uClibc
# cd /tmp
# wget http://downloads.openwrt.org/whiterussian/packages/uclibc_0.9.27-9_mipsel.ipk
# wget http://downloads.openwrt.org/whiterussian/packages/libgcc_3.4.4-9_mipsel.ipk
# ipkg -force-depends install uclibc_0.9.27-9_mipsel.ipk libgcc_3.4.4-9_mipsel.ipk
# rm *.ipk
# cd ~
再安裝fdisk套件
# ipkg install fdisk
開啟另一shell, 更改library來源路徑, 執行fdisk
# sh
# export LD_LIBRARY_PATH=/jffs/lib
# fdisk -l
Disk /dev/scsi/host0/bus0/target0/lun0/disc: 14 MB, 14909440 bytes
2 heads, 32 sectors/track, 455 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/scsi/host0/bus0/target0/lun0/part1 * 1 455 14544 83 Linux
# exit
同樣道理, 安裝e2fsprogs後, 可執行格式化; 安裝swap-utils, 可啟用swap.
格式化較大硬碟前, 先啟用swap.
nokaid_usb版已內建格式化程式, 不需安裝e2fsprogs.
安裝相關的OpenWrt必要套件後, 可將/jffs目錄打包壓縮備份.
以上, 再告一段落. 因為DD-WRT版本很多, 不像Oleg單純, 所以安裝步驟各不相同. 必須領悟其中的道理, 才能往Optware邁進.
離線
#3 2008-11-21 09:41:12
#6 2008-11-23 01:26:43
Re: [DD-WRT] 華碩Router改機
ok, 再來就是最後的套件安裝. 您可選用OpenWrt或Optware的套件. 二者都有自己的uClibc, 所以只要注意library的來源路徑, 套件的使用上並無太大的不同. OpenWrt的套件會安裝在/jffs, Optware的套件會安裝在/opt.
OpenWrt的套件安裝, 在上篇已概略提過. 如果您想使用OpenWrt, 建議您再安裝ipkg來管理, 會比DD-WRT內建的ipkge功能更多.
ipkg-sh - lightweight package management system (shell version)
ipkg - lightweight package management system
DD-WRT的Optware套件與Oleg的Optware套件, 都是同樣由NSLU2-Linux維護, 所以套件與設定等, 大致相同. 安裝Optware前, 先mount /opt, 再參考DD-WRT的Optware這篇文章. 安裝方式可選用別人寫好的script自動安裝, 也可手動安裝. uClibc一樣是不可少的基本套件, 然後再安裝ipkg-opt作管理.
uclibc-opt - 0.9.28-13 - micro C library for embedded Linux systems
ipkg-opt - 0.99.163-10 - The Itsy Package Manager
ipkg-web - 7-7 - A web frontend for ipkg
咦, 有web管理耶! 不過我個人還沒用過, 等候您的測試與分享.
談到這邊, 大概可以結束了. 心思慎密的您可能會有個疑問, 每次開機後, 要一步一步來嗎? 開機啟動在哪裡? 答案就在網頁設定內. 可將開機後要執行的命令放在系統管理--> 指令, 命令輸入後--> 儲存啟動指令. 或者寫個script, 附檔名.startup, 存放在/jffs/etc/config目錄內.
最後, 請問您幾個問題:
1. 如何由遠端, 刷機為DD-WRT, 分割, 格式化硬碟, 到安裝OpenWrt/Optware等相關套件?
2. 如何判斷哪些是必要的套件?
3. 如何利用JFFS2/CIFS?
如能解決上述問題, 而別人稱您為師傅, 可當之無愧也. 屆時不要忘了提攜新手, 一起窺探Linux的自由世界.
ps. 上述改機過程會陸續整理在wiki內.
離線
#8 2008-12-22 10:36:28
Re: [DD-WRT] 華碩Router改機
1. 先確認file system核心模組, 我使用ext3
# lsmod | grep ext3
ext3 76884 2
jbd 58280 2 [ext3]
2. 檢查磁碟
# ls -l /dev/discs/disc0/
brw------- 1 root root 8, 0 Jan 1 1970 disc
brw------- 1 root root 8, 1 Jan 1 1970 part1
brw------- 1 root root 8, 5 Jan 1 1970 part5
brw------- 1 root root 8, 6 Jan 1 1970 part6
3. 掛載磁碟
# mount -t ext3 /dev/discs/disc0/part5 /opt
4. 檢查
# mount
(省略)
/dev/discs/disc0/part5 on /opt type ext3 (rw)
設定nvram的clkfreq, 可調整cpu頻率.
離線