Linux Kernel 2.6 - deutsche Übersetzung des "The post-halloween document"

Vorwort

Das Dokument ist eine deutsche Übersetzung des " The post-halloween document." von Dave Jones. Falls Ihr Anmerkungen zu dieser Übersetzung habt, schreibt mir bitte eine E-Mail an jens@kubieziel.de.

Ich habe zum Teil Ergänzungen hinzugefügt. Diese sind durch farbliche Änderungen und durch kursive Schrift markiert.

Inhaltsverzeichnis

Einführung

Dieses Dokument beschreibt einige der neuen Funktionalitäten, die im neuen 2.6-Linux-Kernel zu finden sind. Weiterhin findet ihr einige typische Fallen und neue Merkmale, die noch Tests benötigen.

Beachte bitte, dass eine Bemerkung "Nimm Kontakt zu foo@bar.com auf" auch bedeutet, dass du eine Kopie an die Linux Kernel Mailingliste schicken sollst.

Die letzte Originalversion dieses Dokuments findet sich auf http://www.linux.org.uk/~davej/docs/post-halloween-2.6.txt.

Vielen Dank an alle [zu viele, um sie aufzulisten] für deren wertvolle Rückmeldungen.

Das Dokument bezieht sich auf die x86-Architektur. Doch viele Merkmale, die hier dokumentiert sind, betreffen alle Plattformen.

Eine spanische Übersetzung existiert auf http://www.terra.es/personal/diegocg/post-halloween-2.6.es.txt. Die polnische Version findet sich auf http://soltysiak.com/linux/post-halloween-2.6.pl.txt. Nunmehr ist auch auf http://www.maluco.com.br/docs/post-halloween-2.6-pt_BR.txt eine weitere hinzugekommen.

Patches einspielen

Der empfohlene Weg, um Patches für Kernelversionen 2.4 oder eher einzuspielen, war, folgende Kommandozeile zu nutzen:
$ ls
linux-2.4.21
$ gzip -cd patchXX.gz | patch -p0

Ab den Kernelversionen 2.6 hat Linus ein Pfadelement zu den Diffs hinzugefügt. Deshalb ist es notwendig, -p1 in dem zu patchenden Verzeichnis zu verwenden.
$ pwd
/usr/src/linux-2.6.0-test9
$ gzip -cd patchXXX.gz | patch -p1

Fehler berichten

Viele der grossen Subsysteme des Linuxkernels haben eine eigene Mailingliste. Falls du also Fehler berichten willst, ist es immer gut, diese dahin zu senden. Falls du nicht genau weisst, wohin deine Meldung soll, sende sie an linux-kernel@vger.kernel.org.

ACPI
acpi-devel@lists.sourceforge.net
Bluetooth
bluez-devel@lists.sourceforge.net
Ext2
ext2-devel@lists.sourceforge.net
Firewire
linux1394-devel@lists.sourceforge.net
SCSI
linux-scsi@vger.kernel.org
USB
linux-usb-users@lists.sourceforge.net
XFS
linux-xfs@oss.sgi.com

Bekannte Fehler

Einige bekannte Fehler werden wieder und wieder berichtet. Unten steht, wie man diese umgehen kann:

Beim Booten erscheint ein leerer, schwarzer Bildschirm nach dem Auspacken des Kernel ("uncompressing kernel").
Stelle sicher, dass deine .config folgende Werte enthält:
  • CONFIG_INPUT=y,
  • CONFIG_VT=y,
  • CONFIG_VGA_CONSOLE=y
  • CONFIG_VT_CONSOLE=y

Andi Kleen hat einen Patch geschrieben, der obiges standardmäßig einstellt, wenn das betreffende System kein Embedded-System ist. Der Patch wurde in den Kernel 2.6.0-test3 aufgenommen. Siehe hierzu auch das Changelog.

Ein weiterer Fehler, der einige Leute kneift, ist, dass deren Netzwerkkarten keine Pakete empfangen. (Wird normalerweise bemerkt, wenn eine NIC keine DHCP-Antwort erhält, obwohl der Server eine verschickt hat)
Dies lässt sich mit den Bootoptionen "noapic", "acpi=off" oder beiden zusammen für die meisten Leute lösen.
VIA APIC ist derzeit kaputt. (Obiges und dieser Fehler hängen offensichtlich zusammen.)
Wie oben bereits beschrieben, boote mit "noapic".
Ich kann keine Module laden.
Du musst deine Programme auf den neuesten Stand bringen. (Schaue dir auch die Modulsektion weiter unten an.)
depmod berichtet "Unresolved symbols"
Dann ist wahrscheinlich das depmod aus den modutils vor dem depmod aus den module-init-tools im Pfad (Eventuell gibt es da unterschiedliche Pfadangaben für die Nutzer und für root.)

Regressionen

Dinge, die derzeit mit hoher Wahrscheinlichkeit nicht funktionieren

Zeug, das noch von 2.4 portiert werden muss

Entfernte Funktionen

Module

Methode zum Bau des Kernels

Subsystem für Ein- und Ausgabe

Du solltest eine bemerkenswerte Verbesserung im Durchsatz seit 2.4 bemerken. Grund hierfür ist eine Überarbeitung des Block- und Speichermanagementlayers.

Berichte, diesbezügliche Fehler oder Rückschritte an Jens Axboe und Andrew Morton.

Es gibt zwei verschiedene I/O-Speicher, die auf unterschiedliche Arten der Belastung passen. Die Standardeinstellung ist der antizipatorische I/O-Scheduler. Mit der Kerneloption elevator=deadline kannst du den Deadline-Scheduler wählen.

Für spezifische Lasten ist der antizipatorische Scheduler etwa 10% langsamer als der Deadline. Am bemerkenswertesten ist dies bei Lasten durch die Datenbank, die die gesamte Platte absuchen und dabei Lese- und synchrone Schreibaktionen durchführen. Daher werden alle Datenbank-Nutzer die obige Option wählen, um auch das letzte Stück an Performance auszureizen.

Verschiedene blockorientierte Gerätetreiber haben enorme Säuberungen hinter sich und wurden gleichzeitig auf neuere APIs aktualisiert.

Die Größe und Einstellung der O_DIRECT-Datei-I/O-Abfragen passt nun auf das Gerät und nicht das Dateisystem. Typischerweise bedeutet das, dass du nun O_DIRECT-I/O mit einer Granularität von 512 Byte statt 4kB machen kannst. Wenn du dich aber darauf verlässt, wird deine Applikation nicht mit 2.4er Kernel funktionieren und wird auch auf einigen Geräten nicht laufen.

Unterstützung für sehr große Blockgrößen

Dank der Arbeit, die von Peter Chubb gemacht wurde, können nun blockorientierte Geräte bis zu 16 TB auf 32bit-Architekturen und bis zu 8 EB auf 64bit-Architekturen zugreifen.

Um die neuen BLKGETSZ64 ioctls zu nutzen, brauchst du eine neuere Version der File-utils. (Derzeit hat nur jfsutils 1.0.20 diese Veränderungen eingebaut. Patches für andere Dateisysteme sind noch in der Schwebe.)

Das alte struct statfs kann nicht große Geräte beschreiben. Der statfs()-Systemaufruf wird nunmehr -EOVERFLOW für solche Geräte zurückgeben. Ein neuer Systemaufruf, statfs64(), wurde mit einer neuen Struktur hinzugefügt. Derzeit ist noch unklar, wieviele Nutzerprogramme bereits konvertiert wurden, um aus diesem Aufruf Vorteile zu ziehen.

POSIX ACLs & erweiterte Attribute

Werkzeuge für die Benutzerebene sind bei http://acl.bestbits.at erhältlich.

Veränderungen an der VM

Version0-Swap-Partitionen werden nicht länger unterstützt. Alle nutzen nun V1. Wenn du Zweifel hast, lasse mkswap laufen.
Linux 2.0.x braucht V0-Swapplatz. Ab Linux 2.1.117 wird V1 unterstützt. mkswap(8) unterstützt jedes Format.

Der aktuelle Teil der Rückwärtsabbildungen ('reverse mapping') von Rik von Riels rmap VM wurde eingebaut. Das Verhalten der VM bei verschiedenen Lasten sollte sich verbessern.

falls du ein Fehlverhalten der VM bemerkst, berichte das bitte an linux-mm@kvack.org.

Die VM prüft explizit auf Sparse-Swapdateien und bricht ab, wenn sie eine findet.

/proc/sys/vm/swappiness definiert die Präferenzen des Kernel für den Pagecache und Bildspeicher (mapped memory). Wenn man dies auf 100 (Prozent) einstellt, behandelt der Kernel beide Typen von Speicher gleich. Wenn das hingegen auf 0 stellt, macht der Kernel lieber eine Rückforderung von Pagecache statt von Speicher, der in Pagetables abgebildet ist.

Der bdflush()-Systemaufruf ist nun offiziell veraltet. Der Systemaufruf macht nichts und druckt eine ernste Warnung an die Nutzer aus. Die Funktionalität wurde durch die pdflush-Daemons ersetzt.

Durch diverse Veränderungen sollten Swapdateien genauso schnell wie Swappartitionen sein.

In 2.4 waren bis zu 64 Swapdateien möglich. Diese Anzahl wurde in 2.6 auf 32 reduziert. Diese Dateien können, wie auch in V2.4, bis zu 64 GB groß sein. Allerdings benötigst du ein aktuelles util-linux, um ein mkswap zu haben, das mehr als 2 GB unterstützt.

Kernelpräemption

Die viel diskutierten Präemptionspatches haben es in die Version 2.6 geschafft. Damit solltest du viel weniger Latenzen spüren, wenn du Multimediaapplikationen brauchst.

Beachte: Es gibt immer noch Situationen, wo die Präemption kurzfristig abgeschaltet werden muss, wo wir es aber nicht tun. Dies tritt dann auf, wenn Pro-CPU-Daten genutzt werden.

Wenn du die Meldung xxx exited with preempt count=n im Syslog erhältst, brich nicht in Panik aus. Diese Meldungen sind nicht schwerwiegend. (Etwas sperrt und gibt diese Sperre später nicht frei.)

Falls du hohe Latenzen mit aktivierter Kernelpräemption in einem speziellen Codepfad feststellst, berichte das an Andrew Morton und Robert Love. Dein Report sollte etwas wie z.B. "Die Latenz in meinem Programm XYZ hat nnn ms, wenn ich foo mache. Normalerweise ist diese zzz". Dabei ist foo eine Aktion.

Verbesserungen im Prozessscheduler

Ein weiteres viel besprochenes neues Merkmal ist der von Ingo Molnar überarbeitete Prozessscheduler, der einen O(1)-Algorithmus nutzt. Bei niedrigen Lasten solltest du keine Veränderungen feststellen. Bei einer hohen Zahl an Prozessen jedoch, speziell bei großen SMP-Systemen, sollte es eine deutlich verbesserte Skalierbarkeit geben.

Der Scheduler kennt nun Hyperthreading-SMP und wird Prozesse über physikalisch verschiedene CPUs verteilen, statt nur über logische CPUs.

Robert Love hat verschiedene Hilfsprogramme geschrieben, die das Verhalten des Schedulers (Prozesse an CPUs binden usw.) ändern. Diese Werkzeuge findest du bei http://rlove.org/schedutils.

Das verhalten von sched_yield() hat sich sehr verändert. Eine Aufgabe, die diesen Systemaufruf nutzt, sollte nun erwarten, wahrscheinlich für eine sehr lange Zeit zu schlafen. Aufgaben, die nicht gerade darauf brennen, Prozessorzeit abzugeben, sollten diesen Aufruf nicht oft verwenden. Unglücklicherweise nutzen einige GUI-Programme, wie Open Office, diesen Aufruf sehr exzessiv und deshalb ist deren Performance schlecht. Derzeit sieht es so aus, als ob das Verhalten im Kernel 2.6 optimal ist. Trotzdem brauchen einige Programme Fixes.

Obiges trifft auch auf die Benutzung von yield() im Kernel zu.

2.6 fügt Systemaufrufe für die Manipulation der Prozessoraffinität eines Tasks hinzu: sched_getaffinity() und sched_setaffinity().

Fehlermeldungen bitte an Ingo Molnar und Robert Love.

Debian-Nutzer, die komische Effekte, wie z.B. Sprünge in der MP3-Wiedergabe oder ruckartige Mausbewegungen, feststellen, sollten den X-Server davon abhalten den Nice-Wert auf -10 neu einzustellen. Du kannst das permanent mit der Eingabe dpkg-reconfigure xserver-common ändern. Falls du die Datei /etc/X11/Xwrapper.config nicht von debconf ändern lässt, musst du diese direkt editieren.

Die Balance von IRQs zwischen multiplen CPUs sollte durch das Programm irqbalance gehandhabt werden.

David Mosberger pflegt eine Website, die einige bekannte Fehler des O(1)-Scheduler enthält. Diese findet sich auf http://www.hpl.hp.com/research/linux/kernel/o1.php.

PCI

Unterstützung für PCI-Domänen wurde hinzugefügt. Für die meisten Leute heißt das, das alle Namen von PCI-Slots mit "0000:" beginnen. Leute mit größeren Servern können nun all ihre PCI-Geräte ansprechen.

Weitere Hotplug-Treiber sind neu. Dazu gehören Dummy-PCI-Hotplug-Treiber. Damit können Leute ohne spezielle Hardware Hotplug-Merkmale testen.

Random

/dev/hwrandom erhielt Unterstützung für neue Hardware (Nunmehr auch zurück portiert auf HW RNG auf den neueren VIA Cyrix CPUs).

rng-tools können bei http://sourceforge.net/projects/gkernel gefunden werden.

Schnelle Benutzerebene-Mutexe (Futexes)

Rusty Russell hat eine Funktionalität addiert, die der Benutzerebene erlauben, schnelle Mutexes zu haben. Diese nutzen nur Systemaufrufe, wenn es Probleme gibt. Diese wird NPTL genutzt.

Weitere Informationen gibt es bei Ulrich Drepper unter der URL: http://people.redhat.com/drepper/futex.pdf.

Bert Hubert hat eine Dokumentation dazu geschrieben: http://ds9a.nl/futex-manpages.

epoll

David Libenzi schrieb einen ereignisbasierten Poll-Ersatz. Dieser wurde in 2.6 mit eingebaut. Weitere Informationen hierzu sind auf http://www.xmailserver.org/linux-patches/nio-improve.html und http://lwn.net/Articles/13587/ verfügbar.

Verbesserungen beim Threading

Ingo Molnar hat eine Menge Arbeit in Verbesserungen des Threadings gesteckt. Einige neue Merkmale sind:

Nutzer sollten eine signifikante Beschleunigung in grundlegenden Threadoperationen feststellen. Dies trifft durch ein kleineres Ausmaß auch für alte Threading-Bibliotheken in Benutzerebene wie z.B. LinuxThreads zu.

Fehlermeldungen hierzu gehen an Ingo Molnar und an phil-list@redhat.com. Derartige Fehler können im Bereich des Signalhandlings und verwandten Threading-Semantiken plus Coredumping auftreten.

Native Posix Threading Library (NPTL):
Ulrich Drepper hat eng mit Ingo an Erweiterungen des Threadings zusammen gearbeitet und eine 1:1 Modell-Threading-Bibliothek entwickelt. Mehr dazu kannst du auf http://people.redhat.com/drepper/nptl-design.pdf finden.

Erweitertes Coredumping

Kernelversion 2.6 bietet die Möglichkeit, die Art wie Kerndateien durch /proc/sys/kernel/core_pattern benannt werden zu konfigurieren. Du kannst verschiedene Formatbezeichner in diesem Namen nutzen. So kannst du bestimmen, wie der Coredump benannt wird:

Du solltest absichern, dass der String nicht länger als 64 Byte wird.

Multithread Prozesse können nun auch coredumpen.

Eingabeschicht

Dies ist wahrscheinlich, die am meisten sichtbare Veränderung für Endnutzer. Wenn es falsch konfiguriert ist, wirst du feststellen, dass dein(e) Tastatur/Maus/anderes Eingabegerät nicht mehr funktioniert. Version 2.6 bietet eine viel flexiblere Schnittstelle zu Geräten wie Tastaturen.

Der Nachteil sind verwirrendere Optionen. Im "Input Device Support" Menu musst du mindestens folgendes aktivieren:

--- Input I/O drivers
< > Serial i/o support
< >   i8042 PC Keyboard controller
[ ] Keyboards
[ ] Mice

Wähle auch die relevante Tastatur/Maus aus der Liste.

Falls deine Tastatur/Maus immer noch nicht funktioniert, bearbeite die Datei drivers/input/serio/i8042.c und ersetze das #undef DEBUG mit #define DEBUG und kompiliere neu.
Wenn du den Rechner hochfährst, findest du eine Menge an Debug-Informationen. Leite diese an Vojtech Pavlik weiter.

Falls du einen KVM-Schalter nutzt und Probleme feststellst, boote mit der Bootoption psmouse_noext. Dies sollte das Problem lösen.

Nutzer von Multimediatasten ohne X werden Veränderungen sehen, wie der Kernel diese Tasten handhabt. Leute, die Keymaps oder Keycodes in 2.4 angepasst haben, werden in 2.6 einige Veränderungen machen müssen.

Nutzer, die eine Unterstützung ihrer PC-Lautsprecher habenwollen, müssen CONFIG_INPUT_PCSPKR aktivieren. Sonst erhält man keinen einzigen Piep.

Nutzer von Synaptics Touchpad sollten sich http://web.telia.com/~u89404340/touchpad/ genauer ansehen.

In der Version 2.4 konnten die Besitzer von japanischen Keyboard die Zeichen | oder / eintippen ohne spezielle Keymaps auf der Konsole zu laden. Mit der Keymap in 2.6 ist dies nicht mehr möglich. Falls man diese Tastaturen nutzt, sollte man eine Keymap mit loadkeys laden. Die loadkeys-Version sollte aus den Quellen gebaut sein. Denn in einigen Distributionen kann loadkeys keine Keycodes > 127 laden. Dafür existiert ein Patch. Dieser wurde noch nicht mit eingebaut.

PnP Schicht

Unterstützung für Plug&Play-Geräte wie frühe ISAPnP-Karten wurde im 2.5er Kernel sehr verbessert. Der neue Code verhält sich näher zu dem, der PCI-Geräte verwaltet und bindet auch PnP-BIOS-Code ein.

Problemberichte der PnP-Funktionalität gehen an Adam Belay.

ALSA

Die Advanced Linux Sound Architecture wurde in die V2.5 eingebaut. Dies bietet eine beträchtlich verbesserte Funktionalität gegenüber den alten OSS-Treibern. Allerdings werden neue Programme für die Nutzer gebraucht.

Einige Distributionen bieten schon seit einiger Zeit ALSA mit an. So hast du eventuell schon die notwendigen Werkzeuge dafür. Falls nicht, kannst du diese auf http://www.alsa-project.org/ finden.

ALSA kann eine OSS-Schnittstelle emulieren, indem die snd_pcm_oss/snd_pcm_mixer-Module genutzt werden. Wenn deine Soundkarte nichts als Stille produziert, musst du eventuell alsamixer laufen lassen. Dies aktiviert die Lautstärke auf Kanälen, die /dev/mixer nicht sieht.

Beachte, dass die OSS-Treiber noch funktionieren und auch noch da sind. Viele Merkmale oder Fixe, die in 2.4 eingebaut wurden, sind noch nicht in den Treibern drin. Es ist derzeit noch unklar, ob die Treiber in den neuen 2.6-Kernel enthalten sein werden. Das Langzeitziel ist, dass alle zu dem (überlegenen) ALSA migrieren.

AGP

Der agpgart-Treiber bekam eine lang fällige Säuberung. Dabei wurde dieser in einen agpgart-Kern und Pro-Chipsatz-Treiber aufgeteilt. Du musst eventuell deine Modulkonfiguration anpassen, um die Chipsatztreiber zu laden, wenn das Hauptmodul geladen wird.

Generische AGP-3.0-Unterstützung ist nun eingeschlossen.

DRI

In der Version 2.6 gab es bislang nur wenige (wenn überhaupt) Tests für ältere Versionen von XFree86. Feedback, ob es funktioniert, wäre sehr nützlich.

Schnellere Systemaufrufe

Systeme, die die SYSENTER-Erweiterung unterstützen (hauptsächlich Intel II und höher und AMD Athlon), haben nun eine schnellere Methode, die Übertragung von Benutzerebene in den Kernelraum zu machen, wenn ein Systemaufruf stattfindet.

Pentium Pro hat ebenfalls SYSENTER, ist aber durch einen Fehler unbenutzbar.

Ohne eine aktualisierte glibc wird man dies nicht feststellen.

VMWare-4-Nutzer bekommen deswegen eventuell Abstürze. Zwane Mwaikambo schrieb einen Patch für eine "nosysenter"-Option. Es ist wert, danach zu googeln, falls es kein VMWare-Update gibt.

Fehlermeldungen an Linus Torvalds und libc-alpha@sources.redhat.com.

procps

Das 2.6 /proc-Dateisystem ändert ein paar Statistiken. Das verwirrt ältere Versionen von procps. Rik van Riel und Robert Love pflegten eine Version von procps während der Entwicklung von 2.6. Diese spürt Änderungen von /proc/ auf. Finden kannst du das auf http://rlove.org/procps/.

Alternativ unterstützt das procps von Albert Cahalan die geänderten Formate seit v3.0.5 - http://procps.sourceforge.net/.

Das Format von /proc/meminfo änderte sich leicht. Dies führte auch zu merkwürdigen Problemen mit gtop. Wahrscheinlich machte das auch einige KDE/GNOME-Applets in der Menuleiste kaputt.

Framebufferschicht

James Simmons hat die Framebuffer/Consoleschicht merklich in 2.6 verbessert. Die Unterstützung für einige Karten hängt noch ein wenig. Aber es sollte funktionell keine Unterschiede zu vorherigen Versionen geben.

Die Bootoptionen haben sich in Abhängigkeit von deinem Treiber vielleicht geändert. Ein Beispiel dafür ist:
append = "video=radeon:1024x768-24@100"
wird zu
append = "video=radeonfb:1024x768-24@100"

Einige Werkzeuge, wie z.B. fbset, sind noch nicht aktualisiert.

Der VESA-Framebuffer aktiviert nun MTRRs für die Framebuffer-Speicherbereich während der Initialisierung (Notiz: Nur PCI-Karten). Falls du korrupte Darstellungen feststellst, berichte das bitte mit einer Ausgabe von lspci. Dann wird deine Karte auf eine schwarze Liste gesetzt.

Alle Problemberichte gehen an James Simmons.

IDE

Die Überarbeitung des IDE-Code war Gegenstand vieler Kritiken in den zeitigen 2.5.x-Versionen. Einige Leute testeten dadurch nicht mehr. Diese Arbeit wurde dann nachträglich raus geworfen und man kehrte zu dem Status von 2.4.18 zurück. Seitdem gab es einiges an zusätzlicher Arbeit. Aber nicht in dem Ausmaß wie die ersten Säuberungsversuche.

Bekannte Probleme mit dem derzeitigen IDE-Code sind:

IDE-Geometrie-Umsetzer wie OnTrack, EZ Partition, Disk Manager werden nicht mehr länger automatisch erkannt. Der einzige Weg ist, den Umsetzer zu entfernen und neu zu starten oder entsprechende Bootparameter in Abhängigkeitvom genutzten Programm zu setzen:

Schaue dir auch die CD-Aufnahme-Sektion an, um Informationen über wichtige Änderungen der IDE CD Treiber zu erhalten.

IDE TCQ

Tagged Command Queueing für IDE wurde eingebunden.

Nicht alle Kombinationen von Controllern und Geräten mögen dies. So sei vorsichtig.
LIES DAS ALS: Nutze kein IDE TCQ bei allen Daten, auf die du Wert legst.
Es ist wahrscheinlich, dass problematische Kombinationen auf eine schwarze Liste kommen, wenn derartiges entdeckt wird.

Falls du nicht die Option "TCQ on by default" gewählt hast, kannst du sie durch
echo "using_tcq:32" > /proc/ide/hdX/settings
aktivieren. Wenn du die 32 durch 0 ersetzt, deaktivierst du TCQ wieder.

Berichte Erfolgs-/Fehlerstories an Jens Axboe und sende die Ausgabe von hdparm -i /dev/hdX und lspci mit.

SCSI

Einige SCSI-Treiber brauchen noch arbeiten und werden noch nicht einmal kompilieren.

Einige Treiber verursachen Warnungen beim Kompilierprozess durch fehlende abort: und reset:-Funktionen.

Einige haben diese entfernt und es fehlt immer noch eine Fehlerbehandlung. Diese sind derzeit ncr53c8xxx, sym53c8xx.

Es existiert Unterstützung für große dev_t. Dies erlaubt die Unterstützung von Tausenden von Platten (war 128 oder 256 im 2.4)

Große Aufräumarbeiten beim Code. Ursprünglich wurden die gemacht, um blockorientierte Schicht zu verbessern. Dies führt zu:

Verbesserter Fehlerverarbeitungs- und -scancode (Unterstützung für große LUN)

Eine Menge an SCSI-Treiber-Interna ist erhältlich via sysfs.

v4l2

Die video4linux-API bekam ihre lang erwartete Säuberung.

xawtv, bttv sowie die meisten anderen existierenden v4l-Werkzeuge sind auch mit der v4l2-Schicht kompatibel. Du solltest keinen Verlust an Funktionalität feststellen.

Mehr Informationen gibt es auf http://linux.bytesex.org/v4l/.

Quota

Das neue Quotasystem braucht neue Programme und unterstützt 32bit UIDs. http://www.sourceforge.net/projects/linuxquota/

CD Aufnahme

Jens Axboe fügte die Möglichkeit der Nutzung von DMA zum Schreiben auf ATAPI Geräten hinzu. Das Beschreiben von CDs sollte nun viel schneller als in Version 2.4 sein. Außerdem ist es auch weniger fehleranfällig bei Bufferunderruns und ähnlichem.

Mit einem aktuellen cdrecord brauchst du nicht länger die ide-scsi-Emulation, um einen IDE-CD-Brenner zu betreiben.

Audiospuren von einer CD zu lesen nutzt ebenfalls DMA und sollte bemerkenswert schneller sein. Eine aktualisierte Version von cdda2wav findest du auf: ftp://ftp.de.kernel.org/pub/linux/kernel/people/axboe/tools/

Sende positive wie negative Berichte über Audioextraktion mit cdda2wav und Brennen mit dem modifizierten cdrecord an Jens Axboe.

Derzeit funktioniert nur "open device by name" in cdrecord
cdrecord -dev=/dev/hdX -inq

Weitere Informationen finden sich auf http://lwn.net/Articles/13538/ und http://lwn.net/Articles/13160/.

USB

Die USB-Host-Controller wurden in 2.6 umbenannt:

Es gibt wenige Veränderungen, die für den Nutzer sichtbar sind. Die einzige bemerkbare größere Veränderung ist, das es nun nur noch einen UHCI-Treiber gibt. usbdevfs wurde in usbfs geändert.

USB-storage hat ein verändertes Verhalten. Ein Gerät, was zunächst entfernt und dann wieder verbunden wird, wird nicht wieder mit dem alten Knoten in /dev verbunden.

USB-storage bekam des weiteren einige Performanceerweiterungen.

USB 'gadget' Unterstützung

Es gibt eine neue "USB Gadget"-Schnittstelle, die jetzt USB-Geräte unterstützt, die Linux als Betriebssystem nutzen. Dies betrifft z.B. PDAs, Kabelmodems und einige Drucker. Diese API beschreibt, wie der Treiber für den USB-Gerätecontroller (UDC) mit den portablen "Gadgettreibern" spricht. Ein Gadgettreiber ist das, was die Hardware wie eine Netzwerkverbindung oder einen Drucker arbeiten lässt.

Falls du keinen Gadgettreiber im Kernel schreiben möchtest, kannst du das mit "gadgetfs" im Benutzermodus tun. Jeder Endpunkt erscheint als einzelne Datei. Daher ist es um ein Vielfaches einfacher als usbfs. Derzeit läuft es synchron, aber sollte kein Problem sein, Unterstützung für AIO hinzuzufügen.

Schaue dir http://www.linux-usb.org/gadget für weitere Informationen zu dieser API an. Dies schliesst ein pthread-Beispielprogramm für "gadgetfs" ein. Ein weiterer Punkt für Informationen sind die Kerneldokumentationen des 2.6er Kernel.

stat in Nanosekunden

Der stat64()-Systemaufruf wurde so geändert, dass er augenblickliche Granularität zurück gibt. Dies ermöglicht make(1) bessere Entscheidungen zu treffen, ob oder ob nicht eine Datei wieder kompiliert werden muss. Nicht alle Dateisysteme unterstützen eine derartige Präzision.

Dadurch erhaltet ihr viel genauere Zeitangaben. Stellt euch vor, im Makefile steht die Zeile:
foo: foo.c
gcc -o foo foo.c

Bei einem neuen Makelauf muss entschieden, ob foo.c neuer als foo ist und falls dies so ist, muss neu kompiliert werden. Wenn bei einer alten Kernelversion die Änderungszeiten für beide Dateien sehr eng beieinander liegen, waren sie gleich alt. Mit der neuen Kernelversion sind die Zeitangaben genauer.

Dateisysteme

Eine Anzahl von zusätzlichen Dateisystemen haben es nach 2.6 geschafft.

Derzeit werden folgende unterstützt:

Während diese außerhalb des Kernelbaums getestet wurden, ist das Niveau an Tests nach der Hereinnahme einmalig. Sei vorsichtig, wenn du vertrauensvolle Daten auf unausgereiften Dateisystemen hast. Eine Vielzahl von neuen Merkmalen und Verbesserungen wurden auch an den schon in 2.4 existierenden Dateisystemen gemacht.

Vorliegende Berichte von Belastungstests mit verschiedenen Tools wären sehr nützlich.

Generische VFS-Veränderungen

Seit Linux 2.5.1 ist es möglich, einen Unterbaum atomar an einen anderen Platz zu verschieben. Die Benutzung ist:
mount --move olddir newdir

Seit 2.5.43 setzt dmask=value die umask nur für die Verzeichnisse. Der Standard ist die umask des Prozesses. fmask=value setzt die umask nur für reguläre Dateien. NOCHMAL, der Standardwert ist die umask des aktuellen Prozesses.

Verzeichnisse können nun mit chattr +S als synchron markiert werden. Dadurch werden alle Veränderungen sofort auf die Platte geschrieben.
Dies garantiert keine Atomarität, speziell nicht für alle Dateisysteme und für alle Operationen. Man kann garantieren, dass Systemaufrufe erst dann zurückkehren, wenn die Veränderungen auf der Platte sind. Dies hat natürlich einige signifikante Auswirkungen auf die Performance.

devfs

devfs wurde ein bisschen aufgeteilt und eine Menge an doppelter Funktionalität wurde entfernt. Du musst nun CONFIG_DEVPTS_FS=y aktivieren und das devpts-Dateisystem in derselben Weise mounten, wie wenn du kein devfs nutzt.

ext2

2.5.49 schloss eine Erweiterung von ext2 ein. Diese verhindert, dass buffer_head-Strukturen nicht an den Datei- oder Verzeichnisseitenspeicher angehangen wird, nie. Das ist für Maschinen mit sehr viel Arbeitsspeicher. Es wird mit der -o nobh-Mount-Option aktiviert.

Das ext2-Dateisystem nutzt nun ein feinkörnigeres Locking, welches zu reduzierten Kontext-Switch-Raten und höherem Durchsatz auf großen SMP-Maschinen führt.

ext3

Das ext3-Dateisystem hat indizierte Verzeichnisunterstützung erhalten. Diese offeriert beachtenswerte Performancegewinne, wenn das Dateisystem auf Verzeichnissen mit einer hohen Anzahl von Dateien genutzt wird.

Um das htree-Merkmal zu nutzen, brauchst du mindestens Version 1.32 der e2fsprogs.

Existierende Dateisysteme können mit tune2fs -O dir_index /dev/hdXXX konvertiert werden.

Die letzte Version von e2fsprogs gibt es auf http://prdownloads.sourceforge.net/e2fsprogs.

Die ext2- und ext3-Dateisysteme haben neue Dateialloziierungspolicies ("Orlov Allocator"). Dieser platziert die Unterverzeichnisse näher beieinander auf der Platte. Dies zielt darauf, dass Operationen, die viele Dateien in einem Verzeichnis berühren, viel schneller sind, wenn dieser Verzeichnisbaum unter einem 2.5er Kernel gemacht wurde.

Reiserfs

Reiserfs unterstützt nun Inodeattribute, wie z.B. unveränderlich (immutable). (Dies gab es schon in 2.4.17. So ist es nicht ganz neu.)

Unterstützung für verschobene oder Nicht-Standard-Größen Journals (wurde auch in 2.4.22pre3 portiert)

Unterstützung für Schreibzugriffe größer als 4 kB, was eine Geschwindigkeitsverbesserung beim Schreiben von großen Dateien bringt. (Speziell im Anhängemodus). Dies sollte auch mehr SMP-freundlich sein.

Unterstützung für variable Blockgrößen (z.B. kann man jede Blockgröße in der Spanne von 1024 und PAGE_CACHE_SIZE wählen, es muss eine Zweierpotenz sein.)

NFS

Grundlegende Unterstützung für NFSv4 wurde hinzugefügt (Server und Client).

Zusätzlich unterstützt kNFSD Transport über TCP. Dieses experimentelle Merkmal ist für 2.4.20 überführt worden.

Berichte über die Interoperabilität mit anderen Betriebssystemen wären nützlich.

v1.0.3 der nfs-utils unterstützt die neueren 2.5er Veränderungen des kdev_t Typs. Du kannst das bei NFS bekommen.

Probleme an nfs@lists.sourceforge.net.

NTFS

Ein neuer, umgearbeiteter NTFS-Treiber kam nach 2.6. Er hat folgende Hauptnutzen gegenüber dem alten Treiber:

sysfs

In einfachen Worten: Das sysfs-Dateisystem ist ein einfacher und gemeinsamer Weg für Treiber, ihre Interna zu exportieren, als /proc.
Dieses Dateisystem wird immer mit einkompiliert und kann wie jedes andere Dateisystem gemountet werden. Keine anderen Werkzeuge aus der Benutzerebene als cat(1) und echo(1) werden benötigt. Weiterhin ist tree(1) ein gutes Werkzeug, um die Gesamtstruktur anzuschauen:
mount -t sysfs none /sys

Schaue dir Documentation/filesystems/sysfs.txt für weitere Informationen an.

JFS

IBMs JFS wurde während 2.6 eingebaut und auch für 2.4.20 verfügbar gemacht. Trotzdem war es hier ein neues Merkmal. Über JFS kannst du dich bei JFS-Projektseite informieren.

XFS

Das SGI XFS Dateisystem wurde mit eingebracht und hat eine Anzahl von Features für die Benutzerebene. Nutzer sollten XFS: A high-performance journaling filesystem für weitere Informationen lesen.
Die verschiedenen Programme, um XFS-Volumes zu schaffen und manipulieren, finden sich auf dem FTP Server von SGI:
xfsprogs.

CIFS

Programme und Dokumentation für das Common Internet File System (CIFS) finden sich auf CIFS VFS - Advanced Common Internet File System for Linux.

FAT

CVF (Compressed VFAT) Unterstützung wurde entfernt. Das bedeutet, dass du nicht länger auf Partitionen zugreifen kannst, die mit DriveSpace formatiert wurden.

HugeTLBfs

Dateien in diesem Dateisystem haben Rückhalt durch große Seiten (large pages). Documentation/vm/hugetlbpage.txt hat mehr Details.

Interne Dateisysteme

/proc/filesystems werden verschiedene Dateisysteme enthalten, die nicht in Benutzerebene mountbar sind, aber intern vom Kernel genutzt werden, um über Dinge die Übersicht zu behalten. Unter diesen sind futexfs und eventpollfs.

Unterstützung für asynchrones I/O (AIO)

In 2.6 wurde wurde Untersützung für Kernel AIO eingebunden.

AIO aktiviert sogar einen einzelnen Anwendungsthread I/O-Prozesse mit mit anderen Prozessen zu überlappen. Dies geschieht, indem eine Schnittstelle angeboten wird, wo ein oder mehrere I/O-Abfragen in einen Systemaufruf (io_submit), ohne auf dessen Beendigung zu warten, und eine separate Schnittstelle (io_getevents), um fertige I/O-Operationen zu ernten, geboten wird. Letzteres wird mit einer gegeben Komplettierungsgruppe assoziiert.

Folgendes ist eine kurze Zusammenfassung, was heute wie erwartet funktioniert:

Und was nicht wie erwartet funktioniert oder noch nicht unterstützt ist:

Du musst libaio-0.3.92 installieren, wenn du AIO-Anwendungen schreibst, die native AIO-Schnittstellen nutzen.

Auf der Seite Kernel AIO support findest du weitere Informationen zu AIO.

Profiling

Ein systemweiter Performanceprofiler ist ab 2.6 im Kernel. Wenn diese Option einkompiliert ist, bekommst du ein oprofilefs-Dateisystem, dass du mounten kannst. Mehr darüber kannst du auf der Projektseite von OProfile herausfinden.

Du brauchst ein geändertes readprofile-Programm in 2.6. Dies ist in util-linux ab V2.11z präsent.

Verbesserte BIOS Table-Unterstützung

Linux unterstützt diverse neue BIOS-Erweiterungen.

Einfache Bootoptionsunterstützung

Die SBF-Spezifikation ist eine x86-BIOS-Erweiterung, die verbesserte Bootgeschwindigkeiten erlaubt. Dies macht es dadurch, indem es ein CMOS-Feld markiert, um zu sagen "Das Booten war in Ordnung, überspringe das ausgedehnte POST beim nächsten Mal".

Nutzertools finden sich in sbf.c.

Weitere Informationen zu SBF gibt es auf WHDC.

EDD-Unterstützung

Unterstützung für BIOS Enhanced Disk Drive Services (EDD) wurde hinzugefügt. Dies exportiert Informationen darüber, was das BIOS denkt, was die Bootplatte ist und weitere nützliche Informationen, nach /sys/firmware/edd.

Matt Domsch interessiert sich für Erfolg/Niederlagen bei diesem Code. Einfache Tests sind auf seiner Seite beschrieben. Derzeit sammelt er keine Resultate mehr.

Verbesserte Systemüberwachung

x86 CPU Erkennung

Der Code für die CPU-Erkennung wurde ziemlich heftig durch gerüttelt. Um sicherzugehen, dass deine CPU alle relevanten Workarounds hat, schaue nach, ob diese korrekt erkannt wurde. cat /proc/cpuinfo sagt, was der Kernel denkt, was es ist.

Der x86 MTRR Treiber bekam eine ähnlich bemerkenswerte Überarbeitung. Prüfe, ob XFree86 MTRRs auf die selbe Weise wie in 2.4 setzt. (Fehler werden nach /var/log/XFree86.0.log geschrieben.)

Frühe PII Xeon Prozessoren und wahrscheinlich weitere frühe PII Prozessoren brauchen Microcode-Aktualisierungen entweder vom BIOS oder vom Microcodetreiber. Dies umgeht die Bugs, die der O(1)-Scheduler aufgedeckt hat. Die relevanten Werkzeuge finden sich bei Microcode.

Jeder Fehler in beiden sollte an mochel@osdl.org mit Cc: davej@codemonkey.org.uk gehen.

Extra tainting

Das Betreiben von verschiedenen AMD-Prozessoren in SMP-Maschinen ist abseits der Spezifikation und wird den Kernel mit dem 'S'-Flag verderben. Zwei Athlon XPs z.B. scheinen gut zu funktionieren. Aber es macht es auch schwierig, Fehler zu finden.
Es ist wahrscheinlich, dass diese Probleme erweitert werden, um andere Fälle, die außerhalb der Spezifikation liegen, zu finden.

Wenn du versuchst, das Laden eines Modules mit insmod -f zu erzwingen, wird die neue Modulschnittstelle den Kernel verderben.

Energieverwaltung

2.6 enthält einen aktuelleren Schnappschuss des ACPI-Treibers. Falls du beim Hochfahren Probleme feststellst, versuch das Argument acpi=off zu nutzen. Das schaltet jegliche ACPI-Interaktion aus. ACPI ist vielmehr mit eingebunden, das System zu booten, als es noch in 2.4 der Fall war.

Die alte acpismp=force-Bootoption ist nunmehr obsolet geworden und wird ignoriert, da der alte "mini ACPI"-Parser entfernt wurde.

Software Suspend ist noch in der Entwicklung begriffen und braucht mehr Arbeit. Die Nutzung mit SMP und/oder PREEMPT wird nicht empfohlen.

Der ACPI-Code macht grundlegende, vernünftige Tests mit der DMI-Struktur im BIOS. Dies geschieht, um das Datum, an dem es geschrieben wurde, festzustellen. BIOSe, die vor 2000 hergestellt wurden, werden als kaputt angenommen. In einigen Umständen ist die Annahme falsch. Falls du eine Nachricht siehst, die dir sagt, dass ACPI aus diesem Grund deaktiviert wurde, versuche mit acpi=force zu booten. Falls das funktioniert, sende die Ausgabe von dmidecode und eine Erklärung, warum das BIOS nicht auf der schwarzen Liste stehen sollte an acpi-devel@lists.sourceforge.net.

CPU Frequenzskalierung

Einige Prozessoren haben die Möglichkeit, ihre Spannung/Takt zu skalieren. 2.6 führt eine Schnittstelle zu diesem Merkmal ein. Documentation/cpufreq hat weitere Informationen. Diese Funktionalität deckt auch weitere Merkmale wie Intels SpeedStep und das Powernow!-Merkmal, das man in mobilen AMD Athlon Prozessoren findet, ab. Zusätzlich zu den x86 Varianten unterstützt dieses Gefüge auch verschiedene ARM CPUs. Einen Daemon für die Benutzerebene, der die Batterie überwacht und justiert, findet sich auf: cpufreqd/.

Hintergrundpolling von MCE

Der Maschinencheckhandler wurde so erweitert, dass es regelmäßig nach Problemen beim AMD Athlon und Intel Pentium IV Systemen pollt. Dies kann in Maschinencheckausnahmen resultieren, die häufiger als bei Systemen, die nicht der Spezifikation entsprechen, in 2.4 auftreten. (Übertakten/nicht adäquate Kühlung usw.)

LVM2 - Devicemapper

Der LVM1-Code wurde komplett entfernt und mit einem besser gestalteten Devicemapper ersetzt. Dieser ist rückwärts kompatibel mit dem LVM1-Format.

Der Devicemapper braucht neue Werkzeuge zu managen. Diese bekommst du von sistina.com.

Debug Optionen

Während der Stabilisierungsperiode ist es wahrscheinlich, dass die Debugoptionen im Kernelhackingmenu einige Probleme verursachen. Bitte berichte jedes dieser Probleme an linux-kernel@vger.kernel.org, anstatt die entsprechende CONFIG-Option zu deaktivieren.

Die Zusammenführung von kksymoops bedeutet, dass der Kernel automatisch decodierte Oopse ausspuckt (Du brauchst diese nicht mehr durch ksymoops zu schicken.). Deshalb solltest du immer die Option "Load all symbols for debugging/kksymoops" im Kernel hacking menu aktivieren.

Tests mit CONFIG_PREEMPT wird ebenfalls die Menge an Debugcode erhöhen. Kernelpräemption gibt uns die Möglichkeit, einen ganzen Haufen von Debugprüfungen, wie z.B. Schlafen mit gehaltenen Sperren, Scheduling während atomar, Ausstieg mit gehaltenen Locks usw., zu machen.

Compilerprobleme

Der empfohlene Compiler für x86 ist immer noch 2.95.3.

Wenn der Kernel mit einem modernen gcc, wie gcc 3.x kompiliert wird, macht 2.6 einige zusätzliche Optimierungen, die 2.4 nicht ausgeführt hat.

Nutze nicht gcc 3.0.x auf x86 wegen eines Stackpointerfehlers.

gcc 2.96 ist nicht mit CONFIG_FRAME_POINTER=y unterstützt wegen eines Stackpointerfehlers.

Sicherheitsbedenken

Verschiedene Sicherheitsfälle, die in 2.4 gelöst wurden, sind eventuell noch nicht auf 2.6 portiert worden. Deshalb sollten keine 2.5er Kernel auf nicht vertrauenswürdigen Systemen eingesetzt werden. Tests von bekannten Exploits aus 2.4 und ein Bericht der Resultate ist sehr nützlich.

SELinux

Das Security-Enhanced-Linux (SELinux) der NSA wurde in 2.6 hineingenommen.
Normalerweile ist es deaktiviert und kann mit dem Bootparameter selinux=1 aktiviert werden.
Die SELinux-Werkzeuge und eine Beispielkonfiguration kannst du bei der Projektseite der NSA bekommen.

Netzwerk

ebtables
Der Bridging-Firewall-Code wurde eingebaut. Um diesen zu verwalten, brauchst du das ebtables-Tool.
Weiteres zu bridge-nf kann bei der Projektseite bridge-nf gefunden werden.
Gebridgte Pakete werden auch von iptables 'gesehen'.
IPSec
Linux hat endlich die IPSec-Unterstützung in der Hauptlinie. Nutze den KAME Port von ipsec-tools.
Für weitere Informationen kannst du dir http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-44/1127.html anschauen.
Des weiteren hat Bert Hubert das Linux Advanced Routing and Traffic Control HOWTO geschrieben. Der Abschnitt zu IPsec findet sich dort ebenfalls.
Herbert Xu hat auch Patches gegen FreeSWAN 2.00, um seiner Benutzerebene die Benutzung der 2.5er IPSec-Funktionalität zu erlauben. Diese können bei Herbert herunter geladen werden.
Ein weiteres HOWTO gibt es auf Ipsec-howto.org.

Einige Applikationen veranlassen den Kernel, Warnungen über process xxx using obsolete setsockopt SO_BSDCOMPAT auszuspucken.

Nutzer von Rechnern mit mehr als einer Netzwerkkarte werden bemerken, dass eth0 und eth1 auf genau die verkehrten Karten wie in 2.4 zeigen. Dies ist ein Fehler und wird noch vor 2.6.0 berichtigt. Eine Option, dies zu beheben, ist, nameif zu nutzen, um Ethernet Schnittstellen zu benennen. Es existiert ein HOWTO, wie das zu tun ist.

Unterstützung für diverse neue RfCs

Linux erreicht einen Überlastungskollaps, wenn sehr starke Last auf dem Netzwerk auftritt. NAPI berichtigt dies, neben anderen Dingen, und verbessert deshalb die Netzwerkperformance.
Mehr Informationen auf usenix-paper.tgz und NAPI

IPVS

SCTP ist ein IP-basiertes, nachrichtenorientiertes, verlässliches Protokoll mit Überlastungskontrolle, Unterstützung für transparentes Multihoming und verschiedene geordnete Ströme von Nachrichten. RfC 2960 ist das Kernprotokoll.
Mehr Informationen finden sich auf RfC 2960 und über die Kernelimplementation auf lksctp.

ANSI/IEEE 802.2 LLC type 2 Unterstützung
Volle Implementation des LLC 1 und 2-Stacks, der von Appletalk, IPX und Token Ring genutzt wird. Des weiteren wird er für das (noch nicht funktionierende) NetBEUI und für Linux SNA benötigt.
Dies basiert auf dem Stack, der durch die Procom Inc. für den 2.0.30-Kernel veröffentlicht wurde.

Crypto

Eine generische Crypto-API wurde eingebaut und bietet Unterstützung für verschiedene Algorithmen (HMAC, MD4, MD5, SHA-1, SHA256, SHA384, SHA512, DES, Triple DES EDE, Blowfish, Twofish, Serpent, AES, CAST5, CAST6).

Diese Funktionalität wird von IPSec und crypto-loop genutzt. Es ist möglich, dass es später auch durch ein Cryptogerät in Benutzerebene verfügbar sein wird.

Das Loopbackdevice im Kernel kann auch Crypto mit der CryptoAPI nutzen. Du brauchst eventuell weitere Programme dazu.

Es gibt ein Handbuch für die Migration von Cryptoloop von 2.4 auf 2.6.

Veraltet

Portierungen

2.6 unterstützt eine Reihe neuer Architekturen:

Der 64bit s390x Port wurde zu einem einzigen Port zusammen geworfen. Dies erscheint als eine Konfigurationsoption in der s390 Architektur.

In der anderen Richtung wurde arm26 von arm getrennt.

Die x86-Architektur bekam auch Unterstützung für Subarchitekturen, um "komische" x86-Kisten (normalerweise Spielzeuge grosser Jungs). Die derzeit unterstützten Architekturen umfassen:


Revisionshistorie

Version Änderungen Datum
0.77 Broken links gefixt 2006-08-15
0.77 Verweis auf nichtexistente Seite gelöscht 2005-07-21
0.76 Linkfix 2005-06-19
0.75 kleinere Korrekturen, URLs geaendert 2005-04-13
0.74 Grammatik bei CPU Frequenzskalierung 2004-06-22
0.73 Schreibfehler agpart beseitigt 2004-06-19
0.72 Erklärung zu stat64() 2004-04-19
0.71 Kleinere Fehler im HTML-Code beseitigt 2004-02-25
0.70 Änderungen von V0.48 des Originaldokuments eingebaut 2004-01-12
0.65 Änderungen vom Originaldokument eingebaut 2003-12-10
0.61 Arno Brauß berichtete, dass einige Versionsnummern nicht ganz korrekt sind. Dies wurde korrigiert. 2003-10-29
0.6 Änderungen der Version 0.44 von Dave eingepflegt 2003-10-21
0.51 Anmerkungen von Arthur Korn eingepflegt. Dies betraf eine bessere Übersetzung beim I/O-Subsystem und den entfernten Merkmalen. 2003-09-17
0.50 Dave hat einige Anpassungen im Originaldokument. Diese wurden mit eingepflegt. 2003-09-15
0.42 Jörg Sommer hatte weitere kleinere Verbesserungen in der Übersetzung. 2003-08-17
0.4 Inhaltsverzeichnis eingefügt
Jan-Benedict Glaw hat einige Verbesserungsvorschläge. Diese wurden mit eingearbeitet.
2003-08-08
0.3 innards=internals laut Dave Jones
Änderungen von Jörg Sommer eingebaut.
2003-08-06
0.2 kleinere Übersetzungsfehler beseitigt 2003-08-05
0.1 Initialversion 2003-08-01