开放嵌入式:构建嵌入式Linux发行版的又一途径

作者:

Nick Lethaby

操作系统产品经理

Denys Dmytriyenko

Linux及开源技术专家

德州仪器

在本文中,德州仪器(TI) Nick Lethaby 和 Denys Dmytriyenko 概括介绍了开放嵌入式(OE,Open Embedded) Linux构建环境的重要元素,并展示了如何使用它们构建和定制Linux发行版。随着嵌入式处理器的功能日益强大,特性不断丰富,Linux操作系统在嵌入式应用中得到了迅速普及。尽管Linux的开源性与免许可证费用这一事实是其迅速普及的一个主要推动力,但另一个重要推动因素则是来自Linux在台式机与服务器领域广泛使用所提供的丰富应用软件与驱动。

然而,嵌入式开发人员并不能简单地将台式机Linux发行版或应用直接应用于他们的系统中。总的来说,嵌入式Linux开发人员面临着三大挑战:1. 根据其硬件使用的处理器及外设,装配一个具有引导加载程序、内核、库、应用以及开发工具组件的兼容组合解决方案;2. 正确交叉构建多兆字节镜像;3. 优化各种内核及用户级组件,缩小占位面积,降低相关存储器成本。

解决这三大挑战不是一件简单的事情,需要开发团队在积累丰富经验的基础上付出大量心血。商业嵌入式Linux厂商可为特定嵌入式处理器提供预先测试的解决方案,但对倾向于“凡事自己搞定”的Linux开发人员而言,开放嵌入式构建环境提供了一种为众多嵌入式设备构建可靠定制Linux发行版的方法。许多公司一直都在使用OE构建与完整发布版配套的嵌入式Linux内核端口,进而提高维护的支持水平并且增强OE基础架构的重要元素。

此外,数量不断增加的嵌入式Linux发行版(如Angstrom)也可充分利用OE的优势。虽然这些发行版并非OE的正式部件,但它们可通过为开发人员提供随时可投入运行的启动点增添使用OE的吸引力。值得注意的是诸如MontaVista与Mentor Graphics这些公司推出的较新商业发行版本现在也建立在OE基础之上。他们同时提供了更加丰富的工具与商业支持发行版。

在本文中,首先对OE构建环境的重要元素进行总体介绍,然后展示如何应用这些元素构建和定制Linux发行版。德州仪器以Angstrom发行版为基础的Arago发行版将被用作范例,来说明如何在OE及已经使用OE的发行版基础上创建新的发行版。

为了更加准确说明OE的重要概念,文中大多数基于Arago或Angstrom的范例脚本都略有改动。开发人员应访问文章最后列出的网站查看原始脚本,了解真实环境中的完整实施方案。

开发嵌入式的概览

OE建立在为嵌入式应用开发的交叉编译与构建工具BitBake基础之上。开发人员使用 BitBake是通过创建各种配置与方法文件来指示BitBake在这些文件上构建来源以及如何构建。OE实际上是这些方法(.bb)及配置(.conf)文件的数据库,开发人员可使用这些文件为各种嵌入式平台交叉编译各种组件组合。

OE提供成千上万个方法文件来构建单个数据包以及完整的镜像。数据包可以是从通过内核的引导加载程序到用户级应用或开发工具集的任何数据。方法文件不但知道数据包来源的位置,而且还知道如何为特定目标构建数据包,并确保数据相关项也完全构建。因此开发人员无需深入了解在其应用中增加特定功能所需的每一款软件详情。OE不但能够以各种数据包格式(tar、rpm、deb以及ipk)创建数据包,而且还可为发行版创建数据包源程序(package feed)。

大多数OE用户开始的时候会选择特定发行版,而不是构建单个数据包。使用现成发行版的优势在于通过选择一定的数据包版本便可获得可行的组合。发行版可提供这一重要功能。发行版除“最新”构建之外,通常还提供一个“稳定”构建,以避免试图将各种最新版本进行整合而导致的内在不稳定性。

OE的主要优势在于能够生成软件开发套件(SDK)。一些开发团队可能倾向于在OE中构建完整的应用,而另外的开发团队则可能会安排专门团队构建Linux平台供应用开发团队使用。在这种情况下,Linux平台团队可生成一个Linux发行版作为SDK,并便捷地集成于应用团队所倾向的构建流程中。这样,应用开发团队成员就不必深入了解OE了。

OE数据库还有一个重要方面,就是这个数据库的大部分维护工作都是由有志于确保Linux发行版在嵌入式设备上得到成功应用的相关方雇员来完成的。鉴于Linux内核及应用领域的大幅变动,这种维护工作的重要性不言而喻。

构建工具开发人员最为熟悉的命令是“make”,实现基于一套独立的make文件来生成单个项目。但是这种方法无法良好地扩展用于创建各种Linux发行版的任务,因为每个发行版都包含任意数量(往往有数百个)的大量数据包,其中许多大部分都是彼此独立的,且适用于任意数量的平台集。

由于这些局限的存在,Buildroot与BitBake等大量Linux发行版构建工具应运而生。BitBake的层级方法有助于各项数据包构建指令单独维护,而数据包本身则可便捷聚集,并按适当顺序进行编译并创建大型镜像。因此,BitBake可为二进制源程序及完整镜像中的后续整合构建单个数据包。

BitBake的一个重要方面是它没有强制规定单个数据包的构建方法。数据包的方法(或相关类型)可指定GNU autotool等任何构建工具,使之能够较为直接地将数据包导入OE。

为满足选择特定数据包版本来实现协同工作和指定不同嵌入式目标的需求,BitBake使用了配置文件。

BitBake使用方法中的位置信息通过下载工具(或诸如Git或svn等任何其它软件配置管理工具)从互联网提取数据包来源(如图1所示)。然后根据数据包描述中的规定,打上必要的补丁,这是在为嵌入式处理器交叉编译数据包时的一项常见要求。该数据包集在更高级的方法中有规定,比如用于镜像和任务的 方法。

(电子工程专辑)
图1:BitBake构建工具概览

许多开发人员都希望使用现有发行版。BitBake能够帮助开发人员在BBPATH搜索路径中尽早存入定制方法或配置文件,从而覆盖发行版中的默认值。这可帮助开发人员在不直接修改现有发行版文件(并随后维持现有发行版文件的定制版本)的条件下,针对其需求调整发行版。这种方法在 OE中称为“分层”,每个方法集称为“覆盖”。

下面来了解一些不同方法文件与配置文件,以便更加深入地掌控OE与BitBake的工作方式。首先介绍方法类型。

O

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值