Viel bewegt – Die Neuerungen von Linux 2.6.27
Neue WLAN- und Webcam-Treiber sowie zahlreiche Änderungen an anderen Treibern und der Kernel-Infrastruktur verbessern die Hardware-Unterstützung und den Funktionsumfang von Linux erheblich.
- Thorsten Leemhuis
Zwölfeinhalb Wochen nach der Freigabe des Linux-Kernels 2.6.26 veröffentlichte Linus Torvalds nun mit der Version 2.6.27 die nächste aus dem Hauptentwicklungszweig von Linux hervorgegangene Kernel-Version. Die insgesamt 1.131.171 neuen, veränderten oder verschobenen Zeilen Quellcode bringen viele Neuerungen, von denen auch einfache Linux-Anwender über kurz oder lang profitieren, selbst wenn sie sich mit der zentralen Instanz ihres Linux-Systems normalerweise nicht näher auseinandersetzen.
So verbessern zwei neue sowie verschiedene überarbeitete WLAN-Treiber die WLAN-Unterstützung von Linux erheblich. Nach der Aufnahme des USB-Webcam-Treibers uvcvideo bei 2.6.26 erweitert 2.6.27 mit dem Webcam-Treiber gspca zudem erneut die Unterstützung von Webcams unter Linux – zukünftige Linux-Kernel und darauf aufbauende Distributionen können eine Vielzahl von WLAN-Chips und Webcams "einfach so" ansprechen, ohne dass sich der Anwender um Treiber-Konfiguration oder -Installation kümmern muss. Eine Vielzahl weiterer mehr, weniger oder noch weniger wichtige Treiberanpassungen sowie zahlreiche Änderungen an der die Treiber umgebenden Infrastruktur erweitern oder verbessern die Hardware-Unterstützung des Linux-Kernels.
Hinzu gesellen sich wie mit jeder neuen Linux-Version der Hauptentwicklungslinie zahlreiche Verbesserungen an der Infrastruktur des Kernels selbst. So unterstützt Linux mit der Version 2.6.27 erstmals das für Flash-Speicher geeignet Dateisystem UBIFS – parallel arbeiteten die Kernel-Hacker weiter am Ext3-Nachfolgers Ext4, der bald reif für den täglichen Einsatz sein soll. Einige von Open-Source-Puristen initiierte Umstrukturierungen verändern die Kernel-interne Handhabung von Firmware, während zahlreiche Aufrufe des Big Kernel Lock (BKL) weichen mussten, um Performance und Skalierbarkeit von Linux weiter zu verbessern. Hinzu gesellen sich zahlreiche Optimierungen für die Nutzung des Systemschlafzustands ACPI S3 (Standby/Bereitschaft) sowie ein neues, khibernate genanntes Framework, mit dem sich das System komplett schlafen legen lässt (Hibernate/Ruhezustand). Doch auch das sind nur einige der wichtigsten Neuerungen aus einer Unmenge weiterer mehr oder weniger wichtigen Änderungen an der Infrastruktur beim Linux-Kernel 2.6.27.
Das detaillierte Changelog listet alle Anpassungen seit der Version 2.6.26 im Detail für all jene auf, die es ganz genau wissen wollen und auch genug Zeit zum Studium des mehrere Megabyte großen Dokuments mitbringen. Das folgende Kernel-Log bietet einen Überblick über die Neuerungen der jüngsten Kernel-Version, die mit den in den kommenden Wochen und Monaten erwarteten Distributionen Fedora 10 (Cambridge), OpenSuse 11.1 und Ubuntu 8.10 (Intrepid Ibex) schon bald auf einer Vielzahl von Systemen die Arbeit erledigen wird. Zusätzlich befassen sich einige Artikelabschnitte des Kernel-Logs mit wichtigen Ereignissen während der 2.6.27-Entwicklung und geben einen Ausblick auf 2.6.28:
- Feintuning unter der Haube
- Was während der 2.6.27-Entwicklung geschah
- Einstieg in die Kernel-Entwicklung
- Besser auf den Distributor vertrauen
- Daten und Zahlen zu den jüngsten Versionen des Linux-Kernels
- Summa summarum 2.6.27
Die im Artikel erwähnten Neuerungen bei Infrastruktur und Treibern sind jene, die für einen Großteil der Linux-Anwender relevant sind. Eine Liste mit zahlreiche weiteren mehr oder weniger wichtigen Änderungen findet sich im Anhang:
Änderungen an der Infrastruktur
Änderungen an Treibern und der sie umgebenden Infrastruktur
Im Artikel finden sich zudem diverse Verweise auf das Glossar von heise online, das einige allgemeine und zeitlose Hintergrundinformationen zum Linux-Kernel und dessen Entwicklung bereithält:
- Linux-Kernel und -Treiber herunterladen und installieren
- Entwicklungszyklus des Linux-Kernels
- Die verschiedenen Kernel-Serien und -Entwicklungslinien
WLAN
Die unendliche Geschichte rund um WLAN
Nachdem seit Linux 2.6.22 fast jede neue Kernel-Version der Hauptentwicklungslinie größere Verbesserungen für die WLAN-Unterstützung gebracht hat, macht auch die nun freigegebene Linux-Version da keine Ausnahme und bringt zwei neue sowie einige erweiterte und verbesserte WLAN-Treiber.
Erstmals dabei ist der Treiber ath9k, der zahlreiche der neueren und nach IEEE-Standardentwurf 802.11n funkenden WLAN-Chips von Atheros anspricht. Den noch jungen Treiber hatte der seit einigen Monaten bei Atheros beschäftigte und zuvor bereits durch seine Arbeit an WLAN-Treibern- und Infrastruktur für Linux bekannte Entwickler Luis "mcgrof" Rodriguez erst einige Tage nach der Freigabe von Linux 2.6.26 der Öffentlichkeit präsentiert. Rodriguez und viele andere Entwickler stürzten sich förmlich auf den Treiber, um ihn für die Aufnahme in den Kernel fit zu machen; mit Erfolg, denn bereits zirka drei Wochen nach der ersten Veröffentlichung von ath9k nahmen die Kernel-Hacker den Treiber in den Hauptentwicklungszweig auf, aus dem nun Linux 2.6.27 hervorging.
Zu den vom Treiber ath9k unterstützten Atheros-Chips zählen die WLAN-Bausteine AR5418+AR5133, AR5416+AR5133, AR5416+AR2133, AR9160, AR9280 und AR9281. Sie finden sich in einigen neueren Note- und Netbooks sowie auf manchen PCI/PCIe-Karten und PC-Cards/Minicards – das Wiki zum Treiber listet einige solcher Produkte von Belkin, D-Link, Linksys, NEC und Netgear auf. Bislang arbeitet ath9k aber nur im Client-Modus (Station Mode/STA); laut der umfangreichen ToDO-List arbeiten die Entwickler bereits an Mesh- und AP-Unterstützung. Konstantendefinitionen und Kommentare im Quelltext deuten ferner an, dass langfristig auch der für Tools wie Wireshark oder Kismet nötige Monitor-Mode unterstützt werden soll.
Genau wie ath9k ist auch der für 802.11n-Chips von Intel zuständige Treiber iwlagn erstmals dabei. Er ist jedoch nicht komplett neu, sondern basiert zum Teil auf dem Code des für Intels 802.11n-Chips der ersten Generation zuständigen Treibers iwl4965. Letzteren ersetzt der neue Treiber nicht nur, sondern bringt zusätzlich Unterstützung für Intels WLAN-Module aus der Familie "Wireless WiFi Link 5000AGN" – Intel hatte sie zusammen mit der Centrino-2-Plattform diesen Sommer eingeführt, und die WLAN-Module finden sich in allen Centrino-2-Notebooks. Die von einigen der Intel-Funkmodule gebotene Wimax-Unterstützung beherrscht der neue WLAN-Treiber allerdings nicht; diese lässt sich über Patches und Programme nachrüsten, an denen Intel im Open-Source-Projekt Linuxwimax.org arbeitet.
Angebaut
Zahlreiche Änderungen gab es am Treiber ath5k für ältere Atheros-WLAN-Chips. Durch sie überlässt ath5k nun einige 802.11n-Chips dem neueren ath9k-Treiber und kann nun auch die in der ersten Generation des Asus Eee PC verbauten Atheros-WLAN-Chips AR2425 ansteuern (1, 2). Für den kam bislang auf vielen Distributionen ein Snapshot aus dem Hauptentwicklungszweig des Treibers madwifi zum Einsatz. Durch diese und andere Verbesserungen lösen ath5k und ath9k den mit einem proprietären Kern versehenen Madwifi-Treiber wie vorgesehen langsam ab. Wie lange es mit madwifi überhaupt noch weitergeht, muss sich zeigen; die zum Veröffentlichungszeitpunkt dieses Artikels neueste Madwifi-Version 0.9.4 ist bereits einige Monate alt und lässt sich bei manchen mit Linux 2.6.26 ausgestatteten Distributionen nur mit Hilfe von Patches aus dem Madwifi-Entwicklerzweig kompilieren.
Auch den seit Linux 2.6.23 in Linux enthaltenen Treiber rtl8187 für den gleichnamigen USB-WLAN-Chip von Realtek überarbeiteten die Kernel-Hacker, sodass der Treiber in Zukunft auch die neuere Chip-Variante RTL8187B anspricht (1, 2, 3, 4, 5, 6, 7). Die Entwickler verbesserten ferner die Unterstützung für die Stromsparmechanismen bei den neueren Treibern für WLAN-Module von Intel. Neben diesen neuen und überarbeiteten WLAN-Treibern sowie zahlreichen Verbesserungen am WLAN-Stack Mac80211 bringt 2.6.27 auch noch eine größere Renovierung des rfkill-Frameworks mit (u. a. 1, 2, 3, Dokumentation). Sie soll die Interaktion zwischen Hardware, Kernel und Userspace-Programmen verbessern, wenn der Anwender die bei Notebooks zu findenden Schiebeschalter oder Tastenkombinationen zum Ein- und Ausschalten von WLAN oder Bluetooth betätigt.
Kernel-Infrastruktur
Infrastruktur-Verbesserungen für alle
Linux 2.6.27 bringt erstmals das für Flash-Speichermedien ohne Wear Leveling gedachte und auf die mit 2.6.22 eingeführten Unsorted Block Images (UBI) aufsetzende Dateisystem Ubifs (Commit, Dokumentation, Hintergrundartikel) mit. Das Ext4-Dateisystem beherrscht mit 2.6.27 nun erstmals Delayed Allocations (1, 2). Das soll die Performance steigern und eine Fragmentierung von Dateien eindämmen; eine detaillierte Beschreibung zu den Hintergründen dieser Technik findet sich in einem der zahlreichen Vorträge zum Linux-Kernel und dessen Umfeld des diesjährigen Ottawa Linux Symposium (OLS). Der Ext3-Nachfolger bleibt aber fürs Erste weiter als nicht für den Produktiveinsatz geeignetes Entwicklerdateisystem gekennzeichnet; lange dürfte das aber wohl nicht mehr so bleiben.
Linux-Kernel herunterladen Neue Linux-Versionen sind über die in Amerika und Europa stationierten Server von Kernel.org erhältlich; deren Inhalt spiegeln auch zahlreiche deutsche Mirror. Linux-Anwender, die sich nicht intensiv mit dem Kernel und dessen Umfeld beschäftigen, sollten neue Linux-Treiber und -Kernel aber normalerweise nicht auf eigene Faust einspielen, sondern auf die Vorarbeit der Linux-Distributoren zurückgreifen. (...mehr...) |
Mit AXFS (Advanced XIP filesystem), btrfs und nilfs2 (New Implementation of a Log-structured Filesystem Version 2]) streben indes zahlreiche weitere für Flash-Medien, SSDs oder Festplatten optimierte Dateisysteme über kurz oder lang die Aufnahme in den Linux-Kernel an – zusammen mit anderen in Entwicklung befindlichen Dateisystemen wie Tux3 oder dem weiter vor sich hin köchelnden, aber nicht wieder richtig in Gang kommenden Reiser4 bieten die nächste Monate und Jahre damit genug Stoff für endlose Debatten und Geschwindigkeitstest für die immer wieder gern ausführlichst diskutierte Frage nach dem "besten Dateisystem".
Firmware-Schiebereien
Mehrere mit 2.6.27 integrierte Patches verändern die Handhabung der unter anderem von vielen LAN-, WLAN- und SCSI-Chips benötigten Firmware erheblich. Einige dieser Patches modifizieren vorwiegend ältere Treiber, sodass diese genau wie die meisten modernen Treiber die Firmware über den Firmware-Loader von Initrd oder aus dem Root-Dateisystem nachladen, statt die Firmware direkt in das Kernel-Modul oder den Kernel einzubinden – Letzteres lässt sich aber weiterhin konfigurieren. Durch andere Patches lassen sich die Firmware-Images nun jedoch auch an das Kernel-Image anhängen, damit speziell die früh im Bootvorgang benötigten Treiber diese nun auch über den Firmware-Loader nachfordern können, noch bevor Initrd oder Root-Dateisystem eingebunden sind; bislang mussten solche Treiber die Firmware direkt enthalten.
All diese Änderungen waren alles umstritten und resultierten in länglichen, teils hitzig geführten Diskussionen. Insbesondere die beiden Verwalter des Netzwerksubsystems und der Netzwerktreiber sträubten sich nachhaltig gegen die Änderungen, sodass Netzwerktreiber wie tg3 oder bnx2 vorerst weiter die Firmware direkt enthalten. Dadurch können Open-Source-Puristen und Linux-Distributionen auch in naher Zukunft wohl keinen universellen Kernel kompilieren, der zwar alle auf Firmware angewiesenen Treiber enthält, nicht aber die häufig nur als vorkompiliertes Binary ohne Quellcode erhältliche Firmware selbst – das hatten einige Open-Source-Verfechter auf einer Fedora-Mailingliste mehrfach lautstark gefordert und den früheren Red-Hat-Entwickler David Woodhouse schließlich zur Entwicklung der jetzt in den Hauptentwicklerzweig eingepflegten Änderungen bewogen.
Rund um Treiber herum
Auch die die Treiber umgebenen Subsyssteme bieten einige neue Funktionen, auf die Anwender und Treiber-Programmierer in Zukunft zurückgreifen können. Neu in Linux 2.6.27 ist die vom Verwalter des Netzwerk-Subsystems David S. Miller größtenteils selbst programmierte "Linux TX Multiqueue Implementation". Durch sie bietet der Netzwerk-Stack nun grundlegende Funktionen für Netzwerk-Hardware mit mehreren Transmit Queues. Viele der modernen WLAN-Chips bieten sie, um etwa Video- oder Audio-Daten bevorzugt zu übermitteln.
Umfangreiche Änderungen gab es bei der Infrastruktur rund um die Nutzung der Systemschlafzustände. Treiber können durch eine der Änderungen nun beim Wechsel in oder aus dem Bereitschaftsmodus (ACPI S3/Suspend to RAM) andere Arbeiten durchführen als vor oder nach der Nutzung des Ruhezustands (Hibernate/Suspend to Disk); das soll einige der grundlegenden Probleme rund um die beiden Schlafzustände beseitigen. Der bereits im Rahmen des heise-open-Artikels "Tiefe Einblicke – Informationen in den Vorträgen vom Ottawa Linux Symposium (OLS) 2008" erwähnte Vortrag "Suspend-to-RAM in Linux – State of the Union Address" beschreibt die Hintergründe für diese Änderungen und liefert einige weitere Informationen rund um ACPI und den Code zur Nutzung der Systemschlafzustände.
Auch den mit 2.6.27 aufgenommene "Block layer data integrity support" (Commit, Dokumentation, Hintergrundartikel) erklärt einer der OLS-Vorträge detailliert – durch diese Technik sollen insbesondere Storage-Controller für Server mit passendem Treiber besser sicherstellen können, ob Daten auch korrekt auf den Datenträgern landen. Das SCSI-Subsystem unterstützt dazu nun das SCSI disk (SBC) Data Integrity Field.
Zahlreiche Änderungen eliminieren Aufrufe des Big Kernel Lock (BKL) in den höheren Schichten des Kernels oder verlagern diese weiter nach unten – also beispielsweise aus den verschiedenen Treibersubsystemen in die Hardwaretreiber selbst. Letztere sollen sich dann möglichst individuell und nur wenn unbedingt nötig um die im Mehrprozessorbetrieb unerlässliche Absicherung kritischer Codebereiche kümmern. Durch dieses feiner abgestufte Locking soll der Kernel gerade auf Systemen mit vielen Prozessoren besser skalieren; aber auch auf Desktop-PCs dürften diese Änderungen ab und an Performance-Vorteile bieten. Langfristig wollen die Kernel-Entwickler das Big Kernel Lock komplett entfernen – die jetzt aufgenommenen Änderungen sind aber nur die ersten Schritte dieses Vorhabens, dessen komplette Umsetzung wohl mehrere Jahre in Anspruch nehmen dürfte.
Neue Treiber
Fülle neuer und überarbeitete Treiber
Welche Treiber geändert wurden Über das Git-Web-Frontend auf Kernel.org lassen sich auch Informationen zu Änderungen an einzelnen Dateien des Linux-Kernels aufrufen – so lässt sich beispielsweise herausfinden, ob es Neuerungen an den auf dem eigenen System eingesetzten Treibern gab. Dazu muss man allerdings wissen, wo sich die Treiberdateien im Quellcodebaum des Linux-Kernels finden. Bei den zumeist stark auf Modulen setzenden Kerneln der Distributionen helfen häufig die Ausgaben des Programms modinfo bei der Suche: [VERBATIM0] Liegt ein kompiliertes Modul etwa in [...]/kernel/drivers/net/e100.ko, dann findet sich dessen Sourcecode im Linux-Quellcodearchiv normalerweise im Verzeichnis drivers/net/ in Dateien mit ähnlichem Namen – etwa e100.c im Falle des für Intel-100-MBit-Netzwerkhardware zuständigen Treibers e100. Andere Module wie der für Intels PCI-Gigabit-LAN-Chips zuständige Treiber e1000 haben hingegen ein Verzeichnis für sich allein. Kennt man die ungefähre Position des Treiber-Quellcodes, navigiert man im Git-Webinterface über die Tree-Ansicht zu den jeweiligen Quellcode-Dateien und ruft über den Link history eine Übersicht über die jüngsten Änderungen an den zugehörigen Dateien oder dem ganzen Verzeichnis auf. Im Verzeichnis für die Netzwerktreiber lassen sich so beispielsweise die Änderungen am Treibercode von e100 (drivers/net/e100.c) und e1000 (drivers/net/e1000/) anzeigen und näher unter die Lupe nehmen. |
Neben den bereits erwähnten Verbesserungen bei der WLAN-Unterstützung gab es eine Unmenge neuer und erweiterter Treiber. So pflegten Torvalds und seine Zuarbeiter unter anderem eine überarbeitete Variante der weitgehend mit Hilfe von Reverse Engineering entstandenen Webcam-Treiber-Sammlung gspca ein (unter anderem 1, 2, 3). Sie eignet sich für Kameras von verschiedensten Herstellern – darunter zahlreiche Modelle von Aiptek, Creative, Logitech oder Philips. Zusammen mit dem für kurz vor Toresschluss in Linux 2.6.26 integrierten USB-Video-Treiber uvcvideo unterstützt der Linux-Kernel somit in Zukunft viele gängige Webcams von Haus aus; bislang mussten Linux-Anwender die beiden Treiber nicht selten umständlich nachinstallieren.
Ganz knapp vor Ende des Merge Window von Linux 2.6.27 hat Linus Torvalds vollkommen unerwartet das ISDN-Framework mISDN (modulares ISDN) in die jetzt veröffentlichte Kernel-Version aufgenommen (1, 2, 3, 4, 5, 6). Der Kernel bekommt damit nach mehreren Jahren Entwicklungszeit endlich einen deutlich überarbeiteten, modular aufgebauten und auf moderne Einsatzzwecke wie Telefonanlagen-Software abgestimmten ISDN-Treiber. Er kümmert sich vor allem um HFC-Chips der Cologne Chip AG, die sich auf einer ganzen Reihe passiver ISDN-Karten befinden und beliebt sind, um ISDN-Telefone direkt anzubinden. Auch Asterisk greift über ein mISDN-eigenes API auf die Dienste von mISDN zu.
Die im Kernel enthaltenen und vom Projekt Alsa (Advanced Linux Sound Architecture) gewarteten Audio-Treiber sind mit 2.6.27 nun ungefähr auf dem Stand der Alsa-Treiber-Version 1.0.17. Zu den Neuerungen dieser Version zählen unter anderem ein Treiber für für die Xonar D1 von Asus, eine größere Renovierung des Treibers snd-azt3328, Unterstützung für die Audio-Hardware der ASUS Eee**PC 90x sowie zahlreiche neue ASoC-(ALSA-System-on-Chip-)Treiber.
Wie mit praktisch jeder neuen Kernel- oder Alsa-Treiber-Version erweiterten die Entwickler die Whitelists für die automatische Anwendung Hardware-spezifischer Workarounds, sodass die Treiber diese bei so manchen PCs, Notebooks und Mainboards nötigen Sonderbehandlungen für die Audio-Codecs auf mehr Hardware als zuvor automatisch vornehmen (etwa 1, 2). Linux-Anwender, deren Audio-Hardware erst mit Hilfe solcher über Modul-Parameter beim Laden des Sound-Treibers manuell aktivierbaren Workarounds funktioniert, sollten diese Informationen daher zusammen mit Angaben zur verwendeten Hardware an die Alsa-Entwickler senden. Diese können die Whitelists dann entsprechend erweitern – davon profitiert man langfristig nicht nur selber, sondern tut auch allen anderen Besitzern der gleichen Hardware einen großen Gefallen, denn auch deren Audio-Hardware funktioniert dann in Zukunft einfach, ohne dass sie die verschiedenen Workarounds umständlich durchprobieren und manuell konfigurieren müssen.
Für die insbesondere bei vielen neuen Netbooks, Notebooks und Mainboards von Asus häufiger anzutreffenden Gigabit-LAN-Chips AR8121, AR8113 und AR8114 von Atheros haben die Kernel-Entwickler den Treiber atl1e aufgenommen. Ein größerer Patch rüstet ferner Unterstützung für die Broadcom-LAN-Chips BCM57711 und BCM57711E im Treiber bnx2x nach. Der e1000-Treiber kümmert sich fortan nicht mehr um PCIe-Gigabit-Chips von Intel – für die ist jetzt ausschließlich der neuere Treiber e1000e zuständig, der nun auch Intels Gigabit-NIC-Chip 82576 ansprechen kann.
Der Treiber sorgte bei Beta-Testern und Entwicklern in der zweiten Septemberhälfte indes für allerlei Hektik, denn er stand in den Vorabversionen von 2.6.27 unter Verdacht, gelegentlich den nichtflüchtigen Speicherbereich (NVM) von Intel-Netzwerkchips auf Boards mit ICH8, ICH9 oder ICH10 zu überschreiben. Teilweise gingen dadurch "nur" die MAC-Adresse oder andere im NVM gespeicherte Konfigurationsdaten verloren – ab und an wurde der Speicher aber auch so weit überschreiben, dass der Netzwerkchip gar nicht mehr funktionierte. Die genaue Fehlerursache haben die Entwickler bislang nicht gefunden; vermutlich ist aber nicht der Treiber selbst, sondern ein Fehler an anderer Stelle die Ursache für das Problem. Durch eine nach dem RC8 von 2.6.27 eingepflegte Änderung am Treiber verhindert dieser nun ein ungewolltes Überschreiben des NVMs.
Die Kernel-Entwickler haben zahlreiche, im wesentlichen von Intel-Entwicklern programmierte Änderungen in den Hauptentwicklungszweig von Linux eingepflegt, die den nichtflüchtigen Speicher (NVM) von Intel-Netzwerkchips vor versehentlichem Überschreiben schützen. Das soll das seit knapp zwei Wochen breit diskutierte Problem der bisherigen Vorabversionen von 2.6.27 umschiffen, das teilweise Intel-Netzwerkchips auf Boards unbrauchbar machte, die auf die Netzwerkfunktionen der Intel-Southbridges ICH8, ICH9 oder ICH10 zurückgreifen.
Den Hauptschutz soll ein bereits vor einigen Tagen eingepflegter Patch für den Treiber gewährleisten, durch das der Treiber bereits kurz nach dem Laden den Schreibschutz für den NVM setzt. Zahlreiche 24 Stunden später eingepflegte Änderungen (1, 2, 3, 4, 5, 6) verbessern den Schutz, korrigieren kleinere Fehler oder erleichtern die Fehlersuche. Die eigentliche, vermutlich nicht im e1000e-Treiber zu suchende Ursache für das ungewollte Überschreiben des nichtflüchtigen Speichers haben die Entwickler aber wohl noch nicht gefunden. Einige Distributoren liefern bereits Kernel mit, die den Schutz enthalten – darunter die kürzlich veröffentlichte zweite Beta von OpenSuse 11.1 sowie der Kernel im Entwicklerzweig von Fedora (Rawhide)
Durch größere Änderungen am Treiber fujitsu-laptop unterstützt dieser mehr Fujitsu-Siemens-Notebooks als zuvor und arbeitet besser mit Userspace-Anwendungen zur Regelung der Displayhelligkeit zusammen. Neu sind die Treiber compal-laptop und hp-wmi, mit denen sich einige herstellerspezifische Funktionen bei von HP und Compal gefertigten Notebooks nutzen lassen; beide Treiber leiten etwa Events beim Betätigen der Schalter oder Funktionstasten zum Ein- und Ausschalten von Funkverbindungen weiter. Ebenfalls primär für Notebooks interessant ist der neue Treiber sdricoh_cs, der den MM- und SD-Card-Controller Bay1 von Ricoh anspricht.
Noch mehr neue Treiber
Noch mehr Treiber
Die bislang erwähnten Neuerungen bei Infrastruktur und Treibern sind die, die für einen Großteil der Linux-Anwender relevant sind – bevor dieser Artikel jedoch auf andere für die Linux-Entwicklung wichtige Vorgänge während der 2.6.27-Entwicklung eingeht und von da über ein Kurzfazit zu einem Ausblick auf 2.6.28 übergeht, sollen im folgenden zahlreiche weitere, alles andere als unwichtige Neuerungen bei Treibern und Infrastruktur Erwähnung finden. So haben die Kernel-Hacker das Aufwachen aus dem Bereitsschaftsmodus (ACPI S3) bei Systemen beschleunigt, die den AHCI-Treiber zum Ansprechen der Systemdatenträger nutzen. Ein anderer Patch an eben diesem Treiber hat den Datendurchsatz beim Autor der Änderung um durchschnittlich zehn Prozent gesteigert. Ferner ist die Unterstützung für Enclosure Management im AHCI-Treiber neu, was das Auffinden von (defekten) Festplatten im Server-Rack erleichtern kann.
Treibereien In der Unmenge der für Linux 2.6.27 vorgenommenen Änderungen finden sich eine Unmenge an Patches, die die zahlreichen in den Linux-Quellen enthaltenen Treiber verändern. Diese Patches verbessern die Hardware-Unterstützung, erweitern den Funktionsumfang oder korrigieren schlichtweg Fehler. Die in den nebenstehenden Absätze auf dieser und den vorangegangenen Seiten erwähnten Treiberneuerungen sind nur die allerwichtigsten; viele weitere solcher Änderungen finden sich am Ende des Artikels in zwei thematisch grob sortierten Listen mit Kurzbeschreibungen der jeweiligen Änderung (1, 2). Diese verlinken zum jeweiligen Commit im Webinterface des Verwaltungssystems für den Linux-Quellcode, wo sich in der Regel weitere Informationen zu den Hintergründen der jeweiligen Änderung sowie der Patch selbst findet. |
Größere Umstrukturierungen gab es bei 2.6.27 am Quellcode für den Direct Rendering Manager (DRM). Durch sie soll soll sich der für 2.6.28 oder 2.6.29 geplante GPU-Memory-Manager GEM und das Kernel-based Modesetting (KMS) besser integrieren lassen. Mit 2.6.27 zum Linux-Kernel hinzugestoßen ist ferner der Treiber hso für HSDPA/HSUPA-Karten von Option sowie der Input-Treiber bcm5974 für die Touchpads im Macbook Air und Pro Penryn. Den Treiber für Intels I/OAT (I/O Acceleration Technology) erweiterten die Kernel-Hacker um Unterstützung für die I/OAT-Spezifikation 3.0. Zahlreiche Änderungen gab es auch an den Treibern für FireWire-Hardware.
Linux 2.6.27 bringt zudem bereits jetzt Unterstützung für die Audio- und Storage-Einheiten von Intels Ibex-Peak-Chipsätzen mit (1, 2, 3), obwohl diese nach derzeitigen Informationen erst im dritten Quartal 2009 zusammen mit den bislang unter den Codenamen Lynnfield und Havendale bekannten Nehalem-CPUs für Mainstream-Desktops in den Handel kommen sollen. Und auch für die ersten, in den kommenden Wochen erwarteten Core-i7- und Xeon-CPUs mit Nehalem-Kern gab es bereits einige Änderungen wie die Unterstützung bei Oprofile und coretemp.
Einige Treiber sind mit 2.6.27 allerdings auch rausgeflogen – etwa die i2c-Treiber, i2c-i810, i2c-prosavage und i2c-savage4, die andere Treiber seit Längerem ersetzen. Auch für den jetzt entfernten OSS-Treiber trident gibt es schon länger einen moderneren Treiber im Kernel. Rausgeflogen ist auch der angeschlagene ISDN-Treiber auerswald, dessen Aufgaben mittlerweile ein auf libusb aussetzender Treiber im Userspace erledigt.
Feintuning unter der Haube
Nach Jahren der Entwicklung haben die Lockless-Pagecache-Patches (1, 2, 3) inklusive der get_user_pages (1, 2, 3, 4, 5, 6) von Novell-Entwickler Nick Piggin endlich den Weg in den Hauptentwicklungszweig gefunden; die Patches beschleunigen einige Vorgänge im Speichersubsystem, was sich gerade auf großen Systemen positiv auf die Performance auswirken soll. Einige zumeist von SGI-Entwicklern eingebrachte Änderungen sollen ferner dafür sorgen, dass Linux auf Systemen mit bis zu 4096 CPUs rundläuft (1, 2).
Neu im Hauptentwicklerzweig ist das Debugging- und Test-Framework Ftrace (Function Tracer). Es unterstützt Linux- und System-Entwickler bei der Suche nach Codebereichen, in denen das System bei der Arbeit viel Zeit verbringt – diese Hot-Spots lassen sich dann gezielt optimieren, um Performance oder Reaktionsgeschwindigkeit zu steigern. Das Frontend für das ältere Sysprof (System-wide Linux Profiler) lässt sich über ein Ftrace-Plugin weiter nutzen (1, 2, 3, 4, 5). Neu bei 2.6.27 ist auch das teilweise auf Ftrace aufsetzende und von Intel- und Nouveau-Entwicklern gestartete Mmiotrace (1, 2, 3, Dokumentation), mit dem sich Memory Mapped IO (MMIO) verfolgen lässt. Das ist etwa für Debugging oder Reverse Engineering interessant – eben genau dafür hatten die Entwickler des Grafiktreibers Nouveau Mmiotrace entwickelt, um den proprietären Nvidia-Treiber für Linux bei der Arbeit besser beobachten zu können. Neu ist ferner auch die Tracing-Infrastruktur Tracehooks, auf die das seit Langem um die Aufnahme in den offiziellen Kernel buhlende Utrace in Zukunft aufsetzen soll.
Wer häufiger Kernel konfiguriert und kompiliert, wird an dem mit 2.6.27 aufgenommenen Tool Diffconfig Gefallen finden, mit dem sich zwei Kernel-Konfigurationsdateien komfortabel vergleichen lassen. Speziell für Programmierer von Userspace-Anwendungen mit mehreren Threads dürften zahlreiche von Ulrich Drepper eingebrachte Patches interessant sein. Sie rüsten neue Syscalls nach, mit denen sich einige bekannte Sicherheitsrisiken bei POSIX file descriptors umschiffen lassen. Drepper, der die Standard-C-Library Glibc verwaltet, beschreibt die Hintergründe der Änderungen sowie die geplante Nutzung in der Glibc detailliert in seinem Blog; auch LWN.net hatte sich vor Monaten schon ausführlich mit den damals noch in Planung befindlichen Patches beschäftigt.
Mit 2.6.27 wieder dabei ist die SMP-nice for group scheduling genannte Änderung am Completely Fair Scheduler (CFS) – die war ursprünglich schon für 2.6.26 vorgesehen, musste dann aber wegen Qualitätsmängeln vorübergehend wieder weichen. Der Ruhezustand lässt sich durch einige Änderungen (1, 2) nun auch über kexec ausführen – das Ganze nennen die Entwickler khibernation und soll einige Vorteile im Vergleich zur bisherigen Methode mit Software-Suspend (Swsusp) bieten, ist aber noch recht experimentell.
Die Kernel-Entwickler haben für 2.6.27 ferner zahlreiche Verbesserungen an der Virtualisierungslösung KVM aufgenommen – darunter die nicht ausschließlich, aber vorwiegend für Virtualisierungslösungen wie KVM interessanten mmu-notifiers. Neu dabei ist auch die Unterstützung für die Hypervisor-Schnittstelle paravirt_ops auf der IA64-Architektur von Intels Itanium (1, 2, 3, Dokumentaiton) sowie die zur Migration von Gästen auf andere Hostsysteme nötige Save/Restore-Unterstützung in Xen. Auch die Xen-DomU-Unterstützung für x86-64-Systeme ist erstmals dabei (1, 2, 3, 4, ) – bislang unterstützte der im Kernel seit 2.6.23 enthaltene Xen-Code nur den Betrieb eines x86-32-Linux unter einem Xen-Hypervisor.
Die Crypto-Unterstützung im Kernel beherrscht nun die Algorithmen RIPEMD-128 und RIPEMD-160 (1, 2) und arbeitet bei der Hash-Erzeugung auf Wunsch asynchron. Weiter vorangetrieben haben die Kernel-Hacker die Zusammenlegung von Quellcodedateien, die sich für x86-32- und x86-64-Systeme ähneln. Der Filter für SCSI-Kommandos lässt sich bei 2.6.27 nun pro Gerät individuell und zur Laufzeit vom Systemadministrator konfigurieren; bislang war dieser starr und erlaubte dem Anwender zwar das Ansprechen von Brennern und Co., aber eben nichts, womit Anwender potenziell Schaden hätten anrichten können.
Über die verbesserte Infrastruktur für hugetbl (Huge Tables) lassen sich nun auch die von neueren AMD-Prozessoren unterstützten Gigabyte-Pages nutzen (1, 2); damit sich parallel zu diesen auch die mittelgroßen Page-Größen noch nutzen lassen gab es einige Änderungen an der der hugetbl-Infrastruktur (1, 2, 3, 4). Neu ist ferner die Unterstützung für AMDs IOMMU (1, 2, 3, 4).
Nicht nur all die Verbesserungen und neuen Features, sondern auch einige Aufräumarbeiten und Umstrukturierungen sind indes für die zahlreichen laut diffstat während der 2.6.27-Entwicklung veränderten Zeilen Quellcode mitverantwortlich. Rausgeflogen ist etwa die seit Längerem nicht mehr gepflegte Unterstützung für die v850-Architektur. Beinahe 4 MByte groß ist zudem der Patch, der wie erwartet das Verzeichnis arch/ppc/ entfernt – um die verschiedenen derzeit unterstützten Power- und PowerPC-Architekturen kümmert sich nun ausschließlich der bereits unter arch/powerpc/ zu findende Code. Erheblich beigetragen zu den vielen neuen und entfernten Zeilen Quellcode haben auch Umstrukturierungen beim MIPS-Code sowie zahlreiche Patches, die die Include-Dateien für einige der unterstützen Architekturen im Quellcode-Baum umherschieben (siehe etwa Commits für ARM, IA64, Power oder Sparc). Mit aktivierter Rename-Detection in Git zeigt diffstat daher etwas weniger Änderungen an.
Diskussionen
Was während der 2.6.27-Entwicklung geschah
Entwicklungslinien des Linux-Kernels Die Kernel-Hacker entwickeln den Linux-Kernel im Rahmen der 2.6-Serie stetig weiter. Dabei scheuen sie auch nicht vor umfangreichen Änderungen zurück. Es wird daher auf absehbare Zeit keinen 2.7-Entwicklerzweig geben, aus dem irgendwann eine Linux-Version 2.8.0 oder 3.0.0 hervorgeht, so wie Linux 2.6.0 aus dem 2.5-Entwicklerzweig entstand; stattdessen pflegen die Entwickler mehrere Kernel-Serien für verschiedene Anwenderkreise parallel. Die Hauptentwicklungslinie stellen die Versionen mit drei durch Punkte getrennten Nummern (2.6.x, also etwa 2.6.26) dar. [...] Parallel zur Hauptentwicklung pflegen die Verwalter der Stable-Kernel-Serie die beiden jeweils neusten Versionen der Hauptentwicklungslinie weiter und kennzeichnen die Überarbeitungen durch eine zusätzliche Zahl (2.6.x.y, beispielsweise 2.6.24.10 oder 2.6.25.8). (...mehr...) |
Zahlreiche andere während der 2.6.27-Entwicklung geführte Debatten sind für die weitere Entwicklung von Linux von Bedeutung. So bekräftigte Linus Torvalds in einer Diskussion auf der Linux-Kernel Mailing List (LKML), dass ihn nichts dazu bewegen könnte, zum alten Entwicklungsmodell mit einer "unstable-series" zurückzukehren. Das derzeitige Modell sei so viel besser, dass es nicht wert sei, über die Eröffnung einer 2.7-Serie überhaupt nachzudenken ("I'm not going back to the old model. The new model is so much better that it's not even worth entertaining as a theory to go back."). Im Rahmen dieser Diskussion ließ der Linux-Vater jedoch durchblicken, dass er über eine Anpassung des Nummerierungsschema nachdenkt und Versionsbezeichnungen wie Linux 2008.10 erwägt. Es war erwartet worden, dass darüber auf dem Mitte September abgehaltenen Kernel Summit 2008 diskutiert würde – in den Berichten von der Konferenz findet sich aber bislang keine Informationen, ob das Thema überhaupt zur Sprache kam.
Während der 2.6.27-Entwicklung bremste Torvalds indes einige Entwickler und forderte sie auf, sich in der zweiten Phase des Entwicklungszyklus gefälligst wie vorgesehen auf das Beseitigen von Fehlern zu konzentrieren; größere Änderungen sollten für die nächste Kernel-Version zurückgestellt werden. Wenn sich die Kernel-Hacker in Zukunft daran halten, könnte das die Entwicklungszeit neuer Linux-Versionen etwas reduzieren – zuletzt sind aus der ursprünglich für zirka sechs Wochen angesetzten Stabilisierungsphase meist eher neun oder mehr geworden, weil einige der Fehler in den während des Merge-Window eingepflegten Änderungen nur langsam korrigiert werden und größere, spät aufgenommene Änderungen teilweise neue Fehler auslösen.
Auf dem Kernel Summit waren die Kernel-Entwickler sogar kurz davor, eine Verkürzung des Entwicklungszyklus auf insgesamt sechs Wochen zu beschließen – letztendlich nahmen sie von der Idee dann doch wieder Abstand. Auch die Unterstützung von ISA-Hardware sowie anderer veralteter und kaum mehr gepflegter Code (beispielsweise Video4Linux der ersten Generation) soll bis auf Weiteres im Kernel verbleiben und nicht rausfliegen, wie es Alan Cox vor der Entwicklerkonferenz gefordert hatte. Weitere Informationen zu diesen und anderen auf dem Kernel Summit 2008 diskutierten Themen finden sich in zwei Kernel-Logs auf heise open, die die bekannt gewordenen Informationen vom ersten und zweiten Tag zusammenfassen.
Einstieg in die Kernel-Entwicklung
Im dem kürzlich von der Linux Foundation veröffentlichten Dokument "How to Participate in the Linux Community" erklärt LWN.net-Gründer und -Autor Jon Corbet zahlreiche Hintergründe im Kernel-Entwicklungsprozess. Dabei gibt er viele Tipps, wie man in die Kernel-Entwicklung einsteigt und dabei Anfängerfehler im Code und bei der Zusammenarbeit mit den etablierten Kernel-Hackern vermeidet. Das dürfte nicht nur Hobby-Programmierern eine große Hilfe beim Einstieg in die Linux-Kernel-Community sein, sondern soll insbesondere mit der Linux- und Open-Source-Entwicklung nicht vertrauten Unternehmen einen Einblick in den Entwicklungsprozess von Linux vermitteln. Das scheint auch mehr als überfällig, denn in der Vergangenheit strauchelten schon diverse Hardware-Hersteller und deren Treiber-Programmierer heftigst beim Versuch, in die Linux- und Open-Source-Entwicklung einzusteigen. Corbet und die Linux Foundation sind zudem nicht die einzigen, die sich dem Thema widmen: Andi Kleen hatte kürzlich in dem Vortrag "On submitting kernel patches" auf dem OLS 2008 eine ganz ähnliche, jedoch etwas kürzere Übersicht zum Thema gegeben.
Wie wichtig Linus Torvalds stabile Schnittellen für Userland-Anwendungen sind, zeigt eine während der 2.6.27-Entwicklung geführte Diskussion auf der LKML. Durch eine für 2.6.28 geplante Änderung arbeiteten die bisherigen Version des X.org-Touchtreibers synaptics nicht mehr korrekt; das war aber nicht Schuld des Kernels, sondern ein schwerer, bislang unentdeckter Fehler im Touchtreiber, der erst durch die Kernel-Änderung ans Tageslicht kam. Auf Drängen und unter Mithilfe von Torvalds haben die Kernel-Entwickler den auslösenden Kernel-Patch schließlich trickreich modifiziert, damit auch die bisherigen Versionen des Treibers mit zukünftigen Kernel-Versionen ungestört zusammenarbeiten.
Besser auf den Distributor vertrauen
Wer seine Kernel bislang selbst kompiliert und installiert, sollte gründlich darüber nachdenken, ob er diese Praxis in Zukunft beibehält oder nicht doch auf die vorkompilierten Kernel eines Distributors umsteigt. Die Kernel-Entwickler geben nach längeren Debatten um die früher nur sporadisch vorgenommene explizite Auszeichnung von Fixes für Sicherheitslücken bei der Freigabe neuer Kernel mittlerweile meist gar nicht mehr an, ob Patches auch Sicherheitslücken korrigieren. Vielmehr legen die Betreuer der Stable-Series Anwendern von Kernel.org-Kerneln in der Freigabe-Mail seit der Veröffentlichung von 2.6.25.13 in der Regel mit Worten wie "Any users of the 2.6.25 kernel series should upgrade to this version" ein Update auf die neu herausgegebenen Versionen nah. Details zu den Änderungen fänden sich im Git-Webinterface oder dem Changelog.
Schaut man dort genauer hin, findet man in manchen, aber eben nicht allen der mit diesen Worten angekündigten Versionen Korrekturen für Sicherheitslücken. Bei 2.6.25.13 etwa stolpert man über ein als CVE-2008-2750 diskutiertes Sicherheitsproblem im PPP-Code des Kernels, das Fedora, OpenSuse und Ubuntu bereits kurz zuvor über Kernel-Updates behoben hatten. Auf Sicherheit bedachte Anwender von selbstkompilierten Kerneln sollten daher am besten jede neue Version des jeweiligen Stable-Zweigs einspielen, was deutlich weniger Arbeit machen dürfte, als eine zeitaufwendige und praktisch nur von Sicherheitsexperten verlässlich durchführbare Suche nach Sicherheitskorrekturen in den Änderungen neuer Kernel-Versionen. Für das Gros der Anwender dürfte ohnehin ein vorkompilierter und vom Distributor gepflegter Kernel der verwendeten Linux-Distribution die eindeutig beste Wahl darstellen – zu einem solchen rieten auch so mache Kernel-Entwickler im Rahmen der erwähnten Diskussionen.
Statistik, Ausblick auf 2.6.28
Daten und Zahlen zu den jüngsten Versionen des Linux-Kernels
Summa summarum 2.6.27
Linux 2.6.27 bringt wieder eine Fülle von Neuerungen, von denen alle Linux-Anwender profitieren, auch solche, die sich mit dem Kernel normalerweise nicht näher auseinander setzen (wollen). Gerade auf Centrino-2-Notebooks und den zahlreichen in den letzten Monaten neu vorgestellten Netbooks dürfte die jüngste Version des Linux-Kernels durch die neuen oder verbesserten WLAN-Treiber und andere Änderungen deutlich runder laufen als ihre Vorgänger; doch auch für viele andere Systeme bietet der neue Kernel so manch interessante Neuerung.
Wer den Kernel 2.6.27 ohne viel Aufwand auf seinem System installieren will, wartet am besten noch ein wenig und steigt dann auf die in den kommenden Wochen und Monaten erwarteten neuen Versionen von OpenSuse und Ubuntu um – sie werden den neuen Kernel mitbringen und bieten über ihre Entwicklerzweige sowie die mit Vorabversionen von 2.6.27 ausgestatteten Alphas, Betas und RCs der Distributionen bereits jetzt einen Vorgeschmack auf 2.6.27. Eine solche nutzt auch das Fedora-Projekt im Entwicklerzweig und den aktuellen Vorabversionen von Fedora 10; vermutlich erhält Fedora 9 die nun vorgestellte Linux-Version aber bereits als Update, bevor Fedora 10 fertig wird.
Kernel-Trends: Was 2.6.28 bringt
Direkt nach der Freigabe von 2.6.27 beginnt nun die erste, normalerweise zirka zwei Wochen lange und Merge Window genannte Phase im Entwicklungszyklus des Linux-Kernels, in der Torvalds die umfangreicheren Änderungen für die nächsten Version in den Hauptentwicklungszweig aufnimmt. Für die Aufnahme bereits vorbereitet sind etwa zahlreiche Patches, durch die weitere Treiber – darunter viele SCSI-Treiber – nun ebenfalls auf den Firmware-Loader zum Anfordern der Firmware-Binaries zurückgreifen.
Entwicklungszyklus des Linux-Kernels [...] Durch den öffentlichen Entwicklungsprozess und einen tiefen Blick in den Kaffeesatz ist heise open und der von der Linux-Foundation gewartete Radarschirm des Linux Weather Forecast bereits bei der Vorstellung einer neuen Kernel-Version dazu in der Lage, einige Neuerungen zu benennen, die die darauf-folgende Version mitbringen dürften. [...] (...mehr...) |
Die Netzwerk-Entwickler haben vier neue Treiber für die Aufnahme in 2.6.28 vorbereitet. Sie rüsten die Unterstützung für Netzwerkchips von Atheros, Cisco, Jmicron und Qlogic nach. Intel-Entwickler Arjan van de Ven hat derweil verschiedene Verbesserungen in der Hinterhand, die den Startprozess beschleunigen und die Leistungsaufnahme senken sollen.
Einige Entwickler würden gerne das AXFS-Dateisystem in 2.6.28 sehen – es sieht aber derzeit so aus, als müsste AXFS noch einige Male durch den vor der Aufnahme neuer Dateisysteme üblichen und eher strengen Begutachtungs- und Verbesserungsprozess laufen, sodass eine Aufnahme für 2.6.29 derzeit eher unwahrscheinlicher scheint. Das gilt auch für die Unterstützung zum Betrieb des Kernels als privilegierte Xen-Domain (Dom0), so sich die Xen-Entwickler denn in den nächsten Tagen nicht noch so richtig ins Zeug legen. Noch nicht mal ansatzweise benutzbar sind derweil die in Arbeit befindlichen Verbesserungen an den rt2x00-Treibern, damit diese auch die neueren Ralink-WLAN-Chips rt2860 und rt2870 ansprechen – darauf hatte Linus Torvalds selbst gedrängt, nachdem er vor einigen Wochen einen mit solch einem Ralink-Chip ausgestatteten EeePC von Asus gekauft hatte. Bis die Treiber so weit sind, lassen sich diese WLAN-Chips mit vom Herstellern bereitgestellten und unter GPL2 stehenden Treibern zur Mitarbeit unter Linux überreden.
Wie üblich wird das Kernel-Log in der c't und auf heise open in den kommenden Wochen über die wichtigsten in die Hauptentwicklungslinie von Linux integrierten Neuerungen und andere Entwicklungen im Umfeld des Linux-Kernels berichten. Dazu zählen auch neue Versionen der Stable-Kernel-Series (2.6.x.y), die in den nächsten Wochen den ein oder anderen Fehler korrigieren dürften, den die Kernel-Hacker und Tester bei der Entwicklung von 2.6.27 übersehen haben. Zu Weihnachten oder zum Jahresbeginn dürfte Torvalds dann die Linux-Version 2.6.28 freigeben. Deren Änderungen wird dann wie üblich ein längeres Kernel-Log wie dieses auf heise open detailliert beschreiben. (thl/c't)
Anhang:
Liste weiter Änderungen an der Infrastruktur
Liste weiter Änderungen an Treibern und der sie umgebenden Infrastruktur
Anhang
Anhang: Noch mehr Änderungen an Infrastruktur
Die im voranstehenden Artikel erwähnten Neuerungen der jüngsten Linux-Version stellen nur eine Auswahl der bedeutsamsten Änderungen dar – die sprichwörtliche Spitze des Eisbergs, der bei jeder neuen Linux-Version im Hauptentwicklungszweig aus Tausenden von Commits im Quellcodeverwaltungsystem besteht. Zahlreiche weitere ebenfalls wichtige Neuerungen – sozusagen die etwas unterhalb der Eisbergspitze – finden sich im Folgenden als thematisch grob sortierte Liste mit einer Kurzbeschreibung zur Änderung. Bei ihr handelt es sich zumeist um die (teilweise leicht angepassten) englischen Überschriften des Commits, die auf die jeweilige Änderung im Webfrontend des Quellcodeverwaltungssystems verlinkt; dort finden sich in der Regel detailliertere Informationen und Hintergründe zur Anpassung sowie der Patch selbst.
Basic kernel infrastructure
x86:
- x86: add another PCI ID for ICH6 force-hpet
- add C1E aware idle function, fix
- Add Centaur and Transmeta CPUs to PAT whitelist
- add PCI extended config space access for AMD Barcelona
- add PCI ID for 6300ESB force hpet
- boot: add code to add BIOS provided EFI memory entries to kernel
- cleanup early per cpu variables/accesses v4
- config option to disable info from decompression of the kernel
- enable memory tester support on 32-bit
- hpet: workaround SB700 BIOS
- introduce x86_quirks
- merge tsc calibration
- move x86-specific documentation into Documentation/x86
- PAT Update validate_pat_support for intel CPUs
- x86/PCI: irq and pci_ids patch for Intel Ibex Peak PCHs
- print info about available HPET quirk
- re-enable OPTIMIZE_INLINING
- support 1GB hugepages with get_user_pages_lockless()
- x86, suspend, acpi: correct and add comments about Big Real Mode
- x86, suspend, acpi: enter Big Real Mode
- unconditionally enable PAT for AMD CPUs
- update mptable
- VisWS: turn into generic arch, eliminate Kconfig specials
- VisWS: turn into generic arch, make VisWS boot on a regular PC
- VisWS: turn into generic arch, move definitions
Others:
- ARM:5153/1: Add support for PalmTX handheld computer
- ARM:add Marvell 78xx0 ARM SoC support
- ARM:add Marvell Kirkwood (88F6000) SoC support
- ARM:add Marvell Loki (88RC8480) SoC support
- ARM:Feroceon: 88fr131 support
- ARM:latencytop support
- ARM:Orion: add 88F5181L (Orion-VoIP) support
- ARM:Orion: add HP Media Vault mv2120 support
- ARM:Orion: add Linksys WRT350N v2 support
- ARM:Orion: add Maxtor Shared Storage II support
- ARM:Orion: add QNAP TS-409 support
- ARM:Orion: add Technologic Systems TS-78xx support
- ARM:pxa: add support for L2 outer cache on XScale3 (attempt 2)
- Blackfin arch: Add ISP1760 board resources to BF548-EZKIT
- Blackfin arch: add support for board tcm-bf537
- Blackfin arch: add support for the BlackStamp board
- Blackfin arch: Extend sram malloc to handle L2 SRAM.
- Blackfin arch: Functional power management support
- Blackfin arch: Functional power management support
- MX31: add basic pcm037 board support
- i.MX27: Adding PCM038 platform support
- i.MX27 CPU: Add basic i.MX27 CPU support
- i.MX2 family: Add basic mach support (headers)
- MIPS:Routerboard 532: Support for base system
- S390:Add support for memory hot-add.
- S390:Add support for memory hot-add via sclp.
- S390:Extra Kernel Parameters via VMPARM
- S390:qdio: new qdio driver.
- S390:Remove P390 support.
- powerpc/pseries: vio bus support for CMO
- sh: Add support Renesas Solutions AP-325RXA board
- sh: Renesas Solutions SH7763RDP board support
- sparc64: Add Niagara2 RNG driver.
- sparc: join the remaining header files
Filesystems, VFS, Block, DM, MD:
- ext4: Documentation updates.
- ext4: Use new framework for data=ordered mode in JBD2
- ext4: Enable delalloc by default.
- ext4: Documention update for new ordered mode and delayed allocation
- jbd2: Implement data=ordered mode handling via inodes
- jbd2: Remove data=ordered mode support using jbd buffer heads
- omfs: add bitmap routines
- omfs: add directory routines
- omfs: add file routines
- omfs: add filesystem documentation
- omfs: add inode routines
- omfs: define filesystem structures
- omfs: update kbuild to include OMFS
- UBI: fix and re-work debugging stuff
- sysfs: add /sys/dev/{char,block} to lookup sysfs path by major:minor
- sysfs: add /sys/firmware/memmap
- introduce HAVE_EFFICIENT_UNALIGNED_ACCESS Kconfig symbol
- SL*B: drop kmem cache argument from constructor
- KVM: Add coalesced MMIO support (common part)
- KVM: Add coalesced MMIO support (ia64 part)
- KVM: Add coalesced MMIO support (powerpc part)
- KVM: Add coalesced MMIO support (x86 part)
- KVM: IOAPIC/LAPIC: Enable NMI support
- KVM: MTRR support
- KVM: PIT: support mode 3
- KVM: SVM: Fake MSR_K7 performance counters
- KVM: VMX: Enable NMI with in-kernel irqchip
- lguest: virtio-rng support
- xen: add new Xen elfnote types and use them appropriately
- xen pvfb: Dynamic mode support (screen resizing)
- xen pvfb: Pointer z-axis (mouse wheel) support
- xen: remove support for non-PAE 32-bit
- xen: report hypervisor version
- xen, power: fix up config dependencies on PM
- xen, 64-bit: adjust mapping of physical pagetables to work with Xen
- LSM/SELinux: show LSM mount options in /proc/mounts
- security: filesystem capabilities no longer experimental
- security: protect legacy applications from executing with insufficient privilege
- security: remove dummy module
- selinux: support deferred mapping of contexts
- tpm: add support for Broadcom TPM TIS device HID
- Add generic helpers for arch IPI function calls
- kgdb, powerpc: arch specific powerpc kgdb support
- kgdb: support for ARCH=arm
- kill altroot
- /proc/PID/syscall
- proc: show per-net ip_devconf.forwarding in /proc/net/snmp
- sched: add full schedstats to /proc/sched_debug
Anhang
Drivers and their surrounding subsystems
Powermanagement, ACPI and PCI:
- ACPI: Create "idle=halt" bootparam
- ACPI: Create "idle=nomwait" bootparam
- ACPI: Enhance /sys/firmware/interrupts to allow enable/disable/clear from user-space
- ACPI: fix processor throttling set error
- APM emulation: Notify about all suspend events, not just APM invoked ones (v2)
- CPUFREQ: Remove EXPERIMENTAL annotation from VIA C7 powersaver kconfig.
- CPUFREQ: S3C24XX NAND driver frequency scaling support.
- cpuidle: Make ladder governor honor latency requirements fully
- Implement new suspend and hibernation callbacks for platform busses
- PCI: ACPI PCI slot detection driver
- PCI: ACPI: Rework PCI handling of wake-up
- PCI: add an option to allow ASPM enabled forcibly
- PCI: add D3 power state avoidance quirk
- PCI: disable ASPM on pre-1.1 PCIe devices
- PCI: disable ASPM per ACPI FADT setting
- PCI: implement new suspend/resume callbacks
- PCI: introduce pci_slot
- PCI: Simplify PCI device PM code
- pciehp: fix interrupt initialization
- pm: acpi hibernation: utilize hardware signature
- pm: remove obsolete piece of PM documentation
- PNP: add acpi:* modalias entries
- PNP: centralize resource option allocations
- PNP: convert resource options to single linked list
- PNP: replace pnp_resource_table with dynamically allocated resources
- Suspend-related patches for 2.6.27
- Suspend/Resume bug in PCI layer wrt quirks
- backlight: Add Nvidia-based Apple Macbook Pro backlight driver
- thinkpad-acpi: add bluetooth and WWAN rfkill support
- Add MUSB and TUSB support
- Add new PM callback methods for USB
- Add vendor/product id of ZTE MF628 to option
- BandRich BandLuxe C150/C250 HSPA Data Card Driver
- usb ethernet gadget: use composite gadget framework
- usb gadget: composite gadget core
- sisusbvga: add USB ID for 0711:0918 Magic Control Technology Corp.
- usb-storage: unusual_devs entries for iRiver T10 and Datafab CF+SM reader
- usb-storage: unusual_devs entry for Nokia 5300
- storage: UNUSUAL_DEVS() for PanDigital Picture frame.
- usb-storage Motorola Phone Razr v3xx US_FL_FIX_CAPACITY patch
- usb-storage: quirk around v1.11 firmware on Nikon D4
Input Subsystem (input devices like keyboard, mice or joysticks):
- applesmc: add support for Macbook
- applesmc: support for Intel iMac
- add driver for Atmel integrated touchscreen controller
- add driver for Tabletkiosk Sahara TouchIT-213 touchscreen
- add HTC Shift Touchscreen Driver
- i8042 - add Acer Aspire 1360 to nomux blacklist
- i8042 - add Dritek quirk for Acer Aspire 5720
- i8042 - add Gericom Bellagio to nomux blacklist
- i8042 - add Medion NAM 2070 to noloop blacklist
- new driver for SGI O2 volume buttons
General:
Libata (newer drivers for Parallel- and Serial-ATA controllers):
- libata: implement no[hsrst force params]
- libata: LBA28/LBA48 off-by-one bug in ata.h
- ahci, pata_marvell: play nicely together
- mfd: TMIO MMC driver
- sata_mv: add RocketRaid 1720 PCI ID to driver
- pata_it821x: Driver updates and reworking
- pata_via: add VX800 flag; add function for fixing h/w bugs
IDE (alternative/older drivers mainly for Parallel-ATA controllers):
- BAST: Remove old IDE driver
- ide: include PCI device name in messages from IDE PCI host drivers
- ide/Kconfig: mark ide-scsi as deprecated
- ide: prefix messages from IDE PCI host drivers by driver name
- ide: remove obsoleted "hdx=" kernel parameters
- ide: remove obsoleted "idebus=" kernel parameter
- ide: remove obsoleted "ide=" kernel parameters
- move ide/legacy/hd.c to drivers/block/
SCSI:
- 3w-9xxx: add MSI support and misc fixes
- ibmvfc: Add ADISC support
- ibmvfc: IBM Power Virtual Fibre Channel Adapter Client Driver
- iscsi: add iscsi host helpers
- scsi_debug: add support for rotation speed
Various:
- atmel-mci: Driver for Atmel on-chip MMC controllers
- memstick: use fully asynchronous request processing
- mmc: add support for card-detection polling
- mmc: S3C24XX MMC/SD driver.
- mmc_spi: add support for card-detection polling
- sdhci: move pci stuff to separate module
- sdhci: scatter-gather (ADMA) support
- sdhci: support JMicron secondary interface
General:
- ipsec: ipcomp - Merge IPComp implementations
- proc: create /proc/net/netstat file in each net
- proc: create /proc/net/snmp file in each net
- vlan: Add ethtool support
LAN/WAN specific:
- amd8111e: delete non NAPI code from the driver.
- bnx2: Add PCI ID for 5716.
- bnx2: Support secondary MAC addresses.
- bnx2: Update firmware to support multi rx rings.
- bnx2x: Adding bnx2x_link
- bnx2x: Add PCIE EEH support
- bnx2x: Add support for BCM57711 HW
- bnx2x: New init infrastructure
- bnx2x: New link code
- bnx2x: New statistics code
- cxgb: delete non NAPI code from the driver.
- DM9000: Add documentation for the driver.
- DM9000: Add support for DM9000A and DM9000B chips
- e1000: delete non NAPI code from the driver
- forcedeth: add jumbo frame support for mcp79
- gianfar: delete non NAPI code from the driver.
- ixgb: update readme text
- sh_eth: Add SH7619 support
- net: sh_eth: add support for Renesas SuperH Ethernet
- r8169: remove non-napi code
- SAA9730: Remove driver
- WAN: convert drivers to use built-in netdev_stats
- WAN: Port COSA driver to generic HDLC.
- WAN: Port LMC driver to generic HDLC
- virtio net: Add ethtool ops for SG/GSO
- via-rhine: delete non NAPI code from the driver.
- ucc_geth: delete non NAPI code from the driver.
- sky2: 88E8057 chip support
- tg3: Add 5785 ASIC revision
- starfire: delete non NAPI code from the driver.
WLAN specific:
- mac80211: 11h - Handling measurement request
- mac80211: 11h Infrastructure - Parsing
- mac80211: add helpers for frame control testing
- mac80211: implement EU regulatory domain
- mac80211: make master netdev handling sane
- mac80211: QoS related cleanups
- mac80211: revamp beacon configuration
- mac80211: use hardware flags for signal/noise units
- b43: enable mesh
- b43: Rewrite LO calibration algorithm
- gelic (PS3): Add support for ESSID scan
- rtl8187: Add USB ID for Netgear WG111V3
- rtl8187: Add usb ID for asus wireless link
- wext: Emit event stream entries correctly when compat.
- zd1211rw: initial IBSS support
- fbdev: add the carmine FB driver
- fbdev: LCD backlight driver using Atmel PWM driver
- gpio: add bt8xxgpio driver
- gpio: gpio driver for max7301 SPI GPIO expander
- gpiolib: allow user-selection
- gpio: max732x driver
- gpio: sysfs interface
- radeon: fix some hard lockups on r3/4/500s
- video: sh7760fb: SH7760/SH7763 LCDC framebuffer driver
- Add LifeVideo To-Go Cardbus PCI ID
- Add support for Dvbworld DVB-S 2102 USB card
- Add support for em2860 based PointNix Intra-Oral Camera
- add support for MaxLinear MxL5007T silicon tuner
- Add support for Pinnacle PCTV HD Pro stick (the older variant 2304:0227)
- Add support for the ATI TV Wonder HD 600
- Anysee: driver for Anysee DVB-T/C receiver
- Anysee: support for Anysee E30C Plus rev 0.4
- au0828: add support for Hauppauge Woodbury
- budget-ci: Add support for Technotrend budget C-1501 dvb-c card
- cx18: add support for Conexant Raptor PAL/SECAM card
- cx18: convert to video_ioctl2()
- cx18: Upgrade to newer firmware & update cx18 documentation.
- cx23885: Add DViCO HDTV7 Dual Express tuner callback support.
- cx23885: add initial support for DViCO FusionHDTV7 Dual Express
- cx23885: add support for new revision of FusionHDTV7 Dual Express
- cxusb: add initial support for AVerTVHD Volar
- dib0700: add basic support for Hauppauge Nova-TD-500 (84xxx)
- dib0700: add comment to identify 35th USB id pair
- DVB-PLL: add Samsung DTOS403IH102A tuner
- em28xx-cards: Add Compro VideoMate ForYou/Stereo model
- em28xx-cards: Add GrabBeeX+ USB2800 model
- em28xx-cards: New supported IDs for analog models
- gspca: Webcam 0c45:6128 added in sonixj.
- gspca: Webcam 0c45:612e added in sonixj.
- gspca: Webcam 0c45:6143 added in sonixj.
- gspca: Webcam Labtec 2200 (093a:2626) added in pac7311.
- ivtv: add support for the Buffalo PC-MV5L/PCI card.
- ivtv: Convert to video_ioctl2.
- saa7134: Add support for analog only ASUSTeK P7131
- saa7134: add support for AVerMedia M103
- saa7134: Avermedia A16D composite input
- sms1xxx: add support for Hauppauge WinTV-Nova-T-MiniStick
- sms1xxx: change smsusb_driver.name to sms1xxx
- sms1xxx: move driver from media/mdtv/ to media/dvb/siano/
- soc_camera_platform: Add SoC Camera Platform driver
- spca508: Add Clone Digital Webcam 11043
- This driver adds support for the Sensoray 2255 devices.
- This patch adds support for the Micronas DRX3975D/DRX3977D DVB-T demodulator
- ttpci/Kconfig: Technotrend budget C-1501 needs tda10023
- uvcvideo : Add support for Asus F9GS integrated webcam
- uvcvideo : Add support for Medion Akoya Mini E1210 integrated webcam
- uvcvideo: Add support for two Bison Electronics webcams
- v4l-dvb: remove broken PlanB driver
- Add EM-X270 ASoC driver
- ac97 - Add virtual master control to VT1616/VT1617A codec.
- add TriTech 28023 AC97 codec ID and Wolfson 9701 name.
- ALSA driver for SGI HAL2 audio device
- ALSA driver for SGI O2 audio board
- ASoC: Add AK4535 driver
- ASoC: Add UDA1380 driver
- ASoC: Add WM8510 driver
- ASoC: Add WM8990 driver
- ASoC: Au12x0/Au1550 PSC Audio support
- Asoc: core - add Digital Audio Interface (DAI) control functions.
- ca0106 - Add entry for another MSI K8N Diamond MB
- CA0106 on MSI K8N Diamond PLUS Motherboard
- emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2
- Fix AC97 power down
- hda - Add ALC663 support
- hda - Add automatic model setting for the Acer Aspire 5920G laptop
- hda - Added model selection for iMac 24"
- hda - Added SSID for 'Fujitsu Siemens Amilo M1451G' laptop
- hda - Added support for Asus V1Sn
- hda - Add ICH9 controller support (8086:2911)
- hda - Add missing Thinkpad Z60m support
- hda - Add support for 92HD73xxx codecs
- hda - Add support for Lenovo 3000 N200
- hda - Add support of Teradici controller
- hda - Fix ALC883 medion model
- hda - Fix speaker output on Toshiba P105
- hda - HP dc7600 with pci sub IDs 0x103c/0x3011 belongs to hp-3013 model
- hda - increase max_codecs of ICH to 4
- hda - support intel DG33 motherboards
- hda - support new AMD HDMI Audio (1002:970f)
- maestro3: Fix hw volume on HP OmniBook
- oxygen: add PM support
- PCI168 snd-azt3328 Linux driver: another huge update
- usb-audio - Support for Roland SonicCell sound module
- via82xx - Add VIA audio device #1841 to ac97_quirk list
V4L (Video-4-Linux):
Hardware-Monitoring/I2C/EDAC/Watchdog:
- abituguru3: prefer DMI probing to manual probing
- coretemp: recognize Nehalem CPUs
- edac: i5100 new intel chipset driver
- HP iLO driver
- hwmon: ad7414 driver
- hwmon: (dme1737) Add support for the SMSC SCH5027
- hwmon-vid: Fix AMD K8 VID decoding
- i2c: Add Intel SCH SMBus support
- i2c: Add support for I2C bus on Freescale CPM1/CPM2 controllers
- i2c: Check for ACPI resource conflicts
- i2c-nforce2: Add support for multiplexing on the Tyan S4985
- ibm_emac: Remove the ibm_emac driver
- I/OAT: Add watchdog/reset functionality to ioatdma
- spi: new orion_spi driver
- Add "no BKL needed" comments to several drivers
- Bluetooth: Add SCO support to btusb driver
- Bluetooth: Enforce security for outgoing RFCOMM connections
- crypto: ixp4xx - Hardware crypto support for IXP4xx CPUs
- crypto: talitos - Add support for 3des
- crypto: talitos - Freescale integrated security engine (SEC) driver
- dmaengine: DMA engine driver for Marvell XOR engine
- dmaengine: Driver for the Synopsys DesignWare DMA controller
- dma-mapping: add the device argument to dma_mapping_error()
- dmatest: Simple DMA memcpy test client
- firewire: fw-sbp2: spin disks down on suspend and shutdown
- GRU Driver: driver internal header files
- GRU Driver: driver/misc Makefile & Kconfig changes
- GRU Driver: resource management
- myri10ge: add multislices support
- pcmcia: add support CompactFlash PCMCIA support for Blackfin.
- RDMA/nes: CM connection setup/teardown rework
- regulator: add support for fixed regulators.
- regulator: consumer device interface
- regulator: core kbuild files
- regulator: documentation - ABI
- regulator: documentation - consumer interface
- regulator: documentation - machine
- regulator: documentation - overview
- regulator: documentation - regulator driver
- regulator: fixed regulator interface
- regulator: machine driver interface
- regulator: maintainers - add maintainers for regulator framework.
- regulator: regulator driver interface
- regulator: regulator framework core
- regulator: regulator test harness
- regulator: TI bq24022 Li-Ion Charger driver
- rtc: ds1305/ds1306 driver
- Watchdog: mpc83xx_wdt: add support for MPC86xx CPUs
- MTD, NOR: Add support for AMD AM29SL800D[BT NOR flash chips]
- MTD, NOR: Add support for Eon EN29SL800B[BT NOR flash chips]
- MTD, NOR: Support for M50FLW080A and M50FLW080B
Einen der voranstehenden Auflistung ähnlichen Überblick sowie eine Kurzbeschreibung der wichtigsten Änderungen von 2.6.27 pflegen auch die Kernelnewbies in ihrem Wiki. Wer es noch detaillierter möchte, durchkämmt das mehrere Megabyte große Changelog, das die zu jedem einzelnen Commit im Quellcodeverwaltungssystem von Linux gehörenden Kommentare enthält, welche den jeweiligen Patch des Commits beschreiben. Alternativ kann man sich auch im Git-Webinterface durch die Kernel-Quellen und deren jüngste Änderungen arbeiten; dort hat man zum jeweiligen Kommentar auch gleich den zugehörenden Patch im Zugriff. (thl/c't) (thl)