2007-01-11

Wl-500g 韌體更新和磁碟分割

改機的第一個步驟一定是先改掉原廠的 firmware。首先去下載 Oleg 大大改出來的韌體:http://oleg.wl500g.info/ ,最後我使用的是 1.9.2.7-7g, 下載的是給 WL500g 用的韌體檔。解壓縮後裡面有個附檔名 .trx 的檔案,這才是更新時所需要的檔案。一般這類的裝置都有提供更新韌體的介面,Asus WL500g 提供網頁來更新韌體,進到管理頁面後選系統設定 (System Setup) -> 韌體更新 (Firmware Upgrade),這個頁面你也可以看到目前韌體的版本資訊,瀏覽 (Browse) 本地端的檔案,選擇你剛剛解壓縮的 .trx 檔,靜待幾分鐘韌體就更新完了。如果你換了韌體後想換回來,只要去華碩的網站下載,就可以恢復原來的狀況。我最後看到華碩釋出的韌體版本是 1.9.5.0,繁體中文版可以在這裡下載。

更新完畢重新開機原有 Asus 提供的網頁設定介面仍然存在,操作方法也和原廠韌體大同小異,而且,別擔心全部設定都消失要重設,因為核心原始碼是同一個,只不過多了一些說明書上沒有的功能,原有上面的設定(撥接方式、IP、密碼..)都會保留。Oleg 大大好像是俄羅斯人,不要奢望這樣的網頁介面會有中文,除非哪天有人無聊把那些網頁字串都中文化才有可能。

這時候你一定會很興奮地去試一些透過網頁介面就可以設定的功能(像是 FTP、Samba),我建議最好這些功能都先用網頁去關掉(除非你的改機步驟到此為止),因為後面有些步驟我們會重新設定 samba,安裝 vsftpd,有些軟體和設定會比網頁能做的更穩定或更有彈性,這裡先不要急著去打開這些功能,好處我們後面會提到。除了網頁有提供幾個新功能外,重點是,現在我們可以用 telnet 登入 WL500g 囉!用和網頁介面相同的 IP 和帳號密碼 telnet 登入,稍微有 linux 經驗的可以翻弄一下目錄,檔案結構和命令很多都和 linux 一樣,但是由於核心和 CPU 和一般 PC 跑的 linux 有很大的差異,加上你看到的檔案目錄其實都是在 firmware 所在的 flash 裡面,功能和空間都很有限,而且機器重開後所有變更都會消失。如果想在上面安裝軟體或是變更設定,一定需要額外的儲存媒介和強制更新 flash 的動作。

額外的儲存媒介當然只能透過那個 USB 介面,WL500g 不像 WL500g Deluxe 有兩個 port,所以透過唯一的 USB port 來裝硬碟或是大姆哥之類的 flash 記憶卡以後就不能再玩什麼 USB 印表機或 Webcam 囉!WL500g 的 USB 還是 1.1 的,所以如果拿來接 USB2.0 大硬碟或進行大量的檔案存取就不必了,這裡建議拿一條用不大到的 128 or 256MB 記憶卡來插就夠了,如果是用 Deluxe 的 USB2.0 介面,那就可以玩大容量硬碟空間來做檔案分享。

內建的韌體 USB 儲存空間是用來玩 FTP 用的,所以一插入 USB 儲存裝置它會自動幫你 mount 起來 (mount 到 /tmp/harddisk,裝置名稱 /dev/scsi/host0/bus0/target0/lun0/part1,如果這台硬碟有其他分區,就會有其他 index 的名稱出現 ),並且啟動內建的 FTP 伺服器(笨蛋 FTPD: stupid-ftpd),所以如果要設定你的儲存裝置,要先砍掉這個服務,才能 un-mount 這個硬碟(不然儲存空間會因為正被服務使用中,無法 unmount)。如果你的 USB 插進去發現沒有反應,可以進到設定網頁去 Eject 退出 USB 重插一次,或是直接打開 FTP Server,這些動作會強迫系統去檢查是否有 USB 裝置插入,並且自動去 mount。

killall stupid-ftpd
umount /tmp/harddisk

一般的記憶卡或硬碟插上去之前應該都已經格式化過了,一般上面的檔案系統不外乎是 FAT、FAT32 甚至是 NTFS,如果你的儲存設備就是專門要給 WL500g 用的,沒有其他考量的話不管容量大小強烈建議重新規劃,把檔案系統改成 linux 專用的 ext3。雖然 guides 上面說除了 NTFS 不支援外,原有的 FAT 和 FAT32應該都可以直接用,但是我實際試過的經驗是即使是 FAT,我跑 samba 的時候用網路芳鄰要寫入檔案,不管怎樣寫入動作都會失敗(和權限沒關係,因為同樣的設定我在換成 ext3 的檔案系統就好了),為求順利改成專用的 ext3 檔案系統比較保險,也可以處理大硬碟的問題。用 fdisk 來做 partition 的動作。

fdisk /dev/discs/disc0/disc

接下來刪除 (d) 原有的 partition,新建立 (n) 一個 primary partition (p),代號是第一個 (1),指定拿來做主要空間,假設保留 210MB,起始位址用預設值(直接按 Enter),結束位址或空間大小就敲 +210M。預設會用 ext3 檔案系統 ID: 83。

再來指定剩下的空間當作 swap (n) (p) (2),起始和結束位址都用預設值(用掉剩下的空間,按兩次 enter),指定 (t) 這第二個分割 (2) 的檔案系統是 swap (82),寫入磁碟分割的變更設定並且離開 (w)。以上 ( ) 內的指令都是在 fdisk 過程中要下的命令和選擇。可以用 fisk -l 來看剛剛規劃分割區的結果。(最好是第一個當主要空間,第二個當 swap,好像只有如此,重新開機後才不會多 mount 一次 USB 磁碟,FTP 的 servive 也才會自動關閉)

fdisk -l

結果裡會有最新的 Device ID,像是 /dev/scsi/host0/bus0/target0/lun0/part1,主要的磁碟區,以及 /dev/discs/disc0/part2,剛剛分割的 swap,接下來要分別製作 swap (mkswap) 和格式化 (make fs)。

mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
mkswap /dev/scsi/host0/bus0/target0/lun0/part2

兩個步驟都一定要做到完,回到提示符號才算成功。和一般分隔硬碟磁區一樣,格式化完要重新開機才會生效

reboot

重開完要先手動把這兩個新建的磁碟區給啟動和 mount 起來,這裡我們把主要的磁碟區 mount 到 /opt 這個目錄:

mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
swapon /dev/scsi/host0/bus0/target0/lun0/part2

好!步驟到這裡你的 WL500g 就有了一個額外獨立的磁碟機,可以用來安裝軟體、儲存設定,甚至拿來分享檔案和架站。檢查一下這兩個新的分割的狀況吧!可以用 free 這個指令觀看 swap 和記憶體的使用情況,用 df 可以看磁碟機的使用和剩餘空間。

有了專用的磁碟機,我們接下來才能做幾個重要的初始設定動作:
1. 設定安裝軟體的環境 (ipkg)
2. 先來裝個好用的編輯器,等等拿來編輯設定檔比較方便
3. 編輯系統檔,讓每次開機都會自動 mount 剛剛新增的磁碟機

(接下篇的初始環境設定,先不要重新開機 reboot 囉!)

參考文章:
ipkg package system Tutorial
[HowTo] Getting started (Firmware upgr, Storage, Samba, SSH)

回應: 15

CHI(小奇) 提到...

http://wl500g.info/showthread.php?t=1779

這各很厲害多改一各usb

文章裡還有人改了一顆hdd在裡面

Abin 提到...

嗯!這台是 WL-500gx,USB 是 2.0 的
我也試過用 USB 外接硬碟,不過 500g 的 USB 是 1.0,速度好慢,加上 samba 的效率不夠好,所以拿來跑網路硬碟的效能略差
如果是 2.0,那麼多裝一個 USB 就比較有用了~

匿名 提到...

Abin請問我使用的是WL-700g不知有無相關改機資料 或文章 是否也可支援 PHP 的網頁伺服器 (thttpd) 安裝設定 謝謝

Abin 提到...

wl700g 一樣請去 Oleg 大大的討論區找找,那邊一樣有不少的相關討論和文章。

匿名 提到...

請問一下我在格式化時,它寫

mke2fs: /dev/scsi/host0/bus0/target0/lun0/part1 is mounted!
mke2fs: it's not safe to run badblocks!

這個問題要怎麼處理啊??

Abin 提到...

格式化前請先 umount

cnidance 提到...

請問一下用了ipkg -d usb install http://ipkg.nslu2-linux.org/feeds/optware/wl500g/cross/stable/python25_2.5.1-1_mipsel.ipk 以後,然後他就會顯示ipkg: write error: No space left on device ,機子中的/tmp 滿了,有辦法讓ipkg的下載和解壓縮都在USB碟上面做嗎?我是使用openwrt ,oleg沒這問題嗎?

Abin 提到...

To cnidance:
我沒用過 openwrt,我只知道使用 Oleg 的 FW、裝完 ipkg 之後,預設的下載目錄都會在 \opt (USB 隨身碟) 的目錄下。
如果你是外接 USB,自己 mount 完、再指定 ipkg 的下載目錄,不就不會預設放到主機那少的可憐 ROM 裡的 tmp 下了嗎?(希望您知道我在說什麼,請查詢 USB mount 和 ipkg 相關語法)

cnidance 提到...

解決囉~~直接使用環境變數~
#mkdir -p /mnt/usb
#mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb
#mkdir /mnt/usb/tmp
#echo dest usb /mnt/usb >> /etc/ipkg.conf
#echo export TMPDIR=/mnt/usb/tmp >> /etc/profile

Unknown 提到...

不好意思,請問一下目前1.9.2.7-10有支援到1TB的硬碟嗎? 因為我格式化的時候出現Could not set up superblock訊息

Unknown 提到...

請問一下,小弟我用1TB的硬碟分割再格式化,結果出現Could not set up superblock的訊息,是因為硬碟大小的關係嗎? 有辦法解決嗎? 謝謝!!

Abin 提到...

To michael:
首先開宗明義,我只有 Wl-500g,Oleg 的官網也提到,1.9.2.7-10 韌體已不支援 wl-500g,先別說我的機器本來就不能接硬碟(除非用 USB 外接),就算接了,我也不能用 -10 的韌體,所以你提的問題我碰不到,也無從解決起。
再者,我也不是 Linux 達人,這類問題可能要麻煩你自己去 Oleg 的論壇找,或請教其他玩 Linux 的高手。

匿名 提到...

請問如何開啟.trx的檔案開,該用啥軟體 ? 謝謝.

Abin 提到...

.trx 是 Asus 的韌體檔,被編譯過的 binary file,供系統載入使用的機器碼,沒有軟體可以開啟。

匿名 提到...

用asus提供的flimware載入trx檔??

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!