部分内容7---升级固件
来源:互联网 发布:最优化 教材 编辑:程序博客网 时间:2024/05/01 17:22
1、在system.lua中找到:
entry({"admin", "system", "flashops"}, call("action_flashops"), _("Backup / Flash Firmware"), 70)
对应函数
function action_flashops()里有:
local upgrade_avail = nixio.fs.access("/lib/upgrade/platform.sh"),注意platform.sh
从页面查找,当升级失败,有信息:
The uploaded image file.......
找对应flashops.htm里有:
<% if image_invalid then %>
<div class="cbi-section-error"><%:The uploaded image file ....%></div>
<% end %>
可以知道关键在if 语句里的image_invalid
回到system.lua,有:
if step == 1 then
if image_supported() then
luci.template.render("admin_system/upgrade", {
checksum = image_checksum(),
storage = storage_size(),
size = nixio.fs.stat(image_tmp).size,
keep = (not not luci.http.formvalue("keep"))
})
else
nixio.fs.unlink(image_tmp)
luci.template.render("admin_system/flashops", {
reset_avail = reset_avail,
upgrade_avail = upgrade_avail,
image_invalid = true
})
end
可以看出又有一个if判断,image_supported()是关键。
在image_supported()里:
local function image_supported()
-- XXX: yay...
return ( 0 == os.execute(
". /lib/functions.sh; " ..
"include /lib/upgrade; " ..
"platform_check_image %q >/dev/null"
% image_tmp
) )
end
从这个函数找到对应functions.sh platform.sh common.sh三个对应脚本
platform.sh又出现了,在platform_check_image() 里发现没有对应产品平台?
添加,编译,OK,可以升级固件了。
2、问题又出现了,升级固件后,无线没有起来
串口有打印信息:
Open file "*****t" failed!
即****.dat文件没有在etc目录下
而tmp目录却有**.dat文件
那么应该是一个ln 的链接没有成功,查找
在rt***.sh里发现:
ln -s /tmp/****.dat /etc/Wireless/*****
分别增加调试信息,echo "hjb****" >> /hjb
最终问题定位在
while grep -qs "^ *ra$((++i)):" /proc/net/dev;里
即断电重启,++i=0,reboot重启++i就是1了,grep没有找到对应ra1,就不继续向下执行了
升级固件和重启类似,但是升级固件时候会删掉etc/***.dat,所以无线起不来。
怎么办?
在while语句前增加一句了ln -s语句,强制链接不久ok了吗?
结果证明猜测正确。
结论:这类型bug解决,很多时候都是找到对应文件,猜测功能,用打印信息调试。验证正确即修改正确了。
总之,一句玩笑话,问题的解决都是猜的。
- 部分内容7---升级固件
- iphone升级固件
- WEB固件升级
- WEB固件升级
- STM32IAP固件升级
- BM78 固件升级
- 固件升级思路
- pyboard固件升级
- ESP8266固件升级
- OpenMV固件升级
- android 3.0 升级的部分内容
- 嵌入式Linux固件升级
- 宏基A500 固件升级
- jtagice3固件升级方法
- j-link固件升级
- netduino固件升级方法
- 2.6 固件升级操作
- STM32 BootLoader升级固件
- Win7 无法访问局域网内其他电脑以及共享的文件解决办法,以下错误代码:0x80004005解决办法
- 一步一步在Linux上升级10gR2 RAC到11gR2 RAC(2)
- jsp 九大隐含对象
- 网络流24题题目列表
- iOS开发iPad和iPhone的启动画面设置
- 部分内容7---升级固件
- codeMirror 使用教程
- 【MotionEvent】亲测MotionEvent中getX()和getRawX()的区别
- 有关Linux下线程的调度
- 如何查看mysql数据库安装时候选择的编码格式
- 结构型模式---代理模式之动态代理与静态代理的区别
- 一步一步在Linux上升级10gR2 RAC到11gR2 RAC(3)
- LeetCode:Sqrt(x)
- Android:android:listSelector="#00000000" 与 android:listSelector="@null"之区别