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:
- Kein Speicherschutz.
Ohne MMU kann kein Speicherschutz implementiert werden, dass heißt, Programme können sich gegenseitig und den Kernel zum Absturz bringen.
- Kein virtueller Speicher/Paging
- Multitasking: fork() ist nicht implementiert, sondern nur vfork(). (Der Elternprozess wird bei vfork() blockiert, bis execve() oder exit() aufgerufen wird. Es wird keine Kopie des Speicherbereiches des Elternprozesses erstellt, da dazu virtueller Speicher nötig wäre. Es können trotzdem Prozesse parallel laufen.)
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:
- dynamisch: Die Programme, die die libc verwenden, enthalten keinen Code der libc. Stattdessen werden die Routinen dynamisch beim Programmstart eingebunden. Alle Routinen liegen dabei nur einmal im Speicher.
- statisch: Verwendete Routinen werden fest in die Programme eingebunden. Die shared library braucht daher nicht auf dem System installiert sein.
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:
- GNU Libc [8]
: Wird auf den meisten großen Systemen verwendet. Die Library ist sehr umfangreich und unterstützt mehrere Standards (ANSI, POSIX, ...)
- Newlib [9]
: Entwickelt von Cygnus Solutions. Teils uneinheitliche Lizenzbedingungen.
- uClibc [10]
: Unterstützung für Systeme mit und ohne MMU. Die Library ist modular, d.h. einzelne Features können weggelassen werden.
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 ]