Linux auf dem Desktop


Ähnlich wie nie fertige Wintergärten oder getunte Autos ist Linux u.a. ein weiteres Spielzeug für den Mann (üblicherweise), für den der Weg das Ziel ist. Wo der Schrauber einen Turbolader einbaut, kompiliert der geneigte Linux-Fan ein Kernelmodul auch für den letzten Chip der sich irgendwo im Rechner findet.
Und wenn der eine freudenstrahlend mit seinem Turbo-Golf am dicken Benz vorbeizieht, schaut der Linuxjünger hämisch auf den Bildschirm des Windows XP-Benutzers, dessen Rechner soeben durch den neuesten Wurm lahmgelegt wurde - jedem das Seine.
Wie die Überschrift der Seite zeigt, habe ich mich für Linux statt Wintergarten bzw. extrabreitem Golf entschieden. Konkret handelt es sich dabei um die Distribution Fedora Core 6. Welche Hardware ich wie zum laufen gebracht habe, will ich hier festhalten.

Ganz unten habe ich meine Versionen der hier besprochenen Konfigurationsdateien zum herunterladen

Für mich relevante Änderungen gegenüber Fedora Core 4 und 5


Allgemeine Hinweise

Software wurde unter Linux früher noch oft aus dem Quelltext übersetzt und dann installiert, dabei treten oft Fehler auf und überhaupt ist das unnötiger Stress, denn: andere Leute haben schon für uns kompiliert. Obendrein müssen wir unter Fedora nichtmal den Browser starten um diese oder jene Software herunterzuladen, es gibt nämlich yum. Um mehr Software zur Verfügung zu haben, sollte man noch einige Repositories hinzufügen:

rpm -ivh http://rpm.livna.org/livna-release-6.rpm

rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/6/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm

Nun kann man mit pirut die Software verwalten. Es findet sich im K-Menü unter System/Software hinzufügen/entfernen.

Sehr nützlich ist auch das yum-Plugin fastestmirror, zu installieren via yum install yum-fastestmirror. Es sucht, wie der Name schon sagt, immer den schnellsten Server aus. Ferner ist darauf zu achten, bevorzugt Pakete von Fedora Extras zu installieren, statt von freshrpms. Letztere provozieren manchmal Abhängigkeitsfehler beim Update. Von freshrpms habe ich eigentlich nur 2 Kernelmodule installiert.


Mainboard/Chipsatz:

Eigentlich ist ja der Name des Mainboards irrelevant, es kommt ja nur auf die Chips an, die drauf verlötet sind, anderseits definiert der Name des Mainboards normalweise auch die Chips darauf. Viel selberbasteln musste ich eigentlich nicht, der Fedora-Installer hatte das meiste selbst erkannt.

Viel Handarbeit war dagegen für die Mess- und Regelchips angesagt, die sich mit lm_sensors aber alle benutzen lassen. sensors_detect leistete keine gute Arbeit, so dass ich fast alles selbst machen musste. Also, /etc/sysconfig/lm_sensors:

MODULE_0=i2c-nforce2
MODULE_1=eeprom
MODULE_2=w83l785ts
MODULE_3=asb100

Dabei spielt die Reihenfolge der Module komischerweise eine Rolle. w83... wird lieber vor asb100 geladen, sonst klappt es manchmal nicht. Auch in dieser Konfiguration lässt sich der Chip nicht immer direkt ansprechen, sondern erst, wenn man das Modul entfernt und nochmal läd. Dazu schrieb ich folgende Zeilen in /etc/rc.local:

if [ -e /sys/bus/i2c/devices/1-002e/temp1_input ];
then
	echo fancontrol activated
else
	rmmod w83l785ts
	modprobe w83l785ts
fi
if [ -e -e /sys/bus/i2c/devices/1-002e/temp1_input ]; then
        /usr/sbin/fancontrol &
else
        /usr/sbin/fancontrol /etc/fancontrol2 &
fi

Die letzte Zeile startet das fancontrol-Skript, das die Drehzahl des CPU-Lüfters an deren Temperatur anpasst. Je nachdem wo sich die Kernelmodule bequemen, die Kontrolldateien anzulegen muss das Skript mit einer alternativen Konfiguration gestartet werden. Der CPU-Lüfter Anschluss ist der einzige auf diesem Mainboard, der sich regeln lässt. Aus diesem Grund habe ich den Gehäuselüfter mit einem Y-Adapter ebenfalls dortangeschlossen. Wie sinnvoll das thermisch ist, kann ich nicht genau beurteilen, jedenfalls ist der PC auf diese Weise sehr ruhig.
Das fancontrol-Skript will natürlich auch konfiguriert werden - wie soll es anders sein... Dazu dient wiederum das Skript pwmconfig, mit dem festgelegt werden kann, welche Temperatur mit welchem Lüfter verändert werden kann.
Der richtige Sensor ist dabei 1-002e/temp1_input für Temperatur, 1-002d/fan1_input für Drehzahl und der Ausgang zum regeln ist 1-002d/pwm1. Die u.a. daraus resultiernde /etc/fancontrol:

INTERVAL=10
FCTEMPS= 1-002d/pwm1=1-002e/temp1_input
FCFANS= 1-002d/pwm1=1-002d/fan1_input
MINTEMP= 1-002d/pwm1=25
MAXTEMP= 1-002d/pwm1=60
MINSTART= 1-002d/pwm1=130
MINSTOP= 1-002d/pwm1=90

Bzw. /etc/fancontrol2

INTERVAL=10
FCTEMPS= 2-002d/pwm1=2-002e/temp1_input
FCFANS= 2-002d/pwm1=2-002d/fan1_input
MINTEMP= 2-002d/pwm1=25
MAXTEMP= 2-002d/pwm1=60
MINSTART= 2-002d/pwm1=130
MINSTOP= 2-002d/pwm1=90

Ist alles so konfiguriert, sollte noch vor dem Start der grafischen Oberfläche der Lautstärkepegel des PCs merklich sinken. Wichtig: Es gibt auch an dem 1-002d Chip einen Sensor für die Temperatur der CPU. Das ist aber ein unter dem Sockel angebrachter Fühler, der den schnellen Temperaturänderungen der CPU meilenweit hinterhinkt. Man sollte ihn also auf keinen Fall zum regeln benutzen. Und nochwas ärgerliches: Die Namen der Pseudodateien in 1-002d/... ändern sich von Kernel zu Kernel. So hieß pwm1 auch schon fan1_pwm um ein Beispiel zu nennen. Wenn also der Lüfter nach einem Kernelupgrade nicht herunterregelt, so ist ggf. fancontrol neu zu konfigurieren.


Grafikkarte:

Auch die hat der Installer erkannt und den radeon Open-Source Treiber installiert. Um die CPU-Belastung beim Filmeschauen zu minimieren und um die 3D-Funktionalität nutzen zu können, empfiehlt es sich, ATIs closed source Treiber zu installieren. Dies geht über yum indem man fglrx-kmod (oder so ähnlich) installiert. Weitere Informationen


Soundkarte:

Die Soundkarte wird automatisch erkannt, allerdings wird die XFire 1024 nicht richtig initialisiert und der Sound ist gar grauselig. Einzige Lösung soweit ist, das Modul neu zu laden, /etc/rc.local:

rmmod snd-cs46xx
modprobe snd-cs46xx

TV-Karte:

Die Medion TV-Karte lässt sich mit einer Zeile in /etc/modprobe.conf in Betrieb nehmen:

options saa7134 card=6

Zum fernsehen benutze ich tvtime. Zum Aufnehmen hatte ich vor einiger Zeit mit transcode experimentiert. Mit einer meterlangen Befehlszeile gelang es mir dann auch etwas aufzunehmen und mit divx zu komprimieren (17 Twin-Peaks-Folgen sind so Cron-gesteuert auf meiner Festplatte gelandet). Es gibt allerdings auch grafische Oberflächen um aus dem Fernsehprogramm etwas aufzunehmen, ich benutze momentan gv4l, welches als transcode-Frontend arbeitet.


Webcam:

Die Labtec-Webcam basiert meines Wissens nach auf eine Logitech Webcam und ist für unter 20 Euro erhältlich. Die Auflösung beträgt 640x480 und bei entsprechener Ausleuchtung ist das Bild wirklich gut. Nur wenns dunkel wird, sinkt die Framerate und es tritt Rauschen auf. Desweiteren ist ein recht empfindliches Mikrofon eingebaut. Der Treiber für das Mikrofon wird beim einstecken geladen und ein neues Sound-Device (/dev/dsp1) erstellt. Dieses muss man dann in der entsprechendes Anwendung als Aufnahmegerät einstellen. Pech nur, wenn man Eingabe/Ausgabegerät nicht getrennt einstellen kann. Bei Skype z.B. geht das aber. Das Modul für den Kamerachip ist vermutlich aus Lizenz-bla-bla-Gründen nicht in Fedora enthalten, lässt sich aber per yum install dkms gspca nachinstallieren. Mit spcaview -l -d /dev/video0 (evtl. auch /dev/video1 oder 2,...) kann man sich das Bild anschauen. Eine recht brauchbare Videokonferenz kann man z.B. mit amsn betreiben. Auch ekiga kann das, aber die Auflösung war mehr so Briefmarkenformat. Ein Programm, das die volle Auflösung unterstützt habe ich noch nicht gefunden.


Infrarot Fernbedienung:

An der seriellen Schnittstelle habe ich einen "selbstgebauten" IR-Empfänger, den ich mir vor ein paar Jahren bei zapway.de bestellt habe. Außerdem habe ich eine MD 4689 Universalfernbedienung von Tevion. Um dies zu benutzen waren zuerst folgende Pakete zu installieren: xmms-lirc, lircrc_config, lirc-lib, lirc-devices, dkms-lirc und lirc selbst. Mit der aktuellen Kernelversion ist dkms-lirc in Version 0.8.1 nicht kompatibel. Man muss in allen Dateien die Konstante SLAB_ATOMIC durch GFP_ATOMIC ersetzen. Ich erstelle bei Gelegenheit noch einen Patch.
Dann muss in die Datei /etc/modprobe.conf:

alias char-major-61 lirc_serial
options lirc_serial irq=4 io=0x3f8
install lirc_serial /bin/setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install lirc_serial

Und in /etc/rc.local:

modprobe lirc_serial

Zum testen läd man jetzt das Kernelmodul mit modprobe lirc_serial. Jetzt kann man sich durch Eingabe von mode2 schonmal davon überzeugen, dass der Empänger funktioniert. Ansonsten hilft - echte Kenner werden mich verfluchen - ein Neustart. Geht soweit alles, muss man die Fernbedienung anlernen. Für die meisten Fernbedienungen gibt es schon Konfigurationsdateien. Hat man eine Originalfernbedienung, ist die richtige Datei schnell gefunden (lirc.org). Hat man eine Universalfernbedienung, ist die Sache schwieriger. Ich habe mir dazu mit wget alle Konfigurationsdateien heruntergeladen. Anschließend habe ich mir mit irrecord den header oder gap der Fernbedienung anzeigen lassen und nach einer dieser Zahlen dann unter den Konfigurationsdateien gesucht. Hat man die richtige Datei, hängt man ihren Inhalt der Datei /etc/lircd.conf an. Jetzt kann man mit

service lircd start
lirc starten und mit (die hier folgenden Kommandos als Benutzer, die vorhergehenden als root)
ircat
überprüfen, ob etwas passiert wenn man eine Taste drückt. Klappt das alles, muss man die Anwendungen konfigurieren. Xmms hat dazu einen eigenen Dialog, tvtime ein Beispiel in /usr/share/doc/tvtime-xxx/html/example.lircrc und xine spuckt mit
xine --keymap=lirc
eine Beispieldatei aus. Diese kann man dann mit
lircrc_config
zum Leben erwecken, indem man aus der Liste eine Aktion auswählt und dann den entsprechenden Knopf auf der Fernbedienung drückt, der die Aktion auslösen soll. Anschließend muss in den Autostart-Ordner von kde noch eine Verknüpfung zu irexec angelegt werden.


Drucker:

Auch der HP Deskjet 5550 wurde vom Installer erkannt und eingerichtet - wenn er denn während der Installation eingeschaltet war.


Multimedia-Tastatur:

Hier ist mal wieder einiges zu basteln. Es fängt alles ganz harmlos an: Kontrollzentrum -> Regionaleinstellungen & Zugangshilfen -> Tastaturlayout: Tastaturlayouts aktivieren. Unter Tastaturtyp das Logitech Access Keyboard auswählen, Deutsch als Sprache, Belegungsvariante basic. Dann unter Tastenkombinationen einen neuen Befehl anlegen, z.B. "Browser" mit Aktionstyp Tastenkürzel -> Befehl/Adresse. Dann unter Tastenkürzel auf den Hotkey klicken und die Taste "Startseite" auf der Tastatur drücken. Unter Befehl/Adresse gibt man z.B. firefox ein. Das Ganze anwenden und bei einem Druck auf "Startseite" startet tatsächlich der Browser. Lauter/Leiser und Mute sind schon vorbelegt, E-Mail, die Abspieltasten und Standby/User lassen sich analog konfigurieren. Nur bei den übrigen Tasten tut sich irgendwie nichts. Hier ist nun Gefriemel angesagt:

In der Datei /usr/X11R6/lib/X11/xkb/symbols/inet finden sich die Symbolzuordnungen. Sie weisen den Symbolen XF86... eine Taste zu, die mit <IXX> oder <KXX> bezeichnet wird. In der Datei /usr/X11R6/lib/X11/xkb/keymap/xfree86 werden diese wiederum auf keycodes abgebildet. Und eben diese keycodes werden nicht alle ausgelöst. Verfolgen wir doch mal die Kernelmeldungen mittels tail -f /var/log/messages und drücken dann z.B. die Taste "Webkamera". Der Kernel meckert:

Dec 30 23:41:59 johannes kernel: atkbd.c: Unknown key pressed (translated set 2, code 0xbd on isa0060/serio0).
Dec 30 23:41:59 johannes kernel: atkbd.c: Use 'setkeycodes e012 <keycode>' to make it known.

Kein Problem würde man denken, XF86WebCam ist <I12> und der wiederum Keycode 146 zugeordnet. Ein setkeycode e012 146 sollte also zum Ziel führen. Aber nein, das wäre ja zu einach. Durch eine völlig abstruse Abbildung werden die Keycodes von setkeycodes auf die X-Keycodes umgesetzt. Also machen wir das anders, zuerst weisen wir den unbekannten Tasten irgendwelche freien Keycodes zu, ich mache das so:

setkeycodes e03b 130 e03c 131 e03d 132 e03e 133 e043 134 e044 135 e057 136 e058 137 e011 138 e012 139

Das kann man z.B. in /etc/rc.local schreiben.

Nun muss man noch dafür sorgen, dass X die neuen Keycodes richtig zuordnet. Dazu lässt man sich die aktuelle Zuordnung per xmodmap -pke > .xmodmap in eine Datei schreiben, die man dann entsprechend anpasst. Dazu startet man das Programm xev, drückt die neu gewonnenen Tasten und merkt sich die keycodes in der Ausgabe:

KeyRelease event, serial 31, synthetic NO, window 0x3000001,
root 0x76, subw 0x0, time 4187317033, (426,-553), root:(430,251),
state 0x10, keycode 158 (keysym 0x1008ff1b, XF86Search), same_screen YES,

Hinter den so gewonnenen Keycode schreibt man dann in der Datei .xmodmap den gewünschten virtuellen Keycode, z.B. für die Webkamera-Taste keycode 158 = XF86WebCam. Wo auch immer XF86Webcam vorher stand, sollte man es löschen. Die resultierende Datei findet sich unten zum Download.

Um X die neue Konfiguration mitzuteilen, gibt man xmodmap .xmodmap ein. Diese Zeile schreibt man am besten in den kde-Autostart.


5-Tasten-Maus:

Ich habe die etwas ältere Genius Netscroll Optical Maus am PS/2-Anschluss. Sie hat ein Rad und zwei Daumentasten. Das Rad funktioniert ohne weitere Änderungen, die Daumentasten jedoch nicht. Man passt dazu die Datei /etc/X11/xorg.conf an:

Option      "Buttons" "7"
Option      "ZAxisMapping" "4 5"
Option      "Emulate3Buttons" "no"
Option      "ButtonMapping" "1 2 3 6 7"

X neu starten und die Daumentasten bewirken ein Vor/Zurück im Browser. Man kann auch irgendwie andere Funktionen zuweisen, aber ich war erstmal so zufrieden.


Konfigurationsdateien: