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卡实际大小~

本文转自地平线开发者社区

原作者:大圣GemiTech

原链接:https://developer.horizon.ai/forumDetail/98129467158916294