为树莓派准备即时可刷新图像

为树莓派准备即时可刷新图像

我有一个基本的 Raspberry Pi SD 映像,当我需要它时,我会将其闪存到所有微型 SD 卡上。

根据使用情况,我将不得不重新安装图像并进行更改:

  • /boot/config.txt 激活一些配置
  • /boot/wpa_supplicant.conf 设置适当的 wifi 凭证
  • 另一个 /boot/gui13.conf 文件,用于配置我需要 RPi 执行的操作。

我看到像 Balena.io 这样的一些公司会为您提供一个“预配置的映像”,其中已经包含适当的 Wifi 凭据(可能还有我的用户 ID 和某种凭据,用于向他们的服务器验证我的 rpi)。

看这里: balena ui 准备 ISO

他们是怎么做到的?

我想做同样的事情:能够在我的图像中插入一些 JSON / Conf 文件并准备一个类似的 .img 文件。

你们知道他们是怎么做到的吗?是否有工具/库可以自动化此过程?

答案1

在你的情况下,它会更简单:

  1. 下载您选择的 RaspberryPi 操作系统映像。说它叫rpios.img

  2. 找到分区的开头/boot参考

    fdisk -l rpios.img
    
    Disk rpios.img: 1.7 GiB, 1858076672 bytes, 3629056 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x067e19d7
    
    Device     Boot  Start     End Sectors  Size Id Type
    rpios.img1        8192  532479  524288  256M  c W95 FAT32 (LBA)
    rpios.img2      532480 3629055 3096576  1.5G 83 Linux
    

    乘以值扇区大小开始rpios.img1(分区)的/boot

    bc -l <<< 8192*512
    4194304
    
  3. /boot使用偏移量挂载分区:

    mount -o offset=4194304 rpios.img /mnt
    
  4. wpa_supplicant.conf使用您所需的配置创建所有文件,例如/mnt

  5. 卸载umount /mnt

  6. 现在您拥有了个性化图像,您可以在需要的地方闪烁。

    提示:使用cp rpios.img /dev/sdb && sync而不是dd-type 命令也可以很好地工作,而且更简单,因为您不必指定块大小以获得理想的速度。

  7. 当然,上述步骤可以自动化(例如在脚本中或其他方式),以便在闪烁之前为每个用例创建“个性化”图像。

相关内容