您使用哪些工具/框架来配置一系列 SBC

物联网 linux 软件
2021-06-21 05:58:05

用例:

  1. 我有很多Utilite2单板电脑要配置

  2. 我在每台设备上都安装了 Linaro(基于 Ubuntu),从 MicroSD 卡启动。Linaro 是 Utilite2 的推荐操作系统

  3. 在每台设备上,我都必须执行很多手动步骤(所有步骤都来自命令行):

    • 更改默认密码
    • 更改主机名
    • 编辑 resolv.conf 文件
    • 安装一些需要的包
    • 设置具体时区
    • 从 Internet 下载一些更大的文件 (wget)
    • 编辑 PATH 变量
    • 配置静态IP地址

我想自动化第 1 点中描述的整个手动工作。3. 我可以编写一个 bash 脚本来为我做这件事,但我想问你:有没有比编写脚本更好的方法?

当您在服务器端使用 Web 应用程序时,您可能会使用Chef或 CloudFormation 模板等工具来设置服务器和集群。您无需手动配置每个服务器。这种方法还有一个很大的优势——您可以将配置保留为代码,并在每个服务器上重复使用。我需要了解如何为物理硬件执行此操作。

谈到物联网,我发现的大多数资源和演示文稿都集中在大局上。它们展示了设备如何相互“交谈”以及系统架构的外观。但是我们不能忘记,在每个设备进入系统之前,都需要对其进行某种配置。

从我的角度来看(物联网初学者),有以下选择可以实现这一点:

  • 手动配置每个设备 - 这种解决方案效率不高,可以这么说......
  • 在每个设备上运行参数化设置脚本 - 用 bash 或 python 编写的脚本
  • 创建预配置的操作系统映像或发行版 - @sob 在他的回答中提到了 Yocto,所以谢谢你 - 我不知道。
  • 创建一个带有配置的包并将其安装在每个设备上 - Yadt就是这样工作的
  • 使用诸如 Chef 之类的工具,但特定于物联网 - 我不知道其中任何一个,我想知道您是否知道。
2个回答

有多种方法可以创建修改后的发行版,最佳方法将取决于您的环境以及您预计随着时间的推移如何发展。

  • 如果您需要应用一些补丁并构建您自己的自定义内核/发行版,Yocto是不错的选择。看起来你没有在这个级别工作。

  • 如果您希望能够将应用程序引入现有系统,那么包管理器会很好

  • On Device Scripts实际上与包管理器提供的效果相同,只是没有那么干净。

  • 配置和克隆设置单个 SBC,卸载根分区并重新打包以复制到所有目标上。这就是(粗略地)人们经常为手机等制作 ROM 的方式。您需要记住重置任何控制启动脚本的文件。

  • 解包和修改您可能选择下载现有发行版,使用脚本对其进行修改,然后打包。如果您计划以最少的工作支持对基础发行版的更新,这可能会很好。

在您的情况下,听起来您可能想要根据需要多次执行自定义、关闭和克隆 uSD 卡。如果您有每个设备的自定义,也许“运行一次”脚本可以通过与服务器的交互来处理统一。

决定哪一个最好取决于您的生产规模以及您计划进行这项工作的时间。它是否需要扩展到明年的发行版、新硬件、新平台?负载是否需要自动更新,您将如何应对基本操作系统的修补?

作为如何构建自定义图像的示例,您可以查看这个 Raspian 图像生成器:PiBakery或 google 将提供的任何其他图像生成器

创建嵌入式 Linux 发行版的选择之一是Yocto

Yocto 是一个开源协作项目,它提供模板、工具和方法来帮助您为嵌入式产品创建基于 Linux 的自定义系统,而不管硬件架构如何。

当某人/设备制造商使用 Yocto 创建 Linux 发行版时,他们可能会选择在 Linux 中打包以下工具:

更改主机名

vi /etc/主机名

配置网络接口

如果配置

安装一些推荐的包

Open PacKaGe management(OPKG)是一个基于ipkg的轻量级包管理系统

创建一些文件/目录

好老的 mkdir/vi/touch

像 Yocto 这样的构建框架为创建嵌入式 Linux 发行版提供了极大的灵活性,该发行版包含所有工具以满足产品的确切需求。