openwrt刷机

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格式是直接在界面上传刷机,不需要解压,在刷机的时候它自动在路由里进行解压。

openwrt刷机_第1张图片

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

openwrt刷机_第2张图片

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

openwrt刷机_第3张图片

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

openwrt刷机_第4张图片

也就是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的界面如下:


openwrt刷机_第5张图片

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

下图为刷uboot的界面。

openwrt刷机_第6张图片

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

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


本文由明月永在原创,转自:https://myop.cf/archives/546


你可能感兴趣的:(网络设备)