IBM X41t

Aus wiki.archlinux.de

Mit einer ressourcenschonenden Linux-Distribution ist auch das mittlerweile etwas angestaubte X41t von Lenovo ein flotter Begleiter für den Alltag.

IBM X41t mit ArchLinux


Mit der richtigen Software-Auswahl kann man aus dem Tablet noch viel herauskitzeln. Im wesentlichen ist aber auch gute Hardware nötig, ich selbst besitze ein X41 Tablet mit folgenden technischen Daten:


  • Intel Centrino mit 1,6 Ghz Taktfrequenz
  • 1,5 GB Arbeitsspeicher
  • 60 GB Festplatte
  • Bluetooth
  • Intel PRO/Wireless 2915ABH WLAN-Karte
  • Fingerprint-Reader
  • Wacom-Tablet



Software-Auswahl

Bezüglich der Software-Auswahl, sollte man wissen, was man benötigt, ich setze hier auf:


  • LXDE-Desktop (minimalistisch, schnell, schick, dezent, GTK-basierend)
  • OpenOffice
  • Firefox 3.0 und Thunderbird


Ich setze hier bewusst nicht auf GNOME, KDE oder XFCE, da diese Desktop-Systeme meines Erachtens nach zu langsam und ressourcenfressend sind. KDE fällt hier schon als erstes raus, GNOME läuft akzeptabel auf dem X41 - wer aber wirklich schnell arbeiten will, ist auch hiermit nicht zufrieden. XFCE ist gar nicht viel schneller als GNOME, ferner überzeugt mich der Aufbau nicht. LXDE ist ein recht junger, aber nicht zu verachtender Desktop. Er ist schnell, simpel, dezent und dennoch schön.

Wichtig ist es auch, da LXDE das GTK-Framework benutzt, nach Möglichkeit auch GTK-Software zu benutzen. Das hat den Vorteil, dass keine weitere Bibliotheken mit geladen werden müssen. Das spart Speicher im Arbeitsspeicher und unnötige CPU-Last durch das Laden der Bibliotheken.

Später werden noch diverse Anwendungen installiert, die den "Flair" des Tablets untermalen und die "Usability" erhöhen sollen, beispielsweise:

  • xournal als Programm für Notizen
  • easystroke für Stiftbefehle
  • cellwriter für Gestenerkennung


Selbstverständlich sollen auch alle Sondertasten und Events, wie das Drehen des Tablets möglich sein.

Grund-Installation

Ich setze voraus, dass ArchLinux korrekt installiert wurde - wir sprechen hier von der Grundinstallation (core). Wichtig sind bei der Grundinstallation folgende Pakete:

  • ipw2100-fw bzw. ipw2200-fw
  • iwlwifi-3965-ucode bzw. iwlwifi-4965-ucode und/oder iwlwifi-5000-ucode (jeweils für WLAN-Karten, je nach eingesetztem Modul - Ausgabe von lspci beachten)
  • netctl
  • madwifi und madwifi-utils
  • wireless_tools
  • wlan-ng26-utils

Diese Module ermöglichen nach der Installation die Anbindung über die integrierte WLAN-Karte, sowie eine Profilerstellung.

Bei der Installation habe ich folgende Pakete aus der Installationsliste entfernt:

  • acl
  • dash
  • jfsutils (nur, wenn kein jfs als root-Dateisystem verwendet wird!)
  • lvm2
  • mailx
  • mdadm
  • reiserfsprogs (nur, wenn kein reiserfs als root-Dateisystem verwendet wird!)
  • xfsprogs (nur, wenn kein xfs als root-Dateisystem verwendet wird!)

System-Updates

Nach der Installation empfiehlt es sich zuerst einmal die neuesten Updates zu installieren - hierfür wird eine Internet-Verbindung benötigt. Netzwerkprofile sind in /etc/network.d/ abgelegt, Beispiele liegen im Unterordner examples/ parat.

Wurde ein Profil erstellt, können ganz leicht die Updates eingespielt werden:

# pacman -Syu

Sollte pacman zuerst aktualisiert werden wollen, so muss dies bejaht werden.

Nach der Installation kommt es manchmal vor, dass weitere Installationsvorgänge fehlschlagen, in einem solchen Fall muss die Datei /etc/pacman.d/mirrorlist überprüft werden, wahrscheinlich ist einfach kein Server ausgewählt worden. Bitte mindestens einen Server in geografischer Nähe aktivieren.

X-Server

Grundinstallation

Der X-Server ist für die grafische Ausgabe zuständig, er ist nach der Grundinstallation noch nicht vorhanden und muss nachinstalliert werden:

# pacman -S xorg

Danach fehlen noch einige Eingabe-Treiber (aus welchen Gründen auch immer!), ebenso wie der Intel-Grafiktreiber. Sie müssen ebenfalls nachträglich installiert werden:

# pacman -S xf86-input-keyboard xf86-input-mouse xf86-video-intel

xorg.conf

Ist der X-Server installiert, muss eine Konfigurationsdatei erstellt werden. X kann die Hardware erkennen und eine simple Konfigurationsdatei erstellen:

# X -configure

Die angelegte Datei xorg.conf.new muss nun in das Konfigurationsverzeichnis /etc/X11 verschoben und anschließend editiert werden:

# mv xorg.conf.new /etc/X11/xorg.conf
# nano /etc/X11/xorg.conf

Folgende Bereiche müssen aktualisiert/modifiziert werden:


Tastatur

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
        Option      "XkbLayout" "de"
        Option      "XkbVariant" "nodeadkeys"
        Option      "XkbModel" "pc105"
EndSection

Maus/TrackPoint

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mouse1"
        Option      "ZAxisMapping" "4 5 6 7"
        Option      "EmulateWheel" "true"
        Option      "EmulateWheelButton" "2"
EndSection

Intel-Grafikkarte

Section "Device"
        Identifier  "Card0"
        Driver      "intel"
        VendorName  "Intel Corporation"
        BoardName   "Mobile 915GM/GMS/910GML Express Graphics Controller"
        BusID       "PCI:0:2:0" #ggf. lspci beachten
EndSection

TFT-Auflösung

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes "1024x768"
        EndSubSection
EndSection

Fehlerbehebung

Damit der X-Server überhaupt beim Starten Tastatur und Maus findet, musste ich folgende Optionen im ServerFlags-Bereich hinzufügen:

Section "ServerFlags"
        Option "AutoAddDevices" "false"
        Option "AutoEnableDevices" "false"
        Option "AllowEmptyInput" "false"
EndSection

Wacom-Tablet

Das Tablet des X41t's kann in den meisten Fällen über die Gerätedatei des seriellen Geräts /dev/ttyS0 angesprochen werden, das kann man auf der Konsole überprüfen:

# cat /dev/ttyS0

Wird der Stift auf dem Tablet bewegt, erscheint hier nun ziemlicher "Kauderwelsch". Ist dies nicht der Fall muss eine der folgenden Gerätedateien verwendet werden:

  • /dev/ttyS1
  • /dev/wacom
  • /dev/input/wacom


Treiber-Installation

Für den X-Server ist ein experimenteller Treiber notwendig, welchen wir aus dem AUR kompilieren müssen. Doch hierfür muss zuerst die Entwicklungsumgebung installiert werden:

# pacman -S base-devel

Nun wird der Tarball des linuxwacom-cvs Pakets benötigt, er ist im AUR-Archiv von ArchLinux.org zu finden: http://aur.archlinux.org/packages/linuxwacom-cvs/linuxwacom-cvs.tar.gz


Dieser Tarball wird nun entpackt, um danach ein Paket daraus zu erstellen:

# tar -xvzf linuxwacom-cvs.tar.gz

Hier fehlt noch das Programm cvs, sowie eventuell weitere Abhängigkeiten (siehe Ausgabe des nächsten Befehls!), installieren wir es:

# pacman -S cvs

Nun kann aus dem Tarball ein Paket werden, welches wir anschließend installieren:

# makepkg
# pacman -U linuxwacom-cvs-*-i686.pkg.tar.gz

Wichtig, bei Fehlermeldungen unbedigngt die Abhängigkeiten überprüfen und erneut versuchen.


Ist der Treiber kompiliert, muss nur noch die /etc/X11/xorg.conf angepasst werden.

xorg.conf

Im ServerLayout-Bereich werden drei Zeilen hinzugefügt:

InputDevice     "stylus" "SendCoreEvents"
InputDevice     "cursor" "SendCoreEvents"
InputDevice     "eraser" "SendCoreEvents"

Ferner werden drei neue InputDevice-Absätze eingefügt:

Section "InputDevice"
  Driver        "wacom"
  Identifier    "stylus"
  Option        "Device"        "/dev/ttyS0"
  Option        "Type"          "stylus"
  Option        "ForceDevice"   "ISDV4"
EndSection

Section "InputDevice"
  Driver        "wacom"
  Identifier    "eraser"
  Option        "Device"        "/dev/ttyS0"
  Option        "Type"          "eraser"
  Option        "ForceDevice"   "ISDV4"
EndSection

Section "InputDevice"
  Driver        "wacom"
  Identifier    "cursor"
  Option        "Device"        "/dev/ttyS0"
  Option        "Type"          "cursor"
  Option        "ForceDevice"   "ISDV4"
EndSection

Wichtig: Statt /dev/ttyS0 muss eventuell eine andere Gerätedatei (vorhin erwähnt) eingetragen werden!

Login-Manager

Als Login-Manager stehen hier verschiedene Möglichkeiten zur Verfügung, ich habe mich für slim entschieden, da dieser Manager ein Kompromiss zwischen Optik und Leistung ist:

# pacman -S slim

Die Konfigurationsdatei /etc/slim.conf kann noch ein wenig angepasst werden:

hidecursor          false
...
daemon  yes
...
sessions            lxde
...
welcome_msg         Willkommen!
...
session_msg         Sitzung:
...
shutdown_msg       Herunterfahren...
reboot_msg         Neustart...
...
default_user        ihr Benutzername


Anschließend empfiehlt es sich, slim in der /etc/rc.conf in die Daemon-Liste einzutragen, wenn SLiM automatisch beim Start geladen werden soll:

DAEMONS=(syslog-ng network ... slim)


Sound

Für die Soundausgabe müssen lediglich zwei, bzw. drei Pakete installiert werden:

# pacman -S alsa-lib alsa-utils alsa-oss

alsa-oss wird nur benötigt, um die Ausgabe von älteren OSS-Anwendungen auf ALSA zu skalieren/transponieren.

Nach der Installation steht der Sound sofort zur Verfügung, die Lautstärken der Regler Master, Master Mono, PCM und Headphone müssen erhöht (auf ca. 75) gestellt werden:

# alsamixer

Nun werden die Einstellungen gespeichert:

# rm /etc/asound.state
# /etc/rc.d/alsa restart

Töne sollten nun wiedergegeben werden:

# aplay /usr/share/sounds/alsa/Noise.wav

Damit die Soundumgebung auch beim Booten automatisch geladen wird, ist ein Eintrag in die Daemon-Liste der /etc/rc.conf notwendig:

DAEMONS=(... alsa ...)

Benutzer, die die Soundumgebung nutzen sollen, müssen Mitglied der Gruppe audio sein:

# gpasswd -a BENUTZERNAME audio

LXDE-Desktop

Nun muss der LXDE-Desktop installiert werden. Kurioserweise installiert pacman derzeit den Fenstermanager openbox nicht automatisch mit. Dieser muss manuell dazu installiert werden, da Fenster ansonsten keinen Rahmen haben und auch kein Mauszeiger zur Verfügung steht:

# pacman -S lxde openbox obconf

obconf ist ein optionales Paket und bietet die Möglichkeit, das Aussehen und Handeln des Fenstermanagers an die eigenen Wünsche anzupassen.

Benutzerkonto und .xinitrc

Nun sollte ein Benutzerkonto für nicht-administrative Aufgaben angelegt werden:

# adduser

Die Datei .xinitrc (grafisches Autostart-Skript) dieses Benutzers muss angepasst werden, damit LXDE nach dem Einloggen zur Verfügung steht:

#!/bin/sh
exec ck-launch-session startlxde

ck-launch-session wird hier benötigt, damit später mit DBus/HAL externe Medien, wie Speicherkarten und USB-Sticks, mit normalen Rechten gemountet werden können.

Zusätzliche Dienste

Damit Sticks und Karten auch von einem normalen Benutzer gemountet werden können, müssen die Dienste portmap, dbus und hal installiert und gestartet werden:

# pacman -S portmap dbus hal gamin

Diese Dienste sollten in der /etc/rc.conf als Start-Daemons definiert werden:

DAEMONS=(... portmap dbus hal ...)

Der Benutzer muss nun noch zwei Gruppen hinzugefügt werden, damit er Medien mounten darf:

# gpasswd -a BENUTZERNAME optical
# gpasswd -a BENUTZERNAME storage

Für Schreibzugriff auf NTFS-Medien ist noch das NTFS-3G Framework notwendig:

# pacman -S ntfs-3g

Letztendlich muss in der Datei /etc/pam.d/login noch folgende Zeile eingefügt werden:

session                     optional                   pam_ck_connector

Herunterfahren, etc...

Damit der Benutzer den Rechner auch herunterfahren, neustarten und in den Ruhezustand versetzen kann, muss er Mitglied der Gruppe power sein:

# gpasswd -a BENUTZERNAME power

Software

Nun muss lediglich noch die Anwendersoftware installiert werden:

Firefox

# pacman -S firefox firefox-i18n

Thunderbird

# pacman -S thunderbird thunderbird-i18n

OpenOffice

# pacman -S openoffice-de

Packer

# pacman -S xarchiver unzip zip unrar

TrueCrypt

# pacman -S truecrypt

Das Modul fuse wird benötigt, es wird in der /etc/rc.conf der Modulliste hinzugefügt:

MODULES=(... fuse)

Medienplayer und Codecs

# pacman -S vlc libdvdcss xvidcore
# pacman -S gstreamer0.10-bad gstreamer0.10-bad-plugins gstreamer0.10-good gstreamer0.10-good-plugins gstreamer0.10-ugly
# pacman -S gstreamer0.10-ugly-plugins gstreamer0.10-base gstreamer0.10-base-plugins gstreamer0.10-ffmpeg

Xournal

# pacman -S xournal

Cellwriter

# wget http://aur.archlinux.org/packages/cellwriter/cellwriter.tar.gz
# tar -xvzf cellwriter.tar.gz && cd cellwriter
# pacman -S libgnome librsvg
# makepkg
# pacman -U cellwriter*.pkg.tar.gz

Easystroke

# wget http://aur.archlinux.org/packages/easystroke/easystroke.tar.gz
# tar -xvzf easystroke.tar.gz && cd easystroke
# pacman -S gtkmm libxtst boost
# makepkg
# pacman -U easystroke*.pkg.tar.gz

Feinheiten und Extras

Zuletzt noch einige Feinheiten und Extras, die das Arbeiten mit dem Tablet-PC erst so richtig angenehm machen.

OSD-Display

Ähnlich wie bei Windows gibt es für Linux ein Programm, welches das Drücken der Tastenkombinationen und Extra-Tasten (Lautstärke, Mute, ThinkLight,..) mit einer Anzeige quittiert: tpb:

# pacman -S tpb

Anschließend muss der NVRAM des Thinkpads für den Benutzer, oder für alle Benutzer des Laptops (bei Mehrbenutzer-Systemen) verfügbar gemacht werden. Hierfür wird in der Datei /etc/rc.local eine Zeile hinzugefügt:

# chmod 777 /dev/nvram

Das dazugehörige Modul nvram muss beim Start geladen werden, es muss in die Modulliste in der /etc/rc.conf hinzugefügt werden:

MODULES=(... nvram)

In der .xinitrc des Benutzers muss das Programm noch (vor der exec-Anweisung) aufgerufen werden:

tpb &

In der Konfigurationsdatei /etc/tpbrc kann das Aussehen und Verhalten des Tools noch beeinflusst werden:

OSDTHINKLIGHT      ON
OSDDISPLAY         ON
OSDFONT            -*-lucidatypewriter-*-*-*-*-*-240-*-*-*-*-*-*
OSDCOLOR           Green
OSDOFFSET          25
OSDSHADOW          2
OSDSHADOWCOLOR     BLACK
OSDOUTLINE         1
OSDOUTLINECOLOR    BLACK
OSDVERTICAL        25
OSDHORIZONTAL      25
OSDPOS             BOTTOM

In der Konfigurationsdatei lässt sich auch für den Access IBM-Button, welcher normalerweise das Service-Menü aufruft, eine Aktion definieren. Man kann so z.B. die Sitzung sperren. Hierfür ist noch eine Anwendunge nötig:

# pacman -S xlockmore

In der Konfigurationsdatei von tpb muss nun angepasst werden:

THINKPAD    /usr/bin/xlock

Um einen festen Bildschirmschoner, wie beispielsweise den Matrix-Bildschirmschoner, festzulegen, lautet der Befehl:

THINKPAD    /usr/bin/xlock -mode matrix

Nach einem Neustart von tpb steht diese Funktionalität sofort zur Verfügung.

Bildschirm drehen

Das Drehen des Bildschirms wird als ACPI-Event behandelt, daher ist ACPI notwendig. Da es noch nicht vorhanden ist, muss es noch nachinstalliert werden:

# pacman -S acpid acpi

Nach der Installation wird der ACPI-Daemon in die Daemonliste der /etc/rc.conf-Konfigurationsdatei aufgenommen:

DAEMONS=(... acpid ...)

Nun wird der Daemon gestartet:

# /etc/rc.d/acpid start


Hinweis: Wenn das Starten des Daemons fehlschlägt, muss der Rechner neugestartet werden:

# reboot


Nach dem Neustart sollte das Drehen des Bildschirms von ACPI erkannt werden:

$ acpi_listen
ibm/hotkey HKEY 00000080 00005009
ibm/hotkey HKEY 00000080 0000500a

Wenn dies der Fall ist, werden zwei Skripte im ACPI-Ordner (/etc/acpi) angelegt:

/etc/acpi/x41_down.sh:

#!/bin/sh
#/etc/acpi/x41_down.sh
echo 'Bildschirm drehen...'
if [ "`/usr/bin/xrandr -o right -v | grep -i 'randr' | wc -l`" -ne "1" ]
then
    echo '!! Fehler !!'
    export DISPLAY=":0.0"
    export XAUTHORITY=/var/lib/gdm/\:0.Xauth
    /bin/xset -display $DISPLAY dpms
    echo 'Erneuter Versuch...'
    /usr/bin/xrandr -o right
fi
echo 'Stylus drehen...'
/usr/bin/xsetwacom set stylus rotate 1
echo 'Tastatur anzeigen...'
/usr/bin/cellwriter &


/etc/acpi/x41_up.sh

#!/bin/sh
#/etc/acpi/x41_up.sh
echo 'Bildschirm drehen...'
if [ "`/usr/bin/xrandr -o normal -v | grep -i 'randr' | wc -l`" -ne "1" ]
then
    echo '!! Fehler !!'
    export DISPLAY=":0.0"
    export XAUTHORITY=/var/lib/gdm/\:0.Xauth
    /bin/xset -display $DISPLAY dpms
    echo 'Erneuter Versuch...'
    /usr/bin/xrandr -o normal
fi
echo 'Stylus drehen...'
/usr/bin/xsetwacom set stylus rotate 0
echo 'Tastatur ausblenden'
killall cellwriter


Nun müssen noch die Rechte der Skripte angepasst werden:

# chown root.root /etc/acpi/x41_down.sh
# chmod 755 /etc/acpi/x41_down.sh
# chown root.root /etc/acpi/x41_up.sh
# chmod 755 /etc/acpi/x41_up.sh


Damit die Skripte beim Eintreten des Events ausgeführt werden, müssen im events/-Ordner noch Einstellungen in Dateien vorgenommen werden. Legen wir dazu zwei Dateien an:

x41-down

event=ibm/hotkey HKEY 00000080 00005009
action=/etc/acpi/x41_down.sh


x41-up

event=ibm/hotkey HKEY 00000080 0000500a
action=/etc/acpi/x41_up.sh


Der ACPI-Daemon muss neugestartet werden, um die Änderungen zu übernehmen:

# /etc/rc.d/acpid restart


Nun sollte sich der Bildschirm nach dem Drehen automatisch anpassen. Hier wird automatisch die Cellwriter-Tastatur gestartet und anschließend wieder beendet.

Extra-Knöpfe

Auf dem Bildschirm des X41t's befinden sich noch diverse Knöpfe, die man belegen kann:

  • vor/zurück (blättern)
  • ENTER
  • ESC
  • Dreh-Knopf (zum Drehen des Bildschirms)
  • Menü-Knopf
  • Sitzung sperren-Button

Natürlich kann man aber die auch Tasten belegen, wie man das möchte.

...

Hier wird noch gearbeitet!

GRUB-Splash

Lenovo GRUB-Splash

Ein grafischer GRUB mit schicken IBM Thinkpad-Logo wäre doch schick, oder? Hierfür muss zuerst das Paket grub-gfx installiert werden:

# pacman -S grub-gfx

Nun muss der Splashscreen importiert werden:

# cd /boot/grub
# wget http://www.schultz-net.dk/downloads/grub/lenovo.xpm.gz

In der Konfigurationsdatei von GRUB (/boot/grub/menu.lst) muss nun eine Zeile abgeändert werden:

timeout     5
default     0
color       light-blue/black light-cyan/blue
splashimage /boot/grub/lenovo.xpm.gz

GRUB muss anschließend neu installiert werden:

# grub-install /dev/sda

Hinweis: Windows-Installation müssen ggf. nach diesem Vorgang neu in der GRUB-Konfigurationsdatei definiert werden.


Weitere GRUB-Splashes gibt es hier: http://www.schultz-net.dk/grub.html

System-Tuneups

Nicht benötigte Daemons

Je nachdem wie man das Notebook benutzt, kann man den ein oder anderen Daemon in der /etc/rc.conf deaktivieren:

  • network - Netzwerkkonfiguration aus der /etc/rc.conf
  • netfs - network file system, nfs.
  • crond - Wenn keine geplanten Tasks benötigt werden
  • syslog-ng - Wenn keine Logfiles benötigt werden - Achtung!, bei Fehlerfällen kann so nicht mehr rekonstruiert werden


Swappiness

Wenn der Arbeitsspeicher des Notebooks groß genug ist, kann man die Swappiness auf 0 setzen, die Swap (Auslagerungsdatei) wird dann nur verwendet, wenn der RAM zu Überlaufen droht. Ansonsten nicht. Das bringt mehr Speed ein, da der RAM um einiges schneller ist, als die Festplatte. Hierfür muss lediglich die Datei /etc/sysctl.conf um folgende Zeile erweitert werden:

vm.swappiness=0


Pacman-Cache

Nach der wilden Installationsorgie empfiehlt es sich, den Pacman-Cache zu löschen. Dort befinden sich noch viele temporäre Dateien, die unnötigen Speicherplatz belegen:

# df -h && pacman -Scc && df -h
Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
/dev/sda2             8,3G  2,7G  4,8G  40% /

Puffer-Verzeichnis: /var/cache/pacman/pkg/
Möchten Sie ALLE Pakete aus dem Puffer entfernen?  [j/N] j
Entferne alle Pakete aus dem Puffer... Fertig.
Datenbank-Verzeichnis: /var/lib/pacman/
Möchten Sie ungenutzte Repositorien entfernen?  [J/n] j
Datenbank-Verzeichnis wurde aufgeräumt

/dev/sda2             8,3G  2,6G  5,4G  33% /