openSUSE 11.0 auf MacBook Pro (Santa Rosa)

Es geht voran!  Vor kurzem habe ich auf einem MacBook Pro die neueste Version von openSUSE zum Laufen gebracht. Die wichtigsten Facts sind weiterhin auf folgender Seite zusammengefasst:

Linux auf dem MacBook Pro

Und es gibt einige Highlights – die Paketverwaltung läuft jetzt endlich rund. Selbst mit 8-10 Softwarerepositories startet das Online-Update in Sekunden – ebenso die Installationsroutine.

Das openSUSE update Applet zeigt Security Patches sofort an, kann aber auch die Updates der eingestellten Repositories anbieten, sofern man in der applet Konfiguration folgenden Punkt angewählt hat:

 „Zeige verfügbare Upgrade, wenn die Software Sie anbietet (nur für Experten)“

Dann erscheint folgender Hinweisdialog beim Anklicken des Updater Applets

openSUSE update Applet

Sehr wichtig ist, dass das NetzwerkManager Applet unter KDE4 einwandfrei funktioniert und von der Bedienung das einfachste Netzwerk Konfigurationsmanagment bereitstellt, was man je gesehen hat. Bei einer neuen WLAN Verbindung wird man durch 4 Schritte geführt, die u.a. das Passwort (automatische Erkennung von WEP und WPA) abfragen, sowie das Einstellen einer DHCP- oder statische Adresse erlauben. Zudem wird im Applet, die Signalstärke angezeigt. Die Trennung von kabelgebundenen und kabellosen Verbindungen ist klar ersichtlich.

KDE 4.0 wirkt aufgeräumt und sauber. Das neue (unter SuSE schon länger bekannte) KDE Menü bietet einen Schnellzugriff auf häufig benutzte Programme, sowie eine Trennung von zuletzt benutzen Dateien und allen installierten Programmen an.

Zudem muss man lobend erwähnen, dass die Schriftarten endlich eine vernünftige Größe haben und nicht mehr klobig wirken. Zudem ist das Oxygen Design sehr professionell und muss sich auf vor Mac OS X nicht mehr verstecken.

Die Oberflächeneffekte lässt man besser noch unaktiviert – denn Sie funktionieren nicht sehr zuverlässig und können via OpenGL das System schlimmstenfalls destabilisieren.

Dafür sind an allen Ecken und Enden Verbesserungen eingetreten, bspw. ein neuer schlanker übersichtlicher Systemmonitor

KDE4 Systemmonitor

..was einem für die stabile 4.1 Version von KDE optimistisch stimmt.

Bluetooth Maus unter openSUSE 11.0

Zwar wurde meine Logitech Travel Bluetooth Mouse unter openSUSE 11.0 out-of-the box erkannt,  das Maus-Scrollrad funktionierte aber nicht. Dazu muss die Maus am System registriert werden.

Dazu waren folgende Schritte nötig:

in der Datei /etc/sysconfig/bluetooth folgenden Eintrag vornehmen, falls nicht schon vorhanden
HID2HCI_START="yes"
danach kbluetooth starten und im Kontextmenü

kbluetooth

Einstellungen -> Eingabegeräte -> Neue Geräte hinzufügen

auswählen. Dort sollte die Maus erscheinen. Nach der Auswahl kommt nach einiger Zeit automatisch ein Dialog ob dem Bluetooth Gerät mit der Bluetooth ID XX:XX:XX:XX… vertraut werden soll. Nach der Quittierung, stehen alle Mausfunktionen zur Verfügung, sofern sie in der Datei

/etc/X11/xorg.conf

eingestellt sind. Folgender Standardeintrag sollte für fast jede Logitech Maus passend sein.

 Section "InputDevice"
  Identifier   "Mouse[1]"
  Driver       "mouse"
  Option       "Protocol" "explorerps/2"
  Option       "Device" "/dev/input/mice"
  Option       "Buttons" "5"
  Option       "Name" "Logitech Bluetooth Mouse"
  Option       "ZAxisMapping" "4 5 6 7"
EndSection

Noch ein Hinweis: Die Funktion „Neue Geräte hinzufügen“ wird die Maus nur erkennen, falls die Batterien/Akkus der Maus noch einigermassen aufgeladen sind. Falls nicht, schlägt die Erkennung fehl, obwohl die Maus im rudimentären Modus noch arbeitet.

Koexistenz von NVIDIA und MESA auf openSuSE

Beim Übersetzen von Programmen auf einem System mit NVIDIA Treiber kann man, wenn es dumm läuft auf folgendes Problem stossen:

/usr/X11R6/lib/libGLcore.so.1: undefined reference to `_nv000042gl'
/usr/lib/gcc/i586-suse-linux/4.1.2/../../../libGL.so: undefined reference to `_nv000044gl'

Entstanden ist das Problem durch eine unzureichende Abgrenzung zwischen der OpenGL Implementation von MESA und NVIDIA. Es lässt sich vollständig vermeiden, wenn das NVIDIA OpenGL Paket per Paketmanager anstatt manuell eingespielt wird.

nvidia-gfxG01-kmp-default
x11-video-nvidiaG01

Während erstes Paket nur den Treiber (nvidia.ko) enthält, beinhaltet das 2.Paket auch die klassische OpenGL Bibliothek (libGL.so). Der Vorteil dieses Paketes ist, dass alle Teile unter

/usr/lib/X11R6

landen. Die generische OpenGL Implementation eines jeden Linux Systems wird durch MESA bereitgestellt, welches die gleichen (und ein paar mehr) Dateien unter

/usr/lib

bereitstellt. Jede Anwendung kann dann entscheiden, ob es die generische oder die spezielle NVIDIA OpenGL Implementation nimmt – was im Normallfall nicht vorkommt.

Das obige Übersetzungsproblem entsteht nun dadurch, dass man den NVIDIA Treiber manuell installiert, und dabei die OpenGL Implementation nach /usr/lib schreibt. Dadurch ergibt sich in diesem Bereich ein Mix von OpenGL shared objects, die teilweise NVIDIA Code benötigen oder auch nicht.
Bereinigen kann man die Situation durch löschen aller OpenGL Bestandteile in /usr/lib und Neuinstallation des MESA packages.

UNIXfication

Ein – zumindest mir – neues Schlagwort brachte Jason Perlow in einem blog-Artikel auf zdnet ins Spiel. Im Kern seiner Aussage geht es um eine engere Zusammenarbeit, oder gar ein Merger, von Linux und Solaris zu einem oder DEM neuen UNIX auf GPLv3 Basis.

Relativ kritisch äussert sich Jason über die angebliche „Not invented here“ Attitude der Linux Kernel Entwickler, was einer genaueren Überprüfung aber wohl eher schwer standhält. Knackpunkte speziell bei der Übernahme von Technologien aus der Solaris Welt sind sicher die kollidierenden Lizenzen, da der (open)Solaris Kernel unter CDDL und der Linux Kernel unter GPLv2 steht.

Der Ausweg, dem auch einige SUN Verantwortlichen nicht abgeneigt sind, könnte eine GPLv3 Lizenzierung beider Kernels sein. Damit stellt sich aber die eigentliche Frage, ob nicht beide Kernel langfristig zu einem neuen UNIX verschmelzen sollten.
Aus Sicht von Linus Torvald, dürfte dies keine besonders erstrebenswerte Option sein, denn Linux ist als offenes System konzipiert und mit SUN als eine Art 50% Schwergewicht, dürfte die Balance kaum zu halten sein.
Ein Win-Win Situation könnte meines Erachtens eher dadurch entstehen, dass SUN auf Solaris zugunsten von Linux verzichtet und mit seinen Resourcen direkt den Linux Kernel und ev. eine eigene modifizierte (aber unter GPL lizenzierte) Kernellinie pflegt. Dies wäre ungefähr die Linie die Apple mit seinem von BSD stammenden Darwin Kernel fährt.

Da auch mittel- bis langfristig kein einheitliches und einziges UNIX Betriebssystem zu erwarten – eigentlich auch nicht zu erstreben – ist, wäre zumindest das Aufgehen von Solaris in Linux ein sehr wichtiger Schritt die ganze UNIX Community einen großen Schritt nach vorne zu bringen. Vielleicht soweit, dass in absehbarer Zeit, keiner mehr gezwungen ist ständig und allerorten auf ein zusammengefrickeltes und fragiles Windows System starren zu müssen…

nvidia-settings und die Memory Anzeige

Auf einem MacBook Pro mit einer NVidia 8600M GT Karte die über 128MB VRAM verfügt zeigt das Linux Tool seltsamerweise immer 512MB an.

Auf der  NVIDIA 8600 Tech-Specs Seite kann man auch den Grund erfahren. Es handelt sich hierbei um NVIDIA® TurboCache™ Technology

Hierbei wird dem dezidiertem Videospeicher zusätzlich dynamisch Systemspeicher zugefügt. Man kann davon ausgehen, dass diese Technik nicht in den von Apple angepassten NVIDIA Treibern des MAC OS X Betriebssystem vorhanden ist.  Das würde dann auch die wesentlich bessere Performance der Graphikkarte unter Linux auf einem MacBook Pro erklären.

NVidia-Settings Snapshot

praxis tipps: netstat

netstat ist ein ausgezeichnetes Kommando um sich schnell einen Überblick über alle vorhandene Socket Verbindungen zu bekommen. Hier ist die Zusammenfassung der gebräuchlichsten Parameter des GNU Kommandos welches auf jedem UNIX System zuhause ist:

Parameter Langfassung Bedeutung
-a –all alle aktiven und lauschenden(LISTEN) sockets
-l –listening Zeigt nur lauschende (LISTEN) sockets
-d –directory Zeigt den Directory Eintrag statt dessen Inhalt an
-p –programm Zeigt PID und Namen des verantwortlichen Prozesses (nur eigene)
-i –interface=IFACE zeigt Interface Infos an oder schränkt auf angegebens IFACE ein
-r –route Gibt alle Netzwerkrouten aus
-s –statistics Gibt Statistiken von /proc/net/snmp aus
-u –sort=access Sortiert nach Zugriffszeit (nur im Zusammenhang mit -t)
-n –numeric Verhindert Namensauflösung bei Hostangaben
-t / -u / -w / -x Zeigt Infos über TCP / UDP / RAW / UNIX sockets an

Spiele Benchmark: Linux vs. Mac OS X

Wer ein MacBook Pro hat und darauf 3D Spiele spielt sollte den folgenden Beitrag definitv lesen!

Ich hatte schon seit längerem das Gefühl, dass 3D Anwendungen auf Linux mit den NVidia Treibern wesentlich besser laufen als auf Mac OS X. Das Gefühl musste jetzt mal gemessen werden und zwar mit dem Benchmark von X-Plane 8. Zuerst die Rahmenbedingungen:

  • MacBook Pro (Santa Rosa) Intel CoreDuo 2 2.2GHz, 2GB (PC5300), NVidia 8600M GT 128MB
  • Mac OS X 10.5.2 mit letzen Patches, TFT 1440×900 (24bit)
  • Linux 2.6.24, KDE 3.5.9, NVidia Treiber 169.12, TFT 1440×900 (24bit)
  • X-Plane 8.64, volle Auflösung, texture resoluton high, anti-alias level 2, alle Einstellungen synchron auf Mac OS X und Linux

gemessen wurde mit den Runstring –fps_test=123 (3 digit number bestimmt gewisse Grafikeinstellungen).
Unter Linux mit:

./X-Plane-i586 --fps_test=123

Unter Mac OS X:

/Applications/X-Plane\ 8.64/X-Plane\ 864.app/Contents/MacOS/X-Plane --fps_test=123

(Leider kann man unter Mac OS X keine Runstrings – ausser einem Dateinamen – dem open Kommando mitgeben)

Unter beiden Systeme wurde 3mal gemessen und dann gemittelt. Hier die Werte für die 3 Phasen die X-Plane ausgibt.

System Phase 1 [fps] Phase 2 [fps] Phase 3 [fps]
Mac OS X 4 9 9
Linux 8 33 34

Die Flugsimulation läuft tatsächlich mehr als 3mal schneller unter Linux! Sicherlich hängt es mit dem Treiber zusammen, welcher unter Mac OS X direkt mit dem Betriebssystem ausgeliefert wird, während unter Linux der Original NVidia Treiber installiert werden kann.
Dieser verfügt natürlich auch über eine Temperaturkontrolle die die Karte ab einem Threshold drosselt. Während des Benchmarkes fuhr NVidia’s PowerMizer sofort in den höchsten Performance Level 3 (470 MHz GPU,635 MHz VRAM).

Weiterhin fuhr ich auf diesem Rechner unter Linux noch den Benchmark von X2-The Threat:

Testlauf 1: 34.086 fps
Testlauf 2: 33.947 fps

Leider kann ich diese Werte nicht direkt vergleichen, da X2 auf Mac OS X nur auf PPC läuft. Die Werte erscheinen aber ebenso hervorragend, wenn man mal X2 auf einem PPC-Mac sieht.

kernel headers

Falls man einen selber gebackenen Kernel bootet und in dessen Umgebung arbeitet könnte man bei der Entwicklung gefahr laufen falsche header files zu inkludieren.

Zumindest in openSuSE 10.3 sind unterhalb von /usr/include folgende Unterordner nicht von glibc-devel sondern vom Paket linux-kernel-headers:

  • asm*
  • linux
  • mtd
  • rdma
  • sound
  • video

..und ev. weitere. Es bleibt einem nichts anderes übrig, als diesese Packet mit –nodeps (benötigt glibc-devel ab!) zu entfernen und alles von /usr/src/`uname -r`/include/* recursiv nach /usr/include zu kopieren

praxis tipps: iostat

Glücklicherweise gibt es auch eine Kommandotool um den I/O Durchsatz zu verfolgen, welches auf allen Plattformen verfügbar ist (unter SuSE Linux das Paket sysstat installieren).

iostat verfügt über einen statischen Output, sowie über ein Trackingmodus. Unter Linux wird dazu einfach als erster Parameter das Sekundenintervall angegeben, unter Sun Solaris dagegen nach dem Parameter -x, unter Mac OS X nach -w

Das Ergebniss wird tabellarisch angezeigt. Wichtig sind dabei die Felder tps (transfers per second) sowie die Durchsatzraten (entweder in kiloByte oder MegaByte angebbar).

Zudem wird immer auch die CPU Belastung (user,system,idle) protokolliert.

WPA2 und Apple AirportExpress

Nachdem ich mein WLAN Netzwerk von WEP auf WPA umstellte und zumindest anfänglich alles klappte, stellte mein AirportExpress nach einer gewissen Zeit den Dienst ein.
Dieses Spiel ging zweimal so – kurioserweise trat der Fehler immer erst nach ein paar Tagen ein. Zufällig staß ich auf folgenden Artikel, bei dem ebenfalls eine Inkompatibilität zwischen Apple Airport Produkten und einem Speedtouch Modem beschrieben wurde.

http://www.qdsl-support.de/archive/index.php?t-13262.html

Die Lösung, die bei mir ebenso zum Erfolg führte war ein Downgrade der Airport Express Firmware auf Version 6.1.1

http://www.apple.com/support/downloads/airportexpressfirmware611formacosx.html

Auf der Downloadseite der aktuellen Firmware (6.3) steht, dass WPA2 einen Macintosh Computer mit Aiport Extreme benötigt. Da sich in meiner Konfiguration der AirportExpress Client in einem bestehenden Netz einklinkt ist nicht die Kompatibilität zum Apple Rechner sondern in erster Linie zum primären AccessPoint (funkwerk bintec R232bw) wichtig. Dort ist zur Absicherung aber folgendes eingestellt.

WPA Einstellungen

Während die AiportExtreme Karte des Macintosh kein Problem hat, scheint diese Einstellung das AiportExpress Gerät aus dem Konzept zu bringen.

Im Fehlerfalle meldete das Syslog des AccessPoint immer wiederkehrende disconnectsfailed authentifications – und wieder connects. Ein „reboot“ (Aus- und Einstecken des AirportExpress) brachte nix – nach einem hartem Reset ging’s wieder ein paar Tage gut, bis diesem Problem erneut auftrat.

Eine dauerhafte Lösung ist bisher nur das Downgrade der Firmware – vielleicht kommt ja noch ne bessere Lösung…