Der Openmoko Paketmanager Opkg

Der Openmoko Paketmanager Opkg basiert auf dem Paketmanager Ipkg und ist ein Fork desselben. Mit dem Paketmanager ist es möglich Pakete auf dem System zu installieren. Damit das funktioniert sollte das Gerät einen Netzzugang haben. Ob dieser Netzzugang über GPRS, WLAN oder über USB erfolgt ist dabei nebensächlich.

Zuerst einmal sollte man opkg update ausführen. Damit holt sich der Paketmanager eine neue Liste der Pakete sowie derer Abhängigkeiten.

Um mit dem Paketmanager eine Anwendung zu installieren gibt man folgendes ein:

opkg install (Paketname)
z.B. opkg install python

Möchte man ein Paket installieren welches man heruntergeladen hat so muss man folgendes eingeben:

opkg python.ipk

Um ein Paket zu entfernent ersetzt man das install durch ein remove. Ist man auf der Suche nach einem bestimmten Paket z.B. einem Paket in welchem der Name ecore auftaucht so muss man folgendes eingeben:

opkg list | grep ecore

Der Befehl opkg list listet das ganze auf und mittels grep wird dann jeder Eintrag herausgefiltert in welchem die Zeichenkette ecore vorkommt.

Möchte man einfach Schrittweise eine Liste der Pakete angezeigt bekommen so hilft folgendes:

opkg list | less

Weitere Informationen gibt es unter:
http://wiki.openmoko.org/wiki/Opkg
http://wiki.openmoko.org/wiki/Package_management

Mokopedia einrichten

Heute wollte ich die Mokopedia auf meinem Freerunner einrichten. Die Mokopedia ist eine zum Offline Anschauen optimierte Fassung der Wikipedia. Zu finden ist sie unter http://mokopedia.mister-muffin.de/.

Bevor wir anfangen binden wir noch ein zusätzliches Repository ein. Dazu wird die Datei http://rabenfrost.net/celtune/celtune-rabenfrost.conf in den Ordner /etc/opkg/ gepackt und anschließend opkg update ausgeführt. Danach werden mit opkg install python-opendir python-netserver kernel-module-loop die benötigten Module installiert.

Dann benötigen wir noch einige Kernelmodule. Dabei ist zu beachten das die hier angebotenen Kernelmodule nur mit der Version 2.6.24 des Kernels zusammenarbeiten. Überprüfen kann man dies in dem man auf der Konsole uname -a eingibt.

Wenn die Kernelversion stimmt kann man sich die benötigten Module auf sein Freerunner laden. Dazu gibt man in der Konsole folgendes ein:

wget https://seeseekey.net/wp-content/uploads/2008/11/unlzma.ko
wget https://seeseekey.net/wp-content/uploads/2008/11/sqlzma.ko
wget https://seeseekey.net/wp-content/uploads/2008/11/squashfs.ko

Die Dateien müssen dann an folgende Orte:

unlzma.ko -> /lib/modules/2.6.24/kernel/extra/lzma/unlzma.ko
sqlzma.ko -> /lib/modules/2.6.24/kernel/extra/lzma/sqlzma.ko
squashfs.ko -> /lib/modules/2.6.24/kernel/fs/squashfs/squashfs.ko

Um die Modulabhängigkeiten zu aktualisieren geben wir dann noch depmod -a ein. In die Datei /etc/fstab/ tragen wir dann noch folgendes ein:

# mokopedia
/media/card/mokopedia/de/mokopedia.lzma /media/mokopedia/de squashfs default,loop 0 0

Nun liegt nach einem Neustart in dem Verzeichnis /media/mokopedia/de die Mokopedia. So ist das ganze natürlich noch nicht sonderlicht schön. Wir benötigen noch einen Server der uns das Ganze für den Webbrowser ein wenig hübscher macht.

Dazu benötigen wir einen kleinen Webserver den gibt es hier. Das ganze entpacken und auf den Freerunner. Nun starten wir die server.py indem wir python server.py eingeben.

Danach können wir den Browser starten und http://localhost:8080/ eingeben und schon sind wir in der Wikipedia. Zur Zeit ist das ganze leider noch etwas unübersichtlich wenn man die Wikipedia auf dem Palm gewöhnt ist, aber das wird schon :)

Die Rolle von Python im neuen OpenMoko Framework

Auf der Seite http://wiki.openmoko.org/wiki/OpenmokoFramework gibt es ein Punkt der sich mit der Rolle von Python im neuen Framework befasst.

Es geht darum das wenn neuer Code geschrieben werden muss dieser in Python geschrieben wird, sprich die entsprechenden dbus Services in Python geschrieben werden. Als Grund wird die prototypische Natur von Python sowie der Betonung der dbus API (was auch immer damit gemeint ist). Außerdem sind verkürzt die Python die Zeiten die bei dem Experimentieren mit der API vergeht gegenüber kompilierten Sprachen wie C bzw. C++.

Sobald die API’s durch Anwendungsentwickler genutzt werden können, kann damit begonnen werden zu schauen ob bestimmte Services noch ein implementiert werden bzw. auf Geschwindigkeit optimiert werden z.B. unter zu Hilfename von Pyrex (http://en.wikipedia.org/wiki/Pyrex_(programming_language)), Cython (http://www.cython.org/) und Ctypes (http://python.net/crew/theller/ctypes/).