给linux内核打实时补丁preempt_rt

  1. 下载内核和补丁
    运行uname -a可以看到当前内核版本。
    补丁地址: https://www.kernel.org/pub/linux/kernel/projects/rt/ 从中选择一个与当前内核版本接近的补丁下载(不必与当前版本一致)
    内核地址: http://www.kernel.org/pub/linux/kernel/ 根据下载的补丁版本下载内核,内核版本要和补丁一致。
    下面以linux-3.18.69内核与patch-3.18.69-rt75.patch补丁为例进行说明。

  2. 打补丁

$ sudo mkdir /usr/src/rt-preempt-linux

将下载的内核与补丁解压,先将解压后的补丁放到解压后的内核文件夹里面,然后再将内核文件夹放到刚创建的rt-preempt-linux文件夹里面。然后运行以下命令打补丁。

$ cd /usr/src/rt-preempt-linux/linux-3.18.69
$ sudo patch -p1 < patch-3.18.69-rt75.patch
  1. 内核配置
    继续在/usr/src/rt-preempt-linux/linux-3.18.69路径下执行指令
$ sudo make mrproper # 删除目录下残留的.o文件和其他从属文件

在boot文件夹下可以找到与当前内核版本匹配的config文件,例如:config-3.16.0-30-generic 。将其拷贝到当前目录/usr/src/rt-preempt-linux/linux-3.18.69 下。

$ sudo cp /boot/config-3.16.0-30-generic .config

安装几个必要的套件

$ sudo apt-get install libncurses5-dev flex bison

进入菜单配置界面,此时窗口必须足够大。

$ sudo make menuconfig

在“Processor type and features”中
(1)在"Preemption Mode"中选择“Complete Preemption(Real-Time)” (根据版本不同,也可能是在"Preemption Model"中选择"Fully Preemptible Kernel(RT)")

给linux内核打实时补丁preempt_rt_第1张图片
menuconfig_1.png

(2)选择“Thread Softirqs”和“Thread Hardirqs” (如果找不到这两个选项的话,就不用设置直接进入下一步)

给linux内核打实时补丁preempt_rt_第2张图片
menuconfig_2.png

回到上一层,进入”Device Drivers”中,去掉“Staging Drivers”

给linux内核打实时补丁preempt_rt_第3张图片
menuconfig_3.png
  1. 编译内核

下面的编译过程会比较费时,大约需要2个小时左右。

仍然在/usr/src/rt-preempt-linux/linux-3.18.69路径下执行指令

$ sudo make -jn

(n是要衍生的作业书,在实际中,每个处理器上一般衍生一个或两个作业。例如在一个双核处理器上可以使用$make -j4)

$ sudo make modules_install 
$ sudo make install  
$ cd /boot
$ sudo mkinitramfs -k -o initrd.img-3.18.69-rt 3.18.69-rt75

最后重启就可以选择使用打过补丁的内核了,如果重启后找不到相应选项,再对/boot/grub/grub.cfg进行修改,修改方法可以上网查。

参考:

http://blog.csdn.net/zzsfqiuyigui/article/details/7621665
http://blog.csdn.net/deng_sai/article/details/38080603
http://blog.csdn.net/fjt19900921/article/details/8316481

你可能感兴趣的:(给linux内核打实时补丁preempt_rt)