※ 本文為 zbali.bbs. 轉寄自 ptt.cc 更新時間: 2012-10-04 03:31:46
看板 Modchip
作者 cassine (Savannah)
標題 [心得] 網樂通解磚
時間 Sat Mar 12 18:17:30 2011



一不小心網樂通這種東西也會半磚的,今天就讓我這台半磚然後又救回來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設一下密碼。

--

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

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.31.137
kikiqqp:歐歐歐 很標準的救援方式,FON也是這樣搞1F 122.116.119.110 台灣 03/12 21:22
tp6vul3u:太深奧啦XD2F 111.241.69.75 台灣 03/12 21:38
firewolf:建議換kernel的時候,是把舊的kernel改名3F 118.161.188.233 台灣 03/13 10:55
firewolf:例如舊的改為vmlinux.ub-orig
firewolf:再放新的(vmlinux.ub),萬一開失敗進
firewolf:uboot提示的話,還可以用ext2load指令來
firewolf:載入原本的 vmlinux-orig,再下bootm
firewolf:80000000 就可以用舊的開機。當然,要有
firewolf:console 線才可以這麼做,這樣才看得到開
firewolf:機失敗,才可以下 command。詳細的指令可
firewolf:以看 uboot下printenv印出來的bootcmd
firewolf:這一行顯示的開機指令。
※ 編輯: cassine         來自: 122.117.54.160       (03/13 11:09)
firewolf:另外,在uboot下,用ext2ls usb 0:1可以看13F 118.161.188.233 台灣 03/13 11:11
firewolf:第一個分割區(/dev/sda1)中的檔案,改為
firewolf:ext2ls usb 0:2 則是/dev/sda2。

--
※ 看板: ott 文章推薦值: 0 目前人氣: 0 累積人氣: 1679 
※ 本文也出現在看板: npc
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇