I use a 2.6.26.5 (see my .config). In fact, I upgrade the kernel each time a new release is out. I will assume you are confident in building/installing a Linux kernel. With 2.6.x it is generally no more than doing:
$ make menuconfig $ make $ su # make modules_install # make install # vi /boot/grub/menu.lst
But to build a Linux Audio Kernel there is some more work to do.
Realtime Preemption Ingo Molnar's Linux kernel patch which tries to improve realtime performance of the Linux kernel.
![]() | With my configuration and the last Linux kernel (2.6.26.5) I work without needing this patch. |
Always download the last release here. Then apply it:
$ cd /usr/src/ $ wget http://people.redhat.com/mingo/realtime-preempt/patch-2.6.26.5-rt9 $ rm linux $ mv linux-2.6.26.5 linux-2.6.26.5-rt9 $ ln -s linux-2.6.26.5-rt9 linux $ cd linux/ $ patch -p1 < ../patch-2.6.26.5-rt9
Patch should apply without fatal problems. Messages like Hunk #3 succeeded at 652 (offset 1 line). are ok. Search for outputs like Failed. The most common failure is on the Makefile file. Just edit it by hand and add -rt9 at the end of the EXTRAVERSION
variable.
![]() | Do not forget to adapt those samples to your own configuration (especially for the "PCI devices" section). |
The most important items for a vanilla Linux kernel (not patched with Ingo's RT patch) are:
Processor type and features ---> Preemption Model (Preemptible Kernel (Low-Latency Desktop)) ---> [*] Preempt The Big Kernel Lock Timer frequency (1000 HZ) ---> Device Drivers ---> Character devices ---> <M> Enhanced Real Time Clock Support <M> Generic /dev/rtc emulation [*] Extended RTC operation <M> Real Time Clock ---> [*] /sys/class/rtc/rtcN (sysfs) [*] /proc/driver/rtc (procfs for rtc0) [*] /dev/rtcN (character devices) <M> PC-style 'CMOS' Sound ---> <M> Sound card support Advanced Linux Sound Architecture ---> <M> Advanced Linux Sound Architecture <M> Sequencer support <M> Sequencer dummy client <M> OSS Mixer API <M> OSS PCM (digital audio) API <M> RTC Timer support [*] Use RTC as default sequencer timer Generic devices ---> <M> Virtual MIDI soundcard PCI devices ---> <M> RME Hammerfall DSP Audio Security options ---> [*] Enable different security models <M> Default Linux Capabilities
For a kernel patched with Ingo's RT patch the differences are:
General setup ---> [*] Enable concurrent radix tree operations [*] Enabled optimistic locking Processor type and features ---> [*] Enable priority boosting of RCU read-side critical sections
Also for RT patch you must uncheck the folloging options:
Processor type and features ---> [ ] Enable tracing for RCU - currently stats in debugfs Device Drivers ---> Character devices ---> [ ] Real Time Clock Histogram Support < > Parallel Port Based Latency Measurement Device Kernel hacking ---> [ ] Wakeup latency timing [ ] Non-preemptible critical section latency timing [ ] Interrupts-off critical section latency timing
Install modules and kernel and edit the /etc/modules file to add the following content, depending on your hardware:
rtc snd-rtctimer snd-hdsp snd-hwdep snd-page-alloc snd-pcm snd-rawmidi snd-seq snd-seq_device snd-seq_midi snd-seq_midi_event snd-timer
Most of these modules depend on others that will be automatically loaded.
Most of time you would also raise the value of the max-user-freq kernel value. To do so you can either:
Use sysctl by editing /etc/sysctl.conf and adding the following line:
dev.rtc.max-user-freq=1024Once the file is updated, reload the configuration by running sysctl -p as root user.
Directly write the value into /proc/sys/dev/rtc/max-user-freq at boot time:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
Now just reboot on your new kernel.