Realtime Kernel
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:
- Kernel- und Patchsources ziehen
- entpacken
- konfigurieren
- kompilieren
- 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)