2010/03/11

Asus WL-520GU 刷 Oleg-Lly 韌體

有了前次刷韌體的經驗,已經對這些操作熟悉不少。因為之前 DD-WRT 狂斷,只好先刷回原廠韌體看看是否有問題,過了一週後恢復了原有的穩定性,猜想 DD-WRT 可能對我這台 RAM 只有 16MB的 AP貧乳娘來說,負擔過大了吧。其實剛要決定刷韌體時就已經知道除了 DD-WRT 外,還有 Tomato 跟 Oleg 等韌體,尤其是 Oleg 這個韌體很特別:它是基於華碩釋出的原廠韌體原始碼修改而成的,也就是說以什麼功能都沒有,僅有的就只有穩定的原廠韌體為基礎,加上得以自訂嵌入式系統的 Telnet/SSH 後端,我們就可以作更多利用。

Oleg 韌體簡介

Oleg 版韌體網頁: http://oleg.wl500g.info/
Lly 維護版: http://code.google.com/p/wl500g/

由於 Oleg 版是基於 ASUS 原廠韌體,目前只有 ASUS WL-500 系列 AP 可以安裝,其他型號和廠牌可就抱歉了。而又由於 Oleg 版距離最後釋出的日子已有很長一段時間,有很長的時間這個韌體無人維護,好在有後繼人 Lly 成立了另一專案,並繼承了 Oleg 的修改。由於 Oleg 已久未更新的緣故,我推薦直接取得 Lly 版的。除了還有繼續修正問題外,也有逐步支援其他機器的意圖,是個有前途的版本。

進行韌體更新

直接從 Lly 維護版的 Google Code 取得對應機器的 trx 檔後,以瀏覽器登入原版 AP 管理介面,直接到韌體更新的地方上傳這個 trx 檔就可以了,超簡單!等系統進度顯示完成後會重新啟動,再重新進入管理介面,如果可以進入的話就表示成功了。

開啟 Telnet/SSH

安裝完成之後可以發現大部分的設定皆有保存,這是因為 Oleg 版的核心正是華碩的,只不過介面是舊版的。要來解放 AP 靠這個 Web 介面絕對不夠,我們要把內建的 Telnet/SSH 給開啟,這才是此類韌體的精華。



首先到選單的 System Setup → Service 頁面,如圖。可以看到 Telnet/SSH 的設定,擇一開啟即可。由於我偏好 SSH,於是我選擇關閉 Telnet,開啟 SSH 並僅限定區網內使用,以免有心人連入亂改。Telnet 和 SSH 都是命令列,但是 Telnet 過程沒有加密,SSH 過程有加密。一般管理機器時網管都會選用安全的 SSH,所以我因為習慣因素也選了這個。利用 PieTTY 連線 SSH 也很便利,難度不會很高。

選擇完畢後按下 Finish,並於接下來的畫面繼續確認,以將設定寫入 nvram 並重新開機、啟動服務。

登入 Telnet/SSH

不管是 Telnet 或是 SSH,登入方式都是利用連線軟體連入。輸入 AP 的 LAN IP 後按下連線就可以連到管理介面,值得注意的是 SSH 第一次連線會要你確認 RSA Key,安心接受就是了。



連線成功後依序輸入 AP 管理介面的帳號密碼後 (看你當初設定是什麼,預設是 admin/admin),就可以登入內建的 Linux 作業系統。要玩韌體絕大多數的動作都要在這個文字交談視窗下進行,而不是圖像介面,如果不熟一些指令的玩家可以藉這種機會小練習一下。

安裝、設定外接 USB 磁碟


因為自訂韌體最大的好處就是能安裝一些有的沒的來玩,你有想過你的 AP 會幫你自動養畜生或是開農場嗎?或是架設 NAS、網路芳鄰、FTP存取檔案,甚至是架設 VPN, HTTP, VoIP 伺服器。這些都是使用原廠韌體所做不到的。當然,額外運作這些程式會吃掉 AP 珍貴的資源,一般來說這種嵌入式系統的硬體都強不到哪裡去,所以請不要把它當成超級電腦猛跑其他程式,反而讓 AP 原本的任務跑的亂七八糟不穩定了。

而要安裝自訂程式需要有空間,一般來說都是建議用一支隨身碟來擴充空間。我之前在玩 DD-WRT 的時候是用當初申請 ADSL 的贈品 64MB USB 碟,現在則是改用最近幾天買到的特價 NT$99 TDK 1G 隨身碟。一般來說如果只是要構築一個系統 64MB 算勉強夠用了,如果還有養畜生的需求不是要外接硬碟,就是要靠網路芳鄰連接另一台電腦了吧。強烈不建議用隨身碟養,因為隨身碟讀寫速度沒有硬碟快之外,壽命還會大幅縮短。

首先請弄到一支不會再用到、內容為空的隨身碟,因為它可能會插在 AP 後面直到它壞掉為止。把它插在 AP 的 USB 槽上以讓系統自動辨識。我們要對這隻隨身碟作重新切割並格式化的動作,就像處理一顆全新的硬碟一樣。我們的目標是要分割成兩個磁區 (資料區和 SWAP 區) 並對這兩個磁區作格式化。

(FYI: Abin's Tech Note: Wl-500g 韌體更新和磁碟分割)
我在此直接引用改機前輩 Abin 的文章,他的一系列文章不知幫助了多少想要玩改機的人。分割硬碟的部分請參看他的文件。經過 fdisk 重新分割成兩塊區域後 (例: 989MB 空間分 957MB, 32MB 兩個) 再分別指定類型編號 (83 Linux, 82 Linux Swap),再以 mke2fs 和 mkswap 兩個指令分別格式化空間成 ext3 和 swap。這邊與 DD-WRT 最大的不同是 fdisk, mke2fs, mkswap 這些指令在 Oleg 全部都是內建,而 DD-WRT 這些指令卻都閹割掉了,必須尋求第三方軟體來達成,我先前就是用 Ubuntu Desktop Live CD 來分割的。


處理完後的分割表,可以「fdisk -l」指令來查看是否正確。

(FYI: Abin's Tech Note: 基本環境的設定 - ipkg & post-boot)
最後將掛載設定寫入到 /usr/local/sbin/post-boot 這個檔案裡面,以後啟動的時候就會自動掛載這些磁區了。這個檔案預設並不存在,你可以用「vi /usr/local/sbin/post-boot」來產生 (vi 的使用教學參見鳥哥),順著 Abin 那一頁提供的內容複製貼上後存檔就可以了。最後記得「chmod +x /usr/local/sbin/post-boot」給予這個腳本檔執行權限。
mkdir /usr/local/sbin -p
vi /usr/local/sbin/post-boot

chmod +x /usr/local/sbin/post-boot

最後別忘記要執行下面這段指令,以將 /usr/local/sbin/post-boot 寫入 flashfs。
flashfs save && flashfs commit && flashfs enable
由於預設系統資料夾的檔案都是存放在一塊 Flash 裡面,這個 Flash 讀寫需要特別下指令才能同步,以後會碰到更多這樣的狀況。如果有修改到系統檔案別忘了作一下 flashfs 更新。不然重開機後修改被還原可是要重新來過的。

重新開機


做完了 USB 碟的擴充和掛載設定之後 (記得要下指令儲存到 flashfs),最後需要作的事便是重新開機讓這些設定生效,重新開機只要下一行指令便可:
reboot

按下Enter後,AP 便會重新開機,並按照 /usr/local/sbin/post-boot 的設定掛載磁區。要檢查有沒有自動掛載,可以利用「mount」和「free」指令查看:
$ mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
tmpfs on /tmp type tmpfs (rw,noatime)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw)

$ free
              total         used         free       shared      buffers
  Mem:        13752        13112          640            0          728
 Swap:        31736         3620        28116
Total:        45488        16732        28756
如文字所示,/dev/scsi/host0/bus0/target0/lun0/part1 成功掛到 /opt 上,而 Swap空間也有 32MB。

安裝 Optware

是的,Oleg 也像 DD-WRT 一樣,有著 Optware 的支援,所以 DD-WRT 能玩的,Oleg 也大多能玩。礙於篇幅下篇文章介紹如何安裝 ipkg 套件及設定環境,請按此閱讀

2 則留言:

  1. 有人有經驗,你不是孤單的 XD
    http://www.vpsee.com/2010/03/replace-dd-wrt-with-tomato/

    回覆刪除
  2. 可是同一機型,大家裝DD-WRT都沒問題啊,難道我的是機王嗎?orz
    算了,現在換Oleg也很穩的跑就好了。

    話說你提供的那網站的苦主,ping DD-WRT的數據有夠離譜的。

    回覆刪除