用例:


我有很多要配置的Utilite2单板计算机。
在从MicroSD卡启动的每台设备上,我安装了Linaro(基于Ubuntu)。建议将Linaro用作Utilite2的操作系统。在每台设备上,我都必须执行很多手动步骤(所有操作均通过命令行):


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




我想自动化第10点中描述的整个手动工作。 3.我可以编写一个bash脚本来帮我做,但是我想问你:还有什么比编写脚本更好的方法吗?

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

涉及物联网时,我发现的大多数资源和演示文稿都集中在全局上。它们显示了设备如何彼此“交谈”以及系统架构如何。但是我们不能忘记,在将每个设备放入系统之前,都需要以某种方式对其进行配置。

从我的角度(物联网的初学者)来看,有以下几种方法可以实现此目的:


手动配置每个设备-这种解决方案效率不高,可以说...
在每个设备上运行参数化的安装脚本-用bash或python编写的脚本
创建预先配置的OS映像或发行版-@sob在他的回答中提到Yocto,所以谢谢-我不知道。
创建一个带有配置的程序包并将其安装在每台设备上-Yadt可以像这样
/>使用诸如Chef之类的某种工具,但是特定于IoT的工具-我什么都不知道,我想知道您是否知道。


评论

大家好。我刚刚编辑了问题,所以请现在看看。

这太宽泛了,无法作为一个适当的问题-它无法指定所使用的特定Linux,并且有太多子问题需要单独解决。

我茫然不明白这个问题针对的是谁。任何物联网产品框架都已经可以正确解决配置问题,因此请使用它。如果您正在酿造自己的啤酒,这是基于“观点”的。

根据定义,工具是特定的,因此您不能对一个非特定的问题有一个有意义的答案,除非这成为“好吧,如果您使用的是A,那么您可能会发现工具B有用”的多对多映射。

诸如Compulab的Utilite2或Logic Supply的CL100之类的设备与Ubuntu的全新安装(在Utilite2的情况下为Linaro)一起提供。然后,需要配置这种新的操作系统。配置是一个应该自动化的过程。我的问题如下:您如何自动执行此过程?

#1 楼

您可以通过多种方式创建修改后的发行版,而最佳方法则取决于您的环境以及您如何预计随着时间的推移会不断发展。


如果需要应用,Yocto是很好的选择一些补丁程序,并构建自己的自定义内核/发行版。似乎您未在此级别上工作。
如果希望能够将应用程序拉入现有系统,则包管理器会很好。
在设备脚本上,效果实际上与包管理器相同
配置和克隆设置单个SBC,卸载根分区,然后重新打包以复制到所有目标上。这(残酷地)是人们经常为电话等制造ROM的方式。您需要记住要重置控制启动脚本的所有文件。
解压缩并修改您可能选择下载现有发行版,使用脚本进行修改和打包。如果您打算以最少的工作来支持对基础发行版的更新,那么这可能会很好。

在您的情况下,听起来您好像想拿一块板,执行自定义,关闭和根据需要多次克隆uSD卡。如果您按设备自定义,也许“一次运行”脚本可以通过与服务器交互来处理唯一化。

确定哪种最佳取决于您的生产规模和持续时间您计划进行这项工作。是否需要扩展到明年的发行版,新硬件,新平台?有效载荷是否需要自动更新,以及如何对基本操作系统进行修补?

作为如何构建自定义映像的示例,您可以查看以下Raspian映像生成器: PiBakery或Google将提供的任何其他产品。

评论


谢谢!这个答案实际上给了我最大的投入,并帮助我看到了解决问题的所有其他方法。关于您的答案,脚本是我的最佳解决方案,因为我想将“配置”保留为代码。我决定进一步研究Web应用程序开发的解决方案,并发现了这一点(Raspberry Pi上的Chef),它在我的情况下也很好用。

– MrPicky
17年7月25日在17:08



#2 楼

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

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

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


更改主机名


vi / etc / hostname


配置网络接口


ifconfig


安装一些推荐的软件包


Open PacKaGe management(OPKG)是基于ipkg的轻量级软件包管理系统。


创建一些文件/ directories


老版本的mkdir / vi / touch

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

评论


编辑/ etc / hostname可能不是一个好主意,因为它通常会被自动覆盖,并且可能根本不在永久文件系统上。同样,更改它不会影响所有关心主机名的内容。

–克里斯·斯特拉顿(Chris Stratton)
17年7月6日在16:30

仅供参考,对问题进行了重大编辑

– Helmar♦
17年7月7日在14:26