Kernel-Log – Was 2.6.36 bringt (3): Infrastruktur

Seite 2: Virtualisierung, Kbuild

Inhaltsverzeichnis

Die Liste der vom Kernel unterstützen Prozessor-Architekturen wächst mit 2.6.36 abermals und umfasst nun auch die von Tilera entwickelten 32-Bit-Prozessoren TILEPro and TILE64 (u. a. 1, 2, 3). Bei ihnen handelt es sich um MIPS-ähnliche VLIW-Prozessoren mit vielen Kernen, die über ein iMesh-Netzwerk miteinander kommunizieren. Da sie recht sparsam arbeiten, lassen sich so über 10.000 Prozessorkerne in einem Server-Rack unterbringen. Aus dem Android-Umfeld stießt Unterstützung für Nvidias Tegra-Prozessoren zum Kernel, die auf der ARM-Architektur aufbauen (u. a. 1, 2, 3). Ferner enthält der Kernel nun zirka 90 Prozent der Treiber für das Ben NanoNote (u. a. 1, 2, 3, 4, 5, 6, 7, 8) – ein Pocket-Computer mit offener Hardware-Plattform, der seit dem Frühjahr auch in Europa erhältlich ist.

KVM-Maintainer Avi Kivity schreibt in seinem Git-Pull-Request, es gäbe für 2.6.36 keine größeren neue Features bei KVM. Er deutet aber einige Performance-Optimierungen an und erwähnt die Unterstützung für die Prozessor-Befehle Xsave (1, 2) und AVX (Intel Advanced Vector Extension) in Gastsystemen.

Einen Überblick über Änderungen am Xen-Code geben die Git-Pull-Requests von Jeremy Fitzhardinge und Konrad Rzeszutek Wilk. Durch die von Ersterem gesammelten Patches lassen sich Paravirt-Treiber nun auch in vollvirtualisierten Domains ("pv-on-hvm") nutzen; durch die anderen Änderungen kann Linux als paravirtualisiertes Gastsystem über eine Art virtuelle IOMMU auf PCI-Geräte zugreifen, die der der Wirt (Dom0) bereitstellt (u. a. 1). Einige der Änderungen legen ferner Grundlagen, auf dem Code zum Betrieb des Linux-Kernels als "initial domain" aufbauen soll – eine Art abgespeckter Dom0-Unterstützung. Dieser Code wird derzeit auf der LKML diskutiert und könnte bei einer der nächsten Versionen in den Hauptentwicklungszweig von Linux einziehen.

Der Kbuild-Code bietet nun vier neue Targets:

  • "oldnoconfig" ersetzt "loose_nonint_oldconfig" und setzt alle Konfigurationsoptionen in der Kernel-Konfigurationsdatei ".config" auf "no", die zuvor nicht gesetzt waren.
  • "listnewconfig" ersetzt "nonint_oldconfig" und listet alle in der ".config" bislang nicht gesetzten Optionen.
  • "alldefconfig " erstellt eine ".config", in der alle Optionen die Einstellungen erhalten, wie sie die Kconfig-Dateien als Standard vorgeben.
  • "savedefconfig" schreibt eine "defconfig" genannte Konfigurationsdatei, in der nur die Optionen verzeichnet sind, die sich von den Standardvorgaben der Kconfig-Dateien unterscheiden.

Mit Hilfe von letzterem Make-Target haben die Entwickler dutzende Standard-Konfigurationsdateien für die verschiedenen vom Linux-Kernel unterstützten System- bzw. Prozessor-Architekturen erzeugt, welche die bisherigen Standard-Konfigurationsdateien ersetzen. Da Letztere zuvor auch Einträge für alle Optionen enthielten, die die Kconfig-Dateien des Kernels als Standard vorgaben, ist der entsprechende Commit knapp 6 MByte riesig und entfernt über zweihundertausend Zeilen in den Kernel-Quellen.

Bereits zuvor hatten die Verwalter der Unterstützung für Itanium (IA64) und Power ihre Konfigurationsdateien auf diese Weise verschlankt (1, 2). All diese Änderungen sind der Hauptgrund, warum der Quellcode von 2.6.36 ein wenig kleiner sein dürfte als sein direkter Vorgänger – das ist überaus ungewöhnlich, denn in den letzten Jahren wuchs der Kernel mit jeder neuen Version um mehrere hunderttausend Zeilen.

Begonnen hatte die Diät für die Standard-Konfigurationsdateien bereits bei 2.6.35, wo die Kernel-Entwickler die Dateien für ARM-Systeme verschlankten. Für den Anwender ändert sich durch das Ganze nichts, denn wie bisher erzeugt ein "make defconfig" eine Basis-Konfigurationsdatei für das eigene System.