RK3588备份Ubuntu系统
随便记录一下,方便查阅
参考:
1、瑞芯微RK3588开发板的固件烧录完整教程(简单好上手)
2、RK3288/RK3399 Ubuntu 系统备份
3、瑞芯微RK3399K固件备份三种方式
1、使用官方的烧写工具备份(失败,已弃坑)
-
1、使用官方的开发工具,进行信息读取:
一开始是ADB
设备,需要进行切换,切换到LOADER
设备,读取设备分区表。 -
2、备份对应的镜像
- uboot: 程序,一个主要用于系统的引导加载程序,uboot分区简单理解就是运行存储uboot程序的磁盘分区,该程序虽然也需要开发但是很少动,所以基本上备份一次即可
- trust: 是 U-Boot 作为二级 loader 的打包
- misc: 用来控制是正常启动,还是进入急救模式(Recovery Mode)
- boot: 内核的内存启动盘 (initrd),是内核启动后最先加载的根文件系统,包含重要的初始化动作,一般不需要改动。
- recovery: 急救模式的映像,内含内核和急救模式的根文件系统。
- backup: 预留,暂时没有用。后续跟 android 一样作为recovery 的 backup 使用.(可省略)
- oem: 给厂家使用,存放厂家的 app 或数据。只读。代替原来音箱的 data分区。挂载在/oem 目录.(可省略)
- rootfs: 存放 buildroot 或者 debian 编出来的 rootfs.img,只读
- userdata: 存 放 app 临 时 生 成 的 文 件 或 者 是 给 最 终 用 户 使 用 。 可 读 写 , 挂 载在/userdata 目录下.(可省略)
————————————————
版权声明:本文为CSDN博主「xiaoyaoyou.xyz」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39510813/article/details/117824965
会报错,还是点击导出后立即出现的错误!
:
不想搞了,就到这里了
2、使用命令行进行备份(走通了流程)
-
参考:
1、RK3588 开发板上根文件系统导出并制作img镜像
2、导出RK3288开发板上的根文件系统,并打包img
3、瑞芯微RK3399K固件备份三种方式 -
准备:
在开发板 RK3588 上的文件系统需要安装:ssh、rsync;
本机 PC 电脑或虚拟机(Linux)上安装:ssh、rsync。
2.1、RK3588上操作
2.1.1、RK3588安装rsync
终端中输入以下命令:
sudo apt-get update
sudo apt-get install rsync
- 报错:
topeet@iTOP-RK3588:~ $ sudo apt-get update
[sudo] password for topeet:
Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports focal InRelease
Get:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports focal-updates InRelease [114 kB]
Get:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports focal-backports InRelease [108 kB]
Get:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports focal-security InRelease [114 kB]
Get:5 http://security.ubuntu.com/ubuntu xenial-security InRelease [99.8 kB]
Ign:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
Get:7 http://security.ubuntu.com/ubuntu xenial-security/main Translation-en [360 kB]
Ign:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
Ign:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
Ign:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
Ign:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
Err:6 http://security.ubuntu.com/ubuntu xenial-security/main arm64 Packages
404 Not Found [IP: 185.125.190.36 80]
Fetched 436 kB in 4s (105 kB/s)
Reading package lists... Done
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-arm64/Packages 404 Not Found [IP: 185.125.190.36 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
备份源设置:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
源文件改为:
# 改用华为源,支持arm64框架
deb https://repo.huaweicloud.com/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ focal main restricted universe multiverse #源码镜像,注释掉
deb https://repo.huaweicloud.com/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ focal-security main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ focal-backports main restricted universe multiverse
## Not recommended
# deb https://repo.huaweicloud.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
# deb-src https://repo.huaweicloud.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
更新源:
topeet@iTOP-RK3588:~ $ sudo apt-get update
Get:1 https://repo.huaweicloud.com/ubuntu-ports focal InRelease [265 kB]
Get:2 https://repo.huaweicloud.com/ubuntu-ports focal-security InRelease [114 kB]
Get:3 https://repo.huaweicloud.com/ubuntu-ports focal-updates InRelease [114 kB]
Get:4 https://repo.huaweicloud.com/ubuntu-ports focal-backports InRelease [108 kB]
Get:5 https://repo.huaweicloud.com/ubuntu-ports focal/main arm64 Packages [940 kB]
Get:6 https://repo.huaweicloud.com/ubuntu-ports focal/main Translation-en [506 kB]
Get:7 https://repo.huaweicloud.com/ubuntu-ports focal/main Translation-zh_CN [113 kB]
Get:8 https://repo.huaweicloud.com/ubuntu-ports focal/restricted arm64 Packages [1,300 B]
Get:9 https://repo.huaweicloud.com/ubuntu-ports focal/restricted Translation-en [6,212 B]
Get:10 https://repo.huaweicloud.com/ubuntu-ports focal/restricted Translation-zh_CN [1,324 B]
Get:11 https://repo.huaweicloud.com/ubuntu-ports focal/universe arm64 Packages [8,458 kB]
Get:12 https://repo.huaweicloud.com/ubuntu-ports focal/universe Translation-en [5,124 kB]
Get:13 https://repo.huaweicloud.com/ubuntu-ports focal/universe Translation-zh_CN [388 kB]
Get:14 https://repo.huaweicloud.com/ubuntu-ports focal/multiverse arm64 Packages [114 kB]
Get:15 https://repo.huaweicloud.com/ubuntu-ports focal/multiverse Translation-zh_CN [4,612 B]
Get:16 https://repo.huaweicloud.com/ubuntu-ports focal/multiverse Translation-en [104 kB]
Get:17 https://repo.huaweicloud.com/ubuntu-ports focal-security/main arm64 Packages [1,486 kB]
Get:18 https://repo.huaweicloud.com/ubuntu-ports focal-security/main Translation-en [338 kB]
Get:19 https://repo.huaweicloud.com/ubuntu-ports focal-security/restricted arm64 Packages [4,404 B]
Get:20 https://repo.huaweicloud.com/ubuntu-ports focal-security/restricted Translation-en [227 kB]
Get:21 https://repo.huaweicloud.com/ubuntu-ports focal-security/universe arm64 Packages [743 kB]
Get:22 https://repo.huaweicloud.com/ubuntu-ports focal-security/universe Translation-en [165 kB]
Get:23 https://repo.huaweicloud.com/ubuntu-ports focal-security/multiverse arm64 Packages [3,072 B]
Get:24 https://repo.huaweicloud.com/ubuntu-ports focal-security/multiverse Translation-en [5,488 B]
Get:25 https://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 Packages [1,796 kB]
Get:26 https://repo.huaweicloud.com/ubuntu-ports focal-updates/main Translation-en [421 kB]
Get:27 https://repo.huaweicloud.com/ubuntu-ports focal-updates/restricted arm64 Packages [4,600 B]
Get:28 https://repo.huaweicloud.com/ubuntu-ports focal-updates/restricted Translation-en [242 kB]
Get:29 https://repo.huaweicloud.com/ubuntu-ports focal-updates/universe arm64 Packages [971 kB]
Get:30 https://repo.huaweicloud.com/ubuntu-ports focal-updates/universe Translation-en [247 kB]
Get:31 https://repo.huaweicloud.com/ubuntu-ports focal-updates/multiverse arm64 Packages [8,204 B]
Get:32 https://repo.huaweicloud.com/ubuntu-ports focal-updates/multiverse Translation-en [7,408 B]
Get:33 https://repo.huaweicloud.com/ubuntu-ports focal-backports/main arm64 Packages [45.3 kB]
Get:34 https://repo.huaweicloud.com/ubuntu-ports focal-backports/main Translation-en [16.3 kB]
Get:35 https://repo.huaweicloud.com/ubuntu-ports focal-backports/universe arm64 Packages [24.3 kB]
Get:36 https://repo.huaweicloud.com/ubuntu-ports focal-backports/universe Translation-en [16.3 kB]
Fetched 23.1 MB in 8s (2,753 kB/s)
Reading package lists... Done
再次安装:
topeet@iTOP-RK3588:~ $ sudo apt-get install rsync
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
rsync
0 upgraded, 1 newly installed, 0 to remove and 35 not upgraded.
Need to get 306 kB of archives.
After this operation, 693 kB of additional disk space will be used.
Get:1 https://repo.huaweicloud.com/ubuntu-ports focal-security/main arm64 rsync arm64 3.1.3-8ubuntu0.5 [306 kB]
Fetched 306 kB in 1s (579 kB/s)
Selecting previously unselected package rsync.
(Reading database ... 121008 files and directories currently installed.)
Preparing to unpack .../rsync_3.1.3-8ubuntu0.5_arm64.deb ...
Unpacking rsync (3.1.3-8ubuntu0.5) ...
Setting up rsync (3.1.3-8ubuntu0.5) ...
Created symlink /etc/systemd/system/multi-user.target.wants/rsync.service → /lib/systemd/system/rsync.service.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.20) ...
2.1.1、RK3588设置SSH
配置sshd_config
文件,确保SSH能够通过root用户登录!
sudo vim /etc/ssh/sshd_config
再设置sshd_config:
sudo vim /etc/ssh/sshd_config
修改其中的Authenation
下的PermitRootLogin
为yes
即可:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...
然后重启生效:
/etc/init.d/ssh restart
2.2、虚拟机Ubuntu上操作
2.2.1、把开发板上的文件同步到虚拟机中
在虚拟机的Ubuntu系统上创建一个目录,用来存放 RK3588 开发板的文件系统:
mkdir rootfs
RK3588的IP为192.168.1.123
,在虚拟机上ping
以下,看是否能通:
在虚拟机上同步开发板文件系统,执行:
# 将RK3588的文件同步到虚拟机上的rootfs文件夹上
# 需要root权限登录RK3588设备,不然没法完全把文件备份出去,做出来的镜像是没法导入的
sudo rsync -avx root@192.168.1.123:/ rootfs
rsync
的使用可以参考: 1、rsync
用法教程
2、Linux下rsync(本地、远程)文件同步
例如:rsync -av root@192.168.1.77:/etc/hosts /dir1/
#将192.168.1.77服务器/etc/hosts
文件拷贝到本地/dir1
文件夹下
rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)
- SSH链接提示
SSH The authenticity of host can't be established
,直接输入yes
,还是会报错:
参考:解决SSH登录时出现Warning: Permanently added告警问题
在虚拟机上创建~/.ssh/config
文件:
vim ~/.ssh/config
在文件中输入下面内容:
UserKnownHostsFile ~/.ssh/known_hosts
再次在虚拟机上执行rsync同步指令:
RK3588的文件开始传输到虚拟机上,等待文件传输完毕:
执行结束后可将开发板的文件系统同步到虚拟机上。
2.2.2、在虚拟机中打包生成img文件
- 1、制作镜像,用dd工具创建镜像文件,在主机执行指令(可以制作出一个大小为 7000M 的空 img 文件,大小可以修改 count 值)
3G不够用,下面还得重新创建大一点的!!!
# rk3588_230417.img是创建的img文件名字
dd if=/dev/zero of=rk3588_230417.img bs=1M count=7000
/dev/zero:为虚拟盘的名字。
rk3588_230417.img:为要建的镜像文件。
bs=1M :表示每块读写1M数据。
count=7000:拷贝块的数量。
结果如图:
topeet@ubuntu:~$ dd if=/dev/zero of=rk3588_230417.img bs=1M count=7000
记录了7000+0 的读入
记录了7000+0 的写出
7340032000字节(7.3 GB,6.8 GiB)已复制,10.9088 s,673 MB/s
- 2、格式化镜像文件,并加入 linuxroot 卷标:
sudo mkfs.ext4 -F -L linuxroot rk3588_230417.img
- 3、挂载镜像并往里面拷入修改后的文件系统
#创建镜像文件挂载目录
mkdir ubuntu-mount
#挂载空的 img 文件
sudo mount rk3588_230417.img ubuntu-mount
#将文件系统拷贝到 img 挂载的路径目录下,rootfs是同步过来的文件夹
sudo cp -rfp rootfs/* ubuntu-mount
# 卸载镜像
sudo umount ubuntu-mount
这样 rk3588_230417.img 里就已经有刚才制作的根目录内容了,但 rk3588_230417.img 文件大小却是定义的分区大小,不是文件系统的实际大小,所以还要经过一些处理才能发布。
- 4、检查并修复rk3588_230417.img镜像的文件系统
sudo e2fsck -p -f rk3588_230417.img
- 5、精简rk3588.img镜像文件的大小
sudo resize2fs -M rk3588_230417.img
把打包好的文件用SFTP传输到Win10主机上,就完成了。
2.3、烧写测试
开发板的文件系统已经重新打包成了rk3588_230417.img,用该文件和相应的内核文件就可生成系统镜像,烧录镜像后就可直接运行用户程序,从而省掉了重新安装包和其他配置的工作。
-
1、删除RK3588上的文件
如图所示,删除这两个文件夹:Samba
、test7_2
-
2、解压原始镜像得到
parameter.txt
文件:
在输出目录中找到对应的文件即可 -
3、用瑞芯微给的镜像烧写软件,把img 烧录到设备 rootfs 分区
开发板连接Windows电脑,并打开 RKDevTool 烧录工具,让开发板进入 Loading 模式;
如上图,只选择rootfs分区,点击右边的框框
选择备份好的rk3588_230417.img
镜像,然后点击执行
,开始烧写文件:
但注意单独烧写rootfs时要包含parameter.txt文件,这个文件需要解压原始镜像获取,否则很可能会出问题 ——来自瑞芯微RK3399K固件备份三种方式
本人没有试过,直接两个文件一起烧录进去了。
烧录进度100% 后,开发板会自动重启,进入新系统。
等系统自动重启后,可以看到之前删除的文件回来了:
但开发板的存储空间不对:
rootfs的大小缩水了,上面显示只有6.7G,而我们通过parted查看理论上我们的根分区大小应该是14G大小才对,通过以下命令查看(建议使用parted,MBR和GPT分区表都能识别,目前由于磁盘容量的扩大,都在逐渐过渡到GPT分区表了):
lsblk
df -h
sudo parted /dev/mmcblk0
(parted) p
卧槽,没想到userdata
这么多空间,14.8G。
下次使用可以把大文件放在这里
这个是由于我们的文件系统大小没有设置成分区大小引起的,对rk3588_230417.img做的廋身操作吗,在那个位置对镜像文件结合内容进行了搜身,所以这里默认显示的是系统的大小,那么我们将其重新设置为分区大小即可,参考这里的命令:
sudo resize2fs /dev/mmcblk0p6
topeet@iTOP-RK3588:~/Documents/TOB $ sudo resize2fs /dev/mmcblk0p6
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mmcblk0p6 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mmcblk0p6 is now 3670016 (4k) blocks long.
topeet@iTOP-RK3588:~/Documents/TOB $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 6.7G 6.5G 52% /
devtmpfs 3.7G 8.0K 3.7G 1% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 768M 3.7M 764M 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 3.8G 180K 3.8G 1% /tmp
/dev/mmcblk0p7 123M 13M 104M 11% /oem
/dev/mmcblk0p8 15G 22K 15G 1% /userdata
tmpfs 768M 12K 768M 1% /run/user/1000
到此,就完成了RK3588的备份了。