用于物联网设备的Linux发行版

简介: Linux是一个操作系统:该程序是控制计算机的核心。它决定如何在争夺它的所有其他程序之间划分可用资源(CPU,内存,磁盘,网络)。操作系统虽然非常重要,但它本身并没有用。其目的是管理其他程序的计算资源。没有这些其他程序,操作系统就无法实现很多目的。

11.06.18-Lunix-Distributions-1068x656-1.jpg

传统上,在选择用于部署Linux的发行版时,面临着很多麻烦。

什么是Linux发行版(Linux Distribution)

Linux是一个操作系统:该程序是控制计算机的核心。它决定如何在争夺它的所有其他程序之间划分可用资源(CPU,内存,磁盘,网络)。操作系统虽然非常重要,但它本身并没有用。其目的是管理其他程序的计算资源。没有这些其他程序,操作系统就无法实现很多目的。

这就是发行版的来源。发行版提供了许多其他程序,这些程序与Linux一起可以组装到工作集中用于多种用途。这些程序的范围从基本的程序编写工具(例如编译器和链接器,到通信库,再到电子表格和编辑器),到介于两者之间的几乎所有内容。发行版往往具有每个计算机或解决方案实际使用的超集。它还为用户或公司可以组合成他们认为是工作集的每种软件组件类别提供了许多选择。可以粗略地比喻为一家超市,在超市中货架上有很多物品可供选择,每个用户都可以从购物车中选择对他们有意义的物品。

基于二进制的分发还是基于源的分发

分发可以大致分为两类:基于二进制的和基于源的。

基于二进制的发行版提供了所有已经预编译并准备安装的软件组件。这些组件使用“足够好”的构建选项进行编译,这些选项对于大多数用户来说都可以正常工作。它们也确实为少数需要或想要编译自己的组件的用户提供了这些组件的资源。Debian,Fedora Core,OpenSUSE,Ubuntu和其他许多版本都体现了这种发行方式。尽管它们提供相同类型的系统,但它们都使用不同的方法(不幸的是,不兼容)来这样做。它们是服务器,台式机和笔记本电脑等通用计算机中使用的主要分发方式。

另一方面,基于源代码的发行版侧重于提供一个框架,在这个框架中,最终用户可以从源代码构建所有组件。这些发行版还提供了一些工具,可以方便地选择组件的合理起始集合,并根据需要调整每个组件的构建。这些调整可以简单到添加编译标志以使用不同版本的源或以某种方式修改源。用户将组装一个他们想要构建的菜单,然后开始构建。几分钟或几小时后,视情况而定,他们将得到一个系统软件,可以用于他们的计算机。这种发行版的例子有Gentoo、Android和Yocto。

通常,这些基于源的发行版通常对于嵌入式基于Linux的设备尤其是IoT设备是首选。 尽管它们难以设置和维护,但基于源的发行版具有独特的优势,即能够根据实际的目标硬件定制已安装的映像,以最大程度地利用资源或最大程度地减少资源浪费。 对于嵌入式设备而言,这往往是一个强大的约束。 此外,基于源代码的发行版更适合交叉构建(在该平台上,构建平台的计算机与在其上运行的计算机不同),而基于二进制的发行版则更适合于自托管构建。 您在同一台机器(或同一体系结构)上构建并运行。

鉴于当今普遍存在使用英特尔架构机器作为构建机器以及将ARM体系结构用于IoT产品的情况,跨构建支持对于IoT设备至关重要。

以容器为中心的发行版

传统的Linux方法只提供内核外部所有平台的单个统一用户空间。新模型是关于将用户空间组成一个“容器(containers)”的集合。容器化模型将用户空间的一部分转换为组件的联合集合,每个组件之间具有高度独立性。

容器化的linux发行版带来了许多好处,从允许团队更加独立地工作到使进行细粒度平台升级成为可能。缺点是它们比非容器化解决方案占用的空间更大。然而,如果说技术的发展给我们带来了什么启示的话,那就是当一项新技术的唯一缺点是它的占用空间时,其可用资源往往会扩大,从而使每一代新问题都变得越来越小。

下面将介绍一些早期的选项,以便与现有的发行版进行比较。

物联网的Linux发行版

现在,我们必须深入探讨有争议的领域。许多人拥有自己喜欢的Linux发行版,即使他们的需求发生了巨大变化(例如,从服务器设置更改为嵌入式IoT设备),他们仍然坚持使用该发行版。

我将在下面的列表中开始介绍:这是一些成熟的Linux发行版和一些后起之秀的示例。还有许多其他的存在,可能更适合一些用例。

Yocto

Yoctohttps://www.yoctoproject.org/)是基于源的发行版,已在许多嵌入式和IoT设备中使用。它试图将基于二进制的发行版的好处(例如,将程序包及其依赖项明确分离)与基于源的发行版的好处结合在一起,后者使您可以在进行较小的更改时以显著的方式更改目标二进制文件。

1.png

Yocto由一系列配方(recipes)组成,每个配方都描述了如何构建系统的一个模块(例如,库,守护程序,应用程序等)。然后将这些配方收集到各层中,这些层收集一系列配方并配置应如何一起使用的各个方面,从编译标志到配方功能,再到有关它们如何显示在目标上的详细信息。每个目标构建都将由这些层中的一些层组成,每个层都在较低层中添加或删除软件包,或修改其默认行为。这允许多方调整他们自己的二进制映像以影响最终软件。 因此,如果基础层使用保守的一组编译器标志(通常这样做),则芯片供应商可以添加对其特定芯片模型有利的编译器标志,而主板供应商可以删除其主板可能不支持的芯片功能。

对于您的物联网产品,这实际上意味着您使用已经支持Yocto的主板来构建解决方案的努力将是添加或修改配方,以提供基本功能的增值。您还需要具有一个构建和配置管理基础结构设置,该设置允许您为目标创建映像,尽管在当今的容器世界中,这并不难做。

关于Yocto的更多信息,请从这里https://www.yoctoproject.org/docs/2.5/overview-manual/overview-manual.html)开始。同样值得一提的是,在你考虑的物联网解决方案中,Yocto在任何开发板上的支持程度如何。

Debian

Debianhttps://www.debian.org/)是一种古老的开源二进制发行版。它既是自身的发行版,也是其他知名衍生版本的基准,其中最著名的是Ubuntuhttps://www.ubuntu.com/)。

Debian拥有大量为ARM(IoT的首选体系结构)预先构建的软件包,但考虑到Debian在英特尔生态系统中的优势,这些软件包对ARM二进制文件的支持和维护水平往往远低于英特尔的同类产品。因此,诸如“10000多个构建的包”这样的指标并没有那么有意义。您需要了解对您很重要的包以及它们的支持程度。

在自托管设置(例如Debian)中使用的许多发行版的一个缺点是,开发人员不理解或不记得包的安装可能不会在最终运行包的计算机上完成,因此他们不能依赖目标可用的任何功能。考虑到这种麻烦对于docker环境来说也是一个头疼的问题,发行版在清理这些依赖关系方面花费了大量精力,所以这是一个比以前更小的问题。

为少量软件包设置构建环境的工作相当琐碎,但是为系统构建所有软件包的基础架构可能会变得很重要。

由于这些原因,IoT的Debian是一个不错的选择,在这种情况下,您只需添加或创建一些软件包即可完成您的平台。

EdgeX Foundry

从严格意义上讲,EdgeX Foundry并不完全是一个发行版,因为它对发行版的BSP组件没有任何意见。BSP是包含Linux内核本身,设备驱动程序和用于启用硬件平台的库的部分。它从一个更高的级别开始,需要一个以docker支持为基础的可运行Linux系统。从那里开始,它提供了各种各样的容器,这些容器为IoT设备(尤其是边缘设备)提供了丰富的中间件和垂直集(在docker看来,容器是一个独立的模块,通常提供垂直功能,例如数据库或几乎不依赖主机操作系统、库等的网络服务)。


29-1.jpg]( https://ucc.alicdn.com/pic/developer-ecology/96bfe1d338f14cde93d91e4d05ab739a.jpg)

EdgeX Foundry背后的概念为大型IoT设备(尤其是边缘设备)指明了前进的方向,但是要定义更受约束的版本以提供一组良好的基准服务仍有待完成。在这方面已经取得了一些进展,一些服务已从JVM迁移到基于golang的实现,但是在不久的将来,对于基于低端和中端Linux的IoT来说,其覆盖范围仍然遥不可及。

Foundries.io Microplatform

linux-microplatform.jpg

Foundries.io使用基于Yocto的方法创建了一个Linux平台,以创建板支撑层,然后在其之上分层一组容器化的微服务。与EdgeX Foundry方法相比,它们的容器集更小,更适中,而且占用可见更小。

虽然可以通过订阅完全访问Foundries.io产品并进行自动更新和管理,但底层平台是开源的,并且是可用的。

小结

基于Linux的IoT正在从传统的嵌入式模型开始迁移,在传统的嵌入式模型中,将完整的垂直解决方案从单个团队/worldwiew/toolchain/model创建到更灵活的模型,其中固件,电路板,中间件和应用程序组件的分离程度更高。 但是,这种迁移并非没有代价,并且对CPU,内存和磁盘的要求也更高。 为了为您的下一个物联网项目选择Linux基准,您需要考虑您可以负担的占用空间和产品寿命。体积更小,更换速度更快的产品最好与Yocto等当今久经考验的真正解决方案保持一致。能够提供更多资源并需要将新功能部署到已部署产品中的产品应考虑使用更主流的Linux发行版和以容器为中心的新解决方案作为前进的道路。

原文链接

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
1月前
|
Linux 网络安全 网络虚拟化
Linux虚拟网络设备:底层原理与性能优化深度解析
在深入探讨Linux虚拟网络设备的底层原理之前,重要的是要理解这些设备如何在Linux内核中实现,以及它们如何与操作系统的其他部分交互以提供高效且灵活的网络功能。虚拟网络设备在现代网络架构中发挥着关键作用🔑,特别是在云计算☁️、容器化📦和网络功能虚拟化(NFV)环境中。
Linux虚拟网络设备:底层原理与性能优化深度解析
|
1月前
|
Linux 网络虚拟化 虚拟化
Linux虚拟网络设备深度解析:使用场景、分类与开发者指南
Linux虚拟网络设备支撑着各种复杂的网络需求和配置,从基础的网络桥接到高级的网络隔离和加密🔐。以下是对主要Linux虚拟网络设备的介绍、它们的作用以及适用场景的概览,同时提出了一种合理的分类,并指出应用开发人员应该着重掌握的设备。
Linux虚拟网络设备深度解析:使用场景、分类与开发者指南
|
1月前
|
安全 Linux API
Linux设备模型统一:桥接硬件多样性与应用程序开发的关键
在Linux的宏大世界中,各种各样的硬件设备如星辰般繁多。从常见的USB设备到复杂的网络接口卡,从嵌入式设备到强大的服务器,Linux需要在这些差异极大的硬件上运行。这就引出了一个问题:Linux是如何统一这些不同硬件的设备模型的呢?本文将探讨Linux是如何针对不同的硬件统一设备模型的,这一统一的设备模型对于应用程序开发人员来说又有何意义。让我们一探究竟🕵️‍♂️。
Linux设备模型统一:桥接硬件多样性与应用程序开发的关键
|
2月前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
Cloud Native Linux 网络虚拟化
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
在Linux网络虚拟化领域,虚拟以太网设备(veth)扮演着至关重要的角色🌐。veth是一种特殊类型的网络设备,它在Linux内核中以成对的形式存在,允许两个网络命名空间之间的通信🔗。这篇文章将从多个维度深入分析veth的概念、作用、重要性,以及在容器和云原生环境中的应用📚。
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
|
1月前
|
监控 中间件 Linux
深入Linux设备模型:开发者指南
Linux的设备模型是操作系统管理硬件设备的一种高级抽象,它不仅涉及到设备驱动程序的加载和卸载,还包括设备之间的关系、设备的状态管理以及与用户空间通信的机制。理解Linux的设备模型对于应用开发人员来说至关重要,它有助于开发出更加稳定、高效的应用程序。🌟
深入Linux设备模型:开发者指南
|
2天前
|
监控 安全 Java
Java与物联网:连接与控制设备
Java与物联网:连接与控制设备
11 0
|
3天前
|
存储 Web App开发 Ubuntu
整理16款适用于较旧低配置电脑的最佳Linux发行版
在本指南中,趣云笔记(https://www.ecscoupon.com/)介绍了一些最好的Linux发行版,你可以将它们安装在旧PC上并为其注入新的活力。
20 0
|
10天前
|
Linux Shell 数据安全/隐私保护
|
12天前
|
Ubuntu 搜索推荐 Linux
【专栏】8款适合学生的Linux发行版,看看有没有你喜欢的!
【4月更文挑战第28天】本文介绍了8款适合学生的Linux发行版:Ubuntu(用户友好,稳定且有教育资源)、Linux Mint(优化用户体验)、Fedora(创新前沿)、openSUSE(强大稳定)、Elementary OS(简洁设计)、Manjaro(Arch Linux的易用版)、Zorin OS(类似Windows)和Kubuntu(KDE桌面环境)。选择时需考虑易用性、软件资源、社区支持和稳定性。这些发行版各具特色,适合不同需求的学生,有助于提升技术能力和探索精神。建议学生亲自尝试,找到最适合自己的Linux发行版,以适应不断发展的技术环境。

相关产品

  • 物联网平台