System


[ Seminar Linux und Apache ] [ Inhalt ] [ Aufbau eines Embedded Linux Systems ] [ GUI/PDA Software ]

Übersicht: System


Kernel

Generell verwendet man bei Embedded Projekten die jeweilige Portierung für die Plattform. Die (Embedded-) spezifischen Eigenschaften werden durch die Konfiguration festgelegt, d.h. durch die Auswahl der Komponenten und Module.
Eine Besonderheit ist uClinux: uClinux ist eine Linux-Portierung auf Systeme, die keine MMU (Memory Management Unit) haben, wie es bei Mikrocontrollern der Fall ist. Die Prozessoren der DragonBall Familie, die auch in den Geräten von Palm eingesetzt werden, sind eine der Zielplattformen.
Durch die fehlende MMU ergeben sich folgende Einschränkungen für uClinux: Das Fehlen von virtuellem Speicher erfordert ein spezielles Binärformat, das Flat Binary Format, da Programme nicht mehr grundsätzlich an der gleichen (virtuellen) Speicheradresse liegen. Das Format erlaubt relozierbare Executables, bei denen anhand einer Relozierungstabelle die Adressen an die Speicherposition angepasst werden können.


Busybox

Durch Busybox[6] können auf platzsparende Weise gängige Utilities wie ls, ping, mv, free, df etc. auf einem System verfügbar gemacht werden. Das funktioniert wie folgt: Busybox ist eine einzige, ausführbare Datei, die die Funktionalität aller Utilities enthält. Bei der Installation werden symbolische Links auf Busybox erzeugt, die die Namen der Utilities tragen. Beim Aufruf überprüft Busybox, unter welchem Namen es aufgerufen wurde und verhält sich dann wie das entsprechende Programm.


Tinylogin

Tinylogin[7] benutzt das gleiche Konzept wie Busybox, um platzsparend Tools zur Benutzeranmeldung und Verwaltung der Konten bereitzustellen.


C-Libraries (libc)

Die C Library (Verzeichnis /lib) beinhaltet grundlegende Funktionen, die von fast allen Programmen verwendet werden. Darunter befinden sich viele Wrapper-Funktionen für Systemfunktionen (Systemfunktionen werden bei x86 durch die Assembleranweisung int $0x80 aufgerufen). Auf Embedded Systemen muss dafür gesorgt werden, dass auch dieser Systembestandteil möglichst wenig Speicher verbraucht. Eine Beeinflussungsmöglichkeit ergibt die Art der Bindung: Welche Variante gewählt wird, hängt von der Art und Anzahl der verwendeten Anwendungen ab: Ist die Anzahl eher gering, bietet sich eine statische Bindung an. Große Programme, die viele Routinen der libc verwenden und bei denen sich viele Überschneidungen bei den verwendeten Routinen ergeben, sollten dynamisch gebunden werden.

Folgende Implementierungen sind verbreitet: Die GNU libc verbraucht in ihrer normalen Ausführung ca. 4MB Speicher. Durch Anwendung von strip können die Debug-Informationen entfernt werden - die Größe reduziert sich dann auf weniger als 1MB.
uClibc und newlib sind ca. 300kb groß (gestript).
Wenn möglich, sollte die GNU libc verwendet werden, da mit ihr die wenigsten Kompatibilitätsprobleme zu erwarten sind.


[ Seminar Linux und Apache ] [ Inhalt ] [ Aufbau eines Embedded Linux Systems ] [ Nach oben ] [ GUI/PDA Software ]