Kategorie Linux (8 Artikel)
Das Display meines altbewährten Psion 5mx ist defekt. Eine Reparatur wollte ich nicht mehr vornehmen, da es längstens Zeit war, auf ein modernes Gerät zu wechseln.
Ich habe mich für ein Nokia Internet Tablet N810 (kurz NIT) entschieden.
Die gewaltigen technischen Fortschritte, die zwischen dem Psion und dem N810 liegen, verdeutlicht folgende Tabelle:
| Beschreibung | Psion 5mx | Nokia N810 |
|---|---|---|
| Baujahr | 1999 - 2002 | 2007 |
| Hauptspeicher | 16 MB | 128 MB |
| Prozessor-Takt | 36 MHz | 400 MHz |
| Bildschirmpixel | 640 x 240 | 800 x 480 |
| Bildschirmfarben | 16 Graustufen | 65000 Farben |
| Abmessungen | 172x89x24 mm | 128x72x14 mm |
| Gewicht | 365 g | 226 g |
| Laufzeit | 25 h | 4 - 10 h |
| Betriebssystem | Psion EPOC | Linux Maemo |
Der 5mx kann nur in wenigen Disziplinen punkten: Tastatur (das N810 hat wegen den kompakteren Massen weniger und kleinere Tasten), die Agenda, die Buchhaltungssoftware Money (Money ist allerdings kommerzielle Zusatzsoftware) und natürlich bei der Batterielaufzeit.
Das N810 integriert weitere Technologien, die der 5mx noch nicht kannte: USB 2.0, Bluetooth, WLAN, GPS, Kamera.
Die Vorteile, die ein offenes Betriebssystem wie Linux bietet (Maemo für das N810 basiert auf Debian-Linux), sind augenscheinlich:
Es ist einfach, Maemo zu verbessern und bestehende Debian-Pakete sowie Linux-Tools können mit recht wenig Aufwand nach Maemo portiert werden - ich war sehr erstaunt und erfreut, dass viele Programme, die ich auf dem N810 ausprobierte, auch auf meinem Ubuntu-PC verfügbar sind (Ubuntu ist auch Debian-basierend). Portable Software ist für mich besonders wichtig: Falls das N810 ausfallen sollte, kann ich mit den bestehenden Daten ab Backup auf dem PC weiter arbeiten. Beispiele für portierte Software: Gnumeric Spreadsheet, GPE-Calendar, GPE-Contacts, Maemopad+, Evince PDF-Reader, FBReader (E-Books), Xournal, NoteCase, MPlayer usw.
Maemo profitiert auch von der Vorarbeit, die unzählige Linux-Entwickler im Bereich Multimedia geleistet haben: Die meisten Videoformate können auf dem N810 abgespielt werden, auch Streaming übers Netz ist möglich.
Eine Notiz am Rande: Ich habe auch Nokias Betriebssystem S60 (z.B. Nokia N73) ausprobiert. Dies ist massivst abgeschottet, so dass man als Gelegenheitsentwickler kaum eine Chance hat, brauchbare Software zu entwickeln. So benötigt jeder, der Software entwickeln und diese dann anderen zur Verfügung stellen will, ein kostenpflichtiges Zertifikat von Nokia, das zum Signieren der Software dient. Programmfunktionen, die tief ins System eingreifen, können nur mit Einwilligung von Nokia genutzt werden, manche werden überhaupt nicht freigegeben.
Momentan bin ich am Ausprobieren der vielen Möglichkeiten des N810. Weitere Informationen liefere ich später in diesem Blog.
Abschliessend möchte ich noch auf die Grösse hinweisen. Unter einem 'Internet Tablet' stellte ich mir ein wesentlich grösseres Gerät vor, als es das N810 ist, bis ich es in der Hand hielt. Es findet sogar in der Gesässtasche der Jeans Platz. Folgendes Foto illustriert die Grössenverhältnisse - das N810 und der Psion wurden auf einem A4-Blatt platziert.

Details (1 Kommentar) | Gadgets | Hardware | Linux | Software
Problemstellung
Meine digitale Kompaktkamera (Canon IXUS 55) produziert qualitativ gute Videos. Da die Videos im Motion JPEG-Format (MJPEG) gespeichert werden, benötigen sie recht viel Speicherplatz. Gesucht ist ein Linux-Werkzeug, um diese Videos in ein etabliertes, kompakteres Video-Format umzuwandeln.
Lösungsansätze
Es bietet sich das MPEG-2-Format an, dass auch bei DVD verwendet wird. Die Kompressionsrate von MPEG-2 ist besser als MJPEG (aber schlechter als MPEG-4) und es gibt Videobearbeitungssoftware, die MPEG-2 direkt ohne vorherige Umwandlung bearbeiten kann. MPEG-2 ist weit verbreitet - so kann z.B. mein Philips LCD-Fernseher dieses Format ab einer USB-Festplatte abspielen.
Als erstes versuchte ich das Linux-Tool Avidemux. Es bietet eine komfortable Benutzeroberfläche, hat aber meines Erachtens für die Umwandlung nach MPEG-2/DVD bereits zu viele Optionen. Ausserdem sind viele Mausklicks notwendig, bis die Umwandlung endlich stattfinden kann. Mir schwebte eher etwas skriptgesteuertes vor.
Nächster Versuch: ffmpeg. Dies wird aus der Linux-Shell bedient, hat aber etwa 100 Optionen. Der Absteller...
Lösung
Der Befehl movie-to-dvd aus dem Paket videotrans (http://videotrans.sourceforge.net/). Dieses intelligente Werkzeug wählt selbst sinnvolle Einstellungen, so dass folgender Befehl genügt:
movie-to-dvd -m pal -M film.avi
Es resultiert ein MPEG-2-Film mit etwa 60 % Platzersparnis gegenüber MJPEG.
Um es ganz komfortabel zu machen, habe ich ein kleines Skript geschrieben. Da ich es aus technischen Gründen im Weblog nicht korrekt darstellen kann, habe ich das Skript hier bereit gestellt: video2mpeg. Unter Ubuntu sollte das Skript im Homeverzeichnis unter .gnome2/nautilus-scripts gespeichert und ausführbar gemacht werden. Anschliessend können im Dateimanager Nautilus mehrere Filme markiert und mit Rechtsklick - Skripte umgewandelt werden.
Details (0 Kommentare) | Linux | Software | Video
Zwei Informatikstudenten der ZHAW [1] haben eine faszinierende Internetapplikation programmiert: Auf Air Traffic können die Flugbewegungen um den Flughafen Zürich-Kloten in Echtzeit beobachtet werden. Die von einer Antenne auf dem Hochschulgebäude empfangenen Transponderdaten der Flugzeuge werden mit Google Maps dargestellt. Die Karte kann mit der Maus verschoben und verkleinert/vergrössert werden.
Wird ein Flugzeug angeklickt, öffnet sich ein Infofenster mit vielen Details wie Flughöhe, Geschwindigkeit, Flugzeugtyp, Fluggesellschaft, Flugnummer, Abflug- und Zielflughafen, Abflug- und Ankunftszeit und sogar mit einem Foto genau der Maschine, die gerade in der Luft ist.
Diese Informationsfülle ist nur möglich dank Mashup, also dem Verknüpfen von Informationen aus verschiedenen Datenbanken über standardisierte Schnittstellen. Vorliegende Applikation verwendet Transponderdaten, Kartenmaterial, Flugpläne, Flugzeugtypendatenbanken usw.

Bei obigem Bild handelt es sich um ein animiertes GIF. Nachfolgend zu Dokumentationszwecken für mich selbst und für allfällige interessierte Leser eine Kurzbeschreibung, wie dieses Bild unter Linux entstand.
Als erstes über die bekannten Linux-Mechanismen die Programme scrot, imagemagick und gimp installieren.
Es müssen Screenshots der laufenden Web-Applikation gemacht werden. Mit dem Befehl watch -n 2 scrot wird alle zwei Sekunden der gesamte Bildschirminhalt im aktuellen Ordner als PNG gespeichert.
Folgender Befehl sucht im aktuellen Ordner alle png-Dateien, schneidet (mit dem convert-Befehl von ImageMagick) jeweils einen 500 mal 500 Pixel grossen Bereich ab Position 400,200 aus und speichert die Bilder im Unterordner sub.
find . -maxdepth 1 -iname '*.png' -print0 | xargs -0 -I {} convert -crop 500x500+400+200 {} sub/{}
Dann aus dem Ordner sub das erste Bild mit der rechten Maustaste anklicken und 'Öffnen mit GIMP wählen'. Wieso anschliessend nur der (kariert dargestellte) Alphakanal angezeigt wird, ist mir nicht klar, stört aber nicht weiter. Alle Bilddateien, die animiert werden sollen, markieren und auf das gerade mit Gimp geöffnete Bild ziehen. Evtl. muss jetzt in Gimp noch der Ebenen-Dialog eingeblendet werden (Tastenkombination Strg+L). Die Hintergrund-Ebene kann gelöscht werden. Die Bilder sollten jetzt in ungekehrter Reihenfolge im Ebenendialog aufgelistet sein, was wichtig ist, damit die GIF-Animation anschliessend richtig herum läuft.
Filter-Menü - Animation - Optimieren (für GIF) wählen. Das neu generierte Bild speichern z.B. als animation.gif. Im nächsten Dialog 'Als Animation speichern' wählen und auf Exportieren klicken. Im folgenden Dialog empfehle ich diese Einstellungen: Kumulative Ebenen (Kombinieren), den oben eingegebenen Übergang für alle Einzelbilder verwenden und eine Pause zwischen Einzelbildern (also die Animationsgeschwindigkeit) nach Bedarf. Das wär's!
Das GIF-Format eignet sich übrigens nicht für Fotos, sondern (da es nur 256 verschiedene Farben enthalten kann) am besten für schematische Darstellungen wie die gezeigte Landkarte.
(Firefox zeigt oben nur ein statisches Bild? about:config in der Adresszeile eingeben und image.animation_mode auf normal zurück setzen.)
| [1] | Zürcher Hochschule für Angewandte Wissenschaften in Winterthur |
Details (0 Kommentare) | Geo | Linux | Internet | Schweiz
Den Heim-PC vom Büro aus fernsteuern, als ob man davor sitzen würde, und das erst noch über eine gesicherte (verschlüsselte) Übertragung? Dies klappt erstaunlich gut mit NX von der Firma NoMachine.
Mein Ziel war es, mit dem Windows XP-PC im Büro (Client) auf den unter Ubuntu 7.04 32bit (Feisty) laufenden PC zuhause (Server) zuzugreifen.
Vorteile von NX gegenüber anderen Protokollen wie VNC oder RDP:
- Schnelligkeit durch Komprimierung und Zwischenspeicherung (Caching)
- Verschlüsselte Übertragung via SSH
Einrichten auf dem Server (nachfolgend Heim-PC genannt)
- Die NX-Serverapplikation ist in der kostenlosen Variante nutzungsbeschränkt. Da allerdings die Basisbibliotheken von NX mit Quelltext freigegeben wurden, konnte die Community mit FreeNX eine offene Variante des Servers entwickeln.
- Unter Linux Paketquellen hinzufügen gemäss Anleitung im FreeNX-Wiki, dann den Serverteil installieren: apt-get install freenx
- Um durch den Zwangs-Proxy im Geschäft zu kommen, verwende ich den Standard-Port für HTTPS-Verbindungen (443): Dazu wird in /etc/ssh/sshd_config der Port 22 auf 443 geändert und in /etc/nxserver/node.conf das # vor SSHD_PORT entfernt und die 22 durch 443 ersetzt. Durch /etc/init.d/ssh restart werden die Änderungen wirksam.
- Da ich einen NAT-Router verwende, musste das Portforwarding eingerichtet werden: Vom Internet eingehender Verkehr auf Port 443 weiterleiten an die interne IP-Adresse des Linux-PC, Port 443.
Einrichten auf dem Client (nachfolgend Büro-PC genannt)
- Der NX-Client ist für viele Betriebssysteme kostenlos verfügbar.
- Ich verwende den NX Client for Windows Version 3.0.0-78.
- Verbindungskonfiguration: IP-Adresse des Heim-PC (oder Hostname, wenn DynDNS verwendet wird), Port 443, Desktop: Unix/Custom/Run the following command /usr/bin/gnome-session, Proxy: Zwangsproxy-Einstellungen wie im Web-Browser. Anstatt gnome-session kann auch xfce4-session verwendet werden: xfce ist ein schlanker, empfehlenswerter Windowmanager, der mittels apt-get install xfce4 installiert wird.
Erweiterung 1
Falls auf dem Heim-PC gerade ein Familienmitglied, sagen wir die Ehefrau, eingeloggt ist, kann sogar auf ihre Sitzung zugegriffen werden (sofern sie per Mausklick zustimmt!).
- Dazu muss als erstes XVNC installiert werden (apt-get install xvncviewer).
- Sie muss die Funktion aktivieren unter System-Menü - Einstellungen - Entfernter Desktop - Anderen Benutzern erlauben, Ihren Desktop anzuzeigen.
- Sie sollte den 3D-Fenstermanager (Beryl/Compiz) abschalten, da sonst der Bildschirminhalt nicht korrekt aktualisiert wird: System-Menü - Einstellungen - Desktop-Effekte.
- Ich führe (auf dem Heim-PC) in einem Terminal-Fenster xvncviewer localhost:0 aus, worauf sie aufgefordert wird, meinen Zugriff per Mausklick zu bestätigen.
- Anschliessend können wir gleichzeitig auf dem Desktop hantieren. Achtung: Damit stets klar ist, wer gerade die Maus bedienen darf, führt man am besten parallel ein Telefongespräch miteinander... ;-)
Erweiterung 2
Ich habe einen weiteren PC (nachfolgend Computer genannt) im Heimnetzwerk und möchte ab und zu auch auf diesen zugreifen. Er soll aber nicht dauernd laufen, um Strom zu sparen. Das geht mit Wake on LAN (WOL):
- Im BIOS des aufzuweckenden Computers WOL aktivieren.
- MAC-Adresse der Netzwerkkarte des Computers notieren: Unter Linux ifconfig, unter Windows ipconfig /all ausführen. Beispiel einer MAC-Adresse: 00:08:26:19:C2:D3.
- Vom Büro-PC aus auf dem Heim-PC mit dem NX-Client wie oben beschrieben einloggen.
- Auf dem Heim-PC WOL installieren mit apt-get install wakeonlan.
- Beispielbefehl zum Starten des Computers: wakeonlan 00:08:26:19:C2:D3
- Nach 1 - 2 Minuten per ping-Befehl überprüfen, ob der Computer schon bereit ist.
- Anschliessend kann mittels VNC, RDP oder SSH auf den Computer zugegriffen werden.
- Um Datenverschlüsselung muss ich mich nicht kümmern, da die Daten nur zwischen den beiden Rechnern im geschützten Heimnetzwerk fliessen. Einzig die Bildschirminhalte vom Heim-PC zum Büro-PC gehen (per NX-Protokoll) übers Internet, und hier ist alles SSH-verschlüsselt.
Fazit
Eine ADSL-Leitung ist heute genug schnell, um eine grafische Benutzeroberfläche übers Internet fernbedienen zu können. NX bietet sich an, weil es einfach zu installieren und kostenlos ist.
Details (2 Kommentare) | Internet | Linux | Software
Der Hauptgrund für die Anschaffung des neuen PC war, mich intensiv mit Linux zu beschäftigen und die Virtualisierungstechniken auszuprobieren. Beim Kauf habe ich darauf geachtet, dass der Prozessor 64 Bit-fähig ist und Hardwarevirtualisierung unterstützt. Beides ist beim Intel Core 2 Duo E6400 der Fall.
Bei der Virtualisierung geht es vereinfacht gesagt darum, innerhalb eines Betriebssystems weitere Betriebssysteme auszuführen. So kann beispielsweise Linux in einem Fenster auf dem Windows-Desktop laufen oder umgekehrt.
Intel implementierte die Virtualisierungstechnik unter dem Namen Intel VT (auch Vanderpool) und AMD unter dem Namen AMD-V (auch Pacifica).
Als Host wird das Basisbetriebssystem bezeichnet. Virtualisierte Systeme nennt man Gäste. Ein Gastsystem kann entweder para- oder hardwarevirtualisiert laufen:
- Paravirtualisierung (PV): Das Gastsystem muss an die Virtualisierungsumgebung angepasst werden. PV eignet sich für Linux/Unix, da der Kernel für die virtuelle Umgebung optimiert werden kann.
- Hardwarevirtualisierung (Hardware Virtual Machine, HVM): Das Gastsystem nutzt Intel VT bzw. AMD-V und kann daher unmodifiziert laufen. HVM ist nötig für Windows als Gast, da der Windows-Kernel wegen fehlendem Quellcode nicht angepasst werden kann.
Ich konzentriere mich bei meinen Tests auf HVM, da ich so praktisch beliebige Betriebssysteme von Grund auf, unmodifiziert, installieren kann.
Siehe auch: Vergleich der verschiedenen Virtualisierungslösungen.
Installation Basissystem
Ubuntu-Linux 6.10 (Edgy Eft) Server 64 bit liess sich problemlos installieren. X-Server und Gnome installierte ich nach, da ich auf eine grafische Oberfläche nicht verzichtet will.
Den Treiber für die Grafikkarte lud ich von nvidia.com herunter. Nach dem leider für jeden Kernel unumgänglichen Kompiliervorgang (solange Nvidia den Quellcode nicht freigibt) lässt sich mit nvidia-settings der Konfigurationsdialog aufrufen, wo auch mehrere Bildschirme konfiguriert und die Temperatur der Karte angezeigt werden können. Um den Grafikkartentreiber zu ändern, muss übrigens nur eine einzige Zeile in /etc/X11/xorg.conf angepasst werden. Nach der Zeile 'Device' einfach bei 'Driver' den Wert 'vesa' (läuft immer, sehr langsam), 'nv' (Open Source-Treiber für Nvidia-Grafikkarten) oder 'nvidia' eingeben. Nur letzterer bietet 3D-Beschleunigung.
Die Unterstützung für Virtualisierung musste ich im BIOS erst aktivieren. Wichtig: Computer danach aus- und wieder einschalten. Ein Warmstart des PC genügt nicht.
XEN 3.0.3
XEN ist in aller Munde, umfassend, aber leider auch sehr komplex. XEN benötigt einen speziellen Kernel für den Host, unter dessen Regie die Gastsysteme laufen. Dieser Kernel lässt sich unter Ubuntu schnell installieren, muss dann aber manuell ins Grub-Bootmenü eingetragen werden. Der Computer kann dann wahlweise mit dem normalen oder dem XEN-Kernel starten. Unglücklicherweise führte der von Ubuntu angebotene XEN-Kernel 2.6.17 auf meinem System zu einem Kernel-Panic und der ältere XEN-Kernel mit Version 2.6.16-11 machte auf meiner brandneuen Hardware Probleme: Den Netzwerkkartentreiber musste ich selber kompilieren, ausserdem erkennt der XEN-Kernel die beiden CD-Laufwerke nicht.
Die beschriebenen Probleme kosteten mich einige Stunden Arbeit und trotzdem waren noch nicht alle Vorbereitungen erledigt. Ich fand, dass es auch einfacher gehen müsste, verliess die XEN-Baustelle und wandte mich KVM zu, siehe nächster Abschnitt.
KVM Version 13
Diese Virtualisierungslösung basiert auf QEMU und benötigt einen Prozessor mit Hardwarevirtualisierungsfunktionen. Im Gegensatz zu XEN kann KVM unter dem Ubuntu-Standardkernel kompiliert werden und lässt sich dann als Modul laden, ohne dass der Host zu irgend einem Zeitpunkt neu gestartet werden müsste.
Es dauerte nicht einmal einen Abend, um KVM zu übersetzen und Windows XP als Gast zu installieren.
Die erstaunlich kurze Beschreibung zur Installation vom KVM befindet sich hier: http://kvm.qumranet.com/kvmwiki/HOWTO.
Ergänzungen zum Howto: Es ist etwas ungenau beschreiben, was zu installieren ist: gcc-3.4, libsdl1.2debian, libsdl1.2-dev, zlib1g, zlib1g-dev, alsa-base, alsa-utils, libuuid1, uuid-dev.
Punkt 1 (KVM übersetzen und Modul laden):
- --with-patched-kernel habe ich weggelassen, da ich den Standardkernel von Ubuntu verwenden will.
- make install funktionierte nicht richtig, deshalb:
- cp -p kernel/*.ko /lib/modules/2.6.17-11-generic
- depmod -a
- modprobe kvm-intel
Punkt 2 (Datei generieren, welche als virtuelle Festplatte dient):
- /usr/local/kvm/bin/qemu-img create -f qcow vidsk.img 10G
Punkt 3 (Windows als Gast installieren):
- /usr/local/kvm/bin/qemu-system-x86_64 . -hda vidsk.img -cdrom winxp.iso -boot d -m 768 -no-acpi
- Schrecksekunde: qemu endet mit Fehler, da Windows während der Installation mal bootet: Einfach obigen Befehl nochmals ausführen.
- Ich verwende ein Image der Windows-CD, da die Installation dann viel schneller abläuft. Das Image wird so generiert: cp /dev/scd0 winxp.iso, wobei scd0 den Devicenamen des CD-Laufwerks bezeichnet.
Punkt 4 (Gast starten):
- Nach der Installation Windows ohne 'eingelegter' CD starten:
- /usr/local/kvm/bin/qemu-system-x86_64 . -hda vidsk.img -boot c -m 768 -no-acpi
Damit das virtuelle Windows automatisch via DHCP eine IP-Adresse von meinem ADSL-Router beziehen kann, muss vorgängig auf dem Linux-Host eine Bridge gemäss Anleitung auf http://kidsquid.com/cgi-bin/moin.cgi/bridge eingerichtet werden:
- brctl addbr br0
- ifconfig eth0 0.0.0.0 promisc up
- brctl addif br0 eth0
- dhclient br0
- Datei /etc/qemu-ifup mit folgendem Inhalt anlegen und ausführbar machen:
#!/bin/shsudo /sbin/ifconfig $1 0.0.0.0 promisc upsudo /usr/sbin/brctl addif br0 $1
Der Gast muss danach mit zusätzlichen Parametern gestartet werden: -net nic,vlan=0 -net tap,vlan=0
Details (3 Kommentare) | Linux | Software


