Fujitsu / Siemens Celsius Mobile H

Einrichtung unter Linux

Entwicklung durch den Lehrstuhl Technische Informatik der Martin-Luther-Universität Halle

(English eng )


Vorwort: Die hier beschriebene Anleitung zur Installation des Laptops
"Fujitsu/Siemens Celsius Mobile H"
beschreibt die Schritte für eine Installation unter SuSE Linux 8.2. Sie sollte aber prinzipiell auch unter anderen Linux-Distributionen möglich sein. Hier werden jedoch auf die Besonderheiten der Installation vom Kernels 2.4.20-SuSE und dem Einsatz von ACPI zum Powermanagement näher erläutert


Deshalb sei an dieser Stelle auf die Beschreibung zur Installtion von SuSE Linux 8.1 verwiesen, da alle hier nicht explizit erläuterten Schritte bereits dort beschrieben wurden.

Speziell auf diese SuSE-Distribution ausgerichtete Einstellungen werden durch das Symbol 8.2 markiert.

Basisinstallation: Die Grundinstallation sollte wie unter SuSE 8.1 problemlos möglich sein, wenn man folgendes beachtet:
Der mitgelieferten Kernel (8.2 2.4.20-SUSE-4GB) hat Probleme bei der Erkennung der Funktastatur als USB-HID. Die Benutzung der Funktastatur wird durch die Übersetzung des Kernels wie unter Installation des Kernels (2.4.20) beschrieben, möglich. Für die Installation ist sicherlich der Anschluß einer externen PS/2-Tastatur (und Maus über das mitgelieferte Splitkabel) oder das Verbindungskabel der Funktastatur zum PS/2-Port erforderlich.

Nach dem Booten von der DVD oder der CD kann man den ersten Punkt zur grafischen Installation auswählen. Eine Auflösung von 1024x768 oder höher bei der Installation ist möglich!

Hinweis: Sollte bei der Hardwareerkennung oder Abfrage der USB-Geräte bei der Installation diese hängen bleiben, so lag das sicherlich daran, daß man das Touchpad auf der Funktastatur berührt hat. Dieser Fehler tritt unter bestimmten Bedingungen bei bei der Installation auf. Deswegen sollte man nach dem Booten Funk-Tastatur und -Touchpad erst wieder nach dem Starten des USB-Managers benutzen.

Bei der Paketauswahl sollte man darauf achten, daß für die spätere Installation des Kernels der Compiler benötigt wird, also Pakete der Serie dev und die Kernelquellen des Linux-Kernels. Unter 8.18.1 ist hierzu das Paket kernel-source anzuwählen. Als Bootmanager kann GRUB ruhig in den MBR installiert werden, es sind aber ggf. noch zusätzliche Bootparameter notwendig. Dies wird im Abschnitt APM und ACPI und bei der Kernelinstallation noch genau erläutert.

Die Konfiguration des X-Servers kann man bei der Installation durchführen, es wird dann das nv genutzt, welches auch bis zu der möglichen Auflösung von 1600x1200 Punkten funktioniert, jedoch keine 3D-Beschleunigung bietet. Hierfür sind die Treiber den X-Server von nVidia zu besorgen. Dazu später mehr!

8.1SuSE 8.2 nutzt ein Script, was beim Booten auf neue Hardware überprüft. Da sich die Hardware am Laptop selten ändert und dieses Script ab und zu für Probleme sorgt, empfehle ich dessen Deaktivierung. Hiezu genügt der Aufruf:
insserv -r hwscan

Somit ist der erste Teil der Installation durchlaufen, das System kann erst mal gestartet werden und als nächstes wäre ein neuer Kernel zu übersetzen.
 
Kernel übersetzen: Getestet wude die Installation mit dem Kernel 2.4.20-SuSE, sollte aber auch mit dem im Netz verfügbaren unmodifizierten Kernelquellen 2.4.21 oder neuer möglich sein, wobei jedoch in diesem Fall die ACPI-Patches für das Powermanagement eingespielt werden sollten!

Soll ein Kernel aus dem Netz verwendet werden, so erfolgt dies und die Grundeinstellung wie unter der Kernelinstallation von SuSE 8.1 beschrieben. Anschließend in das Verzeichnis /usr/src/linux wechseln. Hier muß eine Datei modifiziert werden, um die Arbeit mit der Funktastatur zu ermöglichen.
Dazu ist mittels eines Editors die Datei "drivers/usb/usb-uhci.c" zu modifizieren, indem die Zeile
    #define CONFIG_USB_UHCI_HIGH_BANDWIDTH
durch Voranstellen von zwei "//" auskommentiert wird, also
   // #define CONFIG_USB_UHCI_HIGH_BANDWIDTH


Für schnellere Geräte (P4-2GHz) ist außerdem noch folgende Änderung notwendig:
   #define USE_CTRL_DEPTH_FIRST 1

Unter 8.28.2 sind außerdem durchzuführen:
    cp /boot/vmlinuz.autoconf.h \
      /usr/src/linux/include/linux/autoconf.h
    cp /boot/vmlinuz.version.h \
      /usr/src/linux/include/linux/version.h

Anschließend ist durch Aufruf von:
    make menuconfig
der Kernel zur Übersetzung zu konfigurieren. Wer der hier angegebenen Konfigurationsdatei vertraut, kann diese einfach laden und anschließend:
    make dep; make clean;
    make bzImage; make modules; make modules_install
aufrufen.

Zur Info: Hier wurde eine FreeS/WAN-Konfiguration für VPN-Connections durchgeführt. Um dies bei dem Übersetzen ebenfalls durchzuführen müssen auch die FreeS/WAN Kernel-Modul-Quellen aus dem Paket "km_freeswan" installiert sein. Doch dazu wäre ein extra Anleitung notwendig, die diesen Rahmen sprengt. Wen das interessiert, der sollte Kontakt zu mir aufnehmen. Wer sich das Übersetzen sparen möchte, kann auch die von SuSE mitgelieferten Module nutzen, da an diesen Modulen keine Änderung durchgeführt wurden. Hierzu ist vor dem Aufruf von
 make modules_install
das Verzeichnis /lib/modules/2.4.20-4GB/kernel/net/ipsec/ zu sichern und anschließend zurück zu kopieren.


Natürlich kann man auch die einzelnen Punkte der Konfiguaration selber vornehmen, wichtig ist aber folgende Auswahl:
  • Input Core Support [M]
    • Keyboard support [M]
    • Mouse support [M]
    • Event Interface Support [M]
  • Support for USB [M]
    • UCHI (Intel PIIX4,...) [M]
    • USB Human Interface Device (full HID) support [M]
    • USB HIDBP Keyboard [ ] AUS
    • USB HIDBP Mouse [ ] AUS


Für die Verwendung eines Brenners ist auch die SCSI-Emulation einzubinden, entweder direkt oder als Modul (siehe initrd in diesem Abschnitt)
  • ATA/IDE/MFM/RLL support
    • IDE, ATA and ATAPI Block devices
      • SCSI emulation support [X] oder [M]
Kernel-Sound-Support ist nicht notwendig, da sich die ALSA-Treiber, die entweder zur Distribution mitgeliefert werden oder über das Netz zu beziehen sind, als funktional erwiesen haben und auch zusätzliche Features (SPDIF) ermöglichen. (siehe "Sound einreichten")

Nach dem Übersetzen findet man im Unterverzeichnis "arch/i386/boot" den neuen Kernel bzImage, der wie die Datei System.map aus dem Linux-Quellverzeichnis nach /boot/bzImage und /boot/System.map-2.4.20-4GB gehört.

Sollte man als Filesystem reiserfs o.a. verwendet haben und die Unterstützung dafür nicht direkt in den Kernel compiliert haben, sondern bei der Konfiguration zum Übersetzen als Modul ausgewählt haben, benötigt man noch ein "initrd" - Container, der die benötigten Module zum Bootzeitpunkt bereit stellt. Hierfür bieten die verschiedenen Distributionen unterschiedliche Lösungen an, wer das nicht machen will, muß halt die Unterstützung für das Filesystem direkt in den Kernel compilieren
  • File Systems
    • Reiserfs support [X] (nicht [M])
    • ...
Unter 8.2 8.2 sind hierfür in der Datei /etc/sysconfig/kernel die benötigten Module als INITRD_MODULES="reiserfs" anzugeben und anschließend
    /sbin/mk_initrd -k bzImage -i initrd.bzImage
aufzurufen. Dies erzeugt im Verzeichnis /boot eine entsprechende initrd.bzImage-Datei, die alle in /etc/sysconfig/kernel angegebenen Module zum Bootzeitpunkt bereit stellt. Diese Datei muß natürlich auch vom Kernel gefunden werden. Dies wird durch die Bootmanagerkonfiguration sicher gestellt, die als nächstes durchzuführen ist.

Nun ist also der Bootmanagers zu konfigurieren. Unter 8.2 8.2 wird standardmäßig GRUB installiert. Hier ist die Konfigurationsdatei /boot/grub/menu.lst. (ein Beispiel), entsprechend anzupassen, also der neue Kernel bzImage aufzunehmen. Der alte Kernel sollte, für den Fall das man etwas falsch gemacht hat, auch auswählbar sein.
Der Kernelparameter
    acpi=off
für das Powermanagement kann hinzugenommen werden, wenn man z.B. vmware nutzt und auf ACPI verzichten möchte. Mehr dazu unter APM und ACPI. Der Rest ist den eigenen Bedürfnissen anzupassen. Wer einen Brenner eingebaut hat, benötigt auch den Parameter
    hdc=ide-scsi
oder
    hdb=ide-scsi
oder beides, je nachdem ob der Brenner im rechten (hdc) oder im linken (hdb) Schacht eingebaut ist. Nicht zu vergessen ist auch die Angabe der verwendeten initrd-Datei über den Paramter
    initrd (hd0,5)/boot/initrd.bzImage
Hierbei ist (hd0,5) die zweite logische Partition in der erweiterten Partition der ersten IDE-Festplatte, also /dev/hda6. Hier muß dann entsprechend der eigenen Partitionierung die Partition angegeben werden, die die initrd-Datei enthält.

Folgende Änderungen sind noch für die Unterstützung der Funktastatur notwendig: 8.28.2: Unter der Datei /etc/sysconfig/hotplug wird die Reihenfolge der für das USB-HostcontrollerInterface zu ladenden Module in der Datei HOTPLUG_USB_HOSTCONTROLLER_LIST vorgegeben. Hier sollte man das Modul "usb-uhci" an die vorderste Position stellen.
Außerdem sind folgende Einträge vorzunehmen: HOTPLUG_USB_USE_USBMODULES="no" und aus HOTPLUG_USB_STATIC_MODULES ist der Eintrag mousedev zu entfernen.
Nach dem Booten sollte nun sollte auch die Funktastatur benutzt werden können. Falls nicht, so ist zu überprüfen, ob der "UHCI"-Treiber und nicht "UHCI Alternate Driver" verwendet wird, also das Modul "usb-uhci" und nicht "uhci" geladen wurde:
 modprobe | grep uhci


Hardware, wie PC-CARD(PCMCIA)-Controller,serielle und parallele Schnittstellen, sollten jetzt problemlos funktionieren. Bei den PCMCIA-Karten gibt es ggf. noch das Problem, dass diese beim Einstecken nicht automatisch erkannt werden und man erst mauell via "cardctl insert" die Karten aktivieren muss. Dann sollte unter /etc/sysconfig/pcmcia von "Internal" auf
PCMCIA_SYSTEM="external" umgestellt werden.

Als nächstes folgt nun die Grafik mit 3D-Beschleunigung:
XFree86 4.3.0: Die Installation von XFree86 wurde mit den Treibern von nVidia durchgeführt. Da diese Treiber nicht auf Distribtionen enthalten sind, sind sie von www.nvidia.com zu laden. Die Installation wurde mit den Paket NVIDIA-Linux-x86-1.0.4363.run durchgeführt.

Man kann auch mittels der NV-Treiber, die mitgeliefert werden, den Bildschirm mit einer Auflösung bis zu 1600x1200 Punkten bei 16 Bit Farbtiefe betreiben, aber in diesem Fall ist nur eine softwaremäßige OpenGL-Beschleunigung verfügbar, welches ist nicht empfehle. Deswegen sollte man die Hardware-Beschleunigung mit den GLX-Treibern von nVidia aktivieren.

Grundsätzlich sind erst mal die XF86-Pakete der Distribution zu installieren. Hierzu gehören
  • XFree86
  • XFree86-server
  • XFree86-libs
  • XFree86-compat-libs
  • XFree86-devel
  • XFree86-GLX
  • XFree86-fonts-scalable
  • XFree86-fonts-75dpi
  • xf86tools

Für die Installation eines beschleunigten X-Servers wird nun die Datei NVIDIA-Linux-x86-1.0.4496-pkg2.run benötigt.

Anschließend ist nun zu installieren. Hierzu ist als root in der Console das System in den Runlevel 3 (ohne Grafik) zu bringen und das Paket zu installieren: (für bash-Syntax)
    init 3
    export IGNORE_CC_MISMATCH=1
    sh NVIDIA-Linux-x86-1.0.4496-pkg2.run
Die Fragen sind entsprechend zu bestätigen.

Zur Konfiguration muß das File /etc/X11/XF86Config angepaßt werden.
Unter 8.2 8.2 kann man sax2 zwar verwenden, aber das erzeugte Konfigfile enthält nicht alles Gewünschte, z.B. externer Monitor, gleichzeitig USB-Maus + Touchpad via Kabel oder Funk, usw.
Deswegen findet man hier eine angepaßte Konfigurationsdatei (sollte auch mit anderen Distributionen funktionieren). Diese also nach /etc/X11/XF86Config kopieren und ggf. die Einstellungen für außen angeschlossenen Monitor, zusätzliche Maus, Grafiktabletts, einfügen oder ändern. Die angebegeben Konfigurationsdatei läuft ohne externen Monitor mit einer Auflösung 1600x1200 und mit angesteckten externen Gerät mit 1024x768 (wegen XGA-Beamer) oder 800x600. Dies kann in der Zeile
Option "MetaModes" "1600x1200, NULL; 1024x768, 1024x768; 800x600, 800x600"
angepaßt werden.
Für die Benutzung des Touchpads, für den Fall, dass die Tastatur mit dem Kabel zum Rechner verbunden wird, ist noch folgender Änderung durchzuführen:
    rm /dev/mouse
    ln -s /dev/psaux /dev/mouse


Weitere Informationen zur Konfigurationen für den nVidia-Treiber (TwinView etc.) findet man in der mitgelieferten Dokumentation (README im Unterverzeichnis /usr/share/doc/NVIDIA_GLX-1.0/) oder im Netz als PDF-File bei nVidia.

Anschließend kann der erste Servertest durch Aufruf von startx erfolgen. Über mögliche Probleme unterrichtet das Logfile /var/log/XFree86.0.log.

Zum ersten Test der OpenGL-Beschleunigung durch nVidia_GLX nehme man das Programm "gears". Vergleichswert: bei voller Bildschirmauflösung 1600x1200x24 bei meinem Laptop der ersten Generation eine Rate von über 40fps.

Automatisch beim Booten wird der X-Server gestartet, wenn das System im Runlevel 5 läuft. (Datei /etc/inittab). Nach der Installation der NVidia-Treiber kann dies auch durch Aufruf von init 5 erreicht werden.

Noch zu beachten ist, dass nach jeder Installation der Kernelmodule via make modules_install der Treiber von NVidia erneut installiert werden muß.

Touchpad: Wer das soweit probiert hat, wird sicherlich merken, daß das Touchpad nicht wie gewünscht funktioniert! Dies liegt nicht etwa daran, daß ein falscher Treiber gewählt wurde, sondern daran, daß es ein Synchronisationsproblem zwischen dem Touchpad und dem HID-Treiber gibt.

Zur ersten Abhilfe reicht es, wenn man die Funk-Tastatur kurzzeitig ausschaltet.
Hierzu existiert ein kleiner Schalter an der Unterseite der Tastatur! Also kurz Aus- und wieder Einschalten und schon klappts auch mit dem Touchpad!
Das ist natürlich nicht die eleganteste Variante und deshalb hier noch eine Möglichkeit, ohne den Schalter zu betätigen. Durch mehrfaches erneutes Laden der USB-Module läßt sich eine Synchronisation herbeiführen. Wer das automatisieren möchte, hier ein Startscript, welches in /etc/rc.d/rc[2,3,5].d/ möglichst als letztes eingebunden werden sollte.
Unter 8.28.2: Das File nach /etc/rc.d kopieren und die Rechte mittels
  chmod 744 /etc/rc.d/celsiusHFix
ändern und anschließend
  insserv -d /etc/rc.d/celsiusHFix
aufrufen.
Sound einrichten: Hierzu benötigt man nur ALSA-Treiber. Getestet wurde es mit alsa-0.9.5-0.pm.0.i586.rpm von www.links2linux.org und den unter 8.28.2 mitgelieferten Treiber aus den Paketen:
  • alsa-0.9.0.cvs20030217-23
  • k_deflt
Das Paket k_deflt ist der mitgelieferte Kernel und zugehörige Module. Die darin enthaltenen bereits übersetzten alsa-Module können verwendet werden. Beides funktionieren problemlos.

Sollte das Konfigurationsprogramm der Distribution (8.2 Konfiguration über yast2 problemlos möglich) nicht zur Konfiguration der ALSA_Treiber genutzt werden können, so ist alsaconf aufzurufen und die erkannte "maestro3"-Karte auszuwählen. Die Konfiguration wird dann in /etc/modules.conf gespeichert.
Infrarot und IrDA:
Die Infrarot-Schnittstelle funktioniert als SIR-Gerät, wenn im BIOS des Rechners die Interstützung für IrDA auf SIR eingestellt wurde. In der momantanen Kernelversion 2.4.20-SuSE wird die Schnittstelle nur im SIR-Mode unterstützt.

In der Datei /etc/modules.conf folgendes einstellen:
  # IrDA
  alias char-major-161 ircomm-tty
  alias tty-ldisc-11 irtty

Unter 8.28.2 läßt sich dann Infrarot aktivieren, indem man zuerst in /etc/sysconfig/irda einträgt:
  IRDA_PORT="/dev/ttyS1"
und anschließend aufruft:
  rcirda start.
Soll es bei jedem Start aktiviert werden, so genügt ein Aufruf von
  insserv irda .

Hier wurde der IrDA-Port auf ttyS1 eingestellt, es sind natürlich andere Einstellungen möglich. Unter anderen Systemen ist der IrDA-Port mittels des Befehls
/usr/sbin/irattach /dev/ttyS1 -s
zu starten.
Modem: Mit dem eingebauten Winmodem gab es bisher wenig Erfolg zu verzeichnen. Zwar lies sich nach vielen Test eine Verbindung aufbauen, diese war jedoch weder stabil noch schnell. Wer ein Modem unter Linux auf diesem Laptop benutzen möchte, der wird leider nicht auf die Anschaffung eines zusätzlichen PCMCIA-Modems verzichten können. Das eingebaute Winmodem macht seinem Namen Ehre und läuft nur unter Windows und auch dort nur langsam...
APM und ACPI,
Bioseinstellungen::
Das Rechnerbios unterstützt sowohl die ACPI als auch die APM-Funktionen für das Powermanagement. Unter ACPI funktioniert die Akkuanzeige, Abfrage LID Close uvm. Außerdem kann man unter http://www.kraftvoll.at/software/ das Programm "autospeedstep" herunterladen, dessen Sinn jedem, der lange nur mit Akku arbeiten muß und deshalb bisher neidisch zur M$-Software blickte, sicher klar ist. Mein besonderer Dank für alle Tipps zu ACPI an Jonas Koch.

Zur Aktivierung der ACPI-Unterstützung reicht unter 8.28.2
 insserv acpid
und wer es noch genau konfigurieren möchte, die Anpassung in der Datei /etc/sysconfig/powermanagement.
Hat man irgendwann das Gefühl, der Rechner läuft viel zu langsam, so ist die Datei /var/lib/acpi/lid_state zu überprüfen. Steht hier CLOSE obwohl das Display geöffnet ist, so reicht es die Datei zu löschen, das Display zu schließen und wieder zu öffnen und schon sollte man die gewohnte Performance haben. Die ACPI-Information findet man unter /proc/acpi, eine genauere Beschreibung unter acpi.sourceforge.net

Leider gibt es momentan noch ein Problem bei der Verwendung von ACPI und VMware. Eine Lösung ist ohne Änderung in den ACPI-Quellen nicht möglich und auf Seiten von VMware gibt es auch nichts positives dahingehend zu berichten. Also Quellen ändern. Ich hab's noch nicht getan, aber wen's interessiert: [ACPI] RE: Processor driver bug? (was ACPI patches and Vmware)

APM dagegen funktioniert bereits mit dem Kernel 2.4.19 problemlos. Hier geht auch VMware und Suspend-To-RAM, allerdings ist der Stromverbrauch im Ruhemodus immer noch höher als unter Verwendung von ACPI. In der ursprünglich ausgelieferten BIOS-Version gab es noch Probleme, diese sind jedoch durch ein neues BIOS behoben. Aktuell nutze ich BIOS Ver 1.13 vom 26.04.2002. Unter APM kann der Akkuladestand angezeigt werden, sowie Suspend-To-RAM durch einmaliges Drücken des Einschalttasters aktiviert werden. Abermaliges Betätigen des Einschalters weckt den Rechner wieder auf. Das funktioniert auch unter X11 mit den nVidia-Treibern. Wer also APM anstelle ACPI nutzen möchte und im Kernel sowohl ACPI als auch APM aktiviert, der muß mittels Bootparameter acpi=off ACPI wieder deaktiviren, andernfalls wird APM nicht aktiviert! (siehe Kernelinstallation)
$Id: fs_c_h_8_2.php,v 1.4 2004/09/06 09:55:36 wefel Exp $