Wednesday, January 30, 2008

Reset FON by Serial Console Cable

前言

如果完全無法進入FON的管理介面,且無法透過Reset Button重置您的FON,只要Firmware並沒有損毀、非硬體故障,就可以使用以下的方法來恢復FON至出廠預設值。在這之前,您需要一條FON的Serial Console Cable才能進行以下操作。

Note: 若您曾經刷過Firmware如DD-WRT,或是其它非官方版本之Firmware,可能不適用此文章的方法!而更新成FreeWLAN並不是刷Firmware,僅更換FON內部檔案,並未真正覆蓋原始的Firmware,可以使用此方法恢復至出廠預設值。


重置開始

重置的方法很簡單,請先連接至FON的Serial Console,並依實際情況嘗試以下兩種方法:

情境1
您使用FreeWLAN,因為設定錯誤讓FON無法正常運作,或者是使用官方Firmware,但因為意外更改或刪除某些重要檔案,造成FON無法正常開機。
或是使用Console時,看到了以下訊息(這表示JFFS出現了問題)
mini_fo_lookup: ERROR, meta data corruption detected.
mini_fo_d_delete: negative dentry passed.
mini_fo_d_release: no private data.

若為此種情況,請注意下圖的紅色標記訊息,出現後按下Enter鍵即可登入Console。


Fig 1: Login Serial Console (Click to enlarge)


登入後執行以下指令
rm -fr /jffs/*
reboot
接著會出現以下訊息
The system is going down NOW !!
Sending SIGTERM to all processes.
Please stand by while rebooting the system.
Restarting system.
等到重開機完成後,就會出現原廠的預設值了!


情境2
基於某些理由,刪除重要的系統執行檔,如busybox,或更進一步的刪除了/bin, /sbin等資料夾,使得情境1的方法無法使用、無法登入Console。若使用之前的方法,但FON的Hostname卻是寫(none),同樣也適用這個方法。

若遇到這樣的情況,請在以下紅色標記訊息出現時,立刻按下Enter鍵取得Console。剛開始操作時可能會有點停頓,這是正常現象,稍後會自動改善。此時您會發現Hostname寫的是(none)而不是OpenWrt,這表示您目前操作的系統,是直接來自於原廠Firmware的內容,而不是套用過JFFS後的結果,也就是您之前任何的刪除動作將會暫時視而不見。在此情況下,您可以執行出廠時就有的指令,且不會因為您之前修改檔案系統而有所不同。但如果JFFS正常,或是接下來的開機指令可以正常執行,雖然Hostname仍寫的是(none),您的檔案系統就會呈現之前修改過的樣子,此時可以嘗試執行情境1的指令,或許也能解決問題。


Fig 2: Login Another Part of Serial Console (Click to enlarge)


執行以下指令
rm -fr /rom/jffs/*
rm -fr /jffs/*
完成後,拔除電源重開機就可恢復至出廠預設值!

2 comments:

WEST said...

我的FON刷死了,我造了CONSOLE CABLE,成功看到登入畫面,但不知為何,keybroad的輸入有點問題,如輸入a,會出現aO,輸入空白鍵,會變成^C,令我不能輸入指令。

請問為什麼會這樣?

(T)ttrick said...

也許是Serial Port的設定值不正確
看看是不是9600-8-N-1吧
我使用的是PuTTY
倒是沒碰過這種情況...