- 嵌入式Linux系统开发:基于Yocto Project
- (美)鲁道夫·J.斯特雷夫
- 1272字
- 2023-07-19 10:53:12
1.2.1 嵌入式Linux发行版
与桌面版和服务器Linux发行版类似,不断发展的嵌入式Linux发行版被社区项目和商业操作系统厂商开发出来。其中一些被定位为针对特定类型的嵌入式系统和设备,而其他的在本质上是更通用的,意在提供一个基础而非完整的系统。
Android
尽管Android(www.android.com、http://developer.android.com和http://source.android.com)的主要目标是手机和平板计算机,但是它正在作为用于所有种类的嵌入式设备的操作系统而逐渐变得流行。这一点儿也不奇怪,因为它的源代码是可以自由获得的,而且包含了带有配置工具的构建系统,该构建系统使得开发者可以改变系统以适应不同的硬件设备。
特别是,如果目标设备使用的是基于ARM的片上系统并且有触摸屏,那么Android是系统工程师们的热门选择,因为对硬件的必要支持是系统的核心部分。对英特尔x86架构的移植确实存在,但是可用的硬件更少,并且开发经常是更加昂贵的。
然而,Android并不能满足嵌入式设备的所有需求。虽然它利用了在Linux操作系统栈中通常见到的Linux内核和其他软件包,但是它的基础架构不同于典型的Linux操作系统栈。Android使用了它自己的由一套精简过的应用程序编程接口组成的C库,其中也有自己的文件系统布局以及其他特定的扩展。这些修改使它并不能直接移植标准Linux软件包到Android。
虽然Android在这个意义上(整个系统的源代码都是可以自由获得的,在很少限制下可以因为任何目的而被使用、修改和扩展)来说是开源项目,但是开发者不能把他们的变更贡献回Android。谷歌独立控制着这个系统的路线图。基于谷歌的Android发布版的CyanogenMod(www.cyanogenmod.org)社区发行版正在尝试填补这一空白。
尽管如此,Linux内核确实缺少Android的一个重要扩展:电源管理。虽然一些Linux内核开发人员因其过于简单的架构而皱眉,但Android唤醒锁已经成为Linux电源管理的事实标准。
发行版
发行版(主页是www.angstrom-distribution.org)因其不断增加的支持开发板(development board)的列表,正在逐渐成为项目的重要资源。是由一组工作在OpenEmbedded、OpenZaurus和OpenSimpad项目上的开发者启动的社区发行版。在一开始就使用了OpenEmbedded工具,但是如今正在适应Yocto项目的架构和结构。
OpenWrt
OpenWrt(www.openwrt.org)首次亮相是作为针对路由网络流量的嵌入式设备的开源操作系统,例如宽带调制解调器、路由器、住宅网关和其他客户端设备(Consumer Premises Equipment,CPE)。OpenWrt的核心组件是Linux内核、uClibc和BusyBox。
OpenWrt的早期版本是构建在用于Linksys的WRT54G住宅网关和无线路由器的GPL许可的资源以及用Buildroot所创建的根文件系统上——因此有了OpenWrt这个名字。
OpenWrt支持多种硬件设备和评估板。OpenWrt的核心强项是全面的配置网络技术和协议的能力列表,包括路由、网状网络、防火墙、地址转换、端口转发、负载均衡以及更多的功能。
虽然OpenWrt的初衷是操作那些通常运行起来不需要频繁人工交互的硬件,但是它提供了高级网页界面来方便地访问众多的配置选项。
对连接能力和远程管理的关注使得OpenWrt成为那些开发联网设备的系统工程师喜欢的选择。带有包管理的可写的文件系统使得它可以简单地增加功能性,即使在系统部署后也可以。
完整Linux发行版的嵌入式版本
对许多成熟的桌面、服务器和云的Linux发行版,针对嵌入式系统的变体现在也可以使用了:
❑ Debian(www.emdebian.org)
❑ Fedora(https://fedoraproject.org/wiki/Embedded)
❑ Gentoo(https://wiki.gentoo.org/wiki/Project:Embedded)
❑ SUSE(https://tr.opensuse.org/MicroSUSE)
❑ Ubuntu(https://wiki.ubuntu.com/EmbeddedUbuntu)
对熟悉特定Linux发行版的桌面或者服务器版的系统构建者和开发者来说,使用它的嵌入式变体提供了由熟悉的工具、文件系统布局以及其他所带来的好处。