树莓派-系统sd卡迁移
缘起
在前几个月的时候,树莓派3b工作很不稳定(见这篇博文),总是在运行一段时间或者高io/cpu负载时出现卡死问题。
最终定位到的原因为:树莓派的sd卡由于作为系统使用有很大的损耗,系统在高负载时sd卡会罢工,整个系统挂掉。
这里记录下当时树莓派备份、迁移sd卡的过程,作为一个回顾以及记录。
折腾过程
1、备份系统
备份时一个非常好用的linux命令就排上用场了,这个命令就是日常经常用来测试写磁盘速度的dd
命令。
使用如下命令备份
dd if=/dev/mmcblk0 of=[other_device]/rpi_backup.img bs=4M
注意:标准安装时系统sd卡设备是这个mmcblk0
,其他情况下请使用df -h
查看根分区/
的设备是哪个
注意1:注意of参数后边的路径最好不是树莓派系统的路径,比如插在树莓派上的u盘、移动硬盘等
2、还原系统
备份时使用了dd
,还原时也是一样,只不过是命令的if和of参数位置换了。
注意:此时需要一台UNIX*系统的电脑,比如mac或者linux系统,将备份文件和新的需要作为树莓派系统的sd卡插入电脑。因为直接在树莓派上搞,同时读写可能会出问题。
使用如下命令还原
dd if=rpi_backup.img of=[/dev/sdc0] bs=4M 如果使用了gzip压缩,可能是下面的命令 gzip -dc rpi_backup.img | dd of=/dev/sdc0
注意:此处的sdc0为将新的sd卡挂载到UNIX电脑上的磁盘分区名称,实际中请根据df -h
的结果判断后修改
3、启用新sd卡
经过上面2个步骤,树莓派的系统sd卡已经从介质上完成了迁移,我们只需要断电,换上新的sd卡,重新开机即可。系统和之前是完全一样的。
总结
由于我自己使用UNIX系统的电脑比较熟,同时也有设备,因此此次折腾使用的是unix技术栈下的方案。
其实也有一些不需要unix系统的方法,比如把树莓派系统sd卡拔下来放在windos之类的电脑上,使用特定软件读取然后写入分区,此处就不在累述了。
另外本文所述的方法,存在一个缺点:备份文件的大小将和系统sd卡的总大小一样,不管系统sd卡有没有占满,存在备份文件较大的问题,但是在自用迁移时不是什么大问题。
参考文档
https://blog.csdn.net/asukasmallriver/article/details/76807121
https://blog.csdn.net/dxuehui/article/details/51165113
发表评论