瑞芯微 rk3588 Linux系统备份还原 StepbyStep

1.系统备份

1.1 将瑞芯微平台嵌入式系统的root ssh 权限开通

step1:
sudo vi /etc/ssh/sshd_config

step2: 找到PermitRootLogin,把开关打开:

PermitRootLogin yes

step3:重启ssh服务

sudo systemctl restart sshd

1.2.使用瑞芯微的打包脚本把嵌入式系统系统打包

这个打包脚本,建议修改一下,把文件系统放在当前目录:

#! /bin/bash# acquire root privilege
if [ ! "$UID" -eq 0 ]; thenecho "This script require root privilege."exit 0
fifunction check_ip() 
{   local IP=$1   VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')   if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then   if [ $VALID_CHECK == "yes" ]; then   echo "IP $IP  available!"   return 0   else   echo "IP $IP not available!"   return 1   fi   else   echo "IP format error!"   return 1   fi   
}   
while true ;do   read -p "Enter your username and ip:" userName IP   check_ip $IP   [ $? -eq 0 ] && break   
done
# Install the rsync
if ! type rsync >/dev/null 2>&1; thenecho 'rsync did not install,Now we will intall rsync!'apt updateapt install rsync
fi
# Test ip
if  ping -c 2 ${IP} >/dev/null ; thenecho 'The IP is conneted!'   
else echo 'The IP can not conneted! 'exit 0
fi
# New path
rm -rf ./rootfs
if [ ! -d "./rootfs" ]; thenmkdir ./rootfs
fi
# Download rootfs
rsync -avx $userName@$IP:/ ./rootfs
#rm -rf ./rootfs/var/log/*# Creat new img by dd 
dd if=/dev/zero of=rootfs.img  bs=1M count=15000
mkfs.ext4 -F -L linuxroot rootfs.img
if [ ! -d "/ubuntu-mount" ]; thenmkdir /ubuntu-mount
fi
mount rootfs.img /ubuntu-mount
cp -rfp ./rootfs/* /ubuntu-mount
umount /ubuntu-mount
e2fsck -p -f rootfs.img
resize2fs -M rootfs.img
exit 0

1.3 系统备份的结果

 最终会生成一个叫rootfs.img包,这个包往往尺寸很大,推荐用.7z压缩一下。另外,./rootfs中你能看到根文件系统,建议对./rootfs/var/log中的目录进行整理,删减不必要的日志

7z a xxxx-release-v1.0.20240510.7z rootfs.img

 这个rootfs.img的包就是我们需要处理的文件系统。

2.升级包.img生成

2.1 首选准备原厂boot uboot这里镜像文件

它们需要和上一步生成的linux文件系统合并,然后打包成最终的.img映像。

使用原厂系统工具:RKDevTool_Release_v2.92解包适应你的平台的原厂.img升级包,比如对我而言是:

lubancat-rk3588-debian11-gnome-20240424_update.img

注意最新版的v3.15功能不全,无法使用。

注意v2.92有个坑:

2.1.1 修改v2.92烧写工具的bug

我们之后主要的工作目录:./rockdev下的两个可执行文件不是最新版:

最新版在.bin目录里:

记得把它先拷过去。

2.1.2 解包

原厂文件的解包过程,打开主界面即可:

解包的位置在这里:

选择固件包(*.img),然后点击解包即可。 

解包后的各个组成部分放置在:
.\Output目录下:

2.2 筛选需要的.imge和其他配置文件到工作目录中

 注意依照2.1.1修正v2.92 ./rockdev目录的.exe文件版本问题

step1:在.rockdev目录创建Image目录,把Output目录中的文件全部拷贝过去

step2.把Image目录中的package-file,拷贝一份到./rockdev目录

step3.建议修改update-script文件,增补rootfs的部分
(它可能并不需要,如果你测试不需要这一步,请留言。)

# 升级kernel
write_image PACKAGE:kernel KERNEL:
check_image PACKAGE:kernel KERNEL:

# 升级boot
write_image PACKAGE:boot BOOT:
check_image PACKAGE:boot BOOT:

# 升级rootrfs
write_image PACKAGE:rootfs ROOTFS:
check_image PACKAGE:rootfs ROOTFS:

上文中加粗的部分是新增的代码。

2.3 替换掉./rockdev/Image中的rootfs.img

2.4 打包,生成最终可用的.img

rk3588-mkupdate.bat 

3.最终的成品及使用

最终在./rockdev目录下会生成一个

update.img

可以重命名并压缩,这就是最终的升级包

3.1 升级:

最终升级时, 注意要进入Loader模式:

备注:

这个备份和还原过程在鲁班猫CAT4平台上测试过,对应的芯片组是RK3588.

last modified: May10,2024
created at :May10,2024

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Taro 快速开始

大家好我是苏麟 , 今天聊聊Trao. 官网 : Taro 介绍 | Taro 文档 (jd.com) 点击快速开始 全局安装 CLI 初始化一个项目 选择配置 : 根据自己需求选择 安装失败先不用管 , 用前端工具打开项目 npm install 安装 , 显示安装失败 怎么解决 ? : 查看报错信息 百度 , 问 AI 工具 运…

【配置】IT-Tools部署

github地址 docker运行如下&#xff0c;记得打开云服务器的9090端口 docker run -d --name it-tools --restart unless-stopped -p 9090:80 corentinth/it-tools:latestip:9090查看&#xff0c;很香大部分工具都有

测试新人常问:如何开始自动化测试,必须知道的10点!

随着互联网技术的发展&#xff0c;无论哪个公司&#xff0c;哪个团队都在谈论自动化测试、动手实现自动化测试&#xff0c;从而让测试显得更加“高大上”。 那么是不是所有的业务都适合自动化&#xff1f;是不是自动化做的越多&#xff0c;效果越好呢&#xff1f;下面就自己一…

WP All Import Pro插件下载 - 一键导入,无限可能

在当今快节奏的数字时代&#xff0c;网站内容的更新和管理是每个网站管理员和开发者的日常工作。但是&#xff0c;传统的手动更新方法不仅耗时&#xff0c;而且容易出错。现在&#xff0c;有了WP All Import Pro&#xff0c;这一切都将改变。 WP All Import Pro 是一款专为Wor…

【IC前端虚拟项目】axi ddr/sram验证组件思路与编写

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 在完成了所有的utils包括apb_utils之后,就要进行验证环境的整体搭建,因此我们再把验证环境拿出来看一下: 按照由底至顶层的思路,接下主要有五大部分需要我们完成:ram_model、reference_model、env、…

数据库出现死锁的解决方法参考

死锁引起的原因一般是多个用户并发访问数据库导致的问题&#xff0c;或是因为某个进程挂死以后资源未释放导致的。通过onstat –p可查看deadlks项大于0即表示历史总计死锁次数。对于被锁的表进行操作的时候会出现-143 ISAM error: deadlock detected的错误。当其他会话访问此表…

空间复杂度与链表刷题

"一切的一切都是你自己在感应." 本文索引 空间复杂度复杂度实例实例1实例2实例3 链表题目1. 返回倒数第K个节点2. 链表的回文结构3. 相交链表4. 随机链表的复制5. 环形链表 总结: 前言: 本文主要探究空间复杂度与链表题目讲解 更多文章点击主页: 酷酷学!!! 如果此文对…

Leetcode—138. 随机链表的复制【中等】(cend函数)

2024每日刷题&#xff08;129&#xff09; Leetcode—138. 随机链表的复制 实现代码 /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;random NULL;} }; */class Solution { public:Node* copyRan…

mybatis 跨库查询 mysql

跨库&#xff0c;表关联的查询&#xff0c;实现起来很简单&#xff1a; select a.uid from ucenter.user a , database user_profile b where a.uid b.uid;只要在表的前边加上库名即可。 这个是我项目中xml 中的一个例子&#xff0c;项目采用的是springmvc,持久层框架就是my…

ABAP跨client的RFC调用

1、SM59配置连接 2、创建需要调用的函数&#xff0c;ZGET_TM_LIST&#xff0c;开启远程启用模块 3、新建调用程序 DATA:L_MSG TYPE C,LSH(30) TYPE C. DATA:IT_ZSTM_LIST TYPE STANDARD TABLE OF ZSTM_LIST WITH HEADER LINE.CALL FUNCTION ZGET_TM_LIST DESTINATION ZTEST_R…

C语言 | Leetcode C语言题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void sortColors(int *nums, int numsSize) {int p0 0, p2 numsSize - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(&nums[i], &num…

使用scrollIntoView滚动元素到可视区域

1. 实现效果 点击顶部标签栏&#xff0c;让对应的内容出现在可视区域&#xff1a; 2. scrollIntoView () scrollIntoView 是一个内置的 JavaScript 方法&#xff0c;用于将元素滚动到视口可见的位置。它通常用于用户界面中&#xff0c;以便用户能轻松看到特定的元素。此方…