Ubuntu16.04.6 安装 RT_PREEMPT 实时内核

1. 准备工作

系 统 : Ubuntu14.04.6
内核版本 : Linux-4.15.0-72
目标内核 : Linux-4.19.72-rt26
参考网址 :https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/preemptrt_setup
下载地址 : https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ (下载内核)
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/ (下载补丁)
国内镜像 : https://mirrors.aliyun.com/linux-kernel/ (内核下载速度快)
安装依赖 :sudo apt-get install -y build-essential kernel-package libncurses5-dev

2. 打补丁

~$ makdir rt_linux_build
~$ cd Download
~/Download$  cp linux-4.19.72.tar.xz patch-4.19.72-rt26.patch.xz ../rt_linux_build
~/Download$ cd ../rt_linux_build/
~/rt_linux_build$ xz -cd linux-4.19.72.tar.xz | tar xvf -
~/rt_linux_build$ cd linux-4.19.72/
~/rt_linux_build/linux-4.19.72$ xzcat ../patch-4.19.72-rt26.patch.xz | patch -p1

3. 配置内核

~/rt_linux_build/linux-4.19.72$ make menuconfig

确保:General setup —> Preemption Model —> Fully Preemptible Kernel (RT) selected
Kernel hacking —> Memory Debugging —> Check for stack overflows not selected

4. 编译内核

CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers

编译出错:scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
compilation terminated.

解决办法: sudo apt-get install libssl-dev

编译出错:install: cannot stat ‘REPORTING-BUGS’: No such file or directory
解决方法:在内核目录下面创建一个文件 REPORTING-BUGS ,~/rt_linux_build/linux-4.19.72$ touch REPORTING-BUGS
编译时间较长,大概半个小时左右,编译好的内核下载地址为
链接: https://pan.baidu.com/s/1gQdmMn-Jgn-MyxQjmbIxIQ 提取码: r4ic

5. 安装内核

~/rt_linux_build$ sudo dpkg -i linux-headers-4.19.72-rt26-rt26_4.19.72-rt26-rt26-10.00.Custom_amd64.deb linux-image-4.19.72-rt26-rt26_4.19.72-rt26-rt26-10.00.Custom_amd64.deb
~/rt_linux_build$ sudo update-initramfs -c -k "4.19.72-rt26-rt26"
~/rt_linux_build$ sudo update-grub
~/rt_linux_build$ sudo reboot

reboot 之后在启动项里面找不到那个 4.19.72-rt26-rt26 那个选项,update-grub试了好几次也找不到那个选项,之后删除系统中的多余内核,update-grub 之后重启删除的内核选项还是出现在grub中。我的电脑装了3个系统,先装windows10,再装 Ubuntu16.04.6,再装 Ubuntu19.01。所以电脑的启动顺序应该是 EFI — > Ubuntu19.01 grub —> windows10 boot manager or — > Ubuntu16.04.6 grub
所以解决办法就是:进入 Ubuntu19.01 中然后 update-grub 重启。
之后就发现 Ubuntu16.04.6 中的 启动项中有了4.19.72-rt26 那个选项。

6.实时性测试

安装 cyclictest 实时测试软件: ~$ sudo apt-get install rt-tests
测试:~$ sudo cyclictest -t 5 -p 80 -n
结果:

优先级80,采用usb键盘
实时性测试图-usb键盘

优先级80,采用ps2键盘
实时性侧视图-ps2键盘

优先级99,采用ps2键盘
实时性测试图-ps2键盘

优先级99,采用usb键盘
实时性测试图-usb键盘

7. 非root用户使用 RT_PREEMPT

you can configure your system so that also a non-root user can run a realtime application. A typical realtime application uses realtime priorities and it might want to lock its address space (mlockall). For security reasons, a normal user is usually not allowed to do such things. However, /etc /security/limits.conf lets you modify the default settings for a given user or group:

someuser - memlock 51200
someuser - rtprio 80

chmod 606 /dev/cpu_dma_latency

7.结论

总体来说,实时性能并不是特别好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值