配置、编译 Linux Real Time Kernel(ZZ)
2010-04-12 21:08 Jvpy 阅读(9531) 评论(1) 编辑 收藏 举报
Ingo's RT patch
是又一个Linux实时实现,它采用了与TimeSys完全相 同的技术路线,而且有一些实现是基于TimeSys的源代码的,如IRQ和 softirq线程化。在新的内核主线中已经包含了这个补丁。以下介绍给内核打上这个实时补丁的方法。
编译内核
在没有打上这个补丁时,编译内核时就会有这些选项可供选择,它们位于:
Processor type and features ---> Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
说明:抢占模式:
No Forced Preemption (Server),这种模式等同于没有使能抢占选项的标准内核,主要适用于科学计算等服务器环境。
Voluntary Kernel Preemption (Desktop),这种模式使能了自愿抢占,但仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞吐率为代价的。
Preemptible Kernel (Low-Latency Desktop),这种模式既包含了自愿抢占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模式2更低。
在打上这个补丁后再编译,就会出现一个Complete Preemption (Real-Time)的选项,这种模式使能了所有实时功能,因此完全能够满足软实时需求,它适用于延迟要求为100微秒或稍低的实时系统。
patch kernel
----------------------------
# cd /usr/src/ingo-linux
# ls
linux-2.6.21.5.tar.bz2 patch-2.6.21.5-rt18
# tar jxf linux-2.6.21.5.tar.bz2
# mv linux-2.6.21.5 linux-2.6.21.5-realtime
# cd linux-2.6.21.5-realtime
# patch -p1 < ../patch-2.6.21.5-rt18
http://en.opensuse.org/RT_Kernel_Instructions
http://proaudio.tuxfamily.org/wiki/index.php?title=Howto_RT_Kernel
Realtime (RT) Kernel
RT Kernel - why?
The main goal in audio-processing is the latency. The latency is the delay beetween signal-creating and reaching the processing in the system (e.g time between pressing a key on the keyboard and hearing the tone). The standard kernels have the disadvantage that the processing is slower (~11ms) as in Windows or using a MAC . The faster the system, means the lower the latency, the more things can happen simular on a the system Ingo Molnar, a RedHat developer and some others have started a project to minimize the latency in Linux: Realtime Preemption. By using excellent audio-hardware the JACK demon (Jack Audio Connection Kit) reach latency < 1ms, similar to the MacOS X "coreaudio" system. For interested people follows a little step-by-step HowTo to patch a vanilla kernel with Realtime Preemption stuff and how to compile and install this new kernel.
Note
------------------------------------------------------
This is an experimental kernel.
the -rt patch is under heavy development all the time. So if you hit a bad day, you'll get a unstable/unusable kernel. See http://lkml.org for support, and check for a new version some days later if you happen to run into problems.
Sample kernel is the stable linux-2.6.21
Obtain the kernel-source and necessary patches
------------------------------------------------------
Download the sources
----------------------------
* download current vanilla kernel
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.5.tar.bz2
* download Realtime Preemption patch
http://people.redhat.com/mingo/realtime-preempt/patch-2.6.21.5-rt18
Note: this is an example, the version of the -rt patch changes almost daily. So just take a look at http://people.redhat.com/mingo/realtime-preempt, choose the latest version and replace -rt18 with the current version throughout the whole guide.
patch kernel
----------------------------
# cd /usr/src/ingo-linux
# ls
linux-2.6.21.5.tar.bz2 patch-2.6.21.5-rt18
# tar jxf linux-2.6.21.5.tar.bz2
# mv linux-2.6.21.5 linux-2.6.21.5-realtime
# cd linux-2.6.21.5-realtime
# patch -p1 < ../patch-2.6.21.5-rt18
Kernel configuration
----------------------------
Clone the config
* if you don't, then copy the config from the current kernel's source tree
cp /usr/src/linux-`uname -r`/.config .config
# make menuconfig
----------------------------
Processor type and features --->
[*] High Resolution Timer Support
Preemption Mode (Complete Preemption (Real-Time)) --->
( ) No Forced Preemption (Server)
( ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
(X) Complete Preemption (Real-Time)
Timer frequency (1000 HZ) --->
( ) 100 HZ
( ) 250 HZ
( ) 300 HZ
(X) 1000 HZ
Kernel hacking --->
[*] Magic SysRq key
[ ] Kernel debugging
(note: need to look at a -rt kernel config for a full list)
下来配置默认配置已经能够满足要求:
----------------------------------
Note that since kernel 2.6.18-rt8, you may have to activate ACPI option to activate high resolution timer.
Power management options (ACPI, APM) --->
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
[*] Power Management Timer Support (2.6.21没有此项)
Device drivers --->
Character devices --->
<*> Enhanced Real Time Clock Support
Device drivers --->
Sound --->
<M> Advanced Linux Sound Architecture
Advanced Linux Sound Architecture --->
<M> RTC Timer support
[*] Use RTC as default sequencer timer
activate realtime-lsm (deprecated)
----------------------------------
Note that the kernel config option is only available when the kernel is patched with rt-lsm patch. If it isn't, you can emerge realtime-lsm to get the module after the kernel is compiled an installed. Only activate "Default Linux Capabilities" in that case.
Security options --->
[*] Enable different security models
<M> Default Linux Capabilities
<M> Realtime Capabilities
Leave the menu with "Exit" and save configuration.
# make
# make modules_install install
是又一个Linux实时实现,它采用了与TimeSys完全相 同的技术路线,而且有一些实现是基于TimeSys的源代码的,如IRQ和 softirq线程化。在新的内核主线中已经包含了这个补丁。以下介绍给内核打上这个实时补丁的方法。
编译内核
在没有打上这个补丁时,编译内核时就会有这些选项可供选择,它们位于:
Processor type and features ---> Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
说明:抢占模式:
No Forced Preemption (Server),这种模式等同于没有使能抢占选项的标准内核,主要适用于科学计算等服务器环境。
Voluntary Kernel Preemption (Desktop),这种模式使能了自愿抢占,但仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞吐率为代价的。
Preemptible Kernel (Low-Latency Desktop),这种模式既包含了自愿抢占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模式2更低。
在打上这个补丁后再编译,就会出现一个Complete Preemption (Real-Time)的选项,这种模式使能了所有实时功能,因此完全能够满足软实时需求,它适用于延迟要求为100微秒或稍低的实时系统。
patch kernel
----------------------------
# cd /usr/src/ingo-linux
# ls
linux-2.6.21.5.tar.bz2 patch-2.6.21.5-rt18
# tar jxf linux-2.6.21.5.tar.bz2
# mv linux-2.6.21.5 linux-2.6.21.5-realtime
# cd linux-2.6.21.5-realtime
# patch -p1 < ../patch-2.6.21.5-rt18
补丁文件可从以下地址下载:http://www.kernel.org/pub/linux/kernel/projects/rt/,选择适当的内核版本。
[zz from http://blog.chinaunix.net/u3/111966/showart_2186840.html]
Ingo Molnar的Realtime补丁效果很好,在我这里,我从前年10月份的第一版一直跟踪和使用到现在。在自己机器上作了一些修改和试验,效果都很好。
Ingo的realtime patch经过一年的测试,realtime patch颠覆了很多Linux Kernel的传统思路。估计马上要合入主流版本了。从patch第一次发布,跟踪到现在,觉得这个patch太精彩了,特别是对于kernel hacker来说。http://en.opensuse.org/RT_Kernel_Instructions
http://proaudio.tuxfamily.org/wiki/index.php?title=Howto_RT_Kernel
Realtime (RT) Kernel
RT Kernel - why?
The main goal in audio-processing is the latency. The latency is the delay beetween signal-creating and reaching the processing in the system (e.g time between pressing a key on the keyboard and hearing the tone). The standard kernels have the disadvantage that the processing is slower (~11ms) as in Windows or using a MAC . The faster the system, means the lower the latency, the more things can happen simular on a the system Ingo Molnar, a RedHat developer and some others have started a project to minimize the latency in Linux: Realtime Preemption. By using excellent audio-hardware the JACK demon (Jack Audio Connection Kit) reach latency < 1ms, similar to the MacOS X "coreaudio" system. For interested people follows a little step-by-step HowTo to patch a vanilla kernel with Realtime Preemption stuff and how to compile and install this new kernel.
Note
------------------------------------------------------
This is an experimental kernel.
the -rt patch is under heavy development all the time. So if you hit a bad day, you'll get a unstable/unusable kernel. See http://lkml.org for support, and check for a new version some days later if you happen to run into problems.
Sample kernel is the stable linux-2.6.21
Obtain the kernel-source and necessary patches
------------------------------------------------------
Download the sources
----------------------------
* download current vanilla kernel
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.5.tar.bz2
* download Realtime Preemption patch
http://people.redhat.com/mingo/realtime-preempt/patch-2.6.21.5-rt18
Note: this is an example, the version of the -rt patch changes almost daily. So just take a look at http://people.redhat.com/mingo/realtime-preempt, choose the latest version and replace -rt18 with the current version throughout the whole guide.
patch kernel
----------------------------
# cd /usr/src/ingo-linux
# ls
linux-2.6.21.5.tar.bz2 patch-2.6.21.5-rt18
# tar jxf linux-2.6.21.5.tar.bz2
# mv linux-2.6.21.5 linux-2.6.21.5-realtime
# cd linux-2.6.21.5-realtime
# patch -p1 < ../patch-2.6.21.5-rt18
Kernel configuration
----------------------------
Clone the config
* if you don't, then copy the config from the current kernel's source tree
cp /usr/src/linux-`uname -r`/.config .config
# make menuconfig
----------------------------
Processor type and features --->
[*] High Resolution Timer Support
Preemption Mode (Complete Preemption (Real-Time)) --->
( ) No Forced Preemption (Server)
( ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
(X) Complete Preemption (Real-Time)
Timer frequency (1000 HZ) --->
( ) 100 HZ
( ) 250 HZ
( ) 300 HZ
(X) 1000 HZ
Kernel hacking --->
[*] Magic SysRq key
[ ] Kernel debugging
(note: need to look at a -rt kernel config for a full list)
下来配置默认配置已经能够满足要求:
----------------------------------
Note that since kernel 2.6.18-rt8, you may have to activate ACPI option to activate high resolution timer.
Power management options (ACPI, APM) --->
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
[*] Power Management Timer Support (2.6.21没有此项)
Device drivers --->
Character devices --->
<*> Enhanced Real Time Clock Support
Device drivers --->
Sound --->
<M> Advanced Linux Sound Architecture
Advanced Linux Sound Architecture --->
<M> RTC Timer support
[*] Use RTC as default sequencer timer
activate realtime-lsm (deprecated)
----------------------------------
Note that the kernel config option is only available when the kernel is patched with rt-lsm patch. If it isn't, you can emerge realtime-lsm to get the module after the kernel is compiled an installed. Only activate "Default Linux Capabilities" in that case.
Security options --->
[*] Enable different security models
<M> Default Linux Capabilities
<M> Realtime Capabilities
Leave the menu with "Exit" and save configuration.
# make
# make modules_install install
# mkinitrd -o /boot/initrd.img-2.6.21.5 2.6.21.5
[zz from http://hi.baidu.com/zengzhaonong/blog/item/4098297a074e1cef2f73b31a.html
]
http://myth.audividi.com.cn/doku.php?id=divoffice:geminis:private:编译内核