查看: 7844|回复: 4

【SOM9331】openwrt页面升级整理

[复制链接]
  • TA的每日心情
    奋斗
    2017-7-17 13:49
  • 签到天数: 367 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-16 09:38:57 | 显示全部楼层 |阅读模式
    分享到:
    页面升级步骤
    网页的页面在usr/lib/lua/luci/view/admin_system/flashops.htm
    该页面中
    <% if upgrade_avail then %>  ------判断升级是否可用
    1.png
    2.png
    第一步:判断升级是否可用,
    判断upgrade_avail时调用了/usr/lib/lua/luci /controller/admin/system.lua中的action_flashops()函数
    local upgrade_avail =nixio.fs.access("/lib/upgrade/platform.sh")
    内核中的/lib/upgrade/下没有platform.sh文件,所以会出现图A
    当在此路径下添加platform.sh文件后,其他的平台生成的是.trx.bin文件,此文件如下图
    3.png
    目的是判断上传的镜像是否为trx后缀!
    下一步是<% if image_invalid then %>判断上传的文件是否可用:
    system.lua中的action_flashops()函数中调用了子函数image_supported()
    4.png
    此处调用了platform.sh文件中的platform_check_image函数判断文件的后缀
    经过grep -rn "platform.sh" .发现
    在./target/linux/下brcm-2.4,adm5120  ar71xx  au1000  brcm-2.4  brcm63xx    generic-2.4  ixp4xx    lantiq等文件夹下的base-files/lib/upgrade/.svn/entries文件中均有下载platform.sh的话,但是feroceon-kw是自定义的目标,所以不包含此文件,现在要解决的是/lib/upgrade/platform.sh文件生成的问题,由于打补丁只能对内核起作用,所以通过补丁的方法不可行。在/target/linux下的其他平台文件夹中可以看到有base-file/有些会有lib/upgrade/platform.sh,说明也可以在自己的平台下建立此种文件夹来达到生成platform.sh的目的。

    从页面升级只能是一个文件,而现在所生成的uImage,.img文件为两个文件,需要把两个文件合并为一个文件并按照mtd分区填充空白区,填充值为1
    合并的方法 dd命令
    修改target/linux/feroceon-kw/image/Makefile产生.bin文件
    5.png
    填充的块大小要根据盘的自己系统而定,dd的参数bs的大小也是根据系统和内存而定
    Mtd分区:

    6.png
    setenv mtdparts mtdparts=spi_flash:1m(u-boot)ro,3m(kernel),-(rootfs)

    通过上面的方法可以将uImage和img文件合并为一个bin文件,
    现在要解决的是如何让/lib/upgrade/platform.sh中的platform_check_image()判断正确,即
    case "$(get_magic_word"$1")" in
    2705) return 0;;这儿的2705这个数字怎么确定
    platform_check_image()调用了common.sh中的get_magic_word()get_magic_word()调用了get_image(),通过看这几个函数发现问题的关键在于
    cat 镜像名| dd bs=2 count=12>/dev/null | hexdump -n 2 -e '1/1 "%02x"')"
    这个命令的反回值是多少,经过测试得到为2705

    /usr/lib/lua/luci/controller/admin/system.lua
    7.png
    /lib/upgrade/platform.sh
    8.png
    /lib/upgrade/common.sh
    9.png
    升级用的函数
    10.png
    Openwrtmtd的使用
    11.png

    PS:openwrt固件编译luci模块的选择:
    make menuconfig
    luci--->Collections--->Luci选中即可
    任何一个web 界面都包括两部分内容,一部分是web 服务器,一部分是界面语言,openwrt 的web 服务器默认采用uhttpd,端口80,web 界面语言为luci,luci 包括两部分内容,它是由lua 和uci 合并起来的,lua 是一种执行效率非常高的解释性语言,uci 是配置openwrt 的默认工具。
    默认的固件是没有路由器登录界面的,固件中编译进luci模块才可以看到。
    烧录固件后出现类似下面的页面
    12.png

    如果要看整个文档,请下载附件
    openwrt页面升级整理.zip (245.81 KB, 下载次数: 5)
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-11-16 09:56:56 | 显示全部楼层
    多谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-3-23 12:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-11-16 10:07:54 | 显示全部楼层
    多谢楼主的分享 学了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-7-17 13:49
  • 签到天数: 367 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2015-11-16 10:12:40 | 显示全部楼层
    魅影-2023106 发表于 2015-11-16 10:07
    多谢楼主的分享 学了

    多谢摄影师的支持
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-11-20 14:37:12 | 显示全部楼层
    宇哥很给力
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 00:17 , Processed in 0.150121 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.