虽然标题写着OrangePi Zero,但以下方法几乎适用于各种平台下的IMG系统镜像的备份创建修改及制作
这里简单介绍以下系统镜像的备份及修改制作方法
最简单的方式
软件支持:win32diskimager
相信这个软件大家都会使用了,操作非常简单,新版本也支持了剔除未分配的空间,在映像文件中填入保存的文件位置及文件名,点击读取即可备份。
Linux下dd备份
插入需要备份的系统盘到Linux系统的电脑,本例以虚拟机VirtualBox上的Debian系统为例,首先运行命令fdisk -l
查看磁盘分区
可以看到系统盘在/dev/sdb
下
整个磁盘备份:dd if=/dev/sdb of=/media/sf_Desktop/backup.img
单独分区备份:dd if=/dev/sdb1 of=/media/sf_Desktop/backup.img
命令解释:
if
定义的是需要备份的磁盘或分区,of
定义的是备份保存的位置及文件名,由于没有进度显示,请耐心等待至备份结束...
u-boot备份:dd if=/dev/sdb of=/media/sf_Desktop/u-boot.bin bs=1M count=1
命令解释:
u-boot
可以理解为bootloader
,即引导加载程序,存放在磁盘开头的1M
中,如果不知道结束位置,就把整个备份了再说,bs=1M count=1
即为磁盘sdb
开头1M
的容量,简单的说没这玩意系统无法启动。
Linux下tar备份
运行df
命令,可以查看设备的具体挂载点
可以看到设备
/dev/sdb1
挂载在/media/root/Armbian
目录下tar备份:
tar -cvpzf /media/sf_Desktop/backup.tgz -C /media/root/Armbian .
命令解释:
-cvpzf
为tar命令参数,内容较多这里不细展开,前面目录为备份保存的文件位置及文件名,后面的目录为需要备份的目录。
Linux下img镜像制作及修改
以下使用到的工具:
losetup
,kpartx
首先创建一个8G的空镜像:
dd if=/dev/zero of=/media/sf_Desktop/zero.img bs=1M count=8192
使用losetup
工具将img
镜像文件链接到loop
设备上:
losetup /dev/loop0 zero.img
将之前备份的u-boot写入到zero.img
镜像中:
dd if=u-boot.bin of=/dev/loop0
运行fdisk -l
查看发现mbr
并没有被覆盖
对镜像进行分区:
fdisk /dev/loop0
由于OrangePi Zero镜像只有一个分区,建立比较简单(如果是树莓派,需要建立2个分区)
按n
回车后基本一路回车搞定,最后按w
保存分区表
ps.虚拟机下不知道为啥,得重启一次才可以正常看到保存的结果,所以完成这步骤后重启虚拟机
重启后继续将镜像链接到loop
设备上losetup /dev/loop0 zero.img
运行kpartx
挂载loop
设备:
kpartx -av /dev/loop0
格式化分区:
mkfs.ext4 /dev/mapper/loop0p1
ps.虚拟机下又不知道为啥,得重启一次才可以正常看到操作的结果,所以完成这步骤后重启虚拟机
重启后继续将镜像链接到loop
设备上:losetup /dev/loop0 zero.img
运行kpartx
挂载loop
设备:kpartx -av /dev/loop0
运行df
,可以看到loop0p1
被挂载在/media/root/
下的一个文件夹内
使用tar
恢复之前备份系统文件到镜像:
tar -xvpzf backup.tgz -C /media/root/挂载的文件夹名
解压结束后即完成了img镜像的制作。对于已经制作好的镜像如果需要修改的话链接到loop
设备后再挂载到文件夹即可对镜像中的文件进行读写操作。
具体请看以下操作过程:
1.gif
网友评论