作者cassine (Savannah)
看板Modchip
标题[心得] 网乐通解砖
时间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设一下密码。
--
○ ____ _ _ _ _ ____ _ _ ____ _____ ____
。 ★(_ _)( \( )( \/ )( ___)( \( )(_ _)( _ )( _ \
o _)(_ ) ( \ / )__) ) ( )( )(_)( ) / ● ‧
(____)(_)\_) \/ (____)(_)\_) (__) (_____)(_)\_) ★
o
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.31.137
1F:推 kikiqqp:欧欧欧 很标准的救援方式,FON也是这样搞122.116.119.110 03/12 21:22
2F:推 tp6vul3u:太深奥啦XD 111.241.69.75 03/12 21:38
3F:→ firewolf:建议换kernel的时候,是把旧的kernel改名118.161.188.233 03/13 10:55
4F:→ firewolf:例如旧的改为vmlinux.ub-orig118.161.188.233 03/13 10:56
5F:→ firewolf:再放新的(vmlinux.ub),万一开失败进118.161.188.233 03/13 10:57
6F:→ firewolf:uboot提示的话,还可以用ext2load指令来118.161.188.233 03/13 10:57
7F:→ firewolf:载入原本的 vmlinux-orig,再下bootm118.161.188.233 03/13 10:58
8F:→ firewolf:80000000 就可以用旧的开机。当然,要有118.161.188.233 03/13 10:58
9F:→ firewolf:console 线才可以这麽做,这样才看得到开118.161.188.233 03/13 10:58
10F:→ firewolf:机失败,才可以下 command。详细的指令可118.161.188.233 03/13 10:59
11F:→ firewolf:以看 uboot下printenv印出来的bootcmd118.161.188.233 03/13 10:59
12F:→ firewolf:这一行显示的开机指令。118.161.188.233 03/13 11:00
※ 编辑: cassine 来自: 122.117.54.160 (03/13 11:09)
13F:→ firewolf:另外,在uboot下,用ext2ls usb 0:1可以看118.161.188.233 03/13 11:11
14F:→ firewolf:第一个分割区(/dev/sda1)中的档案,改为118.161.188.233 03/13 11:12
15F:→ firewolf:ext2ls usb 0:2 则是/dev/sda2。118.161.188.233 03/13 11:13