嵌入式linux主机通过分区镜像生成固件,DD备份分区后打包成固件,px30刷机教程 ,rockchip刷机教程
我这边有一个工控路由器因为刷机变砖了,网上下载不到固件,自己暂时还没有搞过编译。我找到了同型号的路由器,把它的系统制作成镜像。
具体操作分为三步:
第一步,直接用DD命令备份了几个分区,分区我暂时还不知道,直接用分区编号命名:
dd if=/dev/mmcblk1p1 of=/media/usb0/mmcblk1p1
dd if=/dev/mmcblk1p2 of=/media/usb0/mmcblk1p2
dd if=/dev/mmcblk1p3 of=/media/usb0/mmcblk1p3
dd if=/dev/mmcblk1p4 of=/media/usb0/mmcblk1p4
dd if=/dev/mmcblk1p5 of=/media/usb0/mmcblk1p5
dd if=/dev/mmcblk1p6 of=/media/usb0/mmcblk1p6
dd if=/dev/mmcblk1p7 of=/media/usb0/mmcblk1p7
dd if=/dev/mmcblk1p8 of=/media/usb0/mmcblk1p8
dd if=/dev/mmcblk1p9 of=/media/usb0/mmcblk1p9
dd if=/dev/mmcblk1p10 of=/media/usb0/mmcblk1p10
dd if=/dev/mmcblk1p11 of=/media/usb0/mmcblk1p11
第二步,准备MiniLoaderAll.bin和parameter.txt
我通过解包同型号芯片的固件得到了MiniLoaderAll.bin 文件,这个文件应该是同型号ARM芯片通用的文件,运行在存储芯片旁边做第一步引导用。解包同时得到了parameter.txt分区表文件,这个分区表不能直接使用,因为每个固件的分区特色是不一样的,但是它可以作为模板使用,直接修改里面的分区数据即可。关于分区数据的提取,可以通过fdisk -l 命令,lsblk命令,ls -al /dev/block 等命令获取,parameter.txt 内的分区参数都是扇区数(通过16进制描述的),需要注意字节数和扇区数的换算,每个扇区(sector)的字节数可以通过以上命令获取,我的是512,那么扇区数就应该是 字节数 除 512 ,然后再换算成16进制。
这一步我用的解包软件是AndroidTool_v2.58 ,是从这个网站下载到的 https://www.t-firefly.com/doc/download/67.html
它的升级版本RKDevTool_Release_v2.96_zh也可以的。软件的打包,解包,请搜索,有详细的文章。
我是直接冒险了一下,给正常的机器刷入了一个引导可以中断的uboot,用uboot下的命令获取到了详细的分区数据。经过修改我的parameter.txt文件是这样的:
FIRMWARE_VER: 8.1
MACHINE_MODEL: PX30
MACHINE_ID: 007
MANUFACTURER: PX30
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: px30
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot0),0x00002000@0x00006000(uboot1),0x00002000@0x00008000(trust0),0x00002000@0x0000a000(trust1),0x00002000@0x0000c000(env),0x00002000@0x0000e000(oem),0x0000a000@0x00010000(boot0),0x0000a000@0x0001a000(boot1),0x00200000@0x00124000(system0),0x00200000@0x00324000(system1),-@0x524000(data:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
文件内容很多,都是这个芯片的默认值,我们只按实际分区情况更改@符号前后的数值就可以,@前的是分区的大小,@符号后的是分区起始点,得到分区信息后,我将上一部的备份镜像按顺序进行了改名。
第三步,按照打包教程进行打包,把几个分区镜像文件和MiniLoaderAll.bin ,parameter.txt 拷贝到 AndroidTool_v2.58\rockdev\image内,同时按文件清单修改AndroidTool_v2.58\rockdev\内的package-file文件,我的文件修改后是下面这样的,最后一个分区的data.img镜像应该是客户数据,太大了,应该可以不用打包进来,我直接给注销掉了。
# NAME Relative path
#
#HWDEF HWDEF
package-file package-file
bootloader Image/MiniLoaderAll.bin
parameter Image/parameter.txt
uboot0 image/uboot0.img
uboot1 Image/uboot1.img
trust0 image/trust0.img
trust1 image/trust1.img
env Image/env.img
oem Image/oem.img
boot0 Image/boot0.img
boot1 Image/boot1.img
system0 Image/system0.img
system1 Image/system1.img #data:grow Image/userdata.img
# 要写入backup分区的文件就是自身(update.img)
# SELF 是关键字,表示升级文件(update.img)自身
# 在生成升级文件时,不加入SELF文件的内容,但在头部信息中有记录
# 在解包升级文件时,不解包SELF文件的内容。
backup RESERVED
#update-script update-script
#recover-script recover-script
修改号文件后运行里面的批处理脚本,运行完成后打包就成功了,我的电脑打包运行了有10分钟后才完成的。这个批处理脚本下载软件自带的,我也没有修改,内容是这样的:
mklink /J Image ..\..\..\..\rockdev
Afptool -pack ./ Image\update2.img RKImageMaker.exe -RKPX30 Image\MiniLoaderAll.bin Image\update2.img update2.img -os_type:androidos rem update.img is new format, Image\update.img is old format, so delete older format
del Image\update2.img pause
我们可以看到脚本里调用了Afptool.exe 和 RKImageMaker.exe ,这二个文件一定要在AndroidTool_v2.58\rockdev\内,如果没有请更换你的AndroidTool_v2.58
打包成功后,直接用AndroidTool或RKDevTool刷机,
https://wiki.t-firefly.com/en/Core-PX30-JD4/programming_firmware.html
我的路由器是开机引导时,ttl窗口内按住ctrl+b不放,就会提示进入maskrom刷机状态。这个时候,用电脑USB口链接路由器的USB口,即可提示发现硬件,关于瑞芯微刷机驱动的安装,请另外搜索。
刷机直接选第二页的固件刷机即可,软件第一页是刷分区。
我通过实操得到的关键知识,有的是按分区刷机的,和上面介绍的固件刷机无关:
1. maskrom刷机状态下也可以刷分区,但是必须要和MiniLoaderAll.bin 一起刷,起始点必须要输入正确。
2. 如果按单个分区刷机,可以i最后加载parameter.txt 文件,它会对分区起始点按自己的数据进行统一矫正。
3.uboot就是我们在系统里看见的第一个分区,但是它的起始位置是有偏移的,这个路由器是4000,
4 . MiniLoaderAll.bin 和parameter.txt 的刷分区起始点都是0, 4000偏移量以前的数据应该保持的是MiniLoaderAll.bin
5.有的机器是在开机时按ctrl+c 可以打断uboot,在uboot内可以查看分区信息等,也可以通过download 命令进入loader刷机状态。
需要我刷机用的路由器的可以联系我微信 64050593 ,
嵌入式linux主机通过分区镜像生成固件,DD备份分区后打包成固件,px30刷机教程 ,rockchip刷机教程的更多相关文章
- Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程
近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢.于是对本局域网网关进行测试: $ ping 10.10.26.254 发现延时很大, ...
- JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
这是写的另一个导出word方法:https://www.cnblogs.com/pxblog/p/13072711.html 引入jar包,freemarker.jar.apache-ant-zip- ...
- 脚本_使用awk提取linux主机参数
#!bin/bash#功能:使用awk提取Linux主机的参数信息,如内容剩余容量,根分区剩余容量,本机IP,本机能登录的用户个数,CPU负载.#作者:liusingbon#使用awk提取内存剩余容量 ...
- ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC ...
- LUN挂载到Linux主机后,如何对磁盘进行分区
将阵列上的LUN挂载到Linux主机后,如何对磁盘进行分区,方法参考https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-104-1/ fdis ...
- 在Linux主机使用命令行批量删除harbor镜像
在Linux主机使用命令行批量删除harbor镜像 脚本使用说明: 此脚本不是万能脚本,根据自身环境要调整很多 能用harbor的域名就不要用IP 脚本前半部分可以套用,后半部分需一步一步试错,结合 ...
- Linux主机规划与磁盘分区
各硬件设备在Linux中的文件名 在Linux系统当中,几乎所有的硬件设备文件都在/dev这个目录内. 各硬件设备在Linux中的文件名: 设备 设备在Linux中的文件名 IDE接口的硬盘 /dev ...
- 4种用于构建嵌入式linux系统的工具_转
转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ...
- 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用
1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...
- 嵌入式linux开发uboot启动内核的机制(二)
一.嵌入式系统的分区 嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader.kernel.rootfs的分区是不同的.三星S5PV210规定启动设备的分区方案如下: ...
随机推荐
- 华为云GaussDB(for Influx)单机版上线,企业降本增效利器来了
本文分享自华为云社区<华为云GaussDB(for Influx)单机版上线,企业降本增效利器来了>,作者:GaussDB 数据库 . 1.背景 华为云GaussDB(for Influx ...
- 「学习笔记」扩展 KMP(Z 函数)
对于个长度为 \(n\) 的字符串 \(s\).定义 \(z[i]\) 表示 \(s\) 和 \(s[i,n-1]\)(即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度.\(z\) ...
- 从驾考科目二到自动驾驶,聊聊GPU为什么对自动驾驶很重要
"下一个项目,坡道起步." -- "考试不合格,请将车子开到起点,重新验证考试.你的扣分项是:起步时间超30秒:扣100分.行驶过程中车轮轧到边线:扣100分." ...
- HTML网页/KRPano项目一键打包EXE工具(HTML网页打包成单个windows可执行文件exe)
HTML一键打包EXE工具使用说明 工具简介 HTML一键打包EXE工具(HTML封装EXE,桌件)能把任意HTML项目(网址)一键打包为单个EXE文件,可以脱离浏览器和服务器,直接双击即可运行.支持 ...
- Spring Cloud LoadBalancer原理讲解及自定义负载均衡器
Spring Cloud LoadBalancer原理 LoadBalancerClient作为负载均衡客户端,用于进行负载均衡逻辑,从服务列表中选择出一个服务地址进行调用,其内部方法为下图显示: ( ...
- Python ChatGPT Telegram Bot
注册 这里如何注册我就不说明了,大家自行去注册,主要是现在GPT的基本上已经备用很多了,导致了接码的价格也上涨了,而且使用token的话,其实还是很快可以用完免费的18美金: 接码:https://s ...
- 「luogu - P3911」最小公倍数之和
link. Denote \(cnt_{x}\) = the number of occurrences of \(x\), \(h\) = the maximum of \(a_i\), there ...
- Solution -「YunoOI 2016」镜中的昆虫
Description Link. 区间推平: 区间数颜色. Solution 考虑无修的情况,我们是采用维护每个数的 \(pre\) 来做的.具体一点就是对于每一个 \(a_{i}\) 维护 \(p ...
- ORACEL12C ORA-01033:ORACLE 正在初始化或关闭
问题:客户端报ORA-01033 原因:oracle12C CDB启动,但是可拔插的PDB实例未启动 解决办法: sqlplus / as sysdba--系统管理员登录 alter session ...
- MySQL innoDB 间隙锁产生的死锁问题
背景 线上经常偶发死锁问题,当时处理一张表,也没有联表处理,但是有两个mq入口,并且消息体存在一样的情况,频率还不是很低,这么一个背景,我非常容易怀疑到,两个消息同时近到这一个事务里面导致的,但是是偶 ...