Ubuntu编译使用实时内核补丁(RT-PREEMPT kernel)并测试(亲测OK)
简介
RT-Preempt patch 是在Linux社区kernel的基础上,加上相关的补丁,以使得Linux满足实时性的需求。项目主页见:https://rt.wiki.kernel.org/index.php/Main_Page
下面的是编译和使用RT linux内核的流程,这里使用的Linux内核版本是4.4.0。
运行环境
使用的VMware虚拟机,上面安装的Ubuntu16.04 64位系统。
下载Linux内核和实时补丁文件
rt补丁下载 https://www.kernel.org/pub/linux/kernel/projects/rt/
内核源码下载 https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
下载的内核和补丁版本号必须严格对应。
使用方法
- 解压内核源码
tar -zxvf linux-4.4.tar.gz
- 解压补丁
gunzip patch-4.4-rc6-rt1.patch.gz
注意:如果在打补丁之前,手动解压缩这个patch文件,那么就可以对这个文件进行gunzip或者bunzip操作,就像下面这样
gunzip patch-4.4-rc6-rt1.patch.gz
bunzip2 patch-4.4-rc6-rt1.patch.bz2
- 打补丁
cd linux-4.4
patch -p1 < ../patch-4.4-rc6-rt1.patch
- 安装编译内核需要的模块
sudo apt-get install libncurses-dev
sudo apt-get install libssl-dev
- 配置内存
make menuconfig
选择Fully Preemptible Kernel(RT)这个选项
关闭内存溢出检测
6. 编译Linux内核并安装
make
sudo make modules_install
sudo make install
sudo update-grub
使用实时内核
启动Ubuntu时,想进入grub选择界面,当进入VMware启动界面时,长按shift键。
之后就会出现grub界面:
测试实时内核
可参考以下网页:
https://blog.csdn.net/kl1125290220/article/details/78560220
https://blog.csdn.net/longerzone/article/details/16897655
sudo cyclictest -t 5 -p 80 -n //运行5个线程,线程的优先级为80,无线循环
也可以进行多次运行并统计结果
sudo cyclictest -l10000000 -m -n -t1 -p99 -i2 -h100
-l10000000 指定1千万循环,
-m锁定当前和将来的内存分配,
-n指定使用 clock_nanosleep,
-t1指定开一个线程进行测试,
-p99指定最高优先级,
-i2指定基本线程间隔,单位是us,此处是2us,
-h100指定统计结果的分布情况。
参考文献:
https://blog.csdn.net/v6543210/article/details/80941906
上一篇: POJ 1631 Bridging signals
下一篇: 在react项目中使用less