有旧和新树莓派二个,发现SD卡的raspbian系统可在不同树莓派之间通用,挺好。

学通树莓派系统克隆,兼备安装、备份与恢复能力。

在家里,用了一周时间,将新买的树莓派3,HDMIVGA带供电(性价比推荐),旧显示屏,旧音箱。组成家庭媒体中心。手机使用bubbleupnp投屏和推送音乐播放,听音乐的享受更舒服了,显示屏再大些就更好。

房间树莓派媒体中心

在工作室,还有一个树莓派和支持HDMI输出的投影仪。如果能复制现有树莓派的系统SD卡,将省事不少。(重复的事应少做)

开始折腾尝试

借助我的个人电脑是ubutnu,可以看见树莓派分区情况,第二个分区14G采用了3G,很多空间是多余的。

gparted看树莓派分区

用了1天的不断努力尝试终于才成功,囧。

失败1:使用DD或ddrescue

不幸的是我是从14.6G卡克隆到14.4G卡,使用dd失败是注定的。使用dd的必要条件是目标卡要更大。

失败2:源自笔记本linux系统迁移SSD的经验——分区一样,复制文件,改etc配置法。

linux磁盘迁移,只需分区格式化,复制文件,修改etc下的fstab和udev目录的网卡信息,chroot+grub安装。就能完成。

然而实践得知,不适用树莓派迁移。启动时卡在”smsc95xx 1-1.1:1.0: eth0: register ‘smsc95xx’ …”之后。无法启动。

比较发现,复制时,不会有dev/by-partuuid/目录,而本身树莓派是有这个目录的。

成功:dd读取为raw镜像盘、resize2fs缩容分区、qemu-img缩容disk、dd写入成功启动树莓派

先dd读取物理盘为raw格式镜像盘。这样就可以方法搞,最坏情况也不影响已有的系统sd卡内容。

$sudo dd if=/dev/sdb of=/home/16G.img bs=128K

挂载loop设备以便于gparted能操作

$sudo losetup /dev/loop0 /home/16G.img
$sudo partprobe /dev/loop0  # 运行后才会出现分区/dev/loop0p1,/dev/loop0p2

第二分区从14G缩容到6G(实际是把分散的Block数据集中到前6G位置。非真正改变分区大小)

$sudo e2fsck -f /dev/loop0p2
$sudo resize2fs /dev/loop0p2 6G

GParted / Fdisk 更改第二分区为6G

GParted /dev/loop0打开,然后选择第二分区右击,选择”更改/移动大小”。设置。

卸载恢复loop设备:

$sudo partprobe -d /dev/loop0
$sudo losetup -d /dev/loop0

raw虚拟磁盘缩容

$sudo qemu-img resize /home/16G.img -8G

$qemu-img info /home/16G.img
image: xxx.img
file format: raw
virtual size: 5.9G (6380060672 bytes)
disk size: 5.9G

使用DD写入新SD卡,启动成功。

可选:写入sd后可以用resize2fs扩容分区完全用上SD卡空间,参考上面缩容。

总结提升

  1. linux下安装树莓派系统到SD卡,使用dd刻录后还有剩余空间,用resize2fs可让最后分区来占满。
  2. 使用dd来备份整个硬盘太慢,可以用resize2fs将数据块移动到前面,parted缩小分区,然后刻录硬盘前面有数据部分即可。这样备份文件就不会臃肿。
  3. 备份镜像恢复时,过程类似初次安装系统。

参考

把一块硬盘上的 Linux 系统整个复制到新硬盘上的方法. https://www.v2ex.com/t/183310

openstack文档 http://docs.ocselected.org/openstack-manuals/kilo/image-guide/content/ch_modifying_images.html#losetup-kpartx-nbd

使用qemu-img改变镜像文件大小 http://niusmallnan.com/_build/html/_templates/knowladge/resize_raw_file.html

笔记本硬盘更换记(使用LVM进行在线数据迁移) http://cathay4t.blogspot.hk/2009/05/lvm.html

新电脑+旧系统:教你在不同机器间转移Linux http://www.geekfan.net/1860/

usb-creator-gtk 方法和 clonezilla方法没有深入研究。



原文出自发表的//blog.pythonwood.com/2017/11/树莓派SD卡Linux系统盘复制,10分钟克隆新机/



扩展阅读