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" wurde unter SuSE Linux 8.1 durchgeführt, sollte aber prinzipiell auch unter anderen Linux-Distributionen möglich sein.
Die alte Anleitung zu SuSE Linux 7.3 mit dem gleichen Laptop findet ihr hier.
Speziell auf diese SuSE-Distribution ausgerichtete Einstellungen werden durch das Symbol 8.1 markiert.

Einige technische Daten des von mir genutzeten Gerätes (Es gibt verschiedene Modelle der Celsius H Serie):
  • Intel Mobile Pentium III (Tualatin 1.13GHz mit SpeedStep) auf
  • Board mit Intel 830EM Chipsatz bis 1GB RAM
  • nVidia Quadro2 Go, 4xAGP - Grafikchip mit
  • 64MB DDR-Videospeicher für
  • 15" UXGA LCD_TFT, Auflösung 1600x1200x32 und
  • externer DVI-Ausgang mit Adapter für VGA
  • ESS Allegro-Soundcard
  • IrDA 1.1 FIR Infrarot link (4 MB/s)
  • 2xTyp2 bzw. 1xTyp3 PC-Card-Plätze
  • 2xUSB, 1xseriell, 1xparallel Port(s)

Zu weiteren technischen Daten des Gerätes sei an dieser Stelle auf die zugehörige Webseite des Herstellers verwiesen.
Basisinstallation: Das Notebook wurde ausgeliefert mit einer Dualinstallation von Windows 2000 oder NT. Nachdem sich der Nutzer entschieden hat (für Win2000 :-) ) erfolgt eine Installation des Systems auf einer primären Partition (ca. 4GB) der eingebauten Platte (30GB im Testgerät).
Somit bleibt noch genügend freier Platz auf dem Rest der Platte für den Pinguin.

Nach dem Booten von der Linux-DVD/CD (F12 beim Bootvorgang drücken und dann den DVD-Schacht auswählen) sollte die Linuxgrundinstallation im Prinzip problemlos möglich sein, wenn man folgendes beachtet:
Mit dem mitgelieferten Kernel (8.1 2.4.19-SuSE-4GB) gibt es Probleme bei der Erkennung der Funktastatur als USB-HID. Man sollte das bei der gewählten Distribution testen. Die Benutzung der Funktastatur wird durch die Übersetzung des Kernels wie unter Installation des Kernels (2.4.19-SuSE) 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. War unter 8.1 7.3 noch die Deaktivierung von APM nötig, so ist dies mit 8.1 nicht mehr der Fall. Nach dem Booten von der DVD oder der CD kann man also getrost den ersten Punkt zur grafischen Installation auswählen. Eine Auflösung von 1024x768 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.

Die Installation kann nun erst mal weiter durchschritten werden:
Beispiel 8.1 8.1 mit Yast2: Tastaturbelegung (Deutsch), Zeitzone (hier muß man noch festlegen, ob die BIOS-Uhr mit Ortszeit oder GMT-Zeit läuft.), Neuinstallation, Festplatte partitionieren. 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 sollte man an dieser Stelle noch nicht durchführen, da die Module für den X-Server von nVidia nicht auf dem Installationsmedium vorhanden sind. Sie sind später per Online-Update oder übers Netz zu besorgen

Hardwarekonfiguration bei Abschluß der Installation (wird bei 8.1 8.1 automatisch erkannt). Falls die Hardware nicht automatisch erkannt wurde:
Netzwerkkarte: Realtek RTL-8139 Modul: 8139too Siehe Abschnitt:
Netzwerk
Soundkarte: ESS1988 Allegro-1 ALSA-Modul: maestro3 Siehe Abschnitt:
Soundkonfiguration
Diese Konfiguaration wird bei der Installation in /etc/modules.conf eingetragen und bleibt somit auch nach dem Übersetzen von Kernel und Soundkarten-Treiber erhalten.

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. Wer sich einen neueren Kernel übers Netz besorgen möchte (der Kernel 2.4.19-SuSE hat sich bei mir jedoch bewährt), muß zuerst die Netzwerkkonfiguration durchführen:
Netzwerkkonfiguration: Unter 8.18.1 ist schon alles erledigt.

Andernfalls ist diese Einstellung distributionsabhängig. Meist funktioniert es, wenn man in /etc/modules.conf einträgt:
    alias eth0 8139too
    depmod -a

Dann besorgt man sich z.B. per dhcpcd vom DHCP-Server, eine IP-Nummer :
    ifconfig eth0
    /sbin/dhpcd eth0

oder man vergibt eine feste IP-Nummer mit dem Konfigprogramm der Distribution.

Nun kann man sich den Kernel, z.B. mittels eines WebBrowsers für die Konsole, herunterladen. Falls w3m installiert ist:
    w3m http://www.kernel.org
 
Kernel übersetzen: Getestet wude die Installation mit dem Kernel 2.4.19-SuSE, sollte aber auch mit dem im Netz verfügbaren unmodifizierten Kernelquellen 2.4.19 oder neuer möglich sein.

Soll ein Kernel aus dem Netz verwendet werden, so ist die Kerneldatei linux-2.4.XX.tar.bz2 (z.B. aktuelle Version linux-2.4.20 bei kernel.org verfügbar) durch Aufruf von:
    cd /usr/src
    mv linux linux.old
    tar xjf $DOWNLOADPATH/linux-2.4.XX.tar.bz2
zu entpacken. Außerdem empfehle ich noch folgende Schritte:
    mv linux linux-2.4.XX
    ln -s linux-2.4.XX linux

8.1 Bei Verwendung der SuSE-Kernel-Quellen befinden diese sich an der richtigen Stelle.

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


Unter 8.18.1 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. 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 [M]
    • 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]
Der Kernel-Sound-Support ist für die enthaltene Soundkarte noch experimentell, deswegen empfehle ich die ALSA-Treiber, die entweder zur Distribution mitgeliefert werden oder über das Netz zu beziehen sind (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 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.1 8.1 sind hierfür in der Datei /etc/sysconfig/kernel die benötigten Module als INITRD_MODULES="reiserfs ..." anzugeben und dann
    /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.1 8.1 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 (siehe APM und ACPI) ist ebenfalls anzugeben. 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 Partiotionierung die Partition angegeben werden, die die initrd-Datei enthält.

Sollte als Bootmanagers LILO genutzt werden, so ist /etc/lilo.conf entsprechend zu editieren und lilo aufzurufen.

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
8.18.1: Unter der Datei /etc/sysconfig/hotplug wird die Reihenfolge in der HOTPLUG_USB_HOSTCONTROLLER_LIST vorgegeben. Hier sollte man das Modul "usb-uhci" an die vorderste Position stellen)

8.18.1: Da sich jetzt der Typ der Maus geändert hat, wird bei jedem Booten durch die SuSE-Hardwarerkennung eine geänderte Maus erkannt. Speichern der aktuellen Einstellung hilft nicht, wahrscheinlich haben diese Scripts einen Bug. Abhilfe: man entferne das hierfür verantwortliche Startscript, also
    rm /etc/rc.d/rc*.d/*hwscan*


Hardware,wie PC-CARD(PCMCIA)-Controller, serielle und parallele Schnittstellen, sollten jetzt problemlos funktionieren.
Das jetzt der Sound ggf. nicht funktioniert, liegt daran, daß die ALSA-Module bei der Kernelinstallation gelöscht wurden oder nicht mehr zum Kernel passen. Doch dazu später mehr, erst folgt die Grafik:
XFree86 4.xx: Die Installation von XFree86 wurde mit den Treibern von nVidia durchgeführt. Da diese Treiber nicht auf Distribtionen enthalten sind, muß man sie entweder von www.nvidia.com selber laden oder unter 8.1 Online-Update beziehen.

Die Installation wurde mit den RPM-Paketen von nVidia in der Version "1.0-3123" durchgeführt. Zum Zeitpunkt dieses Artikels ist bereits die Version "1.0-4192 für Linux IA32" verfügbar, die ich aber noch nicht getestet habe. Trotzdem ist ihre Benutzung sicherlich problemlos möglich.

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
  • xf86
  • xloader
  • xshared
  • xdevel
  • xf86tools
  • xf86_glx
  • xmodules
  • XFree86-compat-libs

Für die Installation eines beschleunigten X-Servers werden also die nur bei nVidia verfügbaren Pakete NVIDIA_kernel und NVIDIA_GLX benötigt.

Wichtig: Die bei nVidia vorhandenen binären Pakete für spezielle Distributionen sind auf die Kernelversion abgestimmt, die bei dieser Distribution verwendet wird. Für einen selbst installierten Kernel benötigen man aber unbedingt die Quellpakete.

Deshalb Download von:
    NVIDIA_GLX-1.0-x.tar.gz
    NVIDIA_kernel-1.0-x.tar.gz

Zum Zeitpunkt der Erstellung $Date: 2003/06/06 14:11:20 $ dieses Dokuments waren folgende Versionen verfügbar:
  NVIDIA_kernel-1.0-4191.tar.gz
  NVIDIA_GLX-1.0-4191.tar.gz

Anschließend sind die Pakete zu entpacken und zu installieren:
    tar xzf NVIDIA_kernel-1.0.x.tar.gz
    cd NVIDIA_kernel-1.0.x
    make
    cd ..
   
    tar xzf NVIDIA_GLX-1.0-x
    cd NVIDIA_GLX-1.0-x
    make


Wer eine unterstützte Distribution hat, kann auch die RPM-Pakete benutzen, muß dann aber den zur Distribution gehörenden Kernel benutzen. Für 8.18.1 mit Kernel 2.4.19-SuSE gibt es
  NVIDIA_kernel-1.0-4191.suse81.i586.rpm
  NVIDIA_GLX-1.0-4191.suse81.i586.rpm
welche herunterzuladen sind und mittels
  rpm -Uhv NVIDIA*.suse81.i586.rpm
installiert werden.

Zur Konfiguration muß das File /etc/X11/XF86Config angepaßt werden.
Unter 8.1 8.1 kann sax2 leider nicht zur Konfiguration herangezogen werden; es erkennt den Screen nicht richtig und erzeugt selbst bei vorgeschriebenen Treibermodul, Bildschirm usw. eine Konfiguration, bei der beim Start des X-Servers über fehlerhafte Modelines geklagt wird.

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, etc. einfügen. Weitere Informationen zur Konfigurationen für den nVidia-Treiber (z.B. TwinView) findet man in der mitgelieferten Dokumentation (README im Unterverzeichnis usr/share/doc des Paketes NVIDIA_GLX-1.0-x.tar.gz) oder als PDF-File bei nVidia.

Abschließend muß noch der X-Server gewählt werden. Unter 8.18.1 erfolgt dies durch Anlegen eines symbolischen Links auf den X-Server. Für andere Distributionen gibt es ähnliche Lösungen:
    cd /var/X11R6/bin
    ln -s /usr/X11R6/bin/XFree86 X

was aber ggf. schon bei der Installation mit den mitgeliferten NV-Treibern erfolgt ist. 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". Beispielwert: bei voller Bildschirmauflösung 1600x1200x24 eine Rate von über 40fps. Nicht schlecht für einen Laptop!

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.18.1: 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 die ALSA-Treiber. Getestet wurde es mit alsa-driver-0.9.0rc6 von www.alsa-project.org. Unter 8.18.1 reichen auch die mitgelieferten Treiber aus den Paketen:
  • alsa-0.9.0.cvs20020903
  • 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.

Für die selbständige Überstzung sollten folgende Schritte funktionieren:
Die entsprechenden Pakete von der Webseite laden, anschließend:
    tar xjf alsa-driver-0.9.*2
    tar xjf alsa-lib-0.9.*2
    cd alsa-lib*
    export CFLAGS=-O2
    ./configure --with-cards=maestro3
    make
    make install
    cd ../alsa-driver-0.9*
    ./configure --with-cards=maestro3
    make
    make install
("export CFLAGS=" falls bash, unter tcsh "setenv CFLAGS ")

Sollte das Konfigurationsprogramm der Distribution (8.1 Konfiguration über yast2 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.19 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.1 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 der Audruf
  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. Allerdings ist mit dem SuSE-Kernel 2.4.19 die ACPI-Funktionalität unter Linux noch eingeschränkt, da nur erkannt wird, ob der Einschaltaster gedrückt wurde oder das Display heruntergeklappt wird (HID-Close).

Wer sich jedoch nicht scheut, einen anderen Kernel, z.B. den Standardkernel 2.4.20 mit dem acpi-Patch oder den Entwicklerkernel 2.5.63 o.h. einzusetzen, der kommt auch in den Genuß der ACPI-Möglichkeiten. Unter ACPI funktioniert die Akkuanzeige, Suspend to Ram, Abfrage LID Close usw. Außerdem sollte 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.
APM funktioniert bereits mit dem Kernel 2.4.19 problemlos. In der ursprünglich ausgelieferten BIOS-Version gab es Probleme mit dem Suspend-To-RAM-Mode, diese sind jedoch durch ein neues BIOS behoben. Aktuell nutze ich BIOS Ver 1.13 vom 26.04.2002.

Es kann der Akkuladestand und eine angeschlossene Stromversorgung 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 APM 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_1.php,v 1.3 2003/06/06 14:11:20 wefel Exp $