openwrt刷机

本文由明月永在原创,复制或引用请注明出处。www.myopenwrt.org

openwrt刷机一直是新手所需要面对的问题。现在我介绍一下,刷机的方法 。

刷机前,我们必须弄清楚几个概念,固件分一般固件和编程器固件两大类。编程器固件,以AR的openwrt为例,包括三部分,uboot、firmware、art。

uboot相当于电脑的bios,是用来引导firmware的,art则是无线的配置。AR的uboot大小为128KB,程序部分一般只有前面的64KB,后面部分只保存mac和pin码。我编译的uboot是利用网上pep2k源码的,大小为64KB,hackpascal编译的是tp官方的源码修改的,他的文件大小超过了64KB,故直接发出来是128KB。uboot写入的方法有两种,一种是用把芯片焊下来,直接写入芯片的前64KB位置。另一种是先刷入解锁uboot的openwrt固件,再用mtd方法写入,方法会在后面说到。

firmware部分也就是我们常说的固件,openwrt编译出来factory固件。我们通常刷的就是用这个固件。下面是编译出来的固件,一般TP系列分 factory.bin和sysupgrade.bin,网件系列分factory.img,和sysupgrade.bin(如网件3800系列)或者sysupgrade.tar(如网件4300系列),另巴法络还有一个tftp.bin格式。凡包含factory字样的,是在原机界面上直接刷机用的,包含sysupgrade字样的,是在op系统里的界面,更新固件用的。tftp固件是用tftp方式 刷机用的。网件和巴法络都支持tftp方式 刷机,这个方式相当于不死uboot。所以网件和巴法络基本是不可能砖的。另网件用如果用tftp方式刷机,要选择img格式的固件。tar格式的固件是不支持mtd方式来刷机的。另tar格式是直接在界面上传刷机,不需要解压,在刷机的时候它自动在路由里进行解压。

固件区别

16M的factory.bin大小于16252928字节。所以16Mfactory.bin都一样大。factory.bin固件大小是固定的,不会因软件的多少而变化 。

fac固件大小

8M的factory.bin大小为8126464字节,大小刚好为16M的一半。

8M

另外还会生成一种sysupgrade.bin,这种格式的固件随软件大小而变化的,编译的软件多,就会大一些,软件少就会小一些。但是这两种固件的内容是一样的。一般来说刷入固件后,我们在软件列表,会看到闪存的剩余空间,这个剩余空间,除了一部分用来保存配置以外,就是显示的实际剩余空间。

剩余空间

也就是sysupgrade.bin+空间空间+系统的配置空间=factory.bin的大小。

两种用途上的区别以下:如果你的路由原厂的闪存是8M,现在是原厂的系统,你就得选择相对应型号的factory.bin来刷。刷好之后,就是openwrt系统了。在原厂系统里刷sysupgrade.bin固件是不可以的。如果是16M的闪存的原厂系统,就得用16M的factory.bin来刷机。由于本人没有发过factory.bin固件,要用我的固件请先到openwrt官网先下载factory.bin先在web刷上,然后再下载我的sysupgrade固件,从官方的op里刷上即可。以后的版本,原厂的闪存是8M或者16M的,将发factory.bin以方便大家。

当你的路由已经是openwrt系统后,如果是8M闪存,你可以选择8M的factory.bing也可以选择8M以下的sysupgrade.bin来刷机。如果是16M闪存,只能选择16M的factory.bin来刷机,也可以选择小于16M的sysupgrade.bin来刷机。换句话说,已经是openwrt系统后,再刷openwrt如果用factory.bin,就得使用和固件一样大的固件。如果用sysupgrade.bin就得选择比固件小的。

以上是通过浏览器界面刷机,还有一种方法是,把固件上传到路由上用mtd方法来刷机。这种方法只适用于openwrt和dd等第三方系统,原厂是不可以的。操作方法是ssh登录路由,或者用winscp、putty等软件来登录到路由,把固件上传到路由的/tmp里,比如你的固件名称为xxxxx.bin。就执行如下命令:

mtd -r write xxxx.bin firmware

-r是刷完机后重启的意思。

用这个方法也可以刷uboot和art,前提得是这个openwrt固件是没我锁定uboot和art分区的,openwrt官方的固件是全部锁定的,mtd刷uboot和art是不行的。明月系列TP固件解锁了uboot的 ,为了安全,没有解锁art。因此,在这系列固件里可以用这种方法刷uboot。如果uboot名为xxxx.bin,则命令如下:

mtd -r write xxxx.bin  u-boot

mtd刷机方法不常用,主要用来刷其它型号的固件,比如tp的4310/4300/3600,这三个型号的路由是一样的硬件,只要硬件一样,固件就可以通用。但我们用第一种方法是不可以直接刷入的。在浏览器刷机会校验固件头,那里有固件的型号,和路由当前系统对不上,会限制刷机。但用mtd方法,则可以突破这种限制,可以使用其它硬件完全相同的固件。

另外,本人的TP系列固件有fullflash分区,支持用mtd方式来刷入编程器固件。其命令如下:

mtd -r write 编程器固件名  fullflash

还有一种方法,是使用不死uboot来刷机,AR的系列的机器 原厂基本上是没有不死uboot,所谓的不死uboot,就是刷错固件时,路由系统启动不了时,我们可以通过特别的方法来通过浏览器再刷上路由固件。不死uboot基本是第三方的,像基于pep2k的,hackpascal基于tp的版本。要使用不死uboot,我们首先得用第二次方法 ,或者直接用编程器先写入不死uboot。然后通过选定的方法来启动路由进入不死界面。本人编译的不死uboot的界面如下:

uboot刷固件

上图是默认的界面,默认可以刷factory.bin和sysupgrade.bin,也可以点击下面蓝色的字uboot和art来切换刷uboot或art。使用说明请看截图上的说明。

下图为刷uboot的界面。

uboot下刷uboot

从本地磁盘选择好文件上传即可,本人的不死uboot只能刷64KB和128KB的其它uboot,如果大小不是这两种会限制刷入。这样可以避免选错文件。刷uboot是得非常小心,得确定你所用的uboot在别人机上正常运行。否则,刷坏了,你只能焊下来,上编程器了。

uboot刷固件也和mtd一样,不会校验固件头,你上传任何文件,都会写入。所以得看清楚文件,刷firmware部分还好,出错可以重来。如果刷错uboot,麻烦就大了。刷错art也不太好。art推荐用原厂的,因为路由出厂时,一批批精心调整过,也就是说这一批的art用于其它批次可能出现信号不好,或者无线断网的问题。另外需要注意的是,第三方的不死uboot基本都不支持原厂的固件,如果要刷回原厂就比较麻烦了。只有找到即支持原厂又支持openwrt的uboot先刷好,才能在新的不死刷回原厂。以前试过用木头人的不死,即支持原厂也支持第三方固件。不过,他的不死,功能少,只能刷firmware部分,且不是所有型号的路由都有。所以在刷不死前得三思,其实,如果想保留原厂系统,最理想的办法是,硬改为双系统的路由,用一个开关来切换原厂和第三方的系统。这要求有一定的硬件知识,和动手能力,不在今天的讨论范围了。

此条目发表在openwrt, 固件教程, 路由刷机, 路由相关分类目录,贴了, , 标签。将固定链接加入收藏夹。

26 则回应给 openwrt刷机

  1. 了哦pard说:

    AR9431,841n_v8,8m_64m(flash&ddr),先编程器刷了breed ar9431,再breed刷——(mingyue-20170207-openwrt-15.05.1-ar71xx-generic-tl-wr841n-v8-squashfs-sysupgrade),breed控制台自动重启可入openwrt,但断电重启后,机器死机,上电只有4lan+1wan灯常亮,无网络,电脑静态ip是断网状态,连breed也入不了,有时将flash断开插座,再插上去,开机正常,这个是什么原因?

    • rapistor说:

      9341我有好几个,没碰到类似情况呢。要不你换uboot试一下。

  2. jxmlingyun说:

    请教一下,乐视路由该怎么刷您的固件?谢谢

  3. Fei Dai说:

    急请教博主:我的wdr4310用uboot的bin刷了firmware(好傻。。),现在变砖了。请问如何修复?先谢谢博主帮助~!

  4. mayunqiang说:

    Buffalo wzr-hp-ag300h原机 固件更新页面刷openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-factory.bin 刷后开机DIAG灯先是长亮 然后闪烁 最后灭灯 只剩电源指示灯亮。ping 192.168.1.1可以ping通,但进不了配置页面。请问这是什么情况?要怎么才能救回来?谢谢!

    • rapistor说:

      可tftp刷机

      • mayunqiang说:

        实际已经刷入了openwrt原版固件了,只是刷入的这个固件不带luci所以进不了web设置。参考了这个http://www.right.com.cn/forum/thread-117220-1-1.html已经搞定。现在已刷成了你的冬至版。只是2.4G传输功率19dBm(79mW)、5G传输功率20dBm(100mW)正常吗?

  5. Pingback引用通告: openwrt刷机 – aipie0066

  6. 路由爱好说:

    我的WNDR4300刷了dd,由于WAN口故障,不能启动tftp(也就是不能烧写img格式),我能否直接烧写tar文件里的内容来实现刷机(mtd write方式)?多谢!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*