Realtime Kernel

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Rund um den Kernel ‹ Realtime Kernel


Getestet.png Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.




Für den Audiobereich findest Du hier eine ähnliche Anleitung, die aus dieser Anleitung entstanden ist und noch etwas mehr in die Tiefe geht und eventuell auch etwas aktueller ist.


Wie backe ich mir einen Realtime (RT) Kernel für den Audiobereich unter Debian? Genau diese Frage soll hier beantwortet werden. Es ist recht einfach, weil man nur ein paar Schritte befolgen muss. Vom Prinzip her:

  1. Kernel- und Patchsources ziehen
  2. entpacken
  3. konfigurieren
  4. kompilieren
  5. installieren.

Außerdem ist der Vorgang absolut gefahrlos weil man beim booten immer noch den "alten" Kernel auswählen kann.

Sources

Zunächst holt man sich die Kernel Sources von kernel.org oder alternativ linux-kernel. Man gehe via http oder ftp (Vorsicht, http hat eine andere Verzeichnisstruktur als ftp) auf der Internetseite linux-kernel in das Verzeichnis /linux/kernel.org/pub/linux/kernel/v2.6 (ftp) bzw. .../v3.0 (linux-kernel, ftp) und lade sich den Kernel herunter (z.B. linux-3.0.3.tar.bz2), den man realtimefähig machen will. Das geht leider nicht mit jedem Kernel.

Die meisten Kernel muss man zu diesem Zweck patchen, also muss man auch hier den rt-patch herunterladen (z.B. patch-3.0.3-rt12.patch.bz2). Immer darauf achten, dass die Kernel- und Patchversionsnummern identisch sind (wie in diesem Beispiel: 3.0.3)! Die Patches findet man im Verzeichnis /linux/kernel.org/pub/linux/kernel/projects/rt/ (ftp). Welche Kernel man patchen kann sieht man anhand der Versionsnummern der Patches. Hier ein Auszug (keine komplette Liste):

Ältere Kernel

  • 2.6.24.7
  • 2.6.26.8
  • 2.6.29.6
  • 2.6.31.12
  • 2.6.33.9

Aktuelle Kernel

  • alle 2.6.39.x
  • 3.0.3

Es sei angemerkt, dass der 2.6.39.x eine Ausnahme darstellt, weil man hier keinen Patch einspielen muss. Der RT-Patch ist im Kernel schon enthalten. Für das aktuelle Debian Squeeze ist klar der 2.6.39.4 oder der 3.0.3 zu empfehlen, das muss man allerdings ausprobieren. Beide Kernel wurden vom Autor getestet.

Nun zum eigentlichen Kompiliervorgang. Für die Erläuterungen wird beispielhaft der 3.0.3 Kernel 64-bit verwendet, dies ist entsprechend abzuändern. Es ist zur Zeit noch unklar, ob man den 3.0.3 überhaupt für 32-bit kompilieren kann.

entpacken

Man kopiere das heruntergeladene Kernel-Source-Archiv mit root Rechten in den Ordner /usr/src. Danach gehe man ins Terminal und ins besagte Verzeichnis:

root@debian:~# cd /usr/src

Nun entpackt man den Kernel mittels

root@debian:~# tar xjf linux-3.0.3.tar.bz2

und lege der Konventionen halber eine neue Verknüpfung/Ordner linux zum neu entstandenen linux-3.0.3 Verzeichnis an

root@debian:~# ln -s linux-3.0.3 linux

um danach in diese Verzeichnis zum weiteren Arbeiten zu wechseln

root@debian:~# cd /usr/src/linux

RT-Patch

Die folgenden Patch-Schritte kann man beim 2.6.39.4-Kernel überspringen.

Nun kopiere man den Patch mit root-Rechten in den Ordner /usr/src/linux und entpackt ihn dort:

root@debian:~# bzip2 -d patch-3.0.3-rt12.patch.bz2

Man sollte vorher probieren, ob sich der Patch auch wirklich ohne Fehlermeldung in den Kernel einspielen lässt. Die geschieht durch die Option --dry-run:

root@debian:~# patch -p1 --dry-run <patch-3.0.3-rt12.patch

Hier wird ein testlauf simuliert, der genau wie das richtige patchen aussieht. Wenn es keine Fehlermeldungen gab, kann man den patch tatsächlich einspielen:

root@debian:~# patch -p1 <patch-3.0.3-rt12.patch

Konfigurieren

Ab hier geht´s auch für den 2.6.39.4 weiter.

Man muss nun die richtigen RT-Optionen einstellen, die dann in den Kernel einkompiliert werden. Dies geschieht mittels make menuconfig. Um dieses praktische Programm nutzen zu können muss man zunächst noch schnell was installieren:

root@debian:~# apt-get install libncurses5-dev kernel-package

Nun kann man die Konfiguration beginnen mit

root@debian:~# make menuconfig

Zunächst muss man darauf achten, dass das Terminalfenster groß genug ist, da sonst menuconfig nicht starten wird. Es erscheint ein Fenster, durch das man mittels Pfeiltasten navigieren kann. Man gehe in folgende Menüs und mache entsprechende Einstellungen:

  • Processor type and features -> Preemption Model -> (höchste RT-Einstellung vornehmen)
  • Processor type and features -> Timer Frequency auf 1000
  • Power Management -> CPU Frequency scaling -> CPU Frequency scaling aus

Da sich make menuconfig sich von selbst die schon bestehende Kernelkonfiguration des Systems holt braucht man keine weiteren Einstlleungen vor zu nehmen.

Das CPU Frequency scaling muss leider abgeschaltet werde, da bei jedem Umschalten von der einen auf die andere Prozessortaktstufe Knackser im Tonstudio entstehen können. Wer sich trotzdem auf dieses Risiko einlassen will, der kann das CPU Frequency scaling anlassen, davon wird allerdings abgeraten. Die oben angegebenen Einstellungen des Kernel haben sich in der Praxis bewährt.

Kompilieren

Nun gehe man auf exit und speichert nach Vorgabe ab. Man ist wieder zurück im Terminal. Als nächstes räumt man sicherheitshalber das Verzeichnis auf mit einem:

root@debian:~# make-kpkg clean

um danach die eigentliche Kompilierung des Kernels zu beginnen. Dies geschieht durch ein

root@debian:~$ make-kpkg --initrd --append-to-version=-ts-squeeze --revision=1.0 kernel_image kernel_headers

Zu den Optionen:

  • --append-to-version=-ts-squeeze hängt besagtes -ts-squeeze an den Kernelnamen dran. Diese Option sollte man immer setzen um nicht mit den Stndardkerneln in Konflikt zu geraten. Hier wird beispielhaft -ts für Tonstudio und -squeeze für den aktuellen Debian stable Zweig gesetzt. Dies ist frei wählbar.
  • --revision=1.0 sagt dem Kernel, welche Versionsnummer es ist. Sollte man auch immer angeben, allerdings ist hier die Syntax --revision=x.y vorgeschrieben.
  • kernel_image und kernel_headers sagt dem Befehl make-kpkg lediglich, dass er den Kernel (das image) und dessen header bauen soll. Auch das ist Pflicht.

Der Kompilierungsprozess kann nun je nach Rechenleistung zwischen 10 Minuten und 2-3 Stunden dauern.

Installieren

Wenn alles gut gegangen ist befindet sich im übergeordneten Verzeichnis nun der fertig gebackene Kernel und dessen header. Man gehe ein Verzeichnis höher

root@debian:~# cd ..

und installiere den Kernel mittels dpkg -i:

root@debian:~# dpkg -i linux-image-3.0.3-ts-squeeze-rt12_1.0_amd64.deb linux-headers-3.0.3-ts-squeeze-rt12_1.0_amd64.deb

Hat man einen 32-bit-Debian am Laufen lautet die Endung meist ..._i386.deb. Dies ist entsprechend anzupassen.

Links

Weiterführendes zum Thema Audio und RT-Kernel findet man unter den Links 1 2 des Artikels Installation eines Tonstudios.

Einen ähnlichen Artikel, der eventuell etwas aktueller ist, kann man hier finden.


Seite erstellt von: Musix 21:43, 30. Nov. 2011 (CET)