mit Slackware Linux 9.0
Wir installieren: |
---|
Diese Anleitung hier basiert in wesentlichen teilen auf diesem HOWTO
Als erstes braucht man die Kernel-Sourcen. Sollten diese nicht bei der bevorzugten Distri dabei sein, wie z.B. bei Slackware, kann man sich auf http://www.slackware.com/getslack/ einen Mirror aussuchen, und dort das Kernel-source paket runterladen. (für Slackware im Verzeichnis: slackware-9.0/slackware/k/)
auf kernel.org gibts das notfalls auch noch.
Dann brauchts den Lowlatency Patch: http://www.zip.com.au/~akpm/linux/schedlat.html#downloads
Da nimmt man den, der zur verwendeten Kernelversion passt, in meinem Fall war das der 2.4.20er.
ist hinten ein .gz dran ist der patch komprimiert, und man installiert ihn mit:
indem man in das verzeichnis /usr/src/linux wechselt(das Kernel-source verzeichnis)
und
gzip -cd /verzeichnis/bla/bla/patchXX.patch.gz | patch -p1
eingibt.
oder
ohne .gz im Patch-Dateinamen heißt das:
patch -p1 < /verzeichnis/bla/bla/patchXX.patch
nun kann man noch nachschauen, ob die Distri bereits vorgefertigte Kernel-Konfigurations-Dateien bietet, und diese gegebenenfalls nach /usr/src/linux/.config kopieren. Aber nehmen wir mal an, das stimmt alles schon.
dann macht man:
make xconfig
um den Kernel zu konfigurieren, alles was man da aktivieren muss ist im "Processor Type and Features" menŸ "Low-latency-scheduling" und "Control low latency with sysctll" (damit kann man später in /proc/sys/kernel/lowlatency diese funktion ein und ausschalten)
Alles andere kann in der Regel so bleiben wie es ist. (zumindest bei mir unter Slackware war das alles schon richtig eingestellt.)
Wenn man nicht will das der neue Kernel die Module des alten überschreibt, kann man im Makefile in /usr/src/linux den Eintrag EXTRAVERSION= ändern, z.B.
EXTRAVERSION = mein_LL_Kerneldann mit dem üblichen
make dep make clean make bzImage make modules make modules_install
den kernel samt module kompilieren und die module installieren.
dann kopiert man /usr/src/linux/arch/i386/boot/bzImage nach /boot
wobei man seinen neuen Kernel auch gleich umbenennen kann.
wir befinden uns noch in: /usr/src/linux
von dort kopieren wir System.map auch nach /boot, am besten wieder umbenennen, und einen Symlink namens System.map im /boot Verzeichnis auf die neue System.map_fuer_LL_Kernel erstellen (mit ln -s System.map_fuer_LL_Kernel System.map im /boot verzeichnis)
BTW. slackware verwendet keine initrd - (eine Init-Ramdisk) deswegen gehe ich auch nicht auf diese Funktion hier ein.
Dann ändert man seine /etc/lilo.conf um den neuen Kernel zu verwenden, oder halt die Datei von seinem bevorzugten Bootmanager.
je nachdem muss man nun noch /sbin/lilo ausführen, bei grub ist das nicht nötig, der erkennt Änderungen von selbst.
hat das alles funktioniert, bootet man neu um den neuen Kernel zu verwenden.
wie man Alsa installiert entnehmen wir dem audio4linux.de Alsa-Howto
So, was allerdings jetzt noch fehlt, sind die Einträge in der /etc/modules.conf, die sind nötig damit beim Starten des Computers auch die passenden Soundtreiber geladen werden.
Und so muss das aussehen:
links ein Beispiel mit zwei Soundkarten, rechts das gleiche für eine einzelne karte.
# ALSA native device support alias char-major-116 snd options snd major=116 cards_limit=2 alias snd-card-0 snd-gusclassic alias snd-card-1 snd-sb16 options snd-gusclassic index=0 id="Gus" options snd-sb16 index=1 id="SB16" # OSS/Free setup alias char-major-14 soundcore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss alias sound-slot-1 snd-card-1 alias sound-service-1-0 snd-mixer-oss alias sound-service-1-3 snd-pcm-oss alias sound-service-1-12 snd-pcm-oss |
# ALSA native device support alias char-major-116 snd options snd major=116 cards_limit=1 alias snd-card-0 snd-interwave options snd-interwave index=0 id="GusPnP" # OSS/Free setup alias char-major-14 soundcore alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss |
Diese Beispiele sind aus der Alsa Documentation, die Modulnamen (snd-gusclassic, snd-sb16, snd-interwave) sind entsprechend der eigenen Hardware anzupassen. |
So, zwischendurch kann man mal xmms anstarten und testen ob es funktioniert.
Und jetzt holen wir uns JACK von http://jackit.sf.net.
Bevor wir jack installieren machen wir noch ein kleines Ram-Filesystem, für jacks temporäre dateien, und zwar so:
mkdir /tmp/jack
und in die /etc/fstab tragen wir diese Zeile ein:
none /tmp/jack tmpfs defaults 0 0
dann das übliche ./configure, make, make install für jack (oder auch mit checkinstall)
echo 1 > /proc/sys/kernel/lowlatency
(Das kann man mit dem Eintrag kernel.lowlatency = 1 in der Datei /etc/sysctl.conf schon beim booten aktivieren)
damit schalten wir die lowlatency funktion des Kernels ein.
Dann starten wir als user "root" jack mit:
jackd -R -d alsa -d hw:0 -r 44100 -p 512
Dabei kann man mit dem Parameter -p etwas herumspielen, je nachdem was besser funktioniert.
(Die genaue Funktionsweise ist der jackd manpage zu entnehmen.)
jetzt noch alsaplayer so starten (auch als root!):
alsaplayer -o jack
jetzt noch nicht vergessen mit einem Audio-mixer die Lautstärke etwas anzuheben
und wenns klappt ein mp3 file abzuspielen, hat alles geklappt.