handcode.de Logo

FreeBSD 5.4 auf einem IBM T22 Laptop

Erst mal die gute Nachricht: 
FreeBSD 5.4 läuft problemlos auf meinem IBM T22 und einem T21. 

Da die T2* Modelle im Grossen und Ganzen sehr gleich sind, sollten diese Installations-Anleitung auch für alle anderen Modelle der T2*-Serie gültig sein.

Die erste Version dieses Artikels war die Anleitung zur intern Installation von FreeBSD 5.2 auf einem T21.

Auch wenn FreeBSD 5.4 noch besser und einfacher auf einem T22 zu installieren ist als die 5.2 Versionen oder gar die 4* Versionen, gibt es aber auch hier ein paar Dinge die zu beachten sind.

TOP

Technische Ausstattung

  • Modell: 2647 - 8EG
  • Prozessor: P III Speed Step 900 MHz
  • Speicher [MByte]: 256
  • Festplatte [GByte]: 20
  • Diskettenlaufwerk: Einschub
  • DVD-ROM: Hitachi 8x Einschub
  • Display: TFT 14,1
  • Maus: Trackpoint 3 Tasten
  • Akku: LiIo 10.8V 3600 mAh
  • Grafik: S3 Savage MX 8MB VideoRAM
  • Sound: Crystal Clear CL 4614
  • IRDA-Chipsatz: NSC PC87338
  • Breite/Tiefe/Höhe [cm]: 30,4/24,9/3,6
  • Gewicht [kg]: 2,35
  • Interfaces: Ethernet, modem, PS/2, PCMCIA, USB, infrared, serial, parallel, S-Video-Out

Was bei den T2* schon mal sehr bequem ist, ist die Tatsache, dass einige der FN-Tasten, wie Sound /laut/leise/aus, Bildschirm-Helligkeit, Bildschirm an/aus und die schicke Tastarturbeleuchtung direkt auf Bios/Hardware Ebene arbeiten und man daher mit diesen keinerlei Probleme hat. Die funktionieren einfach!

TOP

BIOS

Auf den Info und Support Seiten des extern T22 bei IBM finden sich die techn. Beschreibungen und die BIOS/Treiber Downloads.

Die älternen BIOS Versionen der T2* Serien kommen nicht mit den extern FreeBSD-Slices (Slice ist der Begriff, den FreeBSD für MS-DOS-Partitionen verwendet) zurecht, was den Effekt hat, das nach der Installation der Boot-Sektor nicht gefunden wird, FreeBSD nach der Installation also einfach nicht bootet. Daher muss man gegebenenfalls das BIOS vor der Installation aktualisieren.

Soweit ich es verstanden habe, war das Problem, das ältere IBM-BIOSe Partitionen des Typs n * 16 + 5 als DOS hibernation partitions angenommen haben; FreeBSD slices haben den Typ 165...

Bei den neueren BIOS Versionen die man von der extern IBM Support Seite herunterladen kann besteht dieses Problem nicht mehr.

Ich habe auf meinem T22 ein BIOS mit der Kennung 16ET28WW.

Um das BIOS Update mit Hilfe des mitgelieferten IBM Tools durchführen zu können, benötigt man aber leider eine Windows Installation, damit klappt das Update dann aber problemlos und sehr einfach.

TOP

Installation

Booten und installieren von CD klappt problemlos wenn man ein aktuelles BIOS hat. 
Wenn man FreeBSd das erste mal installiert, sollte man sich vorher die extern Installations Anleitung durchlesen.

TOP

APM - ACPI

ACPI funktioniert nicht, zumindest nicht sauber, daher habe ich ACPI abgestellt und verwende APM.

Da FreeBSD 5* per Default einen Kernel mit ACPI lädt, muss man ihm das erst mal abgewöhnen, denn ACPI und APM zusammen vertragen sich nicht.

Für die entspr. Devices in /boot/device.hints folgende Einträge ändern/einfügen:

hint.acpi.0.disabled="1"
hint.apm.0.disabled="0"
hint.apm.0.flags="0x20"

Um ein Laden des ACPI Kernel Modul abzustellen und das APM Kernel Modul zu laden in /boot/loader.conf folgende Einträge einfügen:

acpi_load="NO"

Das APM Modul habe ich direkt über die Kernel-Config eingebunden.

# Power management support (see NOTES for more options)
device          apm

Damit beim "Aufwachen" aus dem Suspend-Mode die Systemzeit korrekt gesetzt wird, muss der Kernel auch folgender Option gebaut sein. In den 5.* Versionen ist diese Eintrag auch schon in der GENERIC Conf enthalten.

# Add suspend/resume support for the i8254.
device          pmtimer

In /etc/rc.conf folgende Zeilen einfügen um den apm-deamon beim booten automatisch zu starten:

apm_enable="YES"
apmd_enable="YES"

Ein suspend sowohl mit apm -z als auch über die FN-Tasten lässt das X einfrieren und es hilft nur noch ein Reboot -> Ugly

Man kann dieses Problem aber ganz einfach beheben in dem man folgende Kernel-Option in die Kernel-Conf aufnimmt:

# APM Crash verhindern
options         SC_NO_SUSPEND_VTYSWITCH

Jetzt klappen die FN-Tasten (standby, Suspend) bzw. ein apm -z aus der Konsole einwandfrei. Auch ein einfaches "Deckel zu" bringt das T22 sauber in den Suspend Mode.

Eine andere Lösung ohne den Kernel neu zu kompilieren kann folgende Änderung in /etc/apmd.conf sein.

apm_event SUSPENDREQ {
        exec "vidcontrol -s 1 > /dev/console";
        exec "sleep 1";
        exec "/etc/rc.suspend";
}

apm_event USERSUSPENDREQ {
        exec "vidcontrol -s 1 > /dev/console";
        exec "sleep 1";
        exec "sync && sync && sync";
        exec "sleep 1";
        exec "apm -z";
}

apm_event NORMRESUME, STANDBYRESUME {
        exec "/etc/rc.resume";
        exec "vidcontrol -s 9 > /dev/console";
}

Mit exec "vidcontrol -s 1 > /dev/console"; wird vor dem Suspend von dem TTY auf dem der X-Server läuft zu einem Text-TTY gewechselt.

Ein exec "vidcontrol -s 9 > /dev/console"; wechselt nach dem wake-up wieder zurück auf das X-TTY.

Was mit dieser Lösung immer noch nicht klappt (zumindest bei mir), ist ein apm -z aus dem X, aber das ist aus o.g. Grund ja klar, denn hier wird dann ja kein Wechsel des TTYs gemacht. Daher empfehle ich auf jeden Fall die oben genannte Lösung über die Kernel Option.

Ein weiteres Problem in den 5.2 Versionen im Bereich APM das ich nicht in den Griff bekommen hatte, war der Sound, der nach einem Suspend einfach nicht mehr richtig funktionieren wollte. In den 5.4 Versionen tauchte dieses Problem nicht mehr auf.

TOP

Xorg, XFree86

Der Savage Chipsatz wird von FreeBSD problemlos erkannt und unterstützt.

Ich habe als X-Server extern Xorg installiert.

Wie meist, war die XConfig ein wenig ein Gefrickel bis es sauber lief. Hier gibt es meine new-window xorg.conf zum Download.

Unter FreeBSD 5.2 hatte ich noch extern XFree86 laufen, daher hier auch noch meine new-window XF86Config zum Download.

Was ich nicht hinbekomme ist die Unterstützung von DRI (direkt rendering). Es soll gerüchteweise aber gehen. Für Hinweise wie das zu machen ist wäre ich dankbar. Wobei ich als alter Nicht-Zocker auch sehr gut ohne Leben kann :-)

TOP

Ethernet

Die integrierte Intel Ethernet-Card wird als fxp0 erkannt und arbeitet problemlos.

Ich habe in /etc/rc.conf als Default Einstellungen die ifconfig-Parameter für mein lokales Netz.

defaultrouter="192.168.10.1"
hostname="schleppy.handcode.de"
ifconfig_fxp0="inet 192.168.10.20  netmask 255.255.255.0"

Um ein schnell auf DHCP umstellen zu können, habe ich mir dafür ein kleines Script geschrieben.

#!/bin/sh

INTERFACE="fxp0";

echo "shutting down interface $INTERFACE";

/sbin/ifconfig $INTERFACE down;

sleep 3;

/sbin/dhclient $INTERFACE;

DHPID=`cat /var/run/dhclient.pid`; 

echo "startet dhclient for Interface: $INTERFACE with PID: $DHPID";

TOP

Modem

Das eingebaute Winmodem basierend auf dem Lucent LT Chipsatz kann über den ltmdm Treiber angesprochen werden.

/usr/ports/comms/ltmdm

Der Port installiert den passenden Treiber als Kernelmodul.

Nach der Installation kann dieser entweder von Hand nachgeladen werden:

kldload ltmdm

.. und / oder mit einem Eintrag in der /boot/loader.conf bootfest eingetragen werden.

ltmdm_load="YES"

Nach dem Laden (oder booten) sollte das Modem in dmesg angezeigt werden:

dmesg | grep modem

ltmdm0: Lucent Winmodem port 0x1840-0x1847 mem 0xe8121000-0xe8121fff irq 11 at device 3.1 on pci0

Jetzt noch ein entspr. Eintrag in der ppp.conf und man kann sich über ppp einwählen.

Als Device in der ppp.conf ist /dev/cual0 zu verwenden.

[...]

MyISP:
 # Einwahl mit 0 fuer's Amt "dATDT0W"
 # Ohne 0 fuer's Amt "dATDT"

 # Device fuer den ltmdm0 Winmodem Treiber
 set device /dev/cual0 

 # das 0W beim ATDT ist fuer die Amtsholung
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
	  \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT0W\\T TIMEOUT 40 CONNECT"

 set phone "08000*******"
 set authname DEIN_NAME
 set authkey **********
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR			# Add a (sticky) default route

[...]

TOP

Sound

Der Chipsatz Crystal Clear CL 4614 wird an sich problemlos unterstützt.

Als Treiber lade ich das entsprechende Modul über die Datei /boot/loader.conf

snd_csa_load="YES"

Das Default Soundmodul sound.ko wird als Abhängigkeit automatisch mit dazu geladen. Unter FreeBSD 5.2 hiess das noch snd_pcm.ko.

Der Befehl kldstat zeigt einem an, ob die gewünschten Module auch wirklich geladen wurden, die Ausgabe sollte so in de Art aussehen:

jg$ kldstat
Id Refs Address    Size     Name
 1    8 0xc0400000 374968   kernel
 2    2 0xc0775000 86b0     snd_csa.ko
 3    3 0xc077e000 1e58c    sound.ko
 5    1 0xc2ade000 19000    linux.ko

TOP

USB

Hier habe ich die Kernel Optionen aus der GENERIC Conf 1:1 übernommen.

Das einzige USB Gerät das ich bisher angeschlossen habe, ist meine Digicam. Diese spreche ich direkt über die Software extern gtkam an, welche ich aus den Ports installiert habe. Das klappt problemlos: DigiCam einstecken, anschalten, gtkam starten und drauf zugreifen.

TOP

S-Video-Out

Um den S-Video-Out Ausgang nutzen und so das T2* an einen Fernseher anschliessen zu können, benötigt man eine kleine Software 's3switch'. Diese kann (wie fast alles) einfach aus den Ports installiert werden.

/usr/ports/graphics/s3switch

Da PAL nur eine Auflösung von 800x600 verträgt, muss man vor dem Switch noch die X-Config ändern/tauschen, oder einen weiteren Server in die bestehende eintragen.

Hier meine new-window xorg.conf für TV zum Download. (Bis auf die Auflösung indentisch mit der oben verlinkten default xorg.conf).

Das heisst wenn ich auf TV umschalte muss ich folgende Schritte ausführen:

xorg.conf tauschen
X-Server neu starten
s3switch TV PAL

Geht bestimmt auch eleganter, aber ich nutze das so selten, dass ich gut damit leben kann.

TOP

Weitere Schnittstellen

PCMCIA, infrared, serial, parallel

Da ich davon noch nichts benötigt habe, kann ich zu diesen Schnittstellen auch nichts weiter sagen, ausser, dass sie laut dmesg_output wohl erkannt werden.

$Id: t22.xml,v 1.4 2006/12/22 17:03:28 jg Exp $