網樂通解磚 - 改機

Table of Contents


一不小心網樂通這種東西也會半磚的,今天就讓我這台半磚然後又救回來XD。

其實今天手賤想編新版的0125核心進去,無奈怎麼編出來的vmlinux.ub檔案
U-boot都會抱怨說:「這是29-bit的核心,請給我32-bit的核心不然就把我換掉
」,換了pdk7105se 的設定檔重編還是一樣,最後發現是官方套件的bug...
(/‵Д′)/~ ╧╧

把肥佬黎給的A18B原始碼裡面的patch 打進去後就可以正確編出32-bit的核心了


那到底是怎麼弄成磚的?因為之前有按照雪狼大的建議在救援磁碟/dev/sda1 的
/etc/init.d/rcSBB 裡面加上/usr/sbin/telnetd -l /bin/sh,這就是一切災難
的開始,sh這個介面不會顯示當前所在的路徑,所以不時要用 pwd指令去查看目
前的位置,結果原本應該要把/dev/sda2/vmlinux.ub換掉的卻換成/dev/sda1 裡
面的了。

這時候我的vmlinux.ub是壞的但沒察覺,所以很高興的重新開機,系統載入原本
/dev/sda2 裡面的,所以可以正常開機但卻不是我要的核心,於是我又再把核心
蓋一次,這下sda1跟sda2的核心都是壞的了,但當下並不知情,所以重新開機就
磚了,而且還是回復模式跟普通模式都磚掉。哇咧~

只好拿出 USB2TTL傳輸線放大決解磚了,幸好今天還沒動到U-Boot,要是U-Boot
壞掉真的就全磚沒救了。

開機後U-Boot說核心壞掉了不能載入,所以停在U-Boot的指令模式,好吧!看看
U-Boot的技術文件上說支援tftp載入核心,就決定用這個方法救了,誰叫U-Boot
看不到網樂通的USB 連接埠。

所以去下載了tftpd32/64,把備份檔裡面的核心vmlinux.ub取出放在tftpd 的目
錄備用。

打開終端機,用Console 線連到網樂通U-Boot的指令模式介面設定IP位址,指令

> setenv ipaddr 192.168.0.10 //視需要自己改
> setenv serverip 192.168.0.3 //一樣看你tftpd 架在哪台電腦上
> printenv //檢查一下是不是都改對了
> tftp 80000000 vmlinux.ub //將核心檔案載入到記憶體80000000的位
置,這個位置是網樂通開機的進入點
> bootm

成功的話會看到一大串開機訊息,反正回復韌體需要一段時間讓他跑沒關係,這
時網樂通會自動把/dev/sda1/target.tgz解開蓋回/dev/sda2 裡面,先把普通模
式救回來。

於是乎,網樂通的普通模式就復活了,重新開機進入普通模式,再用telnet進入
主機,這時候要用普通模式存取回復模式的磁區,所以先在/mnt底下建一個目錄
,比如說

host $ mkdir /mnt/rcvy

然後掛載

host $ mount /dev/sda1 /mnt/rcvy

然後趕快把根目錄剛剛救回來的核心複製到 /mnt/rcvy下面

host $ cp vmlinux.ub /mnt/rcvy

這樣就把回復模式救回來了。

為了避免下次在犯同樣錯誤,個人建議把/usr/sbin/telnetd -l /bin/sh這行稍
做修改,改成:

/usr/sbin/telnetd -l /bin/login 或是 /usr/sbin/telnetd -l /bin/bash

前者在連線時會提示登入,然後呼叫/bin/bash ,bash會讀取/etc/profile裡面
的設定,如此就可以顯示路徑;後者則是直接讀取/etc/profile裡面的設定,而
profile 檔案裡面有指定要是執行bash的話要顯示路徑。

如果你想保護你的主機不被別人亂搞的話,就用前者,然後passwd設一下密碼。

--

____ _ _ _ _ ____ _ _ ____ _____ ____
(_ _)( \( )( \/ )( ___)( \( )(_ _)( _ )( _ \
_)(_ ) ( \ / )__) ) ( )( )(_)( ) /
(____)(_)\_) \/ (____)(_)\_) (__) (_____)(_)\_)


--

All Comments

Susan avatarSusan2011-03-17
歐歐歐 很標準的救援方式,FON也是這樣搞
Delia avatarDelia2011-03-21
太深奧啦XD
Kumar avatarKumar2011-03-25
建議換kernel的時候,是把舊的kernel改名
Tom avatarTom2011-03-28
例如舊的改為vmlinux.ub-orig
Kelly avatarKelly2011-03-29
再放新的(vmlinux.ub),萬一開失敗進
uboot提示的話,還可以用ext2load指令來
Hedwig avatarHedwig2011-04-03
載入原本的 vmlinux-orig,再下bootm
80000000 就可以用舊的開機。當然,要有
console 線才可以這麼做,這樣才看得到開
Caroline avatarCaroline2011-04-03
機失敗,才可以下 command。詳細的指令可
以看 uboot下printenv印出來的bootcmd
Rebecca avatarRebecca2011-04-06
這一行顯示的開機指令。
Rebecca avatarRebecca2011-04-10
另外,在uboot下,用ext2ls usb 0:1可以看
Skylar DavisLinda avatarSkylar DavisLinda2011-04-11
第一個分割區(/dev/sda1)中的檔案,改為
Joe avatarJoe2011-04-14
ext2ls usb 0:2 則是/dev/sda2。