IoT中的Linux选择
作者:网友投稿 时间:2019-01-04 21:53
在物联网的设备设计中,从低成本和低功耗的角度看,Android肯定比不过嵌入式Linux。但在选择用于部署Linux的发行版本时,却一直饱受困扰。

什么是 Linux 发行版?
Linux 是一个操作系统,它是控制计算机的核心程序。 它决定如何在所有竞争使用的其他程序之间分配可用资源(CPU、内存、磁盘、网络)。 尽管操作系统非常重要,但它本身并不有用。 它的目的是为其他程序管理计算资源。 没有这些程序,操作系统就没有多大用处。
这就是为什么发行版会有的问题。 一个发行版提供了大量的其他程序,这些程序可以与 Linux 一起组装成用于大量目的的工作集。 这些程序的范围可以从基本的程序编写工具,如编译器和连接器的通信库,到电子表格和编辑器之间的几乎所有东西。 一种倾向于拥有一个超级集合,其中包含了每个单独的计算机或解决方案实际使用的内容。 它还为每一类软件组件提供了许多选择,用户或公司可以将这些组件组装成他们认为的运行集。 一个粗略的比喻是一个超市,在那里货架上有许多商品可供选择,每个用户选择他们认为有意义的商品。

基于二进制还是基于源代码的发行版?
发行版大体上可以分为两类: 二进制和基于源代码的发布。
基于二进制的发行版提供了所有已经预先编译并准备安装的软件组件。 这些组件使用"足够好"的构建选项进行编译,这些选项对大多数用户都有效。 它们还为需要或希望编制自己的组件的少数用户提供这些组件的来源。 按照我们超市的类比,这家超市包含所有预包装和预煮好的食物,但是有明确的说明如何获得配料和重复的过程,为那些想要调整一个或两个食谱。 这种发行版是 Debian、 Fedora Core、 OpenSUSE、 Ubuntu 和许多其他发行版的例子。 虽然它们提供相同类型的系统,但是它们都使用不同的方法,不幸的是,这些方法甚至是不兼容的。 它们是通用计算机,如服务器、台式机和笔记本电脑的主要配置。
另一方面,基于源代码的发行版侧重于提供一个框架,在这个框架中,最终用户可以从源代码构建所有组件本身。 这些发行版还提供了一些工具,可以轻松地选择一个合理的开始组件集合,并根据需要调整每个组件的构建。 这些调整可以简单到添加一个编译标志来使用不同版本的源代码,或者以某种方式修改源代码。 用户将收集他们想要构建的内容的菜单,然后开始构建。 在几分钟或几小时后,根据具体情况,将有一个结果镜像,可以使用在电脑中使用这一。 Gentoo、安卓和 Yocto 就是这种类型的例子。 在超市的类比中,这是一个更接近散装食品商店,在那里可以得到预先衡量的食物与详细的机器可读的烹饪说明,会有一个花哨的炊具,可以读取这些说明, 并处理一系列食谱的调整,如调整为糙米而不是白米。 这个类比稍微弱了一点。
这些基于源代码的发行版通常是基于 linux 的嵌入式设备和物联网设备的首选。 虽然很难建立和维护,但基于源代码的发行版有一个独特的优势,即能够根据确切的目标硬件裁剪已安装的镜像,以便最大限度地利用资源或最小化资源浪费。 而对于嵌入式设备,这往往是一个强大的约束。 此外,基于源代码的发行版更适合于跨平台构建(在这里构建平台的机器与运行平台的机器不同) ,而基于二进制的发行版更适合于自主构建(在同一台机器上构建和运行)。
鉴于目前英特尔(Intel)架构的流行程度,以及在物联网产品中使用的ARM 架构——交叉构建支持对物联网设备非常重要。

以容器为中心的发行版
传统的 Linux 方法是运行一个单个统一的用户空间,包含了内核之外的所有平台,这种方式正在发生变化。 这个新模型是关于拥有一个"容器"集合,使用户空间成为组件。 容器化模型将用户空间的一部分转换为每个组件之间高度独立性的组件集合。
容器化装载带来了许多好处,从而允许团队更加独立地实现粒状平台升级的可行性。 不利的一面是,它们比非容器化的解决方案有更大的资源占用。 然而,如果技术的发展展示了什么,那就是当一项新技术唯一的缺点是尺寸大小时,那它所拥有的资源往往会扩大。
下面将描述一些早期的选项,以便与现有的发行版进行比较。
物联网 Linux 发行版


