BalenaOS 64-Bit OS简介

开源硬件 2019-09-13 175 次浏览 0 条评论 次点赞

balenaOS.jpg

Belana.io 2019年9月13日公布了针对Raspberry Pi 4的64位操作系统——BalenaOS (balena.io/os),它支持运行32/64位docker容器,支持最大4GB内存。除了Raspberry Pi 4,BalenaOS还支持Intel NUC、Nvidia Jetson TX2等诸多硬件和早期诸版本Raspberry Pi。官方定位BalenaOS是为容器量身定制的开源、最小的、基于Yocto Linux的主机操作系统。

FB_GIF--1--1.gif

什么是balenaOS

BalenaOS是为在嵌入式设备上运行Docker容器而优化的操作系统,基于Yocoto Linux,集成balenaEngine,支持Raspberry Pi、Intel NUC、Nvidia Jetson TX2等诸多嵌入式平台,并针对Raspberry Pi 64bit进行了优化。

Yocto计划(Yocto Project™)是一个自由软件项目计划,由Linux基金会于2010年宣布,这个计划的目标在于创造出可以提供嵌入式linux发行版的软件工具,以改善软件发展流程。

但在Yocto项目主页(https://www.yoctoproject.org/)声称——它不是嵌入式LINUX发行版,而是为您创建了一个自定义版本。

Yocto Project(YP)是一个开源协作项目,可帮助开发人员创建基于Linux的自定义系统,而无需考虑硬件体系结构。

该项目提供了一套灵活的工具和空间,全球的嵌入式开发人员可以在其中共享技术,软件堆栈,配置和最佳实践,这些技术,可用于为嵌入式和IOT设备或需要定制Linux OS的地方创建量身定制的Linux映像。

2011年3月,这个计划与OpenEmbedded计划结合,以OpenEmbedded-Core计划作为计划的另一个名称。

它提供跨平台工具、元数据以及流程以利于快速和可复制的开发Linux嵌入式系统。

Yocto项目主要由三个组件组成:

BitBake:读取配置档与处方档(recipes)并运行,配置与建置所指定的应用程序或者系统文件映像档。

OpenEmbedded-Core:由基础layers所组成,并为处方档(recipes),layers与classes的集合:这些要素都是在OpenEmbedded系统中共享使用的。

Poky:是一个参考系统。是许多案子与工具的集合,用来让用户延伸出新的发行版(Distribution)。

为什么选择balenaOS

BalenaOS支持近20种不同的设备类型,具有强大的联网和配置功能,强调长期运行的可靠性,并支持高效的开发人员工作流程。

flow-desktop.png

BalenaOS组件

resinOS-components.png

无状态且只读的rootFS

BalenaOS带有只读的根文件系统,可以确保主机OS是无状态的。BalenaOS包含一个名为resin-conf的分区,该分区用于保存所有这些持久性数据,并且,提供了清除此分区的机制,因此允许用户回滚到未配置的balenaOS映像。

read-only-rootfs.png

  • resin-boot分区根据每个板卡保存重要的启动文件(例如内核映像,引导加载程序映像);
  • resin-rootB是一个空分区,仅在要更新rootfs时使用;
  • resin-state分区用于保存持久数据;
  • resin-data是保存下载的Docker映像的分区。

更多特性可以通过balenaOS官方文档了解。

使用balenaOS

所需软件

  • 从GitHub下载balenaSound
  • 用来刷新SD卡的软件(balenaEtcher)
  • 一个免费的balenaCloud帐户,用于设置和管理Pi
  • 下载并安装balena CLI工具 -安装在您的计算机上,允许您在设备上安装项目代码

注册一个免费的balenaCloud帐户

您需要做的第一件事就是注册一个帐户(如果尚未注册)。如果您已经拥有GitHub或Google帐户,则可以使用该帐户登录并绕过注册过程。

Raspberry Pi 4安装balenaOS

下载Raspberry Pi 4(使用64位操作系统)BETA对应的balenaOS 2.44.0+rev3,并选择Development (dev) 版本,这个开发映像允许进行许多测试和故障排除功能(另一个是Production (prod)生产映像)。

上位机安装balena CLI

作为GitHub上的一个开源项目,balena CLI(命令行界面)使您可以通过Linux、macOS或Windows上的终端窗口与balenaCloud和balena API进行交互 。您也可以在其周围编写Shell脚本,或导入其Node.js模块以编程方式使用它。具体使用查阅Balena CLI文档

在CMD(Windows PowerShell)中使用balena scan,扫描局域网内的balena设备:

20191124135856.png

balena CLI登录balenaCloud Dashboard

balena login.png

推荐web认证,成功登录后就可以开始将代码推送到设备了。

dashboard.png
Dashboard是balenaCloud的在线管理面板,摘要页面显示设备状态、服务、日志和终端窗口;另有设备配置、环境变量、服务变量等功能。

OpenBalena.jpg
开发者也可以使用OpenBalena代替balenaCloud。OpenBalena是一个用于部署和管理连接设备的自托管平台,而balenaCloud是由balena托管的云服务。OpenBalena入门指南

SSH登录

balenaOS 2.44.0+rev3 Development (dev) 版本的SSH端口22222处于打开状态,使用PuTTY登录(root账号默认无密码)并运行balelna主命令:

balena command.png

下载官方创意项目

Balena提供了很多Balena创意项目示范:在balena projectsbalena playgroundProjects in Forums

在本地进行开发

启用本地模式Enable Local mode,便于离线部署。

balena push

balena push是在balenaCloud平台上进行部署和开发的推荐方法。要使用balena push需要首先安装balena CLI并确保您使用登录到了您的帐户balena login

项目推送到运行balenaOS的Raspberry Pi 4上非常简单:balena push <APP_NAME or DEVICE_IP>

push完成后都会出现balena unicorn吉祥物标志。

balena unicorn.png

Balena创意项目部署

simple-server-node

simple-server-node入门项目是一个简单的Express.js Web服务器,它将在80端口上提供一个静态页面,其中包含一些额外的Balena学习资源和后续步骤。

simple-server-node.png

multicontainer-getting-started

multicontainer-getting-started是一个简易的Hello,World!示范应用。

使用本应用程序在设备的公共URL上创建设备的CPU负载平均值和内存使用情况的图形,该图形通过websockets传递。该系统由一个简单的静态站点服务器,一个Websocket服务器和一个代理组成。

balena-multicontainer-getting-started.png

multicontainer-getting-started.png
上图显示我们的设备中已经安装过balenaSound项目的三个服务——airplay、bluetooth-audio和spotify,但在安装完成后,这三个服务将被删除。

应用构建完成后,访问Raspberry Pi 4的ip地址即可浏览。

url-multicontainer-getting-started.png

balena-sound

balena-sound项目使您能够仅使用Raspberry Pi将蓝牙音频流添加到任何旧扬声器或Hi-Fi。在Raspberry Pi上安装balenaOS,并在线部署balenaSound即可实现,

balenaSound

酷玛Play的该项目已经在Raspberry Pi 4B通过测试:使用Raspberry Pi为任何音频设备构建蓝牙音频流媒体,也会更详细地讲解在BalenaOS创建和部署应用的过程。

express-mongo-sample

相比以上项目,express-mongo-sample稍为复杂一点,这个多容器项目使用了几种不同的技术,包括具有持久性存储的MongoDB数据库实例、Python 3应用程序从darksky.net API 获取天气信息、使用ExpressJS和VueJS构建的Node.js应用程序提供了前端。主要思想是绘制一个实时图表,其中包含世界上任何城市的温度和湿度。

  • 在darksky.net上创建一个帐户,并获得Dark Sky API Secret Key;
  • 检索将需要所选城市的纬度和经度,如Chengdu(30.57230356,104.0654568);
  • 设置环境变量API_KEY、CITY_LATLNG和FREQ;
  • 访问设备网址。

关于balena

2013年balena的前身resin.io)成立。
2018年10月29日Resin.io宣布更名为balena,并发布核心平台的开源版本openBalena betaB。
2019年6月13日凌晨4:21,一枚2700千克的火箭从瑞典基律纳发射升空,附带运载272公斤的科学实验器具;其中有一台在balenaOS上运行Docker容器的Raspberry Pi Zero。
2019年9月13日公布针对Raspberry Pi 4的64位BalenaOS操作系统。


本文由 quaner 整理发布,参考 CC-BY-SA 3.0 协议共享,欢迎转载、引用或改编。
感谢您的支持,以让我们持续关注中国学子的STEAM旅程!

还不快抢沙发

添加新评论