文档说明: 本文档简述了openwrt sdk 的升级功能流程,从页面传入升级文件到升级文件检测,再到调用升级脚本进行升级,升级完成后,进行系统重启
最后简述了如何添加升级文件标识,标识包括自己定义的字段,以及升级软件的md5 值
达到防止用户用其他 openwrt sdk 编译出来的固件刷新我们的系统,以及防止升级软件被破坏
文档需要用到的文件及在 sdk 中的路径(某些文件路径可能随项目的不同而改动):
/package/ralink/ui/luci-mtk/src/modules/admin-full/luasrc/controller/admin/system
/target/linux/ramips/image/ Makefile
/package/base-files/files/lib/upgrade/common
/package/base-files/files/lib/functions
/package/base-files/files/sbin/sysupgrade
/target/linux/ramips/base-files/lib/ramips
/target/linux/ramips/base-files/lib/upgrade/platform
sh 文档正文: 1
从页面接受传过来的升级文件 作为整个流程的开始,功能实现在文件system
这是一个 lua 文件,很容易在 function index 函数中找到系统升级功能的入口函数:action_flashops
在这个函数中首先通过 fp = io
open(image_tmp, "w")打开升级临时文件:/tmp/firmware
img,打开后通过 fp:write(chunk)写入页面传进来的升级文件
到这里,接受升级文件