Openwrt 烧uboot 需要慎重,一般买一个带不死uboot的路由器再折腾会比较安全,因为
openwrt firmware对uboot分区进行了保护,而且带有不死uboot的路由器可以通过web界面刷firmware。
传说中的不死uboot 原版可以见下面的网址:
https://github.com/pepe2k/u-boot_mod
那么uboot是如何烧写的呢?我总结了下图:
这里总结了4个方法,前两个方法是openwrt还能开起来的时候,后两个办法是openwrt挂掉的时候用的。
第1个方法是通过SSH连接来将firmware放入到可写的文件系统,并且用命令将其刷人。
因为SSH支持文件的传输,用winscp+putty可以搞定。
第2个方法通过在电脑上搭建了一个http server,用ssh命令让openwrt从电脑上下载到firmware到板子上可写的文件系统,
并且用命令将其刷人。
第3个方法需要拆路由器,通过TTL线用命令让路由器从电脑上拿uboot,并且用命令刷入uboot
第4个方法是不死uboot的方法,这里的“不死”的意思实际上是不用拆机来恢复openwrt,
这样大大方便了倒腾的过程。这个uboot一般带有一个友好的web界面,通过HTTP将uboot文件上传到路由器。
当然了,如果连uboot都挂掉了,那么只能通过其他方法刷openwrt了(比如拆下flash直接刷),下面是一个例子:
http://blog.chinaunix.net/uid-27194309-id-3405021.html
在这里(https://github.com/pepe2k/u-boot_mod)提到了如何恢复:
My device does not boot after upgrade!
I told you... bootloader, in this case U-Boot, is the most important piece of code inside your device. It is responsible for hardware initialization and booting an OS (kernel in this case), i.e. it's the bridge head for delegating to / flashing kernel and rootfs images. So, if during the upgrade something went wrong, your device will not boot any more. The only way to recover from such a situation in a mild way is via a JTAG adapter connection. In case of a lack of JTAG connection, you would even need to remove the FLASH chip, load proper image using an external programmer and solder it back.
可以看到,如果uboot都坏了,那么只能将flash拆下,用编程器刷flash,或者使用JTAG连接到路由器。这些设备都需要额外购买,
而且有些路由器也不支持JTAG,所以刷uboot要慎重。
如果你对路由器上面的文件系统有疑惑,那么请看openwrt的官方文档:
http://wiki.openwrt.org/zh-cn/doc/techref/flash.layout
我这里只是介绍了一些大体的概念,具体刷uboot的操作可以看这里:
http://www.right.com.cn/forum/thread-154561-1-1.html