Test & Kaufberatung | Test

Das Cluster-Dateisystem OCFS2, überarbeitete Locking-Mechanismen für kritische Codebereiche, komplette Unterstützung für den Cell-Prozessor und Verbesserungen an diversen Treibern zählen zu den wichtigsten Neuerungen der neuen Kernel-Version.

Nach über zwei Monaten Entwicklungszeit hat Linus Torvalds den Linux-Kernel 2.6.16 freigegeben. Hinzu kamen mit der neuen Version unter anderem das Cluster-Dateisystem OCFS2, verbesserte Locking-Mechanismen für kritische Codebereiche, komplette Unterstützung für den Cell-Prozessor und Verbesserungen der Stromsparmechanismen bei diversen Treibern.

Beim maßgeblich von Oracle vorangetriebenen Cluster-Dateisystem OCFS2 hatten seine Entwickler ursprünglich schon bei Linux 2.6.14 auf die Integration gehofft. Es ähnelt vom Aufbau her ext3 und ist das erste im Kernel enthaltene Dateisystem speziell für Netzwerk-Cluster. Es soll schneller als der separat vertriebene Vorgänger OCFS sein und das System-Management von Oracle Real Application Cluster (RAC) vereinfachen; es eignet sich jedoch auch für Einsatzgebiete jenseits von (Oracle-)Datenbanken. Die Programmierer des ursprünglich von Sistina entwickelten und von Red Hat erneut unter Open-Source-Lizenz gestellten Cluster-Dateisystems GFS (Global File System) hingegen arbeitet weiter an der Aufnahme in den Kernel.

Zusammen mit OCFS2 nahmen die Entwickler das Pseudo-Dateisystem configfs zur Konfiguration von Kernel-Parametern zur Laufzeit auf – im begrenzten Maß lassen sich dafür zwar auch procfs und sysfs benutzten, dafür sind sie aber eigentlich nicht konzipiert. Für die Prozesskommunikation im Cluster kam unabhängig von OCFS2 TIPC (Transparent Inter Process Communication) hinzu.

Sicher und schnell

Ebenfalls neu ist der Mutex-Locking-Mechanismus. Mutex stammt von dem Begriff mutual exclusion ("wechselseitiger Ausschluss"). Wie Semaphoren schützt ein Mutex kritische Codebereiche, sodass sich mehrere, unter Umständen auf unterschiedlichen Prozessoren laufende Prozesse dort nicht ins Gehege kommen. Anfangs war über die Mutex-Implementation und deren Sinn heftig debattiert worden, doch nach einigen Überarbeitungen durch Ingo Molnar, den Entwickler der Realtime-Patches, wurde der Code unter anderem aufgrund von deutlichen Geschwindigkeitsverbesserungen im Vergleich zu den bisher genutzten Semaphoren kurzfristig in den offiziellen Kernel übernommen.

Darüber hinaus wurden einige neue System Calls aufgenommen. Darunter einige vom glibc-Verwalter Ulrich Drepper vorgeschlagene, die zusammen mit Neuerungen in der glibc schneller und besser sicherstellen, dass sich mehrere Threads bei Dateisystemoperationen nicht ins Gehege kommen. Die Speicher- und Swap-Verwaltung in NUMA-Systemen wurde verbessert, und ein neues Subsystem namens EDAC (Error Detection And Correction) kam hinzu. Es soll korrigierbare und unkorrigierbare Speicher- oder PCI-Fehler erkennen, gegebenenfalls beheben und den Administrator darüber informieren, damit er die verantwortliche Hardwarekomponente rechtzeitig austauschen kann.

Die erst vor kurzem zum Kernel hinzugestoßene Unterstützung zum Verschlüsseln des Speicherabbilds beim mit dem Ruhezustand von Windows vergleichbaren Software-Suspend wurde wieder entfernt; langfristig soll ein Userspace-Programm dies und vieles andere erledigen, für das bisher noch der Kernel zuständig ist. Der häufig kritisierte Kernel-Code für Software-Suspend entwickelt sich mit diesen und einigen anderen Neuerungen wieder deutlich weiter. Es entstanden aber auch lange Debatten, ob oder wie das von vielen Anwendern als bessere angesehene, jedoch extern entwickelte Suspend2 komplett oder in Teilen in den Kernel aufgenommen werden kann.

Das Kompilieren des Kernels erfordert in Zukunft mindestens eine GCC in Version 3.2. Neu in 2.6.16 sind die High-Resolution Kernel Timers (hrtimers), die eine exaktere Zeitmessung im Nanosekundenbereich inner- und außerhalb des Kernels ermöglichen. Das ist etwa für Real-Time- oder Multimedia-Anwendungen interessant. Stark überarbeitet wurde das TTY-Subsystem für serielle Geräte. Zudem erfuhr der Code für den Paketfilter IP-Tables mit der Aufnahme der bisher unter dem Namen x_tables entwickelten Überarbeitung ein Lift-up, das langfristig die Wartung vereinfachen soll. Das CIFS-Client-Dateisystem zum Zugriff auf Windows- und Samba-Netzwerkfreigaben kennt jetzt Access Control Lists (ACLs) und Authentifizierung über Kerberos.

Mit der Aufnahme des spufs zum Zugriff auf die acht Synergistic Processor Units (SPUs) des Cell-Prozessors ist der Support für diesen nun weitgehend komplett. Ebenfalls unterstützt werden AMDs Prozessoren Geode GX und LX.

Auch bei den im Kernel enthaltenen Treibern hat sich wie mit jeder Version einiges getan. Unter anderem kam zum skge-Treiber für Marvell-Netzwerkchips ein neuer Treiber namens sky2 für einige der Gigabit-Produkte aus gleichem Haus hinzu. Sie dürften den von Marvell entwickelten und im Kernel vorhandenen, dort aber kaum noch gewarteten Treiber sk98lin langfristig ablösen.

Die Sound-Treiber wurden auf die Alsa-Version 1.0.11rc2 aktualisiert, die nun mit einer ganzen Reihe an vorher nicht unterstützten HD-Audio-Codecs umgehen können. Die Treiber beherrschen jetzt genauso wie überarbeitete USB-, PC-Card-, AGP- und SATA-Treiber die Standby- und Suspend-Vorgänge deutlich besser. Die SATA- und Sound-Treiber von 2.6.16 unterstützen bereits Intels für Mitte des Jahres angekündigten ICH8, für den SATA-Chipsatz JMicron JMB360 kam ein neuer Treiber hinzu. Der Direct Rendering Manager arbeitet nun auch mit dem Notebook-Chipsatz 945GM als auch mit dem Radeon x600 zusammen, zudem spricht der Kernel gleich eine Reihe bisher nicht unterstützter TV- und DVB-Karten an.

Debatten

Aufregung gab es während des Entwicklungszeitraums um eine Änderung der Treiber-Schnittstelle im USB-Subsystem, bei denen einige alte API-Aufrufe entfernt wurden und durch neue, ausschließlich für GPL-Treiber nutzbare ersetzt wurden. Das bemängelte ein AVM-Mitarbeiter auf der Kernel-Mailingliste – wenn es nicht mehr möglich sei, Nicht-GPL-USB-Treiber zu schreiben, würde das Unternehmen den Linux-Support für alle AVM-USB-Geräte einstellen müssen.

Greg Kroah-Hartman, der den USB-Code verwaltet und einer der treibenden Kräfte hinter der Beschränkung von Kernel-APIs auf GPL-Treiber ist, wandte ein, dass es schon lange möglich sei, Closed-Source-USB-Treiber im Userspace zu schreiben – die würden dann auch unter BSD und gar Windows arbeiten können. Nichtsdestotrotz gab er die Schnittstellen für Nicht-GPL-Software frei, sodass die AVM-Treiber prinzipiell auch wieder mit Kernel 2.6.16 zusammenarbeiten können. Damit sich Hersteller auf solche Änderungen rechtzeitig einstellen können, plant Kroah-Hartman in Zukunft ein verändertes Procedere.

Diskussionen gab es auch um eine Änderung am Hardware Abstraction Layer (HAL). Sie hätten eigentlich ein Update der HAL-Userspace-Programme erfordert, der entsprechende Quellcode wurde jedoch wieder modifiziert, um das zu umgehen. Um hier in Zukunft für Kernel-Entwickler, Distributoren und Anwender mehr Klarheit zu schaffen, schlug Greg Kroah-Hartman vor, die Verlässlichkeit der Schnittstellen zum Userspace zu dokumentieren.

Ausblick

Auch außerhalb des Kernels hat die Entwicklung nicht stillgestanden und dürfte in den kommenden Kernel-Versionen Auswirkungen zeigen. So sind einige Entwickler von extern gewarteten WLAN-Treibern mit dem erst vor wenigen Monaten in Version 2.6.14 aufgenommenen IEEE80211-Stack nicht zufrieden. John Linville von Red Hat will hier in Zukunft als erster offizieller Verwalter des Wireless-Subsystems für Ordnung sorgen und die Situation verbessern, sodass die Streitereien um die IEEE80211-Stacks ein Ende finden und mehr Treiber in den Kernel aufgenommen werden können.

Der aktuelle mm-Entwicklerkernel von Andrew Morton enthält eine Vielzahl von Erweiterungen, die vielleicht früher oder später in den Kernel einziehen – etwa ein generisches RTC Subsystem oder eine Überarbeitung von procfs. Um das vor rund 18 Monaten vorgestellte Dateisystem Reiser4 ist es nach diversen Rangeleien um die Qualität des Quellcodes und die Integration in Linux wieder relativ still geworden. Bevor der Code aufgenommen werden kann, muss sich laut Andrew Morton zuallererst ein mit dem Linux Virtual File System (VFS) Vertrauter hinsetzen, der Reiser4 zusammen mit dessen Entwicklern in einen für den Kernel akzeptablen Zustand bringt. Er habe dies selbst tun wollen, aber schlicht keine Zeit gefunden, meinte Morton.

Linux 2.6.16 steht ab sofort über kernel.org oder in Kürze auch über dessen deutschen Mirror zum Download bereit. Sämtliche Änderungen listet das ausführliche Changelog, einige der wichtigen fasst zudem das Kernelnewbies-Wiki zusammen.