最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

openwrt升级功能流程简介

IT圈 admin 32浏览 0评论

2024年4月22日发(作者:虎子帆)

文档说明:

本文档简述了openwrt sdk的升级功能流程,从页面传入升级文件到升级文件检测,

再到调用升级脚本进行升级,升级完成后,进行系统重启。最后简述了如何添加升级文件

标识,标识包括自己定义的字段,以及升级软件的md5值。达到防止用户用其他openwrt

sdk编译出来的固件刷新我们的系统,以及防止升级软件被破坏。

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

./package/ralink/ui/luci-mtk/src/modules/admin-full/luasrc/controller/admin/

./target/linux/ramips/image/ Makefile

./package/base-files/files/lib/upgrade/

./package/base-files/files/lib/

./package/base-files/files/sbin/sysupgrade

./target/linux/ramips/base-files/lib/

./target/linux/ramips/base-files/lib/upgrade/

文档正文:

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

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

这是一个lua文件,很容易在function index函数中找到系统升级功能的入口函数:

action_flashops。在这个函数中首先通过fp = (image_tmp, "w")打开升级临时

文件:/tmp/,打开后通过fp:write(chunk)写入页面传进来的升级文件。到

这里,接受升级文件完成 。

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

实现同样在文件中。

在函数image_supported()中进行检测,这个函数通过image magic number来检

测升级文件是否合法。函数image_supported()会调用脚本中的

platform_check_image函数,

platform_check_image函数调用脚本中的ramips_board_name函数,

获取board name,ramips_board_name函数从文件 /tmp/sysinfo/board_name 中获

取board name,若没有则为unknown,并返回给调用者,我用的板是ralink-soc。

platform_check_image函数继续调用脚本中的get_magic_long函数,用

以获取升级文件magic,就是升级文件前4位。get_magic_long函数调用

脚本中的get_image函数用以获取文件/tmp/内容,其实就是cat

/tmp/. 获取到的内容,通过dd bs=4 count=1,来获取前4位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'处理以十六进制编码返回调用者。获取到的升级文件

2024年4月22日发(作者:虎子帆)

文档说明:

本文档简述了openwrt sdk的升级功能流程,从页面传入升级文件到升级文件检测,

再到调用升级脚本进行升级,升级完成后,进行系统重启。最后简述了如何添加升级文件

标识,标识包括自己定义的字段,以及升级软件的md5值。达到防止用户用其他openwrt

sdk编译出来的固件刷新我们的系统,以及防止升级软件被破坏。

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

./package/ralink/ui/luci-mtk/src/modules/admin-full/luasrc/controller/admin/

./target/linux/ramips/image/ Makefile

./package/base-files/files/lib/upgrade/

./package/base-files/files/lib/

./package/base-files/files/sbin/sysupgrade

./target/linux/ramips/base-files/lib/

./target/linux/ramips/base-files/lib/upgrade/

文档正文:

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

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

这是一个lua文件,很容易在function index函数中找到系统升级功能的入口函数:

action_flashops。在这个函数中首先通过fp = (image_tmp, "w")打开升级临时

文件:/tmp/,打开后通过fp:write(chunk)写入页面传进来的升级文件。到

这里,接受升级文件完成 。

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

实现同样在文件中。

在函数image_supported()中进行检测,这个函数通过image magic number来检

测升级文件是否合法。函数image_supported()会调用脚本中的

platform_check_image函数,

platform_check_image函数调用脚本中的ramips_board_name函数,

获取board name,ramips_board_name函数从文件 /tmp/sysinfo/board_name 中获

取board name,若没有则为unknown,并返回给调用者,我用的板是ralink-soc。

platform_check_image函数继续调用脚本中的get_magic_long函数,用

以获取升级文件magic,就是升级文件前4位。get_magic_long函数调用

脚本中的get_image函数用以获取文件/tmp/内容,其实就是cat

/tmp/. 获取到的内容,通过dd bs=4 count=1,来获取前4位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'处理以十六进制编码返回调用者。获取到的升级文件

发布评论

评论列表 (0)

  1. 暂无评论