OpenEmbedded
{{Short description|Build automation framework and cross-compile environment}}
{{Infobox software
| logo = OpenEmbedded-logo-2009.svg
| screenshot =
| caption =
| collapsible =
| author =
| released =
| latest release version =
| latest release date =
| latest preview version =
| latest preview date =
| programming language =
| operating system = Linux
| platform = Cross-platform
| genre = Build automation
| license = MIT
| website = {{URL|https://www.openembedded.org/}}
}}
OpenEmbedded (OE) is a build automation framework and cross-compile environment used to create Linux distributions for embedded devices. The framework is developed by the OpenEmbedded community, which was formally established in 2003. OpenEmbedded is the recommended build system of the Yocto Project, which is a Linux Foundation workgroup that assists commercial companies in the development of Linux-based systems for embedded products.
The build system is based on BitBake. A BitBake configuration file, called a recipe, specifies various information such as dependency and source code locations, how to build a package, and how to install and remove a compiled package. OpenEmbedded tools use these recipes to fetch and patch source code, compile and link binaries, produce binary packages (ipk, deb, rpm), and create bootable images.
Historically, OpenEmbedded recipes were stored in a single repository, and the metadata was structured as what is now called "OpenEmbedded-Classic". Starting in 2010, the structure was modified to better support the ever-growing number of recipes. Recipe metadata was split into multiple layers. The lowest layer, which includes platform-independent and distribution-independent meta data is called "OpenEmbedded-Core". Architecture-specific, application-specific and distribution-dependent instructions are applied in appropriate target support layers that can override or complement the instructions from lower layers. Additionally, changes to the recipes at the core layer are now managed with a pull model: instead of committing their changes directly to the repository (as was previously the case), developers now send patches to a mailing list. When approved, the patches are merged (pulled) by a maintainer.{{citation|last=Eggleton|first=Paul|year=2015|chapter=OpenEmbedded-Core|title=OpenEmbedded Wiki|chapter-url=https://www.openembedded.org/wiki/OpenEmbedded-Core|location=Blacksburg, VA|publisher=openembedded.org}}.
The OpenEmbedded framework can be installed and automatically updated via Git.{{citation|last=Brake|first=Cliff|display-authors=etal|year=2015|chapter=Welcome to OpenEmbedded|title=OpenEmbedded Wiki|chapter-url=https://www.openembedded.org/wiki/Main_Page|location=Blacksburg, VA|publisher=openembedded.org}}.
The OpenEmbedded Image Creator, called Wic, can be used to generate disk image files; generally with extension .wic
.
History
{{Expand section|date=August 2011}}
The OpenEmbedded Project, created by Chris Larson, Michael Lauer, and Holger Schurig, merged the achievements of OpenZaurus with contributions from projects like Familiar Linux and OpenSIMpad into a common codebase. OpenEmbedded superseded these projects and was used to build any of them from the same code base.
OpenEmbedded-Core (OE-Core) resulted from the merge of the Yocto Project with OpenEmbedded.{{cite web|url=http://www.linuxfoundation.org/news-media/announcements/2011/03/yocto-project-aligns-technology-openembedded-and-gains-corporate-co|title=Yocto Project Aligns Technology with OpenEmbedded and Gains Corporate Collaborators|url-status=dead|archive-url=https://web.archive.org/web/20120111043849/http://www.linuxfoundation.org/news-media/announcements/2011/03/yocto-project-aligns-technology-openembedded-and-gains-corporate-co|archive-date=2012-01-11}} Since then, all package recipes are maintained through OpenEmbedded-Core.
Layer organisation
OpenEmbedded-Core has adapted this layered structure in the merge with Yocto and new layer entries were added over time.[http://www.yoctoproject.org/projects/openembedded-core Yocto & OpenEmbedded Core Layers] {{webarchive|url=https://web.archive.org/web/20110919012955/http://www.yoctoproject.org/projects/openembedded-core |date=2011-09-19 }}{{cite web|url=http://layers.openembedded.org/layerindex/|title=OpenEmbedded Metadata Index - layers|access-date=2013-06-18|archive-url=https://web.archive.org/web/20130622041516/http://layers.openembedded.org/layerindex/|archive-date=2013-06-22|url-status=dead}} The Layers represent a structure which is only of declarative nature. The specific entries are stricter in the scope of deciding which entry provides which packages. Overview of layers is available in: {{URL|http://layers.openembedded.org/layerindex/branch/master/layers/}}
; Developer layer
: The user-defined layer for custom Bitbake recipes. Embedded system software developers would place their recipe here if the software would not fit the commercial or base layer.
; Commercial layer
: Packages, plugins, and configurations from open source vendors go in this layer.
; UI-specific layer
: Layers currently present within the meta-openembedded layer:
:* meta-efl (Enlightenment window manager)
:* meta-gnome (GNOME window manager)
:* meta-gpe (GPE window manager)
:* meta-xfce (Xfce window manager)
; Hardware-specific layer
:* meta-efikamx (Efika devices)
:* meta-fsl-arm (Freescale Semiconductor officially supported development boards)
:* meta-fsl-arm-extra (Freescale Semiconductor community supported boards)
:* meta-handheld (Personal digital assistants, PDAs)
:* meta-intel (Intel embedded devices)
:* meta-nslu2 (NSLU2 devices)
:* meta-openpandora (Openpandora devices)
:* meta-smartphone (various smartphone devices)
:* meta-ti (Texas Instruments devices)
:* meta-xilinx (Xilinx devices)
:* meta-altera (Altera devices)
:* meta-ettus (Ettus Research USRP SDR devices)
:* (Others)
; Yocto layer
:* meta-yocto (Yocto Project layer)
; OpenEmbedded-Core layer
:* openembedded-core
:* meta-openembedded
Distributions supported
In OpenEmbedded-Classic, the configurations from Base- to the UI-Layer can be supplemented by various Linux distributions. The following list is available for OpenEmbedded:
- Ångström distribution
- KaliOS
- Openmoko
- SHR{{cite web|url=http://shr-project.org/trac|title=SHR}}
- SlugOS
- WebOSBen Combee on Palm Developer Forum - Fri Jul 16, 2010. [http://developer.palm.com/distribution/viewtopic.php?f=70&t=7946#p35619 Building static libs] {{webarchive|url=https://web.archive.org/web/20110726191848/https://developer.palm.com/distribution/viewtopic.php?f=70&t=7946 |date=2011-07-26 }}
- Others{{cite web|url=https://www.b2cinfosolutions.com/|title=B2C Info Solutions}}
Supported hardware
Various devices are supported:{{cite web|url=https://www.openembedded.org/wiki/Overview_of_OE_supported_machines|title=Overview of OE supported machines|access-date=2022-09-08}}
; Boards and processors
: The BeagleBoard from Texas Instruments, and a variety of devices based on an ARM CPU are supported.
; Smartphones
: Smartphones like the Nokia N800 and Neo FreeRunner are supported.
; Porting to new hardware
: The constellation of OpenEmbedded, especially the open design, allows it to get OpenEmbedded to adapt new hardware fairly easy.[http://www.yoctoproject.org/docs/1.1/bsp-guide/bsp-guide.html Yocto Project Board Support Package guide]{{Synthesis inline|date=October 2017}}{{cite web|url=http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#developing-a-board-support-package-bsp|title=Yocto Project Development Manual}}{{Synthesis inline|date=October 2017}}
See also
{{Portal|Free and open-source software|Linux}}
- {{Annotated link|Buildroot}}
- {{Annotated link|Emdebian Grip}}
- {{Annotated link|Familiar Linux}}
- {{Annotated link|Openpandora}}
- {{Annotated link|OpenZaurus}}
- {{Annotated link|T2 SDE}}
References
{{Reflist}}
External links
- {{official website|http://www.openembedded.org}}
- [https://web.archive.org/web/20110727034510/http://www.linuxtogo.org/~mickeyl/tools/FOSDEM2005.pdf FOSDEM'05 presentation of OpenEmbedded]
- [https://web.archive.org/web/20110727040940/http://www.linuxtogo.org/~mickeyl/tools/FOSDEM2007.pdf FOSDEM'07 presentation of OpenEmbedded]
- [http://www.celinux.org/elc08_presentations/mlocke-elc2008-oe.pdf ELC'08 presentation of OpenEmbedded]
{{Mobile operating systems}}
{{Mobile phones}}
{{Linux}}
{{Software in the Public Interest}}
{{DEFAULTSORT:Openembedded}}