Was tun, wenn die Lieblingsanwendung nicht als vorgefertigtes Paket für den Sharp Zaurus zur Verfügung steht? Dann machen Sie sich die Arbeit des Debian-Projekts zu Nutze!
Mit Linux als Betriebssystem bietet der Zaurus-PDA maximale Flexibilität – fast so, als wäre ein Linux-PC auf handliche Größe geschrumpft. Viele Programme hat die Zaurus-Fangemeinde bereits portiert [1,2], doch wenn man tatsächlich anfängt, den PDA als mobilen Linux-Rechner zu betrachten, fehlen immer mal wieder Tools, an die man sich auf dem Desktop gewöhnt hat, zum Beispiel ein benutzbarer Editor wie nano[3].
ARM dran (bzw. drin)
Wer jetzt denkt: “Ist doch auch Linux, da müsste ich die Programme einfach draufkopieren können”, übersieht einen Punkt: Leider enthält der Zaurus einen anderen Prozessor als ein normaler PC. Der hier eingesetzte StrongARM verwendet eine ganz andere Maschinensprache als die bekannten Intel-kompatiblen x86er. Trotzdem ist es im Prinzip ein Leichtes, Linux-Programme auf StrongARM zu portieren: Man benötigt lediglich einen anderen Compiler, der eben StrongARM-Assembler anstatt Intel-Assembler produziert.
Im Detail stellt es sich allerdings als nicht-trivial heraus, auf einer Prozessorarchitektur (z. B. x86er) Maschinencode für eine andere (z. B. StrongARM) zu erzeugen [4]. Zum Beispiel müssen alle nötigen Bibliotheken (mindestens die Standard-C-Bibliothek libc) ebenfalls für die Zielarchitektur kompiliert vorliegen und gefunden werden. Man bezeichnet solch einen Vorgang als “Cross-Kompilieren” und überlässt ihn lieber erfahrenen Entwicklern. Einfacher wäre es, den Code direkt auf dem Zaurus zu kompilieren [5], doch sind dafür sowohl Haupt- als auch Festspeicher sehr knapp bemessen.
Debian eilt zur Hilfe
Diese Probleme lassen sich elegant umgehen, indem man vorkompilierte ARM-Programme verwendet. Glücklicherweise stellt das Debian-Projekt seine Distribution vollständig für die etwas exotischen ARM-Prozessoren zur Verfügung. Damit befindet sich fast jedes Linux-Programm (nun ja, jedenfalls über 10000 Stück …) bereits in Zaurus-geeigneter, vorkompilierter Form frei zugänglich im Internet.
Der PDA benutzt jedoch sein eigenes Paketformat, so dass sich die Debian-ARM-Pakete nicht direkt einspielen lassen. Zwar haben die Zaurus-Entwickler ein Progrämmchen namens dpkg-deb auf dem Zaurus installiert, das ein Debian-ARM-Paket direkt entpacken kann. Dabei gibt es jedoch öfters Komplikationen, denn das Betriebssystem des Zaurus ist eben nicht Debian: dpkg-deb packt alle Dateien an die im Paket festgelegten und für Debian gedachten Pfade, die mit den für den Zaurus optimalen nicht übereinstimmen müssen. Außerdem wurde keines dieser Pakete für Maschinchen mit sehr begrenztem Festspeicherplatz gebaut; sie belegen daher meist unnötig viel Speicher. Zudem müssen Sie sich selbst darum kümmern, dass alle Abhängigkeiten von anderen Programmen und Bibliotheken erfüllt sind.
Letzten Endes fährt besser, wer das Debian-Paket auf einem Desktop-PC entpackt und nur die benötigten Dateien auf den Zaurus bringt. Da Sie wissen, welche Dateien Sie wohin installieren, können Sie sie bei Bedarf leichter wieder entfernen.
Aus dem Netz gefischt
Ob ein Debian-Paket der gewünschten Software existiert, erfahren Sie über das Web-Frontend [6]. Leider lassen sich nur Pakete für x86er direkt von dort herunterladen; für die ARM-Pakete suchen Sie einen Debian-FTP-Server, etwa [7], mit Ihrem Lieblings-FTP-Programm auf. Unter /pub/debian/dists/stable/main/binary-arm (und natürlich nicht nur in main, sondern auch in den contrib– und non-free-Zweigen) finden Sie jeweils die Datei Packages.gz, die Informationen über alle verfügbaren Pakete enthält.
Listing 1
Debian-Beschreibung des <I>nano<I>-Pakets (Ausschnitt)
Package: nano Priority: important Section: editors Installed-Size: 732 Maintainer: Jordi Mallach <jordi@debian.org> Architecture: arm Version: 1.0.6-2 Provides: editor Depends: libc6 (>= 2.2.4-4), libncurses5 (>= 5.2.20010310-1) Suggests: spell Conflicts: nano-tiny (<= 1.0.0-1) Filename: pool/main/n/nano/nano_1.0.6-2_arm.deb Size: 187362 MD5sum: 8b4e4a5a86b25845f9568923834a0fec Description: free Pico clone with some new features GNU nano is a free replacement for Pico, the default Pine editor. […]
Aus dem Filename-Eintrag für nano (Listing 1) entnehmen wir, dass sich das gesuchte Paket z. B. unter ftp://ftp.de.debian.org/pub/debian/pool/main/n/nano/nano_1.0.6-2_arm.deb herunterladen lässt.
Entpacken Sie solche Pakete generell in ein neu angelegtes, leeres Verzeichnis, denn dabei entstehen alle Systemverzeichnisse wie usr neu unterhalb des Arbeitsverzeichnisses. Wenn Sie auf Ihrem PC Debian GNU/Linux fahren, geben Sie lediglich
dpkg-deb -X datei.deb Verzeichnis
auf einer Eingabezeile ein, wobei Sie statt Verzeichnis das leere Arbeitsverzeichnis eintragen. Bei anderen Distributionen nehmen Sie die .deb-Datei von Hand auseinander: Bei .deb-Paketen handelt es sich um ar-Archive, die sich mit dem Befehl ar x datei.deb entpacken lassen. Damit entstehen zwei Dateien mit Kontrollinformationen sowie das Archiv data.tar.gz, das Sie im gewünschten Verzeichnis wie von tar.gz-Dateien gewohnt mit tar xzf data.tar.gz entpacken.
Nun entscheiden Sie, welche der entpackten Dateien wohl wichtig sind – im Allgemeinen interessieren Sie sich für die ausführbaren Programme, die unterhalb eines bin– oder sbin-Verzeichnisses liegen, sowie eventuell für Konfigurations- oder Datendateien. Bei Nano beschränkt sich dies auf die Datei usr/bin/nano, alles andere sind Dokumentation oder Übersetzungen.
Auf den Zaurus damit!
Auf dem Zaurus sortieren Sie die ausgewählten Dateien am besten unterhalb von /usr/local ein. Hat der PDA Netzzugang [8], übertragen Sie die nano-Datei darüber, etwa mit
scp usr/bin/nano root@Zaurus-IP:/usr/local/bin
Alternativ legen Sie sie auf einer CompactFlash- oder SD-Karte ab, wenn Sie diese von Ihrem PC aus beschreiben können. Letztlich bleibt der Weg über die Synchronisationssoftware; in diesem Fall landet die übertragene Datei auf dem Zaurus unter /home/root/Documents oder einem Unterverzeichnis davon und muss nach /usr/local/bin kopiert werden.
Falls das neue Programm nicht auf Anhieb funktioniert, liegt es oft daran, dass benötigte Bibliotheken fehlen. Das Kommando ldd zeigt an, welche Libraries eine ausführbare Datei braucht. Leider fehlt es auf dem Zaurus, lässt sich aber aus dem Debian-Paket libc6 (/pub/debian/pool/main/g/glibc/libc6_2.2.5-6_arm.deb) kopieren und benötigt selbst nur die auf dem Zaurus vorhandenen Bibliotheken. Damit finden Sie zum Beispiel heraus, dass nano die Bibliothek libncurses.so.5 benötigt. Wie das Depends:-Feld von Listing 1 anmerkt, findet sich diese im Paket libncurses5. Kopieren Sie die Datei usr/lib/libncurses.so.5.2 am besten nach /home/QtPalmtop/lib auf dem Zaurus, dort wird sie dann ohne weiteres Zutun gefunden.
Außerdem fehlt dem Zaurus das Progrämmchen ldconfig, das unter anderem symbolische Links für Bibliotheken anlegt. nano etwa benötigt libncurses.so.5, aus dem Debian-Paket kommt aber libncurses.so.5.2. Legen Sie den nötigen symbolischen Link einfach von Hand an:
cd /home/QtPalmtop/lib; ln -s libncurses.so.5.2 libncurses.so.5
Nicht für grafische Programme
Unglücklicherweise funktioniert die beschriebene Methode nicht für GUI-Programme: Die Debian-ARM-Distribution nutzt wie jedes normale Linux das X Window System als Grundlage der grafischen Oberfläche – der Zaurus jedoch setzt auf den Framebuffer mit Qtopia-Oberfläche. Abhilfe schafft nur die mühselige Installation eines X-Servers auf dem Zaurus, doch der läuft langsamer und lässt sich auch nur alternativ zur Qtopia-Oberfläche benutzen.
Dennoch zahlt sich die Arbeit des Debian-Projekts auch für Zaurus-Nutzer aus: So manches Kommandozeilenprogramm, das es noch nicht als natives Zaurus-Paket gibt, lässt sich problemlos installieren, ohne es aufwändig selbst kompilieren zu müssen.
Glossar
-
Zaurus
-
Den Namen dieses Linux-PDAs leitet Hersteller Sharp von “Dinosaurus” ab. Er wird mittlerweile bereits für 399 Euro (unverbindliche Preisempfehlung) verkauft; das Nachfolgemodell ist schon in Sicht.
-
Compiler
-
Ein Programm, das eine Sprache in eine andere transformiert, meistens eine Hochsprache wie C in den Maschinencode, den ein Prozessor ausführen kann.
Infos
[1] Dirk Materlik: “Saurier im Netz”, LinuxUser 09/2002, S. 58 ff.
[2] Carsten Niehaus: “Zwergen-Desktop”, LinuxUser 10/2002, S. 58 ff.
[3] Nano: http://www.nano-editor.org/
[4] Aufsetzen eines Crosscompilers für den Zaurus (englisch): http://www.zauruszone.com/howtos/linux_compiler_setup_howto.shtml
[5] C und C++ direkt auf dem Zaurus kompilieren (englisch): http://www.zauruszone.com/howtos/compiling_on_the_zaurus.shtml
[6] Debian-Paketverzeichnis: http://packages.debian.org/
[7] Debian-FTP-Server in Deutschland: ftp://ftp.de.debian.org/
[8] Dirk Materlik: “Saurier in freier Wildbahn”, LinuxUser 08/2002, S. 56 ff.






