克隆Raspberry Pi SD卡

经过一周的磨合,终于调整好 Raspberry Pi 400桌面定制 也配置了 Raspberry Pi 400的4K显示 ,开始ARM环境的日常开发和运维工作。不过,既然初始化调整很多也很繁琐,如果能做一个快照保存,随时可以恢复系统,就像从树莓派网站下载一个image快速完成安装一样,那该多好。

制作TF卡镜像

  • 使用 dd 命令可以完整制作磁盘镜像,将TF卡通过USB读卡器插到一台Linux主机上使用以下命令进行镜像复制:

    dd bs=100M if=/dev/sdc of=/backup/raspi_studio.img conv=fsync
    

不过,上述命令虽然可以制作出完整的镜像,但是实际上只能bit-to-bit复制,也是就是说,即使我的树莓派TF卡只使用了128G容量中的5G容量,也要完整复制出一个128G的镜像文件(实际上大多数空间都是空闲的)

收缩镜像

PiShrink 是一个bash脚本可以自动收缩树莓派镜像,这样可以制作出较小的镜像文件,可以快速恢复到SD卡:

Usage: $0 [-adhrspvzZ] imagefile.img [newimagefile.img]

  -s         Don't expand filesystem when image is booted the first time
  -v         Be verbose
  -r         Use advanced filesystem repair option if the normal one fails
  -z         Compress image after shrinking with gzip
  -Z         Compress image after shrinking with xz
  -a         Compress image in parallel using multiple cores
  -p         Remove logs, apt archives, dhcp leases and ssh hostkeys
  -d         Write debug messages in a debug log file

通常比较有用的组合是 -Z-a ,可以在多核主机上使用 xz 压缩文件

  • 安装 pishrink.sh

    wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
    chmod +x pishrink.sh
    sudo mv pishrink.sh /usr/local/bin
    
  • 收缩镜像文件:

    sudo pishrink.sh /backup/raspi_studio.img
    

收缩效果显著:

pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk /backup/raspi_studio.img from 120G to 6.6G ...
  • 收缩后的存储镜像还可以通过压缩来实现更小的存储消耗:

    tar cfz raspi_studio.img.tar.gz raspi_studio.img
    

恢复镜像

我主要想通过将TF卡替换成USB 3.0接口上的外接存储,来加速存储访问性能。所以通过上述方法制作的镜像,可以通过以下命令 dd 复制到U盘,然后 树莓派4 USB存储启动Ubuntu Server 20.04

dd if=raspi_studio.img of=/dev/sdc bs=100M conv=fsync

参考