synaptiks 0.7.0

synaptiks ist ein im KDE Umfeld angesiedeltes Programm zur Konfiguration von Touchpads (welche üblicherweise von der Fa. Synaptics stammen)

Seit synaptiks Version 0.7 steht hinter dem Programm nicht mehr der Dienst synaptiks Touchpadverwaltung – welcher automatisch in KDE gestartet wurde. Dieser sorgte dafür, dass innerhalb der KDE-Systemeinstellungen synaptiks nur konfiguriert werden musste, ohne dass man das Programm hätte explizit starten müssen.

Nun ist synaptiks ein Program ohne Dienst im Hintergrund, was folgende Auswirkungen hat:

  • synaptiks funktioniert auch ohne KDE (z.B. in XFCE)
  • synaptiks muss zumindest einmal explizit gestartet werden, so dass es sich im jeweiligen Tray (z.B. KDE-Kontrollleiste) verankert

synaptik KDE Touchpadwaltung

In dem Snapshot sieht man die erste Seite von synaptiks, die früher in den KDE Systemsettings auftauchte. Dort sucht man sie jetzt vergebens. Dafür wird sie einem angezeigt, wenn man das Programm vom Tray aufruft.
Das wichtigste Feature ist auch gleich auf dieser Seite zu sehen: Touchpad bei Tastaturaktivität ausschalten
Der Punkt Beim Anmelden automatisch starten sollte nur aktiviert werden, wenn man den Einrichtungsdialog wirklich bei jedem login ins Windowsystem sehen möchte – ansonsten nicht anhacken. Das Tray Management von einem Windowsystem (KDE,XFCE..) kümmert sich schon um das jeweilige Einladen beim Login.

Noch eine Anmerkung: Momentan stürzt leider das Programm nach einem Wakeup von Suspend-to-RAM ab, was laut dem Autor Sebastian Wiesner bekannt und in Bearbeitung ist.

cups-polld im busy-loop

Falls man in seiner CUPS Konfiguration einen Host permanent abfrägt (BrowsePoll), und CUPS der Version 1.4.x einsetzt, kann es passieren, dass bei länger aussetzender Netzwerkverbindung zum BrowsePoll Zielrechner der cups-polld Prozess in einen busy-loop gerät aus dem der Prozess nicht mehr herauskommt.

Dies kann v.a. auftreten, wenn der CUPS Client sich mit WLAN zum CUPS Server verbindet. Das Fehlverhalten merkt man dann an 100% Auslastung eines CPU-Cores durch cups-polld. Selber konnte ich dass seit längerem auf Mac OS X Clients erleben.
Mac OS X 10.6.8 beinhaltet derzeit CUPS 1.4.7, während Mac OS X Lion CUPS 1.5.x einsetzt, welches ein Bugfix für dieses Problem beinhaltet.

Eine genaue Fehlerbeschreibgung und einen source patch gibt es auf den Bugs Seiten des Debian Projektes
Die Seite wiederum widmet sich aber dem Problem unter Linux – um das Problem auf Mac OS X

  1. reproduzierbar zu machen (und damit testbar)
  2. zu lösen

stellte ich folgende Vorgehensweise auf:

  1. Auf dem Mac OS X Client wird der cups-polld Prozess mangels strace mit der Aktivitätsanzeige beobachtet
  2. Im Normallzustand war der letzte Call von cups-polld:
    _semwait_signal(..)
  3. Auf Linux Seite wird nun die erste Firewallregel geschaltet
    iptables -I OUTPUT 1 -p tcp -d --sport ipp -j REJECT --reject-with tcp-reset
  4. Danach wartet man bis der cups-polld Prozess in die Phase
    recvfrom(...)
    kommt, danach wird auf Linux noch die 2 FW Regel gestartet.
  5. iptables -I INPUT 1 -p tcp -s --dport ipp -j REJECT --reject-with tcp-reset
  6. Danach wird nach ca. 7 Minuten der cups-polld Prozess in den busy-loop übergehen.

Jetzt muss CUPS mit dem auf den Debian Seiten verfügbaren Patch versehen werden. Dazu lädt man derzeit auf den CUPS Seiten die letze 1.4 Version herunter (1.4.8) und patcht diesen. Der Patch beschränkt sich auf die Datei cups/request.c und lautet folgendermassen

+ {
+ status = httpUpdate(http);
+ }
+- while (http->state == HTTP_POST_RECV);
++ while (status != HTTP_ERROR && http->state == HTTP_POST_RECV);
+
+ DEBUG_printf(("2cupsGetResponse: status=%d", status));
+

Beim anschliessenden kompilieren unter Mac OS X ist natürlich die Entwicklungsumgebung notwendig, zumindest die gcc toolchain auf der Kommandozeile. Folgende Schritte sind notwendig:

  • ./configure CFLAGS=“-arch i386 -arch x86_64″ LDFLAGS=“-arch i386 -arch x86_64″

    Dies führt zum Kompilat von 32- und 64bit Varianten der Objects, der statischen Archive und von executables.

  • Das Mischkompilat (Universal Binary für 32- und 64bit Varianten) ist notwendig um die zentrale Bibliothek libcups.2.dylib für beide Architekturen anzubieten. Ansonsten würde so ziemlich alle 32bit Applikationen beim Start crashen.

    Leider reicht das o.g. configure nicht aus um die dynamische Bibliothek auch auf 32bit zum Kompilieren (auf einem aktuellen 64bit Rechner). LDFLAGS greift hier nicht – deshalb muss manuell in der Datei Makedefs in der Zeile ARCHFLAGS ebenfalls -arch i386 -arch x86_64 eingetragen werden. Danach nur noch

  • make
  • make install

Jetzt noch ein bischen zittern beim Neustart und dann war’s das schon,
hier ein fertiges CUPS 1.4.8 Paket für Mac OS X Snow Leopard OHNE JEGLICHE GEWÄHR!

XFCE Window Decorations

auch XFCE ist nicht von Kinder- oder Jugendkrankheiten befreit.

Falls der Auslogvorgang länger dauern sollte, im syslog eine Meldung wie folgende erscheint:
polkitd(authority=local): Unregistered Authentication Agent for unix-session:/org/freedesktop/ConsoleKit/Session21 (system bus name :1.388, object path /org/gnome/PolicyKit1/AuthenticationAgent, locale de_DE.UTF-8) (disconnected from bus)

dann ist die Wahrscheinlich (zumindest bei Version 4.8.1 auf openSUSE 11.4) gross, daß beim nächsten Login die Window-Decoration fehlen und auch andere Probleme auftauchen.

Grund dafür ist sind Probleme mit dem Sessionmanager – provozieren kann man das, wenn man bspw. Firefox beendet und die Abspeicherung der vielen Daten im .mozilla Unterverzeichnis nicht abwartet, sondern sich versuch sofort abzumelden.
Dass wirft den Sessionmanager aus der Bahn, der dann bis zu seinem Timeout braucht um in diesem Fall die Session zu schliessen.

Der workaround lautet das Verzeichnis .cache des Users zu löschen.

stty -a < /dev/ttyS....

hängt? Ebenso der Befehl

echo „hallo“ > /dev/ttyS…

?? Dann ist wahrscheinlich die Data Carrier Detect Line (DCD) auf High, so dass diese beiden Kommandos auf ewig warten bis die DCD auf Low schaltet.

Umgehen kann man das bei dem ersten Befehl mit

stty -a -F /dev/ttyS...

Dieser benutzt beim open den O_NDELAY Flag, welcher gleichbedeutend zum O_NONBLOCKING ist.
Prinzipiell sollte man aber bei der termios Struktur das c_cflag CLOCAL setzen, welches die Modem Status Lines ignoriert. Wird dieses Flag nicht gesetzt und schreibt die termios Struktur mittels tcsetattr an die serielle Schnittstelle zurück, hat DCD high und obiges Problem tritt auf.

kded und seine Module

Die heute aktuelle KDE 4.7.0 Inkarnation beglückt einem nach dem Starten der KDE Session mit 100% CPU Auslastung durch kded4

kded4 ist der KDE daemon der vorzugsweise via D-Bus Abfragen vornimmt, die Plasma Widgets dann grafisch darstellen (notifier).
Gefüttert wird der daemon durch seine Module, die sofern sie fehlerhaft sind, wie momentan

kded_networkstatus.so (in /usr/lib64/kde auf einem x64_86 System)

dann leicht in einen busy endlos-loop gerät – bei dem erwähnten Modul pollt er sich zu Tode.
Leider ist die Fehlersuche relativ mühselig – anstatt auf der Oberfläche in den KDE Systemsettings rumzuklicken, würde ich alle Verknüpfungsdateien für kded in

/usr/share/kde4/services/kded

zuerst entfernen und dann wieder Stück für Stück hineinkopieren und anschliessend in KDE einloggen um direkt die Auswirkungen des speziellen Moduls zu sehen.

Qt Creator 2.2

Die kontinuierliche Verbesserung der Qt IDE Creator bringt nun in der aktuellen Version 2.2 ein wirklich sehr nützliches Feature bzgl. Teamfähigkeit – Die Editoreinstellungen können projektweise vorgenommen werden.
Hört sich unspektakulär an, bringt Creator aber in komplexen Setups wesentlich besser ins Spiel und ist mir zumindest ein Blogeintrag wert 🙂

Nepomuk und Akonadi im Griff

Seit geraumer Zeit werde ich nach jedem Login in einem KDE4.x System zeitverzögert mit folgender Meldung beglückt:

„Nepomuk Indexing agents have been disabled“

Zusätzlich kommt noch einiges an blabla bzgl. akonadi Beschwerden.
Die Sache ist, dass ich in den KDE Systemeinstellungen nepomuk deaktiviert habe und keine KDE PIM Programme verwende. So what?

Nachdem ich mir hier nochmals die Terminologie der KDE Lieblingsprojekte verinnerlicht habe, wurde die Ursache schnell klar, auch wenn die Hintergründe es immer noch nicht sind.

Akonadi als PIM Datenzugriffsframework benötigt unbedingt nepomuk für die Umsetzung der Suche.
Warum aber starten denn überhaupt die akonadi agents? Schon der Versuch die nicht benötigten Softwarekomponenten (alles was mit akonadi und KDEpim zu tun hat) zu löschen, schlug fehl. Sie sind so stark mit dem restlichen KDE System verzahnt, dass man entweder gleich das ganze KDE System löschen oder sie eben behalten muss.
Auch ein löschen der (aus welchem Grund auch immer) schon angelegten akonadi Resourcen in den KDE Sytemeinstellungen brachte akonadi beim KDE Start nicht zum schweigen. Es scheint, dass akonadi von banalsten Programmen wie der Plasma-Uhr, benutzt wird. An dieser Stelle gab ich nach und aktivierte nepomuk (allerdings ohne den Strigi Indexer).

Dies führte dann zu dem dubiosen Fehler, dass sich nepomuk beschwerte nicht starten zu können, da das soprano backend redland fehlt. Tatsächlich waren aber alle redland Komponenten installiert. Da ich aber in den KDE Systemeinstellungen zu nepomuk nur eine Konfigurationseinstellung bzgl. des virtuoso backends gesehen habe, schwante mir wieder eine Inkosistenz – geschuldet mangelhafter Transitionsprozesse während der fortlaufenden KDE updates in der 4.x Reihe. Abhilfe schafft das Löschen folgender nepomuk Dateien:

~/.kde4/share/config/nepomuk*
~/.kde4/share/apps/nepomuk/*

Seitdem läuft nepomuk und akonadi ohne Fehlermeldungen und v.a. ressourcenschonend im Hintergrund. Lediglich nach dem Einloggen erscheinen für wenige Augenblicke die Prozesse

nepomukservicestub
akonadi_maildispatcher_agent

mit CPU Belastung.
Übrigens war dies während der inkonsistenten Phase ganz anders. Dort liefen teilweise akonadi Prozesse, sowie das benutze mysql, wild und CPU-fressend durch die Gegend.

praxis tipps: atop

Das nächste Echtzeit Performance Monitoring Tool. Ist aber so kompakt und einfach gehalten, dass es einfach auch hier erwähnt werden muss

AT Computing’s System & Process Monitor

Teilt den Bildschirm wie top in einen oberen Systembereich und unteren Prozessbereich auf.
Positiv fällt sofort auf, dass der Systembereich auch mit RAID/LVM und den physikalischen zugrundeliegenden Datenträgern zurechtkommt und die Last auf den einzelnen OSI Netzwerkschichten darstellen kann.

Die wichtigesten Shortcuts lauten folgendermassen:

Parameter Bedeutung
G Allgemeine Ansicht
M Hauptspeicher Ansicht
D Massenspeicher Ansicht
S Scheduler Ansicht
P Ansicht nach Program
U Ansicht nach Benutzer
C Ansicht Befehlszeile
Shift+C Sortieren nach CPU-Auslastung
Shift+M Sortieren nach RAM-Auslastung
Shift+D Sortieren nach Massenspeicher-Auslastung
Shift+A Sortieren nach meistgenutzer Resource
Shift+P Filtern nach Prozessname
Shift+U Filtern nach Benutzername
Z Pause
T Auslösen einer manuellen Messung

praxis tipps: Pfad der .icc Dateien

Die 10. Suchaktion nach den .icc files auf meinen Rechnern, ist der Anlass diese Zusammenfassung zu schreiben:

Auf Mac OS X werden die .icc’s in folgenden Pfaden abgelegt:

global:
/Library/ColorSync/Profiles/
lokal:
~/Library/ColorSync/Profiles/

ev. existiert unterhalb dieser Verzeichnisse noch ein Display directory.

Auf Linux und Solaris gibt es keine Regel, d.h. der File Hierarchy Standard gibt keine Richtlinie aus – wohl aber haben sich Standardpfade eingebürgert, welche auf der OpenIccDirectoryProposal Webseite ausführlich dargelegt sind. In Kürze sind das:

global:
das Unterverzeichnis /color/icc der Verzeichnisse aus den Systemvariablen
$XDG_DATA_DIRS
$XDG_CONFIG_DIRS

..also normalerweise..
/usr/share/color/icc
/usr/local/share/color/icc
..oder eventuell auch..
/var/lib/color/icc

lokal:
$XDG_DATA_HOME/color/icc
normalerweise: ~/.local/share/color/icc

$XDG_CONFIG_HOME/color/icc
normalerweise: ~/.config/color/icc

auch hier können sicher unterhalb dieser Verzeichnisse Subdirectories, bspw. device befinden.

Realtime Linux mit der RedHawk Distribution

Nachdem mit Kernel 2.6.39 der Big Kernel Lock (BLK) endgültig entfernt wurde, stellt jeder Vanilla Kernel ein vollständig konfigurierbares RT System dar.

Warum man dennoch mit Speziallösungen wie der Realtime Linux Distribution RedHawk nicht schlecht fährt liegt meist an Frontend Features welche die Wartbarkeit deutlich erhöhen.

Beispiele, gerade aus der Distribution RedHawk sind CPU-set shielding und CPU-set affinity. Beides wird mit Shell Kommandos unterstützt.

  • shield kann on-the-fly CPU(s) aus der Verfügbarkeit des Operating Systems herausnehmen und wieder hinzufügen.
  • run kann bestimmte Prozesse mit RT-Priorität einem bestimmten CPU-set exklusiv zuweisen (affinity).

Diese Beispiele sowie allgemeine Aktualisierungen sind in der aktuellen Fassung meines Dokumentes über Realtime Linux enthalten.