新建
上传
首页
助手
最?/div>
资料?/div>
工具

文档说明?/p>

 

 

本文档简述了

openwrt sdk

的升级功能流程,从页面传入升级文件到升级文件检测,?/p>

到调用升级脚本进行升级,

升级完成后,

进行系统重启?/p>

最后简述了如何添加升级文件标识?/p>

标识包括自己定义的字段,

以及升级软件?/p>

md5

值?/p>

达到防止用户用其?/p>

openwrt sdk

编译

出来的固件刷新我们的系统,以及防止升级软件被破坏?/p>

 

 

文档需要用到的文件及在

sdk

中的路径(某些文件路径可能随项目的不同而改动)

?/p>

 

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

./target/linux/ramips/image/ Makefile 

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

./package/base-files/files/lib/functions.sh 

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

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

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

 

文档正文?/p>

 

1.

从页面接受传过来的升级文?/p>

 

作为整个流程的开始,功能实现在文?/p>

system.lua

中?/p>

 

这是一?/p>

lua

文件,很容易?/p>

function 

index

函数中找到系统升级功能的入口函数?/p>

action_flashops

。在这个函数中首先通过

fp 

= 

io.open(image_tmp, 

"w")

打开升级临时文件?/p>

/tmp/firmware.img

,打开后通过

fp:write(chunk)

写入页面传进来的升级文件。到这里,接?/p>

升级文件完成

 

?/p>

 

 

2.

检测升级文件的合法?/p>

 

实现同样在文?/p>

system.lua

中?/p>

 

在函?/p>

image_supported()

中进行检测,这个函数通过

image 

magic 

number

来检测升级文?/p>

是否合法。函?/p>

image_supported()

会调?/p>

platform.sh

脚本中的

platform_check_image

函数?/p>

 

platform_check_image

函数调用

ramips.sh

脚本中的

ramips_board_name

函数,获?/p>

board 

name

?/p>

ramips_board_name

函数从文?/p>

 

/tmp/sysinfo/board_name 

中获?/p>

board name

?/p>

若没

有则?/p>

unknown

,并返回给调用者,我用的板?/p>

ralink-soc

?/p>

platform_check_image

函数继续

调用

common.sh

脚本中的

get_magic_long

函数?/p>

用以获取升级文件

magic

?/p>

就是升级文件?/p>

4

?/p>

?/p>

get_magic_long

函数

调用

common.sh

脚本中的

get_image

函数用以

获取?/p>

?/p>

/tmp/firmware.img

内容,其实就?/p>

cat 

/tmp/firmware.img. 

获取到的内容,通过

dd 

bs=4 

count=1

,来获取?/p>

4

位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'

处理以十六进制编码返?/p>

调用者?/p>

获取到的升级文件

magic

?/p>

?/p>

platform_check_image

函数中与

27051956

做对比,

?/p>

个值是在固件编译的时候已经定好了的。如果相等,就是合法的升级文件,继续升级动作?/p>

不相等则为非法升级文件,

做一些后续处理并终止升级动作?/p>

到这里检测升级文件合法性完

成?/p>

 

 

3.

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

 

实现同样在文?/p>

system.lua

中?/p>

 

检测到不合法后?/p>

通过

nixio.fs.unlink(image_tmp)

来删除临时文?/p>

/tmp/firmware.img

?/p>

并通过

image_invalid = true

,设置检测失败,用以通知页面显示提示信息。终止升级。处理完成?/p>

 

 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

文档说明?/p>

 

 

本文档简述了

openwrt sdk

的升级功能流程,从页面传入升级文件到升级文件检测,?/p>

到调用升级脚本进行升级,

升级完成后,

进行系统重启?/p>

最后简述了如何添加升级文件标识?/p>

标识包括自己定义的字段,

以及升级软件?/p>

md5

值?/p>

达到防止用户用其?/p>

openwrt sdk

编译

出来的固件刷新我们的系统,以及防止升级软件被破坏?/p>

 

 

文档需要用到的文件及在

sdk

中的路径(某些文件路径可能随项目的不同而改动)

?/p>

 

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

./target/linux/ramips/image/ Makefile 

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

./package/base-files/files/lib/functions.sh 

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

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

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

 

文档正文?/p>

 

1.

从页面接受传过来的升级文?/p>

 

作为整个流程的开始,功能实现在文?/p>

system.lua

中?/p>

 

这是一?/p>

lua

文件,很容易?/p>

function 

index

函数中找到系统升级功能的入口函数?/p>

action_flashops

。在这个函数中首先通过

fp 

= 

io.open(image_tmp, 

"w")

打开升级临时文件?/p>

/tmp/firmware.img

,打开后通过

fp:write(chunk)

写入页面传进来的升级文件。到这里,接?/p>

升级文件完成

 

?/p>

 

 

2.

检测升级文件的合法?/p>

 

实现同样在文?/p>

system.lua

中?/p>

 

在函?/p>

image_supported()

中进行检测,这个函数通过

image 

magic 

number

来检测升级文?/p>

是否合法。函?/p>

image_supported()

会调?/p>

platform.sh

脚本中的

platform_check_image

函数?/p>

 

platform_check_image

函数调用

ramips.sh

脚本中的

ramips_board_name

函数,获?/p>

board 

name

?/p>

ramips_board_name

函数从文?/p>

 

/tmp/sysinfo/board_name 

中获?/p>

board name

?/p>

若没

有则?/p>

unknown

,并返回给调用者,我用的板?/p>

ralink-soc

?/p>

platform_check_image

函数继续

调用

common.sh

脚本中的

get_magic_long

函数?/p>

用以获取升级文件

magic

?/p>

就是升级文件?/p>

4

?/p>

?/p>

get_magic_long

函数

调用

common.sh

脚本中的

get_image

函数用以

获取?/p>

?/p>

/tmp/firmware.img

内容,其实就?/p>

cat 

/tmp/firmware.img. 

获取到的内容,通过

dd 

bs=4 

count=1

,来获取?/p>

4

位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'

处理以十六进制编码返?/p>

调用者?/p>

获取到的升级文件

magic

?/p>

?/p>

platform_check_image

函数中与

27051956

做对比,

?/p>

个值是在固件编译的时候已经定好了的。如果相等,就是合法的升级文件,继续升级动作?/p>

不相等则为非法升级文件,

做一些后续处理并终止升级动作?/p>

到这里检测升级文件合法性完

成?/p>

 

 

3.

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

 

实现同样在文?/p>

system.lua

中?/p>

 

检测到不合法后?/p>

通过

nixio.fs.unlink(image_tmp)

来删除临时文?/p>

/tmp/firmware.img

?/p>

并通过

image_invalid = true

,设置检测失败,用以通知页面显示提示信息。终止升级。处理完成?/p>

 

 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

文档说明?/p>

 

 

本文档简述了

openwrt sdk

的升级功能流程,从页面传入升级文件到升级文件检测,?/p>

到调用升级脚本进行升级,

升级完成后,

进行系统重启?/p>

最后简述了如何添加升级文件标识?/p>

标识包括自己定义的字段,

以及升级软件?/p>

md5

值?/p>

达到防止用户用其?/p>

openwrt sdk

编译

出来的固件刷新我们的系统,以及防止升级软件被破坏?/p>

 

 

文档需要用到的文件及在

sdk

中的路径(某些文件路径可能随项目的不同而改动)

?/p>

 

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

./target/linux/ramips/image/ Makefile 

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

./package/base-files/files/lib/functions.sh 

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

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

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

 

文档正文?/p>

 

1.

从页面接受传过来的升级文?/p>

 

作为整个流程的开始,功能实现在文?/p>

system.lua

中?/p>

 

这是一?/p>

lua

文件,很容易?/p>

function 

index

函数中找到系统升级功能的入口函数?/p>

action_flashops

。在这个函数中首先通过

fp 

= 

io.open(image_tmp, 

"w")

打开升级临时文件?/p>

/tmp/firmware.img

,打开后通过

fp:write(chunk)

写入页面传进来的升级文件。到这里,接?/p>

升级文件完成

 

?/p>

 

 

2.

检测升级文件的合法?/p>

 

实现同样在文?/p>

system.lua

中?/p>

 

在函?/p>

image_supported()

中进行检测,这个函数通过

image 

magic 

number

来检测升级文?/p>

是否合法。函?/p>

image_supported()

会调?/p>

platform.sh

脚本中的

platform_check_image

函数?/p>

 

platform_check_image

函数调用

ramips.sh

脚本中的

ramips_board_name

函数,获?/p>

board 

name

?/p>

ramips_board_name

函数从文?/p>

 

/tmp/sysinfo/board_name 

中获?/p>

board name

?/p>

若没

有则?/p>

unknown

,并返回给调用者,我用的板?/p>

ralink-soc

?/p>

platform_check_image

函数继续

调用

common.sh

脚本中的

get_magic_long

函数?/p>

用以获取升级文件

magic

?/p>

就是升级文件?/p>

4

?/p>

?/p>

get_magic_long

函数

调用

common.sh

脚本中的

get_image

函数用以

获取?/p>

?/p>

/tmp/firmware.img

内容,其实就?/p>

cat 

/tmp/firmware.img. 

获取到的内容,通过

dd 

bs=4 

count=1

,来获取?/p>

4

位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'

处理以十六进制编码返?/p>

调用者?/p>

获取到的升级文件

magic

?/p>

?/p>

platform_check_image

函数中与

27051956

做对比,

?/p>

个值是在固件编译的时候已经定好了的。如果相等,就是合法的升级文件,继续升级动作?/p>

不相等则为非法升级文件,

做一些后续处理并终止升级动作?/p>

到这里检测升级文件合法性完

成?/p>

 

 

3.

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

 

实现同样在文?/p>

system.lua

中?/p>

 

检测到不合法后?/p>

通过

nixio.fs.unlink(image_tmp)

来删除临时文?/p>

/tmp/firmware.img

?/p>

并通过

image_invalid = true

,设置检测失败,用以通知页面显示提示信息。终止升级。处理完成?/p>

 

 

Ͼλ">
Ͼλ
Ŀ

openwrt升级功能流程简?- 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

文档说明?/p>

 

 

本文档简述了

openwrt sdk

的升级功能流程,从页面传入升级文件到升级文件检测,?/p>

到调用升级脚本进行升级,

升级完成后,

进行系统重启?/p>

最后简述了如何添加升级文件标识?/p>

标识包括自己定义的字段,

以及升级软件?/p>

md5

值?/p>

达到防止用户用其?/p>

openwrt sdk

编译

出来的固件刷新我们的系统,以及防止升级软件被破坏?/p>

 

 

文档需要用到的文件及在

sdk

中的路径(某些文件路径可能随项目的不同而改动)

?/p>

 

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

./target/linux/ramips/image/ Makefile 

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

./package/base-files/files/lib/functions.sh 

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

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

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

 

文档正文?/p>

 

1.

从页面接受传过来的升级文?/p>

 

作为整个流程的开始,功能实现在文?/p>

system.lua

中?/p>

 

这是一?/p>

lua

文件,很容易?/p>

function 

index

函数中找到系统升级功能的入口函数?/p>

action_flashops

。在这个函数中首先通过

fp 

= 

io.open(image_tmp, 

"w")

打开升级临时文件?/p>

/tmp/firmware.img

,打开后通过

fp:write(chunk)

写入页面传进来的升级文件。到这里,接?/p>

升级文件完成

 

?/p>

 

 

2.

检测升级文件的合法?/p>

 

实现同样在文?/p>

system.lua

中?/p>

 

在函?/p>

image_supported()

中进行检测,这个函数通过

image 

magic 

number

来检测升级文?/p>

是否合法。函?/p>

image_supported()

会调?/p>

platform.sh

脚本中的

platform_check_image

函数?/p>

 

platform_check_image

函数调用

ramips.sh

脚本中的

ramips_board_name

函数,获?/p>

board 

name

?/p>

ramips_board_name

函数从文?/p>

 

/tmp/sysinfo/board_name 

中获?/p>

board name

?/p>

若没

有则?/p>

unknown

,并返回给调用者,我用的板?/p>

ralink-soc

?/p>

platform_check_image

函数继续

调用

common.sh

脚本中的

get_magic_long

函数?/p>

用以获取升级文件

magic

?/p>

就是升级文件?/p>

4

?/p>

?/p>

get_magic_long

函数

调用

common.sh

脚本中的

get_image

函数用以

获取?/p>

?/p>

/tmp/firmware.img

内容,其实就?/p>

cat 

/tmp/firmware.img. 

获取到的内容,通过

dd 

bs=4 

count=1

,来获取?/p>

4

位,最后通过

hexdump -v -n 4 -e '1/1 "%02x"'

处理以十六进制编码返?/p>

调用者?/p>

获取到的升级文件

magic

?/p>

?/p>

platform_check_image

函数中与

27051956

做对比,

?/p>

个值是在固件编译的时候已经定好了的。如果相等,就是合法的升级文件,继续升级动作?/p>

不相等则为非法升级文件,

做一些后续处理并终止升级动作?/p>

到这里检测升级文件合法性完

成?/p>

 

 

3.

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

 

实现同样在文?/p>

system.lua

中?/p>

 

检测到不合法后?/p>

通过

nixio.fs.unlink(image_tmp)

来删除临时文?/p>

/tmp/firmware.img

?/p>

并通过

image_invalid = true

,设置检测失败,用以通知页面显示提示信息。终止升级。处理完成?/p>

 

 



ļ׺.doc޸Ϊ.docĶ

  • ɫʩ߻ - ͼ
  • ʡγ2018пӢ⼰(Word)
  • еڰ²ƷĿ¼
  • ĵڼЧϵ
  • ĸɽˮⳬ׼ˮӦԤ
  • ŮְͶر涨֪ʶ()
  • ˼ν¼
  • 嵥Ƽ۵ŵ
  • ۷ʦʾ - - ڵ
  • йʷ+ʽ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)