Linux-Kernel 2.6.18 mit überarbeiteter SATA-Unterstützung

Eine der größten Änderungen in der neuen Kernel-Version ist das fehlende Devfs. Dieses ließ sich zwar bereits in den letzten Kernel-Versionen nicht mehr auswählen, war aber dennoch in weiten Teilen des Systems noch vorhanden. Das schon in der Kernel-Serie 2.4 eingeführte Devfs verwaltet das Gerätedateisystem /dev - eine Aufgabe, die heute das Userspace-Programm Udev übernimmt. Auf Grund einiger Probleme mit Devfs war es schon länger als "veraltet" gekennzeichnet und wurde nun komplett entfernt .
Die Entwickler überarbeiteten den Prozess-Scheduler des Kernels und brachten unter anderem die Erweiterung SMPnice in den Kernel. Diese verteilt Prozesse verschiedener Priorität besser auf mehrere Prozessoren. Durch verbesserte Energiespar-Regeln ist es außerdem möglich, einen Prozessor arbeiten und einen anderen im Stromsparmodus laufen zu lassen. Dabei hängt die Verteilung davon ab, wie viel das System aktuell zu tun hat. Bei hoher Last ist so sichergestellt, dass die Prozesse wieder gleichmäßig verteilt werden.
Der schon seit Kernel 2.6.13 enthaltene CFQ-I/O-Scheduler (Complete Fair Queuing) ist nun standardmäßig aktiv. Dieser erlaubt es beispielsweise, I/O-Prioritäten zu vergeben, um zu verhindern, dass ein Prozess mit hoher I/O-Aktivität das System in Mitleidenschaft zieht. Der alte AS-Scheduler lässt sich zwar weiterhin verwenden, CFQ ist allerdings ohnehin in einigen Distribution schon aktiviert, so etwa in Red Hat Enterprise Linux 4.
Eine weitere Änderung gibt es beim Locking, das uneinheitliche Änderungen an Datenstrukturen verhindert, wenn mehrere Prozesse auf dieselben Daten zugreifen. Dieser wichtige Bestandteil des Kernels kann jedoch auch negative Auswirkungen auf die Systemleistung haben, da ein Prozess warten muss, wenn ein anderer bereits die zu ändernden Daten für sich beansprucht. So wird nicht nur ein Prozess ausgebremst, im schlimmsten Fall kann dieses Verhalten sogar zum Stillstand des Systems führen, wogegen nun "Priority Inheritance" in den Kernel integriert wurde. Diese Technik verhindert, dass ein Prozess mit niedriger Priorität einen mit höherer ausbremst und läuft dabei im Userspache ab. Allerdings setzt diese Priority Inheritance auch eine aktualisierte Glibc(öffnet im neuen Fenster) voraus.
Passend dazu gibt es mit Lockdep eine Technik, um Kernel-Locks zu überprüfen. Durch die Komplexität der Lock-Regeln schleichen sich immer wieder Fehler in den Quelltext ein, die Lockdep finden soll. Dazu überprüft Lockdep auftretende Sperren zur Laufzeit und informiert über Probleme. Allerdings ist die Funktion nur für Entwickler interessant, besonders, da ein Kernel mit aktiviertem Lockdep langsamer laufen soll.
Nochmals überarbeitet wurde der mit Kernel 2.6.16 eingeführte Code, um Speicherseiten auf so genannten Non-Uniform-Memory-Access-Systemen (NUMA), wie Multiprozessor-Systemen mit Alpha- oder MIPS-CPUs, zu verschieben. Bei diesen Systemen kann die Zugriffszeit auf unterschiedliche Speicherorte von einer CPU verschieden sein, der Swap-Migrations-Code verschob daher Speicherseiten über den Swap-Speicher, ohne dass der Prozess angehalten werden muss. So ändert sich nur der physische Ort der Speicherseiten, jedoch nicht die virtuelle Adresse. Da die Speicherseiten näher an der CPU liegen, soll sich die Latenzzeit verringern.
Allerdings traten dabei einige Probleme auf, weshalb nun eine direkte Speicherseiten-Migration möglich ist. Der Swap-Speicher wird also umgangen und die Speicherseite direkt an die neue physische Position verschoben. Dies geht mit einem neuen Systemaufruf einher.
Das IRQ-Subsystem wurde weiter vereinheitlicht, so dass nun alle Architekturen dieselbe Technik nutzen. Zuvor setzte vor allem der Kernel für die ARM-Architektur auf eine andere IRQ-Schicht. Ferner gibt es ein generisches Zeitsystem, mit dem sich die Kernel-Zeit unabhängig von den architekturspezifischen Techniken abfragen lässt und der Zugriff auf den I/O-Speicherbereich kann nun auch mit 64-Bit-Werten erfolgen.
Wie üblich gab es auch bei den anderen Subsystemen sowie den Treibern mehr oder weniger große Änderungen. Durch Modifikationen an "libata" zur SATA-Unterstützung funktioniert nun auch Native Command Queuing und Hot-Plug. Zudem soll die SATA-Implementierung generell robuster und weniger fehleranfällig sein.
Neue Framebuffer-Treiber gibt es unter anderem für Intels i945G-Chip sowie GeForce-6100-Chips und mit Imacfb lässt sich der Framebuffer auch auf Intel-Macs nutzen. Ein weiterer Treiber ermöglicht es außerdem, die Helligkeit von Apple Cinema Displays über USB zu regeln und Dockingstationen, die sich über ACPI verwalten lassen, funktionieren nun. Zudem unterstützt der Linux-Kernel 2.6.18 die LAN911x-Serie von SMSC und die Highpoint-Rocket-RAID-Controller 3220/3320. Neu ist auch ein Treiber für ZyDAS ZD1211 WLAN, der den Entwicklern vom Hersteller selbst zur Verfügung gestellt wurde. Der Chipsatz kommt in den USB-WLAN-Adaptern verschiedener Hersteller zum Einsatz.
Der Pwc-Treiber für USB-Webcams von Phillips wurde stark überarbeitet und unterstützt zusätzliche Kameras. Außerdem können nun auch Datenströme mit höherer Auflösung dekodiert werden. Dabei soll der neue Code keine rechtlichen Probleme mehr verursachen - in der Vergangenheit wurde der Treiber auf Wunsch des Autors schon einmal komplett entfernt, nachdem die Kernel-Entwickler Unterstützung seines binär vertriebenen Decoder-Moduls abgelehnt hatten.
Ferner können Linux-Anwender nun die Touchpads in den neuen Macbook-Pro-Modellen nutzen und diverse Soundchips aus Notebooks, so zum Beispiel aus den Thinpads X60, T60 und Z60 in Verbindung mit dem AD1981HD-Codec. Die Video4Linux-Treiber unterstützen außerdem neue DVB-Karten.
Bei den Dateisystemen erhielt JFFS2 Unterstützung für erweiterte Dateiattribute, wodurch sich auch POSIX-Access-Control-Listen nutzen lassen und auch in Verbindung mit der Sicherheitserweiterung SELinux funktioniert das Flash-Dateisystem nun. Der SMB-Nachfolger CIFS kann nun auch die NTLMv2-Authentifizierung nutzen, die sicherer ist als das normal verwendete NTLM.
Netfilter, mit dem sich Netzwerkpakete abfangen und manipulieren lassen, wurde um einen Connection Tracking Helper für das SIP-Protokoll erweitert. Damit funktionieren die Verbindungsverfolung - also das Speichern von Informationen wie der Quell- und Zieladresse - und Network Address Translation (NAT) mit SIP.
Die Entwickler räumten außerdem in den Include-Dateien auf, damit diese sich einfacher in Userspace-Applikationen integrieren lassen. Darüber hinaus gibt es den neuen Aufruf "make headers_install", um ausgewählte Kernel-Header zu installieren, die beispielsweise einige Bibliotheken benötigen. In der nächsten Kernel-Version sollen außerdem einige APIs entfernt werden, die der Kernel nicht verwendet, aber exportiert. Diese sind nun entsprechend gekennzeichnet, so dass Programmierer, die diese nutzen, darauf reagieren oder sich beschweren können.
Parallel zu den aktuellen Kernel-Versionen pflegt der Entwickler Adrian Bunk den Kernel 2.6.16 weiter , um Anwendern so eine stabile Serie mit Sicherheits-Updates zu bieten. Wer auf neue Funktionen verzichten kann, aber Wert auf gestopfte Sicherheitslücken legt, kann daher auch zu dieser Serie greifen, anstatt die aktuelle Kernel-Version zu wählen, die neben neuen Funktionen auch neue Fehler enthalten wird.
Kernel 2.6.18 kann entweder als vollständiges Archiv(öffnet im neuen Fenster) oder als Patch(öffnet im neuen Fenster) von kernel.org(öffnet im neuen Fenster) heruntergeladen werden. Außerdem steht die neue Version auf diversen Mirror-Servern(öffnet im neuen Fenster) zum Download bereit.



