OpenEmbedded
# OpenEmbedded

OpenEmbedded ist eine Sammlung von Metainformationen und Konfigurationsdateien, die von BitBake verwendet werden, um ein Linux-Abbild für ein bestimmtes Gerät zu erzeugen oder Softwarepakete für dasselbige.

## Geschichte

Um für den Sharp Zaurus, einem PDA, auf dem standardmäßig Linux installiert ist, ein neues Betriebssystem zu schaffen, fing Chris Larson an, ein eigenes Abbild mit Kernel herzustellen, das näher an den Bedürfnissen der Entwickler war. Um die immer komplexer werdende Erstellung verwalten zu können, wurde OZ buildroot geschaffen. Zur gleichen Zeit existierten andere Projekte, um für andere PDAs Linuxdistributionen zu schaffen, wie zum Beispiel für SimPads von Siemens oder iPAQs von Compaq. In vielen dieser Projekte fanden gleiche oder ähnliche Entwicklungen statt. Um diese zusammenzufügen, wurde OpenEmbedded geschaffen, in dem heute die meisten derartiger Projekte integriert sind. Inzwischen findet man in OpenEmbedded nicht nur PDA Projekte, sondern auch Projekte für Router, Receiver (z. B. Dreambox), Mobiltelefone (z. B. Openmoko) und ähnliche Hardware.

## Aufteilung der Konfiguration

Die Konfiguration lässt sich in folgende Abschnitte gliedern:

### Allgemeine Konfigurationen

In den allgemeinen Konfigurationen wird festgelegt welche Umgebungsvariablen innerhalb von BitBake bereitgestellt werden sollen und welche Werte diese enthalten. Darüber hinaus wird festgelegt für welches Zielsystem welche Distribution erzeugt werden soll, wo die temporären Dateien während eines Build abgelegt werden sollen, sowie einige Einstellungen zur Optimierung.

### Maschinenbeschreibung

In einer Maschinenbeschreibung wird festgelegt, welche Architektur das Zielsystem hat (z. B. x86, ARM-Architektur), welcher Kernel verwendet werden soll und welche zusätzlichen Pakete notwendig sind, um ein minimales lauffähiges Betriebssystem-Abbild zu erzeugen.

### Distributionbeschreibung

In einer Distributionbeschreibung wird festgelegt, welcher Typ von welchen Bibliotheken in welcher Version verwendet werden soll. Zum Beispiel ob das System auf der uclibc oder der glibc basieren soll und welcher Compiler zum Erzeugen der Programmpakete verwendet werden soll.

### Paketbeschreibungen

In den Paketbeschreibungen wird beschrieben welche Schritte notwendig sind, um die Quellen einer Software zu übersetzen und diese in ein Paket zu verpacken.

