提取树莓派系统并复制到其他SD卡
使用树莓派Zero做了一个网关,程序用Python写的。现在已经开发完成,正准备批量生产,不可能每次都从官方的系统烧录,再安装软件,安装依赖库,各种配置,麻烦不说,还容易出错。所以想找个办法把一个已经安装和配置好的树莓派系统提取出来,然后再烧录到其他的SD卡上。这样可以省下很多时间和精力。
折腾了很久才成功,所以记录一下,希望能够帮助有同样需要的人。所有操作均在Mac上完成,需要使用Docker。
1. 准备系统
- 从官方网站下载树莓派系统并烧录到SD卡
- 安装自己需要的软件
- 配置好一切东西
2. 提取系统
-
将SD卡插到读卡器上,插到Mac上,打开终端。
diskutil list
查看一下SD卡有没有读出来
-
使用
diskutil info /dev/disk2
查看一下SD卡有多少个块
-
使用
sudo dd bs=512 count=30597120 if=/dev/disk2 of=./full_20200303.img
命令,将SD卡打成img镜像,这里的count是第二步中看到的块数。等待执行完成,16G的卡大概需要23分钟
-
这个时候可以看到生成了一个15G的文件
3. 剪裁系统
-
从
https://github.com/thhan/Docker-PiShrink
Clone一份代码到本地。将刚才生成的img文件复制到代码的根目录。然后执行./docker.sh
,注意,要把Docker启动起来。进入容器后,执行pishrink ./full_20200303.img
-
剪裁完成后会有输出大小,这时可以看到img文件变成了2.4G
4. 烧录系统
- 我们可以使用刚才剪裁好的系统,烧录到新的SD卡上。和从官网下载的系统烧录步骤一样