0.前言
很多小伙伴们在开发旭日X3派后,想备份自己魔改后的镜像,官方手册中提供了根文件系统制作的方法,但此种方法对于想备份自己开发魔改过后的镜像非常不方便,在这里给大家提供一个较为简便的方法,可以方便的备份与恢复SD卡镜像。
1.准备
· 平台准备
· 旭日X3派+SD卡
· PC端Ubuntu主机 或 Ubuntu虚拟机
· 软件工具
· 镜像备份阶段
· gparted - 磁盘分区编辑工具
· fdisk - 一个创建和维护分区表的命令行工具
· dd - 一个从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出的命令行工具,用于拷贝SD卡分区镜像到文件
· 镜像恢复阶段
· balenaEtcher - 镜像烧写工具
· growpart - 分区扩容工具
· resize2fs - 文件系统调整工具
2. 备份镜像
在SD卡中,有非常多的部分是未用到的空间,如64G的内存卡,实际内容仅占用了10G,那么在备份的过程中,我们就没有必要把空闲的50多G也备份下来,我们只需要备份有内容的部分就可以了,那么我们就需要先压缩SD卡空闲分区,然后再备份有内容的部分,步骤如下:
· 首先在PC端Ubuntu主机或者Ubuntu虚拟机中安装Gparted工具
sudo apt-get install gparted
· 将旭日X3P的SD卡通过读卡器连接到PC端Ubuntu,启动Gparted
sudo gparted
· 选择SD卡,操作分区,压缩掉空闲的分区。
选择SD卡
Unmount SD卡
拖动滑块压缩分区,白色部分为空闲分区,黄色部分为占用分区,注意拖动的时候要保留一部分白色部分,防止启动时空间不足。
确认执行操作,此时即完成了压缩分区的工作
将SD卡分区从59.48G压缩到了10.59G
· 使用fdisk命令查看SD卡分区信息sudo fdisk -u -l
可以看到其中的/dev/sdb就是我们的SD卡的磁盘编号,然后用如下命令查看SD卡分区信息sudo fdisk -u -l /dev/sdb
· 使用dd命令备份SD卡到img文件sudo dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sdb of=backup_x3p.img
耐心等待命令执行完成~~~
执行完成后,可以看到在当前目录下,出现了一个名为backup_x3p.img的文件,这就是我们备份的系统镜像。此时,我们就完成了镜像备份的工作。
3. 烧写恢复镜像
我们备份好镜像后,就可以使用备份的镜像来恢复SD卡,步骤如下:
· 与官方烧写镜像的步骤一致,使用balenaEtcher工具将前文备份的IMG镜像文件烧写到新SD卡中
· 将SD卡插到旭日X3P中,启动并连接到X3P,不出意外的话,X3P可以正常启动并进入系统:
· 使用df -h命令查看系统空间
此时可以看到,系统空间为压缩后的大小,并不是SD卡实际的大小,这是因为我们在备份镜像的时候进行了空闲分区的压缩,那么接下来,我们就需要去恢复分区大小为当前实际SD卡大小
· 使用growpart工具扩展分区大小sudo growpart /dev/mmcblk2 1
如出现找不到growpart命令,需要先安装growpart工具sudo apt-get install cloud-utils
· 使用resize2fs工具恢复文件系统sudo resize2fs /dev/mmcblk2p1
· 重启!此时再用df -h指令查看系统空间
可以看到系统空间已恢复成SD卡实际大小~
Enjoy~!
**本文转自地平线开发者社区
原作者:大圣GemiTech
原链接:https://developer.horizon.ai/...**