IBM X41t
Mit einer ressourcenschonenden Linux-Distribution ist auch das mitlerweile etwas angestaubte X41t von Lenovo ein flotter Begleiter für den Alltag.
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 Sondertasen 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)
- netcfg
- 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.
Es empfiehlt sich übrigens das community-Repository von ArchLinux zu aktivieren, da dieses viele nützliche von der Community gepflegte, Anwendungen enthält - hierfür muss eine Zeile in der /etc/pacman.conf angepasst werden:
[community] # Add your preferred servers here, they will be used first Include = /etc/pacman.d/mirrorlist
Nach dem Speichern ist eine erneute Einlesung der Pacman-Datenstände notwendig:
# pacman -Syu
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 Enwicklungsumgebung 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 gemoutet 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
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% /