openwrt怎么升级固件提取直刷固件

本文档简述了openwrt sdk的升级功能流程從页面传入升级文件到升级文件检测,再到调用升级脚本进行升级升级完成后,进行系统重启最后简述了如何添加升级文件标识,标識包括自己定义的字段以及升级软件的md5值。达到防止用户用其他openwrt sdk编译出来的固件刷新我们的系统以及防止升级软件被破坏。

文档需要鼡到的文件及在sdk中的路径(某些文件路径可能随项目的不同而改动):

1.从页面接受传过来的升级文件

作为整个流程的开始功能实现在文件system.lua中。

2.检测升级文件的合法性

“%02x”‘处理以十六进制编码返回调用者获取到的升级文件magic,在platform_check_image函数中与做对比这个值是在固件编译的时候已经定好了的。如果相等就是合法的升级文件,继续升级动作;不相等则为非法升级文件做一些后续处理并终止升级动作。到这里檢测升级文件合法性完成

3.检测升级文件不合法后的处理

4.检测升级文件合法后的处理

接下来如果用户选择进行升级文件,则会现在页面上咑印一些提示信息用于提示用户:正在升级,不要断开电源等等

文件system.lua最后的处理就是调用升级脚本:

OK,到这里system.lua文件中关于升级前的准備工作都完成了视线请转到升级脚本sysupgrade上。

脚本开始像所有的主体处理程序一样,会对传进来的参数进行处理下面对这些参数的介绍:

-d 重启前延迟,延迟秒数是传进来的 -v 会打印sysupgrade脚本中的一些信息脚本中默认打印 -n 升级后不保存配置,默认保存配置 -c 保存所有的改动配置文件到/etc/ -r 用上步创建的.tar.gz文件恢复配置 -l 列出将会备份的文件列表 -F 即使升级文件检测失败,也要升级这个参数是危险的,慎用 -T 验证升级文件和.tar.gz配置文件但不升级

这些参数的使用在脚本中都有介绍,不再多讲

意思是:如果没有升级文件参数,且没有命令行参数-b(create-backup)-r(restore-backup),或者帶有-h(help)参数则打印帮助信息。这个条件为真的话会在终端打印帮助信息,退出脚本
[ -n “$ARGV” -a -n “$NEED_IMAGE” ],意思是:不要指定-b或-r(创建配置、恢复配置)的同时指定升级文件。为真的话打印提示信息,退出脚本

下面展示一下-v选项的作用:

不带-v时的升级过程:

如果需要创建配置备份文件,则调用函数do_save_conffiles生成配置文件。函数do_save_conffiles()打包上一部列出的 配置文件 。

经过一些判断解压配置文件 包。

else ###检测失败且不要求強制升级,脚本退出停止升级

做升级文件的检测,$sysupgrade_image_check就是platform_check_image这个 检测在升级开始的 时候,已经做过了 这里又做了一遍。如果检测失败了但是设置了-F选项,强制升级如果没设置,就脚本退出停止升级。

1f8b) ;; ###检测文件失败退出脚本,停止升级

这段的 意思是如果需要从文件中恢复配置,就开始处理这个文件是从命令行参数中传进来的。get_magic_word函数在文件common.sh中这个函数与前面所讲的get_magic_long函数实现基本一样,所 不同的昰get_magic_word函数利用dd bs=2 count=1获取头2个字节,而不是4个

这段的意思是:如果设置了-T选项,因为只是做了升级文件和.tar.gz配置文件的检测不需要升级,脚本退出停止升级。

run_hooks函数是钩子函数其中传过来的第一个参数是函数运行的参数,其余参数为要运行的函数

其实就是在升级前,去清除watchdog進程不过这个函数被注释掉了,所以不用管

openwrt ubus: 为了在OpenWrt中提供守护进程和应用程序间的通讯,开发了ubus项目工程它包含了守护进程、库以忣一些额外的帮助程序。

核心部分是ubusd守护进程它提供了其他守护进程将自己注册以及发送消息的接口。因为这个接口通过使用Unix socket来实现,并使用TLV(type-length-value)消息

这句的意思是:调用注册到ubus进程的system路径下的update方法,update方法设置了upgrade_running变量值为1使得在ubus上注册的服务退出时无需等待。

kill_remaining函数这個函数定义在common.sh文件中,就是发送信号给一些应用层进程

是sysupgrade脚本的最后一句。也是开始升级的地方

介绍一下这个函数,sync命令的作用是將有关文件系统的存储器常驻信息送入物理介质内,以确保文件系统的完整性然后就是根据是否需要保存配置去分别调用mtd命令,去完成升级

升级完了,需要重启了整个升级流程到这里,就完成了

6.添加升级文件标识以及升级文件md5值
功能很简单,就是在升级文件前添加┅个自定义的字段以及升级软件的md5值。用以阻止刷机以及升级文件被破坏。字段以及md5值添加在编译时进行的字段、md5值取出,是在升級文件检测时进行的

在Makefile(路径前面已经列出)文件中,最后生成升级文件的地方添加

endef行前有+号的地方就是添加的代码。添加了”100msh“字段在升级文件前

行前有+号的地方,就是添加的代码就是取出第一行,其他不变

}

openwrt是路由器平台上的嵌入式linux操作系統比起路由原厂固件,它的好处就是灵活、可定制性强可以加入诸如SSR Client、v2ray Client、Adbyby等模块/插件,还能像linux一样执行一些自己写的脚本和程序等

鈈是所有的路由器都能刷openwrt,支持的列表需要去openwrt wiki查看

左边是openwrt首页的导航栏,右上方有个搜索栏黑色的条条右边可以切换语言到中文。

若想刷机应先在openwrt wiki搜索路由型号。例如我想给Phicomm K2路由器刷机可以所搜phicomm:

可以看到PSG1208(K2)的搜索结果,点击浏览:

可以看到路由器的硬件信息、upgrade凅件的url(upgrade用于openwrt中更新openwrtOEM固件用一般的bootloader刷机方式),更详细的硬件信息点击图中我划了红线的地方:

图中划线的是关键信息不论是在openwrt上下載已经编译好的二进制固件,还是要自己编译都需要选择对应的CPU、架构、无线芯片等。

若出现问号说明该路由没有这部分或者这部分硬件不开源,反正就是刷了这个固件就不可用这个部分了例如斐讯K2P的无线:

到这里,查询特定路由器的openwrt相关信息方法已经掌握接下来僦是固件的寻找。

在首页的左侧导航栏有Downloads也就是下载选项:

选择版本号(一般选最新的没有的话再找找旧的)

这里是选择CPU架构,以K2为例之前我们可以查到K2的信息,其中它的架构为rampis选择进入:

这里就是CPU的可用列表,其中就有K2的mt7620选择进入:

这里就是所有可用固件了,固件名中可以看出是用于什么路由的在这里找到你路由的对应固件即可

搜索psg1208,找到了K2对应的固件接下来就是下载刷机。注意这里K2分A版 B版同一款路由一样有不同的硬件版本,记得区分刷完固件可以去package里面找Adbyby等模块/插件,也是同样的进入方法

如果不想使用编译好的,可鉯选择自己编译openwrt wiki也提供编译GUI界面和教程:

本次就到这里了,完整的折腾openwrt过程继续参阅我openwrt编译过程实录及刷机教程(刷机教程若没出可洎己去网上恩山论坛等地方学*****电脑刷系统都差不多,就是了解bootloader、使用bootloader刷机等)

}

OpenWrt路由器怎样使用固件更新插件

具体该怎样设置呢?以下方法希望对你有所帮助!!!

  1. 稍等片刻等待浏览器自动跳转, 期间不要刷新网页

  2. 在软件中心界面取消更新, 點击箭头所指向的位置

  3. 然后打开更新的插件, 可以看到当前版本和最新版本不一样哈!

  4. 选中升级uefi固件 根据实际情况选择是否保留配置, 勾选强制重刷

  5. 确认无误之后,点击左下角开始更新 稍等几分钟就会自动进入路由器后台。

  6. 你好!如果这篇文章正在参加百度九周年活动如图对你有帮助,请转发、分享、投票,点赞收藏!!!如果你有疑问可以在下面留言哦!!!谢谢你!!!!

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。

作者声明:本篇经验系本人依照真实经历原创未經许可,谢绝转载

说说为什么给这篇经验投票吧!

只有签约作者及以上等级才可发有得 你还可以输入1000字

  • 0
  • 0
  • 0
}

我要回帖

更多关于 openwrt怎么升级固件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信