balenaFin 开发套件、balenaOS 和 balenaCloud的入门评测

原文链接:Getting Started with balenaFin Developer Kit, balenaOS and balenaCloud 由Jean-Luc Aufranc撰写。
本文共计3416字,预计阅读9分钟

balena Fin是一款树莓派CM3/3+ 的载板,它是专为利用Balena提供车队管理服务的工业应用而设计的。我在2019年3月的时候收到过一套balenaFin 开发者套件。当时我进行了详细的评测,在评测的第一部分展示如何组装套件

在19年4月的时候我又花了一些时间来评测balenaFin套件、BalenaOS以及balenaCloud 。BalenaOS是经过优化的Linux操作系统,它可在嵌入式设备上运行Docker容器,而balenaCloud服务则可从web仪表板管理一组设备。

我本文的评测主要按照 balenaOS balenaFin的入门指南中的说明进行操作,同时我也说明了我在准备镜像时必须要做的工作,以及如何将镜像烧录到开发板上。当然我也说明了如何在本地和通过 balenaCloud 加载示例 docker 应用程序。

为 balena Fin 下载和配置 BalenaOS

你们可以在下载页面中找到 BalenaOS 。注意当使用基于树莓派的计算模块硬件时,请确保选择“Fin”而不是“Raspberry Pi”。

Balena Fin BalenaOS
Balena Fin BalenaOS

我最初下载的是“Production”版本而不是“Development”版本。但在后来我评测之后,我得出一个经验最好先下载“Development”版本。等一下我给大家解释原因。

获得文件后,我们就可以解压缩固件:


下一步是安装 Balena CLI,这是一个基于 node.js 的命令行工具,用于开发基于 balenaOS 的应用程序容器。首先,我们需要最新版本的 node.js 和 npm,然后使用 nvm(节点版本管理器)脚本安装它们:


退出当前终端,然后重启一个终端来安装node.js:


最后我们就可以安装 balena-cli:


请注意,在这里必须要运行两次chown 命令从而避免以下类型的权限问题:


我最开始尝试通过 apt 安装 npm,但遇到了各种问题,所以我个人建议使用 nvm。

对于大多数嵌入式设备,你要烧录镜像,然后启动设备,并在设备上配置所有内容。但使用 BalenaOS 则有点不同,我们可以先配置 balenaOS 镜像从而连接到 WiFi 网络,接着配置板主机名,然后从主机禁用持久日志记录来延长 eMMC flash的寿命:


在这里必须要在命令行中添加env “PATH=$PATH”,否则 sudo 会找不到 balena 命令。另外,需要注意,以普通用户身份运行也会失败。

使用 balena Etcher 刷写 balena.img 镜像

现在我们的镜像已经准备好了,可以使用balena Etcher GUI 程序通过 USB 来烧录镜像。我们可以通过 apt 来安装balena etcher程序:


但后来我意识到现在安装的是 balena Etcher v1.4.9 版,而烧录树莓派CM3+ 需要1.5.0以上的版本。因此,我手动下载了最新的  Linux x64 的v1.5.19版本的软件安装到了我的系统上。

通过 micro USB 端口和提供的 USB 线将开发板连接到你的计算机上(此时不需要连接板子的电源)。

balena FIN通过USB烧录镜像
balena FIN通过USB烧录镜像

我们可以选择镜像(balena.img),并且在balena Etcher中选择Compute Module。这时该板确实被正确检测到了。


所以我决定打开一个终端,并使用 sudo 启动该工具:


并且……成功了!

balena Etcher
balena Etcher

初始化计算模块需要花几秒钟,之后就会显示为7.82 GB的存储设备,我们终于可以点击Flash开始烧录了,完成烧录大约需要4分钟。

该板不会通过 USB 端口供电运行,因此我们需要将其连接到附带的电源上从而使其启动并运行,然后我们就可以在几秒钟后尝试 ping 它:


好的,这就意味着开发板可以自动连接到 WiFi 路由器了。其实理论上,我们应该也可以通过 ssh 直接连接到板子:


但ssh却连接不上:


所以我尝试了一个没有 sudo 的替代命令:


但结果还是一样。经过一些研究,我发现ssh 大概能在 BalenaOS 的Development版本中使用。

于是我下载了Development版本并烧录到了板子里,重新通过ssh连接开发板,终于可以登录系统了。于是我运行了几条命令查看了下系统信息:


我原以为安装镜像很容易,可实际上并不是,还好一番折腾之后终于把系统装好了。

在 balena Fin 中运行docker

现在我们可以在我们的主机上克隆一个演示项目


进入该目录,并发出命令来构建演示并将其加载到板中:


请注意,我们需要使用 IP 地址而不是主机名(即 cnxsoft-balena.local)。

这是我第一次尝试的输出:


似乎由于网络问题引起的超时,运行并没有成功,于是我使用 DEBUG=1 重新启动命令:


这次它就完成了:


所以这可以证明我们之前真的只是遇到了网络问题,其他都是正常的。单击此处可以获得完整日志。

该应用程序创建了我们设备的 CPU 平均负载和内存使用情况的图表,只需在网络浏览器中输入 IP 地址或在地址栏中输入主机名即可访问该图表。

balena Fin中CPU 平均负载和内存使用情况
balena Fin中CPU 平均负载和内存使用情况

从 balenaCloud 管理 balenaFin

balenaCloud 是可选的,它真的很方便,因为你可以轻松地将应用程序推送到云端,并通过无线方式将其推送到你所有的设备当中。我接下来讲解怎么使用balenaCloud 管理 balenaFin。

首先,注册balenaCloud账号(最多有10台设备能免费)。注册后,开始创建应用,点击Create application按钮,填写应用名称(如multicontainer),选择Balena Fin (CM3)设备类型,以及Starter应用类型,然后单击“创建新应用程序按钮。

在balenaCloud 上创建应用
在balenaCloud 上创建应用

接着,单击Add Device,启用以太网+WiFi(如果你打算使用 WiFi),输入 WiFi 凭据,定制Development镜像版本。然后单击下载 balenaOS按钮,把定制的Development镜像下载到电脑。下载完成后,我们就可以像之前一样将它刷到板子上。还有一个下载配置文件的选项,在我们的示例中这可能是一个更好的选择,因为我们之前已经刷新了操作系统。我认为我们可以通过 SSH将文件推送到 /boot/config.json从而来更新开发板。

现在我们可以回到我们在上一节中从 Github 下载的 multicontainer -getting-started目录,将其上传到我们的 balenaCloud 帐户:


其中 <username> 是你 balenaCloud 帐户的用户名,applicationname 是你在仪表板中定义的应用程序名称,在本例中为“multicontainer”。该命令花了一分钟多一点,最终成功了:


过了一会儿,我们应该就会在仪表板中看到我们的 balena Fin 板正在更新我们的 docker 应用程序。

balenaCloud 示例
balenaCloud 示例

完成后,我们可以点击设备名称“ancient-tree”,访问更多信息,并启用“PUBLIC DEVICE URL”。

balenacloud 设备仪表盘
balenacloud 设备仪表盘

单击它旁边的上升蓝色箭头,可以打开一个新的浏览器窗口,就能看到显示的 CPU 平均负载和内存使用情况。

CPU 平均负载和内存使用情况
CPU 平均负载和内存使用情况

使用balenaCloud 时,你可以根据需要添加车队中所有的设备并将它们链接到特定的应用程序上。一旦初始配置完成,你就可以轻松地更新它们了。

如要你们还想更进一步地研究,他们的文档可以帮助你使用 Balena 生态系统开发、部署和管理 Docker 应用程序。

我本文测评的 balena Fin 开发套件售价是199美元,运费需要另外付。如果你不需要 DIN 导轨外壳,你可以选择“no case”选项,这样会便宜 20 美元。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论