Kernel-Log – Was 2.6.38 bringt (5): Architektur, Infrastruktur und Virtualisierung

Seite 2: ACPI, Security, Staccato

Inhaltsverzeichnis

Die Änderungen am ACPI-Code fasst dessen Betreuer Len Brown in seinem Haupt-Git-Pull-Request zusammen. Das ACPI Platform Error Interface (APEI) gibt nun gewisse Fehlerinformationen über printk aus, sodass die Informationen in den normalen, über dmesg abrufbaren Kernel-Meldungen auftauchen, wie es sich einige Kernel-Hacker wünschen.

Entfernt haben die Entwickler die Procfs-Dateien zum Ein- und Ausschalten von Display-Ausgängen. Das selbe Schicksal ereilte wie angedroht auch den Code zum Bereitstellen der Dateien /proc/acpi/processor/*/throttle, über die man den Throttling-Level von Prozessoren beeinflussen konnte. Throttling hatte lange den Ruf einer Stromsparfunktion – in den allermeisten Fällen (und insbesondere bei modernen Prozessoren) führte das manuelle Aktivieren des Überhitzungsschutzes aber letztendlich zu einer höheren Leistungsaufnahme, da der Prozessor viel länger für die ihm gestellten Aufgaben braucht und nicht in die tiefen Schlafmodi wechseln kann.

Das Crypto-Subsystem bietet ab 2.6.38 ein von Torvalds anfangs kritisch hinterfragtes API, über das sich die Hash- und Skcipher-Funktionen vom Userspace aus nutzen lassen. Der Treiber aesni-intel zur Nutzung von Intels "AES New Instructions (NI)" spielt sein Können nun auch im 32-Bit-Betrieb aus. Einige im Commit-Kommentar angegeben Benchmarks arbeiten dadurch mehr als doppelt so schnell; ganz nebenbei läuft auch die x86-64-Implementation durch diese Anpassungen ein klein wenig flotter. Der Treiber erhielt zudem eine optimierte Implementation für den in RFC4106 spezifizierten AES-GCM-Algorithmus.

Ein für 2.6.38 aufgenommener Patch rüstet die Printk-Format-Auszeichnung %pK und den Sysctl kptr_restrict nach. Über Letzteren lässt sich festlegen, ob der Kernel mit $pK gekennzeichnete Speicheradressen bei der Ausgabe über /proc oder die Kernel-Meldungen verschleiert, wenn nicht privilegierte Anwender diese Informationen abfragen – das soll Angreifern den Einbruch oder die Rechteausweitung erschweren, da diese Informationen einige Rückschlüsse über den Kernel-interna ermöglichen. Neben der Capability CAP_SYS_ADMIN gibt es jetzt auch CAP_SYSLOG, um etwa dem Root-Anwendern in einem Container das Recht zum Leeren des Kernel-Ausgaben ("dmesg -c") zu entziehen (1, 2, 3).

Die "Key Ring Service" genannte Infrastruktur zur Schlüsselverwaltung im Kernel beherrscht nun "Trusted and Encrypted Keys" – erste lassen sich nur mit einem TPM nutzen, das die Keys nur entriegelt, wenn das System als nicht kompromittiert eingestuft wird. Details zu den Möglichkeiten finden sich im den Commit-Kommentaren (1, 2), der zugehörigen Dokumentation und einem vergangenen Herbst publizierten Artikel bei LWN.net.

Auf x86-Systemen wird der 38er-Kernel die No-Execute-Funktionen (NX) moderner Prozessoren nun auch zur Absicherung von Kernel-Daten und -Modulen nutzen; Hintergründe dazu liefert LWN.net. Zudem aktiviert der Kernel den auch als EVP oder XD bekannten Schutz bei Intel-CPUs nun selbst, wenn das BIOS ihn lahm legt – eine Prüfung hatte zuvor ergeben, dass bei fast 10 Prozent der geprüften Ubuntu-Systeme die NX-Funktion brach lagen, weil das BIOS-Setup falsch konfiguriert war

Der Radeon-Treiber und dem für RCU zuständigen Code bieten nun zahlreiche neue Tracepoints für eine genauere Analyse der Vorgänge. An verschiedenen Stellen gab es zudem neue Abfragepunkte oder -Schnittstellen, die für Analyseprogramme wie Powertop interessant sind; Details dazu erläutert die bei 2.6.38 integrierte Dokumentation des Power Events API, die auch einige der älteren, mittlerweile abgekündigten Schnittstellen beschreibt.

Über das neue Makro TRACE_EVENT_FLAGS lassen sich Tracepoints nun speziell kennzeichnen. Durch das Setzen der in dem Rahmen eingeführte Flags TRACE_EVENT_FL_CAP_ANY gestattet der Kernel auch normale Anwendern die Verwendung des Tracepoints; alle Syscall-Tracepoints wurden bei 2.6.38 so gekennzeichnet (1, 2).

  • Der 38er-Kernel bringt eine Library zum Dekomprimieren des aus LZMA hervorgegangenen und für hohe Packdichten bekannten XZ mit. Darauf setzt nicht nur das SquashFS auf, das ab nun auch XZ-Unterstützung bietet, sondern auch Code, durch den der Kernel beim Booten Teile seiner selbst und Initial Ramdisks (Initrds) entpacken kann, die mit Hilfe von XZ komprimiert wurden (1, 2).
  • Die Kernel-Konfigurations-Option CONFIG_EMBEDDED war anfangs dazu gedacht, einige eher für den Embedded-Bereich interessante Einstellmöglichkeiten vor normalen Kernel-Übersetzern zu verstecken. Da sich mittlerweile auch zahlreiche für andere Einsatzgebiete interessante Optionen hinter ihr verbergen, haben die Kernel-Hacker sie nun in CONFIG_EXPERT umbenannt.
  • Die TINY_PREEMPT_RCU genannte Varianten des für RCU (Read Copy Update) zuständigen Codes beherrscht jetzt das für den Realtime-Einsatz interessante Priority Boosting.
  • Sofern Module eine Versions-Angabe enthalten, lässt sich diese nun auch via Sysfs abfragen.
  • Die Datei /proc/consoles verrät ab 2.6.38, welche Konsolen dem System bekannt sind und welche Fähigkeiten sie bieten.
  • Abermals gab es zahlreiche Verbesserungen und Anpassungen an der noch jungen und sich schnell weiterentwickelnden Tracing-Infrastruktur. Das Perf-Subkommando "trace" wurde etwa in "script" umbenannt. Über TRACE_EVENT_CONDITIONAL() lassen sich jetzt einzelne Tracepoints direkt deaktivieren, damit sie während einer Analyse gar nicht erst feuern – das minimiert den Performance-Einfluss und reduziert die Menge der erfassten Daten.
  • Die Blobs der etwa von der PPC-Architektur genutzten Device Trees lassen sich nun ins Kernel-Image linken.
  • Auch bei der Unterstützung für OLPCs mit x86-CPU setzt der Kernel jetzt auf Device Trees .
  • Wie immer stieß Unterstützung für verschiedene Hardware mit ARM-Kern zum Kernel, etwa für das Buffalo Linkstation Live v3 (LS-CHL) NAS, das AM3517/05 CRANE board oder die auch als SAARB bekannte PXA955 Handheld Platform
  • Der PPC-Code bringt nun "etwas Unterstützung" für den POWER7+ mit.
  • Den Oprofile-Code erweiterten die Kernel-Hacker um Unterstützung für einige Funktionen von AMDs Bulldozer.

Die Kernel-Hacker nahmen einige weitere Userland-Tools in das Unterverzeichnis tools/ der Linux-Quellen auf:

  • Das ursprünglich autotest genannte Skript ktest.pl assistiert beim Verteilen und Testen von Kerneln auf verschiedenen Systemen (u. a. 1, 2, 3)
  • Turbostat liefert Informationen zur den von X86-Prozessoren genutzten Frequenzen und Schlafmodi; dabei zeigt es auch an, ob die CPU per Turbo Boost auf die höchsten Taktfrequenzen wechselt.
  • Zum Kernel stieß ferner x86_energy_perf_policy, das neueren Intel-Prozessoren Hinweise liefert, die beim Abwägen zwischen einer Energie-effizienten oder schnellstmöglichen Arbeitsweise helfen.
  • In das Tool-Verzeichnis verschoben haben die Kernel-Hacker das Programm slabinfo, das einige Interna zur Speicherverwaltung des Kernels ausgibt.
  • Über eine Kernel-Erweiterung und zwei Userspace-Programme vhost_test und virtio_test können Entwickler einige Funktion von VirtIO und Vhost testen (1, 2)