修改 raspberry pi 的 Debian 映像

Modify Debian image for raspberry pi

我需要修改 Raspbian 图像以便在商业环境中与 Raspberry Pi 一起使用。这样我以后就不必修改每个 pi 的默认值。我想将默认键盘设置为 U.S,禁用自动登录并引导至命令行而不是 GUI。是否可以在刷新每张卡之前使用这些设置修改图像?如果可以,怎么做?

  1. 在 raspberry pi 上进行所需的所有更改。
  2. 弄清楚 SD 卡在计算机上的安装位置。在 linux 上它将类似于 /dev/sdb,在 mac 上它将类似于 /dev/rdisk2
  3. 拍下你的 pi 映像,将其粘贴到计算机中并制作磁盘映像 dd if=/dev/<sd_path> of=~/raspi.img bs=1m
  4. 闪现你的其他卡片:dd if=~/raspi.img of=/dev/<sd_path> bs=1m

最简单的方法是让一个 Raspi 以您想要的方式运行(称为 golden master),然后将其关闭,拔出卡,然后执行类似的操作到您 PC 的 SD 卡 reader 中的以下内容(我假设您从中烘焙了第一张卡):

sudo dd if=/dev/<sddevice> bs=1k | gzip -c > myProduct-1.0-master.bin.gz

然后将该图像烘焙到卡片 #2、#3...#n 中,使用:

zcat myProduct-1.0-master.bin.gz | sudo dd of=/dev/<sddevice> bs=1k

注意卡的大小:始终确保您的黄金主卡比您的目标卡小得多(最好是 2 倍,例如 8 GB 对 16 GB)。这样做的原因有两个:

  • 如果两张卡都是“8GB”,目标可能稍微比源小(在这种情况下,您最终会遇到文件系统截断,并且可能会出现微妙和奇怪的情况不可预知的方式)。
  • SD 卡控制器具有极其原始的磨损均衡功能,并且 dd'ing 超过一堆零会完全击败它(这意味着如果您正在做例如一堆日志记录,卡可能会死)。保留一堆未使用的 space 意味着您拥有可以通过磨损均衡使用的闲置单元(请注意,现代 SSD 具有更复杂的磨损均衡并且在大多数情况下不会遇到此问题)。

不久前我创建了一个产品就是这样做的——主卡是一张 8GB 的​​全尺寸卡,目标卡都是 16GB 的微型卡。我们先将母版放入大容量复制器,然后是目标,然后点击 duplicate 大按钮。因为卡的 存储 大小不同,我们有大约 50% 的供应不足(给我们大量的磨损级别空间)并且因为卡是不同的 物理 尺寸,我们从不混淆它们 :-)

(是的,我对磨损均衡持可笑的保守态度——在我看来,没有什么比让嵌入式卡死在现场并且不得不爬过天知道什么更糟糕的了——用什么来替换一个没有的 8 美元部件首先必须失败...)

在你的 master 上创建一个 VERSION 文件也是值得的,这样当你更新你的产品时你就知道安装了哪个版本(你可以编辑 /etc/issue 以在登录提示时显示它,或者只是编辑其他一些任意文本文件)。

可以为具有更严格控制的 OS 发行版的 RasPi 创建从头开始的图像,但如果您只调整几个文件,最简单的方法就是我所描述的.

哦,确保将这些版本化图像保存在安全的地方,例如 git LFS(例如 https://git-lfs.github.com/)。