最近这段时间,第一次买了树莓派4B玩,主要用来做机器人控制。往树莓派系统里面配置了各种环境,花了不少时间,包括很烦人的opencv-python。因此,把这个系统备份一下,是很有必要的,避免以后重复配置环境,徒增工作量。
0.温馨提示
不要用拼多多上买的那种十几块钱就有32G容量的SD卡,这些卡很多都是有问题的,写入镜像后你会发现树莓派无法启动。建议用正规的SD卡,比如淘宝上写着支持树莓派的闪迪SD卡,就没什么问题。因此,当你照着下面方法写入的系统无法启动时,可以考虑是否SD卡存在问题!
假若你的树莓派系统装在A卡中,备份树莓派系统,有两种方案:
1.拷贝整张卡
将A卡中的系统,直接用dd命令按字节拷贝到B卡中。其中B卡容量必须比A卡大,因为dd命令是直接把A卡中的全部内容拷贝到B卡中。(比如你的A卡是16G,那么B卡必须大于16G,即32G)。
将A卡作为系统卡启动树莓派,B卡通过读卡器插到树莓派。
则你的A卡一般是:/dev/mmcblk0, B卡可能是/dev/sdb(根据实际情况修改),则执行以下命令即可:
sudo dd bs=4M of=/dev/mmcblk0 if=/dev/sdb
拷贝整张卡的方式,还可以通过windows系统来做,但这时候需要Win32DiskImager这个工具,网上很多博客介绍这种方式,这里就不写了。
2.拷贝系统分区
第1种方法虽然简单,但是最大缺点就是浪费SD卡容量,要求你的B卡必须比A卡容量大,很不友好!
可以在这个github项目下载根据系统分区制作树莓派镜像的脚本:
BigBubbleGum/RaspberryBackup
github.com/BigBubbleGum/RaspberryBackup
具体脚本内容无需理会,反正很好用!随便找一个linux系统,下载好该脚本,赋予改脚本执行权限:
sudo chmod +x rpi-backup.sh
然后通过读卡器,将存有树莓派系统的A卡插进去。查看A卡系统分区:
df -h
可以看到A卡的系统分区:
然后执行:
sudo bash rpi-backup.sh /dev/sdb1 /dev/sdb2
执行脚本时,后面跟着两个参数,第一个参数是树莓派SD卡/boot分区的设名:/dev/sdb1,第二个参数是根目录分区的设备名:/dev/sdb2,注意依据实际情况修改!
执行完后,可以在~/backupimg/目录下,看到一个xxxxxxxx.img镜像文件。
你可以查看这个镜像文件,发现它很小,应该只有几个G。以后,当你需要使用这个系统时,再用dd命令将这个镜像写入SD卡即可。比如你想把这个镜像写入B卡,通过下列命令查看B卡设备名:
df -h
发现B卡可能对应着/dev/sdb1,甚至对应着/dev/sdb1和/dev/sdb2两个分区。
但是它几个分区都无所谓,我们用dd命令写入镜像时,直接写/dev/sdb即可。在这之前,需要先卸载一下SD卡,避免写镜像时同时被其他进程写入:
sudo umount /dev/sdb1
若有两个分区,则:
sudo umount /dev/sdb1
sudo umount /dev/sdb2
最后利用dd命令完成镜像写入:
sudo dd bs=4M of=xxxxxxx.img if=/dev/sdb
此时,linux终端就只有一个光标,看上去卡住了,不用管,等待其写完即可!
最后将写入镜像的SD卡插在树莓派上,就可以开始玩了。