Trotz der Vielfalt des Angebots lohnt es sich bei Rettungssystemen, Routern und anderen Spezialfällen, ein eigenes Linux-System zusammenzustellen und nicht eine der bekannten Distributionen zu verwenden. Soll das neue System besonders klein sein, taugen Suse Linux, Fedora und auch Debian kaum als Basis, da die Minimalinstallation oft schon über 100 MByte umfasst.
Der Kernel ist zwar die Grundlage jedes Linux-Systems, reicht aber allein für den Betrieb nicht aus. Eine Reihe von Systemprogrammen ist dafür zuständig, das System hochzufahren, Hardware einzurichten und dem Benutzer überhaupt den Zugang zu ermöglichen. Viele Rettungs- und Live-Linux-Systeme verwenden Busybox [1] als Ersatz für die grundlegenden Systemprogramme.
Wenn Sie Funktionen oder zusätzliche Dienste benötigen, die Busybox in seiner Emulation nicht bereitstellen kann, müssen Sie zwangsläufig die Originalprogramme aus den Quellen übersetzen und mit allen verwendeten Bibliotheken in Ihr eigenes System einbinden. Typische Kandidaten dafür sind »grep«, »tee« oder auch »tar«, von denen Busybox lediglich die Grundfunktionen emuliert.
Compiler-Orgien
Spezialanwendungen - etwa Multimedia-Programme - setzen viele Bibliotheken voraus, oft in sehr speziellen Versionen, die zunächst zu kompilieren und auf dem Development-System zu installieren sind, bevor Sie die eigentliche Applikation übersetzen können. Wenn Sie die Programme nicht fürs eigene Linux-System verändern, müssen Sie die gleichen Schritte vollziehen wie die Maintainer der großen Distributionen.
Zusätzlich sollten Sie sich um etwaige Sicherheitsprobleme kümmern und möglichst zeitnah aktualisierte Versionen der betroffenen Dienste und Programme neu übersetzen und bereitstellen. So entsteht auf Ihrem Entwicklungssystem schnell eine große Zahl an Programmquellen, die Sie aufeinander abstimmen und aktuell halten müssen.
Die Autoren dieses Artikels standen vor dem gleichen Problem, als es darum ging, ein möglichst kleines, aber eigenständiges Linux-System für einen digitalen Videorekorder zu entwickeln - LinVDR [2]. Das voll installierte System hat eine Größe von nur 85 MByte, enthält jedoch neben dem Videorekorder-Programm VDR [3] und den üblichen Systemprogrammen diverse Dienste wie SSH, Samba, FTP und HTTP. Zudem sollte es Anwendern möglich sein, weitere Programme nachzuinstallieren, ohne dass die Distribution dafür Compiler und Bibliotheken enthält.
Um den Aufwand gering zu halten, entschieden sich die Autoren den gleichen Compiler und die gleichen Bibliotheken zu verwenden wie das Debian-Projekt. Während LinVDR 0.7 kompatibel zu Debian Woody war, ist die kommende Version 0.8 binärkompatibel zu Sarge. Entsprechend wurden der Kernel, sämtliche angepassten Programme und die zugehörigen Bibliotheken auf einem Sarge-System übersetzt.
Der Vorteil ist, dass Sie jederzeit Programme aus Debian Sarge nachinstallieren können, da sie die gleichen Systembibliotheken benutzen wie die speziellen Programme aus LinVDR. So gibt es stets nur eine Libc und auch von den meisten anderen Bibliotheken stets nur eine, für alle Programme eingesetzte Version.
Von Debian bedient
Mit dem gleichen Ansatz sparen Sie sich ebenfalls viel Arbeit bei Ihrem eigenen Linux-System. Wenn Sie die aktuelle Stable-Release von Debian verwenden, können Sie zudem auf die Sicherheits-Updates des Debian-Projekts zurückgreifen, statt bei jeder Lücke die Arbeit der Debian-Maintainer nochmals für Ihr eigenes System nachzuholen.
Ein Problem von LinVDR und allen ähnlich aufgebauten Spezial-Distributionen ist, dass die Paketverwaltung per Apt fehlt. Es gibt auch keine Paketdatenbank für die mit LinVDR ausgelieferten Programme, da aus Platzgründen oft nur Teile eines Debian-Pakets installiert wurden, also auch Bibliotheken fehlen, die »apt-get« auf einem Debian-System automatisch nachladen würde.
Abbildung 1: Die Datei »control« enthält nicht nur die Paketbeschreibung, mit einer für Debian nicht auflösbaren Abhängigkeit wie »linvdr-base« verhindern Sie, dass das Paket versehentlich auf dem falschen System installiert wird.
Folglich kann LinVDR nicht einfach auf Apt von Debian zurückgreifen - über die Abhängigkeiten würde praktisch jedes neu installierte Debian-Paket dafür sorgen, dass Apt das halbe Betriebssystem ersetzt und dabei auch lebenswichtige Teile wie »busybox« überschreibt. Die Lösung war das Perl-Skript »debtool« [4], das die Paketliste von einem Debian-Server herunterlädt, die gewünschten Pakete bestimmt und auspackt, ohne dabei vorhandene Systemprogramme zu überschreiben.