使用Orange Pi Zero一段时间后,在里面创建了一些工程,接下来需要批量克隆系统卡。故以Orange Pi Zero,香橙派Zero为例,整理一下创建最优化img镜像的步骤。

准备工作:

  • Linux带桌面的系统,虚拟机即可,本文以Ubuntu 2020为例
  • 需要创建img镜像的tf卡以及读卡器。
  • Linux系统中需要装好Gparted工具

制作流程:

启动Ubuntu系统,将tf卡放入读卡器,插入电脑,将该设备接入到虚拟机中。见下图。

android系统镜像 没有image文件 安卓img镜像编辑_进度条

打开Gparted工具,点击右上角切换设备,切换到TF卡。

android系统镜像 没有image文件 安卓img镜像编辑_ubuntu_02

 然后右键点击需要压缩的根分区,即图中的/dev/sdb1,如果右键菜单中的unmount可点,则先点击unmount卸载该分区,然后选择Resize/Move。

android系统镜像 没有image文件 安卓img镜像编辑_进度条_03

然后观察对话框中Minisum size的值,该值为该分区所能调整的最小值,结合该值调整New size的值。图中我最小的大小为2261M,New Size要比Minisum size大一些。文中我将New size调整为了2500M,并记下该值和Free space preceding的值,之后要用。

android系统镜像 没有image文件 安卓img镜像编辑_嵌入式_04

调整完后,点击下方的Resize按钮,对话框关闭之后,点击提交更改,即设备选择框左边的对号。

android系统镜像 没有image文件 安卓img镜像编辑_嵌入式_05

至此分区调整完毕,接下来开始进行创建img操作。

打开终端(shell),接下来计算刚调整分区时,Free space preceding+New size的和,文中为2500+4=2504M。

再计算 (Free space preceding+New size)/4 的值,向上取整。

本文的值应为(2500+4)/4=626。所以将626作为count的参数填入,626的值可以稍微再大一点,比如630也是可以的。不要写的太大,写的过大的话会导致img镜像变大。

if的参数为tf卡的位置,按照刚刚gparted中的盘符选择界面的路径就好。of为输出镜像的位置。

sudo dd bs=4M count=626 if=/dev/sdb of=armbian.img

执行命令后,等待即可,中间没有进度条。

完成后,就可以得到img镜像啦~制作流程就结束了

MacOS的tf卡克隆操作

dd命令在MacOS上也可以执行克隆操作,dd的命令使用方式与linux相同。将tf卡插入到MacBook,会提示无法挂载,忽略即可。

之后使用diskutil list命令,查看tf卡的硬盘位置。本文中是/dev/disk4。

之后就可以开始执行克隆操作了。由于dd命令不会显示进度条,所以可以通过结合pv命令,来直观的展现克隆进度。

命令如下:

sudo dd bs=$[4*1024*1024] count=626 if=/dev/disk4 | pv --size $[4*1024*1024*626] | sudo dd of=xxx.img

得到的效果如下

android系统镜像 没有image文件 安卓img镜像编辑_嵌入式_06

 

接下来讲一下刻录镜像后的分区大小扩展步骤

当刻录完镜像后,进入系统会发现根目录分区很小,和img镜像大小一致,接下来需要将根目录分区的大小扩展到整个TF卡。

扩展流程很简单,只需执行一条命令(该命令只有armbian具备)

systemctl start armbian-resize-filesystem

完成后,在执行df -h 命令,就会发现分区成功扩展到整个tf卡了。本教程到此为止就全部结束啦。

得到的img文件可以使用kpartx -av <文件> 来在ubuntu上进行挂载使用。